Skip to content

mux: apple-display-crossbar: T6041 (M4 Pro/Max) per-ATC crossbar - #435

Merged
RyanTheTide merged 2 commits into
aurora-silicon:integration/aurorafrom
fbalazsy:j616s/crossbar-t6041
Oct 25, 2026
Merged

RyanTheTide merged 2 commits into
aurora-silicon:integration/aurorafrom
fbalazsy:j616s/crossbar-t6041

Conversation

@fbalazsy

Copy link
Copy Markdown

T6040/T6041 (M4 Pro/Max) have one 0x4000-byte display crossbar per ATC (ADT atcN-dpxbar, atc-dpxbar,t604x) instead of the single SoC crossbar of T6020. The block follows the T6030 compact register map and flow: the status words at 0x804/0x810/0x81c mirror 0x004/0x014/0x024 and 0x808/0x818 mirror 0x00c/0x020, while writes in the T8142/T6050 layout (0x34/0x38/0x3c, tried first from #248) do not hold. There is no tunable register. The ADT lists nine UFP endpoints (dispext0-3, scodec0 and the DP IN ports).

Change. Two commits:

  1. dt-bindings: mux: apple,display-crossbar: add the T6041 per-ATC crossbar — the compatible.
  2. mux: apple-display-crossbar: support the T6041 per-ATC crossbar — match data apple_dpxbar_hw_t6041: T6030 flow selected from the match data instead of the machine compatible (t6030_flow), no UNK_TUNABLE write (no_tunable), n_ufp = 9. Existing SoCs are unchanged.

The J616s device-tree nodes (four crossbars) and the rest of the J616s external display series (T6040 DP PHY, dcpext0/1, DISPEXT power chains) follow separately; the crossbar nodes need the DP PHY and the loader hand-off of the dcpext firmware memory to be useful.

How tested (MacBook Pro M4 Pro, J616s, DCP firmware 26.6.2), kernel 7.3.0-m4.72 = integration/aurora 420a1c8 + the J616s display series with exactly this crossbar change:

Result
HDMI: dcpext0 → ATC3 crossbar → fixed DP PHY → DP-to-HDMI converter 3840x2160@60, picture confirmed
USB-C DisplayPort: dcpext1 → ATC0/1/2 crossbar → Type-C PHY (DP alt mode), each of the three ports, both cable orientations 5120x1440@120 and 3840x2160@120 (DSC over HBR3) on a Samsung G95NC, replug and switching between ports
drivers/mux/apple-display-crossbar.o on integration/aurora 420a1c8 builds, no warnings
checkpatch.pl --strict on both patches 0 errors, 0 warnings, 0 checks
make dt_binding_check DT_SCHEMA_FILES=…/apple,display-crossbar.yaml (dtschema 2026.9, yamllint) clean

@RyanTheTide RyanTheTide 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.

I checked the match data, the T6030 route and link sequence, the nine UFP states and resume handling. The new flags preserve the old matches and keep the T6041 path separate.

Neither ccfd11851710 nor c9daf2292417 has a Signed-off-by. Please provide your own sign-off for both commits. I have kept your commits and authorship intact.

The combined test tree has passed the apple-dcp host tests, 63/63, and the Asahi KUnit tests, 86/86. The universal WERROR builds are still running, so those are not passed yet. This is not merge-ready while the sign-offs are missing.

@RyanTheTide

Copy link
Copy Markdown
Contributor

Final software gates now pass on the combined tree containing these heads and the proposed common config correction in #438. Both defconfig plus asahi.config and the Fedora-base recipe build Image, modules and DTBs with WERROR enabled. The Fedora recipe also covers KUNIT=m. Every requested asahi.config setting survives resolution. Asahi KUnit passes 86/86 and apple-dcp host tests pass 63/63. The targeted J713/J616s binding and DTB checks have no diagnostics.

The code and binding gates pass. The original two commits still need contributor sign-offs, so this remains not merge-ready. The common-config review in #438 also remains outstanding.

@RyanTheTide

Copy link
Copy Markdown
Contributor

Final qualification for c9daf229241755ed68549fb827229a23a2606986. The combined test source is 031f7dec92a1bef6b72509b08c5c597f50474adb, tree 36854d3a72e4efdf2c352166498ab436adaf3c48.

Both defconfig plus asahi.config and the Fedora-base shipping recipe pass the full Image/modules/DTB build with WERROR enabled. Every requested fragment value survives olddefconfig. Asahi KUnit passes 86/86, apple-dcp host tests pass 63/63, and targeted J713/J616s binding/DTB checks have no diagnostics. Strict source-style checks pass; commit sign-offs are checked separately. The attribution audit found no new material Gravity implementation blocks. Existing GPL-2.0-only Cody Ho and Niklas Sheth credit is preserved.

The T6041 crossbar code passes review, preserving older SoCs. Both original commits still lack contributor Signed-off-by. Not merge-ready until the author resolves those sign-offs and #438 receives the required review. The M4-only runtime follows the agreed review/build-only scope.

T6040/T6041 (M4 Pro/Max) carry one display crossbar per Type-C or HDMI
PHY (ADT atcN-dpxbar, "atc-dpxbar,t604x"), 0x4000 bytes each, which
routes the DISPEXT pipes and the DP IN ports of that ATC. Add the
compatible.

Signed-off-by: František Balázsy <frantisekbalazsy@gmail.com>
T6040/T6041 (M4 Pro/Max) have one 0x4000-byte display crossbar per ATC
instead of the single SoC crossbar of T6020. The block follows the T6030
compact register map and flow: the status words at 0x804/0x810/0x81c
mirror 0x004/0x014/0x024 and 0x808/0x818 mirror 0x00c/0x020, while the
T8142/T6050-layout writes to 0x34/0x38/0x3c do not hold (register dumps
on a J616s). It has no tunable register.

Select the T6030 flow from the match data instead of the machine
compatible, skip the UNK_TUNABLE write for this block and describe the
nine UFP endpoints the ADT lists (dispext0-3, scodec0 and the DP IN
ports).

Tested on a MacBook Pro M4 Pro (J616s): HDMI through the ATC3 crossbar
(dcpext0, 3840x2160@60) and USB-C DisplayPort through the ATC0-2
crossbars (dcpext1, 5120x1440@120 and 3840x2160@120 with DSC over
HBR3), including replug and switching between the three Type-C ports.

Signed-off-by: František Balázsy <frantisekbalazsy@gmail.com>
@fbalazsy
fbalazsy force-pushed the j616s/crossbar-t6041 branch from c9daf22 to 730ffa5 Compare October 25, 2026 06:53
@fbalazsy

Copy link
Copy Markdown
Author

Added my Signed-off-by to both commits (now 497ef5b, 730ffa5). The new head 730ffa5 has the same tree as the qualified c9daf2292417 (0b3bf679f485a71716485c98bbe7598982ad21af); only commit messages changed.

@RyanTheTide RyanTheTide 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.

The sign-offs are in, and the trees match what was qualified.

Gates on integration/aurora 653c489 with #394, #435, #436, #446 (the carried #445), #427 and #428 merged (test tree 4582b72703d5), without #438:

  • Universal recipe (Fedora asahi base, asahi.config, olddefconfig, LLVM=1, CONFIG_DRM_WERROR=y): Image, modules and DTBs build with no warnings, and all 130 asahi.config settings survive.
  • KUnit asahi 84/84, drm/apple display set 212/212.
  • apple-dcp host selftests 62/63, the same as the base (dwc3-teardown fails there too).
  • dt_binding_check and CHECK_DTBS clean for the touched bindings and the J616s, J713, J700, M1 and M2 DTBs.

J616s (M4 Pro, 26.6.2 firmware): this kernel boots like the daily one. Wi-Fi, Bluetooth, audio devices, PMP, NVMe, cpufreq and cpuidle all match, with no DART faults or SErrors and no IRQ-safe genpd warnings. With the T6041 display handoff it also drives the internal panel. The Neo smoke boot of the same image is queued.

@RyanTheTide
RyanTheTide merged commit 36fab26 into aurora-silicon:integration/aurora Oct 25, 2026
RyanTheTide added a commit that referenced this pull request Oct 25, 2026
Include the qualified M4 Pro/Max display and GPU identity updates from #435, #427, #428 and #446 on top of the existing consolidation. Regate this final tree before publication; earlier-head gate results do not qualify it.

Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>

Assisted-by: LLM
@fbalazsy
fbalazsy deleted the j616s/crossbar-t6041 branch October 25, 2026 23:40
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.

2 participants