Skip to content

arm64: dts: apple: Enable J716c USB4 display routing on all ports - #1273

Merged
RyanTheTide merged 1 commit into
integration/aurorafrom
ewb/j716c-public-usb4-dt
Nov 12, 2026
Merged

RyanTheTide merged 1 commit into
integration/aurorafrom
ewb/j716c-public-usb4-dt

Conversation

@erikwb

@erikwb erikwb commented Nov 9, 2026 •

Copy link
Copy Markdown
Contributor

Enable both left USB-C ports and display routing on all three J716c ports. Describe the PHY, USB, USB4, PCIe tunnel and display resources, their power/clock dependencies, and the reciprocal routing graph. Preserve the internal panel as the display master's first scanout.

Based directly on #1276 (ewb/j716c-public-gpu-display-dt) for the independent GPU/internal-panel board description. Additional dependencies: #1323 for the right-port and USB4 platform nodes; #1271 for the completed display-tunnel driver chain, including #1270, #1268 and #940. The GPU runtime also needs #1275, as documented by #1276. These branches must be combined for the board DT to compile and operate; they are not copied into this PR.

This PR owns the two board include files, their inclusion, and the J716c-only guards that suppress inventory copies of the left-port PCIe DARTs. Those four guard lines previously lived in the test aggregate. Shared right-port nodes retain #1323's board guards so other T6050 boards do not inherit J716c enablement.

Validation: the combined dependency tree builds Image.gz, modules and all 137 Apple DTBs, including all 11 T6050 boards. ARM64 QEMU passes 245 display KUnit tests with one existing skip, with debug mutex/work-object checks and panic_on_warn=1. All 20 affected binding documents and focused source/modeled-handoff DT checks pass; the three-port resource check and 30 reciprocal graph edges pass. Full-registry schema validation retains the documented unrelated tunable-type collision.

Hardware validation: the final combined source tree booted on J716c with clean upstream Aquamarine. The internal panel runs at 3456×2234@120 Hz, and the two external monitors were captured at 3840×2160@240 and @120 Hz. The user tested the TS5 on all three physical ports and confirmed both displays, USB input and Ethernet working. The firmware-27 swap timestamp fix that boot needed is now #1404.

The hardware image also combines the public platform PRs #936, #938, #941, #942 and #943 for storage, networking, SMC and related platform support. These are boot-test inputs, not extra ancestors of this feature branch. The combined test tree remains local and is not a PR base.

Created with GPT-6 Astra in Codex.

@DjDeveloperr DjDeveloperr left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

J716c-only DT. t6050-j716c.dtb builds at this head, dt-validate reports nothing for it, and apple,dcp.yaml, apple,t8103-usb4-acio.yaml, apple,combo-phy.yaml and apple,sn201202x.yaml pass dt-doc-validate. The other T6050 boards still don't build because of the base's duplicate labels. #1308 (on top of this branch) fixes that; J716c and J775D come out byte-identical. The J714s equivalent of this routing needs its own board description of the left ports and can't be validated without a dock (ATC0 is our debug link), so I haven't written it.

Setup. 14-inch M5 Pro (J714sAP, T6050, macOS 27.0 firmware). RAM boot through aura of #1273's head (the whole stack on ewb/j716c-usb4-public-base), plus our M5 Pro GPU commit, plus #1308. #1308 is needed because the base doesn't build t6050-j714s.dtb; see there. The kit DT is the J714s one compiled on this tree. Modules: nvme, display, smc, input, gpu and usb4 (mux-apple-display-crossbar, phy-apple-dptx, atc-t6050-dp, dwc3-apple, sn201202x, thunderbolt, thunderbolt_apple). No display or dock was attached. ATC0 carries the debug link.

Whole-stack result on J714s.

  • Boots to a shell with no oops, WARN or BUG.
  • 2ab000000.phy and 383000000.phy -> apple-t6050-dp-phy (phys .0-.5); 2aa280000.usb and 382280000.usb -> dwc3-apple. typec port0 and port1 register (device/sink, no partner). The debug port is left alone and the KIS link stayed up throughout.
  • Internal panel: display-subsystem -> apple-drm, card1-eDP-1 connected and enabled at 3024x1890. GPU: card0 and renderD128.
  • ATC2 router mailbox 381108000 binds and thunderbolt_apple loads. 381ac0000.acio stays deferred because J714s has no board ports/DROM yet.

KUnit on the same tree (ARM64 QEMU, panic_on_warn=1, PROVE_LOCKING, DEBUG_OBJECTS_WORK): 356 tests, 354 passed, 2 skipped by design.

@erikwb
erikwb force-pushed the ewb/j716c-public-usb4-dt branch from 081122d to 5024053 Compare November 9, 2026 14:40
@erikwb
erikwb changed the base branch from ewb/j716c-public-usb4-typec to ewb/j716c-public-gpu-display-dt November 9, 2026 14:41
@DjDeveloperr

Copy link
Copy Markdown
Contributor

Leaving this open: it is based on #1276 (the J716c GPU/panel tree, on #1012) and needs #1271/#1270 for the display-tunnel driver chain. #1012 isn't being merged in this round, so this waits with them. #1323, which provides the right-port and USB4 platform nodes, is going in now.

🤖 Generated with Claude Code

@erikwb
erikwb force-pushed the ewb/j716c-public-usb4-dt branch from 5024053 to 1de9dc7 Compare November 10, 2026 02:17
Wire both left USB-C ports, their USB and PCIe IOMMUs, router resources,
power domains and display routes. Enable external display processors and
four tunnel pixel-clock gates per port using the public hardware inventory.
Extend the display master's scanout list while retaining the internal
panel's DART first for the loader handoff.

Enable each required supply domain and the board-specific boot-port USB2
handover property. Each port routes two displays through independent
processors, with paired processors for high-bandwidth modes.

Skip the J716c inventory copies of the two left-port PCIe DARTs when
the board supplies their tunnel-bus nodes, keeping those nodes unique.

Developed with Claude Code.
Signed-off-by: Erik Bourget <erik@ebourget.net>
@erikwb
erikwb force-pushed the ewb/j716c-public-usb4-dt branch from 1de9dc7 to a5054ee Compare November 10, 2026 02:34
@erikwb
erikwb force-pushed the ewb/j716c-public-gpu-display-dt branch from dddc6e8 to 49b0a5b Compare November 10, 2026 02:34
@RyanTheTide
RyanTheTide changed the base branch from ewb/j716c-public-gpu-display-dt to integration/aurora November 12, 2026 05:09
@RyanTheTide
RyanTheTide merged commit ca28217 into integration/aurora Nov 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants