Conversation
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 laterDCPs 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_err0.