Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
066f2e0
scripts/dtc: add Apple device inventory coverage checks
RyanTheTide Nov 7, 2026
fe1cb0e
arm64: dts: apple: distinguish bus addresses from opaque descriptors
RyanTheTide Nov 7, 2026
3556722
scripts/dtc: accept all Apple board identifier prefixes
RyanTheTide Nov 7, 2026
1de1d3a
ci: check Apple device coverage on integration updates
RyanTheTide Nov 7, 2026
8a06eaa
arm64: dts: apple: leave unqualified child matches unresolved
RyanTheTide Nov 7, 2026
bbdc74a
ci: require all four fleet coverage inventories
RyanTheTide Nov 7, 2026
e0f0c06
Merge remote-tracking branch 'origin/integration/aurora' into ctl/t-5…
RyanTheTide Nov 7, 2026
c5aa3da
scripts/dtc: ratchet Apple ADT coverage in existing DT checks
RyanTheTide Nov 7, 2026
5ae0a09
ci: preserve coverage checker failures through log capture
RyanTheTide Nov 7, 2026
f70c3a6
scripts/dtc: reject broken paths when inventories are introduced
RyanTheTide Nov 7, 2026
ddf6c19
arm64: dts: apple: record the matched register region in inventories
RyanTheTide Nov 7, 2026
603ad6c
Merge integration/aurora into ctl/t-5549-adt-vs-dts-coverage-tool-ci-…
DjDeveloperr Nov 7, 2026
3aefcf6
arm64: dts: apple: describe remaining fleet control devices
RyanTheTide Nov 7, 2026
66971ac
Merge current integration for live fleet inventory refresh
RyanTheTide Nov 7, 2026
86fd4af
arm64: dts: apple: describe J413 radio and NFC SPMI endpoints
RyanTheTide Nov 7, 2026
5f08f1b
Merge fleet describe-only resources for live inventory validation
RyanTheTide Nov 7, 2026
5ae6f51
arm64: dts: apple: keep the described PCIe tunnel containers disabled
RyanTheTide Nov 7, 2026
ab8ec26
arm64: dts: apple: use schema-compliant T6040 USB4 alias names
RyanTheTide Nov 7, 2026
e9212d4
Merge disabled USB4 container and alias corrections
RyanTheTide Nov 7, 2026
4d9501a
scripts/dtc: refresh fleet inventories from saved live device trees
RyanTheTide Nov 7, 2026
8a37469
Merge current integration after the J616s scaler enable
RyanTheTide Nov 7, 2026
4d5a2c5
Merge current integration after the J616s scaler enable
RyanTheTide Nov 7, 2026
c0fa771
Merge current fleet describe-only head for synchronized validation
RyanTheTide Nov 7, 2026
5ec1e9f
Merge the published coverage branch history without changing the tree
RyanTheTide Nov 7, 2026
04f262e
Merge current integration after the T602x description train
RyanTheTide Nov 7, 2026
b86f540
Merge current integration after the T602x description train
RyanTheTide Nov 7, 2026
ac3dff9
Merge refreshed describe-only fleet head for current-tip checks
RyanTheTide Nov 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 26 additions & 2 deletions .github/workflows/dt-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,11 +51,12 @@ jobs:
- name: Install the tools
run: |
sudo apt-get update -q
sudo apt-get install -y -q flex bison bc libyaml-dev clang-$CLANG_VERSION lld-$CLANG_VERSION llvm-$CLANG_VERSION
sudo apt-get install -y -q flex bison bc libyaml-dev clang-$CLANG_VERSION lld-$CLANG_VERSION llvm-$CLANG_VERSION swig device-tree-compiler
echo "/usr/lib/llvm-$CLANG_VERSION/bin" >> "$GITHUB_PATH"
pip install --quiet dtschema yamllint
pip install --quiet dtschema yamllint pylibfdt

- name: CHECK_DTBS and dt_binding_check, base vs head
id: dt
env:
EVENT: ${{ github.event_name }}
BEFORE: ${{ github.event.before }}
Expand All @@ -65,13 +66,36 @@ jobs:
# HEAD^1 (pull_request.base.sha can be the stale tip from when the PR was opened).
if [ "$EVENT" = pull_request ]; then base=$(git rev-parse HEAD^1); else base=$BEFORE; fi
if [ -z "$base" ] || ! git cat-file -e "$base^{commit}" 2>/dev/null; then base=$(git rev-parse HEAD~1); fi
echo "base=$base" >> "$GITHUB_OUTPUT"
scripts/dtc/apple-dt-check.sh "$base" "$head" "$RUNNER_TEMP/dt"

