Repository navigation
T8132: DisplayPort alt mode on the J604's USB-C ports - #1678
Conversation
The T8132 path refuses DisplayPort outside USB4/TBT: 4-lane DP falls back to USB2, set_mode and the link rate return -EOPNOTSUPP, and AUX is never powered. On T8132 the DP lanes and AUX sit in the core window at the offsets the T8122 helpers use, and the T8122 sequences bring them up. On a port the board marks with apple,dp-alt-mode: - 4-lane DP keeps its mode. The PHY is powered up as for USB3, without the USB lane tunables, with lane mode and crossbar from atcphy_modes[], the common block started and the usb3-dp (AUX_TOP) calibration applied. - After RCAL, DP and USB3+DP power AUX up; the main link and AUX go down again before the PHY leaves a DP mode. - set_mode(DP) succeeds in DP and USB3+DP whatever the submode: the submode is the DCP index, and on an ATC the display crossbar selects the DCP. The DCP answers its ACTIVATE only once this succeeds. - The DCP's link rate runs the T8122 main link start on the mode's DP lane pairs. Drive requests leave the lanes at their start level: these PHYs have no dp-training-table to map a request to. Ports without the property behave as before. Assisted-by: LLM Signed-off-by: Friedrich <261542475+aeries0x@users.noreply.github.com>
Every Type-C route of a T8132 dcpext is treated as having no DP alt mode, so a monitor in DP alt mode is never routed. Treat a route that way only when its PHY lacks apple,dp-alt-mode. A routed T8132 dcpext has no connector of its own: on HPD it connects from the Type-C reconnect work, as it does for a tunnel. Its crossbar behaves as T6030's, where selecting an output only routes it, so a direct (non-tunnel) output gets its link brought up as there. Either way a T8132 dcpext is no apple_crtc pipeline: appledrm keeps skipping its ports and they take no tiles, so those two checks ask for the dcpext rather than for a route without DP alt mode. Assisted-by: LLM Signed-off-by: Friedrich <261542475+aeries0x@users.noreply.github.com>
Describe both external display pipes (dcpext0/1) and their routes to all three USB-C ports: the left ports on ATC0/ATC1 as on the J713, the right port on ATC3 with its display crossbar. Mark the three ATC PHYs for DisplayPort alt mode. The HDMI port (ATC2) is not part of this. As on the J713, a pipe is used only when the boot loader handed it over (chosen.asahi,j713-dcpext=1). Assisted-by: LLM Signed-off-by: Friedrich <261542475+aeries0x@users.noreply.github.com>
The T8132 lane start differs from the T8122 sequence in three points: - both blocks of a pair start at the full swing 0 / pre-emphasis 0 drive preset, where the T8122 start writes only the swing field and a de-emphasis code of 0 to the TX block; - the RX block's VREF filter adjust is 3 rather than 1 and is cleared only after both DTVREG stages are enabled, with 500 ns after each; - at HBR3 the TX start leaves the LDOCLK1 small/big bypass clear. Pass these as flags to the shared lane start; T8122 callers pass none and keep their sequence. Assisted-by: LLM Signed-off-by: Friedrich <261542475+aeries0x@users.noreply.github.com>
7038c68 to
97bb3c4
Compare
|
Force-pushed: rebased onto integration/aurora 2b4523c, with a fix in commit 2. The first version changed On the boot-logo stop mentioned in the first version: #1616 and #1617 enabled the T8132 scaler and JPEG DARTs without |
RyanTheTide
left a comment
There was a problem hiding this comment.
The T8122 helpers keep their old sequence for every non-T8132 caller (flags 0), and the fabric changes are all T8132-dcpext gated. The J604 results across the three ports cover it. Looks good.
a7f1bec
into
aurora-silicon:integration/aurora
External displays on the J604 (MacBook Pro 14", M4) over USB-C in DisplayPort alt mode, as asked about in #1518.
Today the T8132 PHY refuses DP outside USB4/TBT, so a USB-C monitor or a USB-C to HDMI hub gets no picture.
Four commits:
apple,dp-alt-mode, 4-lane DP andUSB3+DP run the PHY's own DP transmitter: the DP lanes and AUX sit in the core window at the offsets the T8122
helpers use, and the T8122 AUX and main-link sequences bring them up.
set_mode(DP)accepts any submode (thecrossbar picks the DCP), the DCP's link rate goes to the T8122 link start, drive requests leave the lanes at their
start level (no
dp-training-tableon these PHYs). Ports without the property behave as before. The bindinggets the property; the host-test fixtures that compile the touched functions get the new field and helper, and
atc-usb3-testsa T8132 target-mode case.a routed dcpext connects on HPD from the Type-C reconnect work, and its direct crossbar output gets its link up
as on T6030. A dcpext stays no appledrm pipeline either way: appledrm keeps skipping its ports and they take no
tiles. Fixture updates for
tiled-split-testsand theapple-dcptransaction harness.J713, right port on ATC3 with its crossbar) and the three PHYs marked. HDMI (ATC2) is not part of this.
(start drive preset on both blocks, RX VREF filter held over both DTVREG stages, no LDOCLK1 bypass at HBR3);
passed as flags to the shared lane start, T8122 callers unchanged. It is separate so it can be dropped on its own:
in my tests both starts trained (below).
The enable comes from the board DT only; no module parameter. As on the J713, a pipe is only used when aura hands
it over (
chosen.asahi,j713-dcpext=1), and the internal display still needs the DCP opt-in.Tested on the J604 with these four commits on integration/aurora 2b4523c plus #1483, #1543 and two local
test-only commits (RTC read-only, a GPU counter):
Earlier, the first version of this PR (the same commits except the two appledrm/tile checks in commit 2) on
integration/aurora 716670b, with a local runtime switch to compare the lane start of commit 4 against the plain
T8122 one:
reader, stick), with both lane starts.
Not tested: suspend/resume with a monitor attached, two monitors at once.
Assisted-by: LLM