Skip to content

arm64: dts: apple: t6021: third/fourth external display (dcpext2/dcpext3) - #5

Open
maralcbr wants to merge 2 commits into
omacom:tbfrom
maralcbr:dcpext2-external-displays
Open

maralcbr wants to merge 2 commits into
omacom:tbfrom
maralcbr:dcpext2-external-displays

Conversation

@maralcbr

Copy link
Copy Markdown

Wire the M2 Max's two unused external display controllers so the machine can
drive its internal panel plus HDMI and three Type-C displays at once
(previously internal + two externals).

iommu: apple-dart: raise MAX_DARTS_PER_DEVICE to 8
The display-subsystem lists one scanout DART (stream 0) per DCP. Wiring all
four M2 Max external DCPs (dcpext0..3) plus disp0 needs five; the cap of 3
made apple_dart_of_xlate() reject the extras with -EINVAL, so the later
DCPs got no scanout mapping and their firmware faulted on the first frame
(axi_rd_err).

arm64: dts: apple: t6021: add dcpext2/dcpext3 external displays
New t6021-display2.dtsi (dcpext2/dcpext3: own DART/dispext-DART/mailbox/
fixed-clock, crossbar states 4/6, typec-routes to all three ports, aliases so
m1n1 reserves their firmware, and the dispext2/3 DARTs added to the
display-subsystem), included by the M2 Max laptop boards (j414c/j416c) only.
M2 Pro (t6020) has two external DCPs and is untouched.

Tested on an M2 Max (j416c) at this pin (38c14f6): internal 3456x2160@120 +
HDMI (LG 4096x2160@60) + three Type-C (C49RG9x 5120x1440@120, C34H89x
3440x1440, +3440x1440) = five displays; all five DCPs booted
(389c/289c/315c/48dc/50dc); zero DCP crashes, axi_rd_err 0.

A device may reference one DART stream per controller it uses. The Apple
display-subsystem lists one scanout DART (stream 0) per DCP; on M2 Max,
wiring all four external DCPs (dcpext0..3) plus disp0 needs five. The
cap of 3 makes apple_dart_of_xlate() reject the extra streams with
-EINVAL, so the later DCPs never get a scanout mapping and their
firmware faults on the first frame. Raise the cap to 8.
The M2 Max die has four external display controllers, but only dcpext0
(HDMI + Type-C) and dcpext1 (Type-C) were described. Add dcpext2 and
dcpext3 as further Type-C route candidates in a new t6021-display2.dtsi,
included by the M2 Max laptop boards (j414c/j416c) only -- M2 Pro (t6020)
has two external DCPs. This lets the machine drive its internal panel
plus HDMI and three Type-C displays at once.

Needs MAX_DARTS_PER_DEVICE >= 5 (previous patch): the display-subsystem
now lists five scanout DARTs.
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.

1 participant