- name: ADT coverage, base vs head
if: ${{ !cancelled() && steps.dt.outputs.base != '' }}
env:
BASE: ${{ steps.dt.outputs.base }}
run: |
set -o pipefail
python3 scripts/dtc/apple-adt-coverage-test.py
for board in t6040-j616s t8140-j700 t6000-j316s t8112-j413; do
test -s "arch/arm64/boot/dts/apple/adt-coverage/$board.txt"
done
manifests=arch/arm64/boot/dts/apple/adt-coverage
mkdir -p "$RUNNER_TEMP/dt/manifests-base"
if git cat-file -e "$BASE:$manifests" 2>/dev/null; then
git archive "$BASE:$manifests" | tar -x -C "$RUNNER_TEMP/dt/manifests-base"
fi
python3 scripts/dtc/apple-adt-coverage.py \
--dtb-dir "$RUNNER_TEMP/dt/out-head/arch/arm64/boot/dts/apple" \
--baseline-dtb-dir "$RUNNER_TEMP/dt/out-base/arch/arm64/boot/dts/apple" \
--baseline-manifest-dir "$RUNNER_TEMP/dt/manifests-base" \
2>&1 | tee "$RUNNER_TEMP/dt/coverage.log"

- name: Keep the warning lists
if: always()
uses: actions/upload-artifact@v4
with:
name: dt-check-warnings
path: |
${{ runner.temp }}/dt/*.warn
${{ runner.temp }}/dt/coverage.log
if-no-files-found: ignore
39 changes: 39 additions & 0 deletions Documentation/devicetree/apple-adt-coverage.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
.. SPDX-License-Identifier: GPL-2.0-only

Apple device coverage manifests
==============================

``arch/arm64/boot/dts/apple/adt-coverage/<soc>-<board>.txt`` inventories ADT
hardware. Each line gives an ADT device path, translated physical base (or
``/bus/path@0xaddress``), and a DT node path, ``MISSING``, or ``WAIVED: reason``.
For split apertures, a mapped entry may use a secondary register base.
``-`` means no usable register address. Duplicate sibling names have a ``~N``
suffix. Disabled DT nodes count as represented. PMGR table records appear
under ``pmgr/power-devices`` and ``pmgr/power-domains``.

The generator and ADT inputs are private. Public manifests contain only device
names, addresses, DT paths and waiver reasons. ``waivers.txt`` supplies reviewed
exceptions as ``board-glob ADT-path-glob | reason``. Patterns match single path
components; recursive patterns are prohibited. Lack of a driver is no waiver.

With Python 3 and pylibfdt installed, run::

python3 scripts/dtc/apple-adt-coverage.py \
--dtb-dir out/arch/arm64/boot/dts/apple --report

``--report`` lists MISSING counts per board while rejecting malformed records,
empty inventories, wrong-board DTBs and absent DT paths. Without it, MISSING
also fails. ``--board`` selects one board and may be repeated.

``dt-checks.yml`` compares base and head DTBs and manifests using
``--baseline-manifest-dir`` and ``--baseline-dtb-dir``. It fails on a per-board
MISSING increase, a newly absent DT path, or removal of inventory devices.
Existing gaps remain visible without failing unrelated changes. When manifests
are first introduced, the head inventory is also measured against the base DTBs
to establish the baseline. A newly added inventory uses the same rule. Both
DTB sets must exist; baseline read errors fail. Newly introduced inventories
must have no broken DT paths, even when the base DTB lacks those paths.

The checker verifies committed inventory consistency. It cannot discover ADT
devices omitted from that inventory or establish the correctness of a mapping.
Regeneration requires review against the private source and compiled board DTB.
30 changes: 30 additions & 0 deletions Documentation/devicetree/bindings/misc/apple,avellino.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/misc/apple,avellino.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Apple Avellino control interface

maintainers:
- Ryan Murray <81541646+RyanTheTide@users.noreply.github.com>

description: |
Addressed Avellino control interfaces on an I2C bus. Describing their
bus addresses does not specify a register protocol or transfer firmware
ownership to the host.

properties:
compatible:
items:
- const: apple,t8112-avellino
- const: apple,avellino

reg:
maxItems: 1

required:
- compatible
- reg

additionalProperties: false
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ properties:
- apple,t6041-radio-pmu
- apple,t6000-wifibt-pmu
- apple,t6000-uwb-pmu
- apple,t8112-wifibt-pmu
- const: apple,radio-pmu

reg:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ properties:
- enum:
- apple,t8103-stockholm-spmi
- apple,t6000-stockholm-spmi
- apple,t8112-stockholm-spmi
- const: apple,stockholm-spmi

reg:
Expand Down
52 changes: 49 additions & 3 deletions Documentation/devicetree/bindings/pci/apple,pcie.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ properties:
- const: apple,t8132-pciec
- const: apple,t8122-pciec
- const: apple,t8103-pciec
- const: apple,t6040-pciec

apple,managed-sids:
$ref: /schemas/types.yaml#/definitions/uint32-array
Expand Down Expand Up @@ -110,7 +111,11 @@ properties:
description:
Interrupt specifiers, one for each root port.
minItems: 1
maxItems: 4
maxItems: 6

interrupt-names:
minItems: 1
maxItems: 6

msi-parent: true

Expand Down Expand Up @@ -211,7 +216,9 @@ allOf:
properties:
compatible:
contains:
const: apple,t8132-pciec
enum:
- apple,t8132-pciec
- apple,t6040-pciec
then:
required:
- apple,msi-vector-base
Expand Down Expand Up @@ -255,6 +262,7 @@ allOf:
enum:
- apple,t8103-pciec
- apple,t6000-pciec
- apple,t6040-pciec
then:
properties:
reg:
Expand Down Expand Up @@ -286,11 +294,49 @@ allOf:
- const: ltssm
- const: intr2axi
- const: oe-fabric
- items:
- const: config
- const: rc
- const: port0
- const: fabric
- const: debug
- const: ioa
- const: ltssm
- const: intr2axi
interrupts:
maxItems: 1
maxItems: 6
ranges:
minItems: 3
maxItems: 3
allOf:
- if:
properties:
compatible:
contains:
const: apple,t6040-pciec
then:
properties:
reg:
minItems: 8
maxItems: 8
interrupts:
minItems: 6
maxItems: 6
interrupt-names:
items:
- const: port
- const: intx-a
- const: intx-b
- const: intx-c
- const: intx-d
- const: parity
required:
- interrupt-names
else:
properties:
interrupts:
maxItems: 1
interrupt-names: false
else:
properties:
resets: false
Expand Down
2 changes: 2 additions & 0 deletions Documentation/devicetree/bindings/phy/apple,atcrt.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ properties:
- enum:
- apple,t8103-atcrt
- apple,t6000-atcrt
- apple,t8112-atcrt
- apple,t6041-atcrt
- const: apple,atcrt

reg:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ description: |

The co-processor exposes the Native Host Interface (NHI) and its DART IOMMU
to the main SoC bus once it is running. They are therefore represented as
child nodes. All child registers are located in a single 16 MiB MMIO window
and use addresses relative to this window.
child nodes. All child registers use addresses relative to the router's MMIO
window. Type 7 expands that window and shifts its child offsets by 16 MiB.

ACIO can only be powered on after the Type-C PHY has been switched to
USB4/Thunderbolt mode. Before the connection to the remote device can be
Expand All @@ -30,6 +30,7 @@ properties:
oneOf:
- const: apple,t8103-usb4-acio
- const: apple,t8142-usb4-acio
- const: apple,t6040-usb4-acio
- items:
- enum:
- apple,t6000-usb4-acio
Expand All @@ -50,7 +51,7 @@ properties:
PCIe adapter configuration space of the USB4 router. Present where
the root complex exposes the adapter separately, so that the tunnel
can be configured before a PCIe-C link is brought up.
- description: MxWrap co-processor control registers, on T8132
- description: MxWrap co-processor control registers

reg-names:
minItems: 2
Expand All @@ -60,6 +61,14 @@ properties:
- const: pcie-adapter
- const: cpu

interrupts:
maxItems: 1
description: Type 7 SRAM parity interrupt

interrupt-names:
items:
- const: sram-parity

mboxes:
maxItems: 1
description: Mailbox used for RTKit communication with the co-processor
Expand Down Expand Up @@ -161,11 +170,12 @@ properties:
required:
- port@1

iommu@a80000:
patternProperties:
"^iommu@(a80000|1a80000)$":
$ref: /schemas/iommu/apple,dart.yaml#
description: DART IOMMU exposed by ACIO and used for DMA from the NHI

nhi@f00000:
"^nhi@(f00000|1f00000)$":
$ref: /schemas/thunderbolt/apple,t8103-usb4-nhi.yaml#
description: Native Host Interface exposed by ACIO

Expand All @@ -182,8 +192,6 @@ required:
- ranges
- nonposted-mmio
- ports
- iommu@a80000
- nhi@f00000

allOf:
- $ref: /schemas/usb/usb-switch.yaml#
Expand All @@ -204,6 +212,21 @@ allOf:
else:
properties:
lstx-gpios: false
- if:
properties:
compatible:
contains:
const: apple,t6040-usb4-acio
then:
required:
- iommu@1a80000
- nhi@1f00000
- interrupts
- interrupt-names
else:
required:
- iommu@a80000
- nhi@f00000

additionalProperties: false

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ properties:
oneOf:
- const: apple,t8103-usb4-nhi
- const: apple,t8142-usb4-nhi
- const: apple,t6040-usb4-nhi
- items:
- enum:
- apple,t6000-usb4-nhi
Expand Down Expand Up @@ -124,7 +125,9 @@ allOf:
properties:
compatible:
contains:
const: apple,t8142-usb4-nhi
enum:
- apple,t8142-usb4-nhi
- apple,t6040-usb4-nhi
then:
properties:
reg:
Expand All @@ -147,6 +150,7 @@ allOf:
- apple,t8122-usb4-nhi
- apple,t8132-usb4-nhi
- apple,t8142-usb4-nhi
- apple,t6040-usb4-nhi
then:
properties:
iommus:
Expand Down
1 change: 1 addition & 0 deletions Documentation/devicetree/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ Kernel Devicetree Usage
usage-model
of_unittest
kernel-api
apple-adt-coverage

Devicetree Overlays
===================
Expand Down
Loading
Loading