Skip to content

phy: apple: T6040 two-lane DP Alt Mode pin D beside USB3 - #516

Closed
RyanTheTide wants to merge 2 commits into
wip/j616s-batch1-20261027from
wip/j616s-dp-pin-d-20261027
Closed

RyanTheTide wants to merge 2 commits into
wip/j616s-batch1-20261027from
wip/j616s-dp-pin-d-20261027

Conversation

@RyanTheTide

@RyanTheTide RyanTheTide commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

J616s dock HDMI over USB-C pin D

Based on the J616s batch1 kernel at d34a031e, which includes the #451/#515
external display fabric and the #506 nonoverlapping DT parity pieces. The
published batch1 head e1a25b5e adds only a host selftest fixture fix, so
the runtime source is the same before this PHY patch. The
orchestrator's J616s run with m1n1 #56 showed dcpext0/1 handoff and the
display gate working, built-in HDMI-A-1 enumerating, eDP/GUI intact, and no
WARN or DART faults. The dock negotiated DP pin assignment D but no DP
connector appeared: the T6040 PHY rejected D.

This patch adds the two-lane D mode to the existing T6040 PHY. It latches the
pin assignment before DCP claims the Type-C route, reports two DP lanes to
the DPTX trainer, keeps USB3's coprocessor and PIPE on the other pair, selects
the orientation-specific ATC lane group and restores the ordinary USB3
teardown once DCP releases DP. The two-lane link register tables come from
Dj's public GPL-2.0-only-or-MIT T6050 combo PHY series (#480), with credit
in the new header. The existing C/E four-lane and fixed HDMI paths stay on
their prior sequences. No DT edit or runtime parameter is needed.

The measurement candidate pairs this kernel with
stage2-dcpext-1bf9ec57-r2 (m1n1 #56) for both external DCP memory
handoffs and the GPU calibration handoff. The three DCP TEXT reservations
still refer to one validated immutable TEXT image; their duplicate
reservation warnings are a separate cleanup.

Ryan's dock acceptance is an EDID-named 1920x1080@180 Hz display with
colours matching Neo. Batch1 already has the guarded 414.09 MHz RGB8,
full-range sRGB mode (dcp-180hz-policy.h), requiring two trained HBR3
lanes. Its 9.93816 Gbit/s payload does not fit two HBR2 lanes (8.64
Gbit/s) and does fit two HBR3 lanes (12.96 Gbit/s). The parser and common
scanout already select external SDR RGB/full range, BGRA pixels, sRGB source
tagging and the CRTC colour matrix. Hardware must confirm actual EDID name,
mode/OSD, configured rate and lanes, and colour test pattern before this
is accepted.

Qualification

  • T6040 PHY object compile: pass with batch1 release config.
  • Full WERROR Image/modules/DTBs: pass with the unchanged batch1 config at
    final head 31340abccfcc3f7f9669fa327d8771a3cadd4f3f.
  • J616s CHECK_DTBS=y and T6040 ATC binding check: pass. A broader
    Type-C routes binding run reports seven pre-existing T6020 example
    diagnostics; the failure log is preserved in the task report.
  • Offline tether candidate:
    candidates/boot-7.3.0-aurora-j616s-dp2-u2, paired with
    stage2-dcpext-1bf9ec57-r2; SHA256SUMS, MANIFEST.sha256 and aligned
    current-GPT init append verify. Its boot plan uses --extra user4k=on.
  • Hardware: pending controller-approved J616s tether run. Dock HDMI must
    negotiate D, enumerate, show EDID name, mode set 1080p180 visibly with
    HBR3 x2 and correct full-range colour, and retain USB3/Ethernet. Also
    check direct USB-C C/E or D, built-in HDMI, GPU calibration, eDP/GUI and
    zero WARN/DART faults. The candidate's MEASURE.md lists evidence and
    rollback steps.

This is a draft until the J616s measurement agent returns link training,
hotplug and regression evidence. Do not infer a dock pass from offline checks.
The exact source and candidate hashes have also been handed to t-3369 for
its batch2 tip build.

@RyanTheTide

Copy link
Copy Markdown
Contributor Author

Landed in integration/aurora through #533 (J616s consolidation, 2026-10-28).

@RyanTheTide
RyanTheTide deleted the wip/j616s-dp-pin-d-20261027 branch October 28, 2026 05:15
erikwb pushed a commit to erikwb/linux that referenced this pull request Oct 28, 2026
…ora-silicon#518, aurora-silicon#516, aurora-silicon#519 and aurora-silicon#451

This is the tree of the J616s test kernel 7.3.0-aurora-j616s-batch5, built
from these parents:

- wip/j616s-batch1-20261027 (e1a25b5): the J616s bring-up series
- integration/aurora 647f084 (includes aurora-silicon#498, aurora-silicon#512, aurora-silicon#523 and DJ's G17 merges)
- aurora-silicon#518 ad14f2d: 25G83 tiler growth fix (Jonathan Goyvaerts)
- aurora-silicon#516 31340ab: T6040 two-lane DP pin D beside USB3
- aurora-silicon#519 d769aaf: tipd reconcile of firmware-entered J616s DP Alt Mode
- aurora-silicon#451 0d43a7f: J616s external displays (František Balázsy)

Resolution notes:
- aurora-silicon#451's display code supersedes the older aurora-silicon#451 copy carried by batch1,
  including its desktop 26.6 adaptive sync. Batch1's callback guard,
  ProMotion presentation timestamps, minRR=0 restore and swap watchdog stay.
- The display gate finds a Type-C route's PHY by its typecN name, so aurora-silicon#451's
  dcpext0 route@0 is not enabled on a tether whose ATC0 PHY is disabled.
- aurora-silicon#516's pin D and aurora-silicon#519's tipd reconcile are kept as in the J616s series.
  Batch2's selftest fixture reconcile for the G17 owner and CLPC fixtures is
  part of this tree.

Tested on the J616s with the follow-up commits: boots with 0 WARN, external
display at 1920x1080@180 through DP Alt Mode, 20/20 mode switches and
15/15 DPMS cycles with no new kernel errors.

Assisted-by: LLM
Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
erikwb pushed a commit to erikwb/linux that referenced this pull request Oct 28, 2026
Brings the J616s batch5 kernel (the tree running on the M4 Pro) up to the
current integration/aurora, which adds aurora-silicon#524 (J713 T8132 energy model), aurora-silicon#526
(the T6041 display fabric carry, whose peer allocation field group batch5
already has) and aurora-silicon#529 (J713 USB-C idle power).

Conflict resolution:
- selftests apple-dcp rate.py: keep batch5's version. Its fixtures follow
  aurora-silicon#451's desktop adaptive sync and the T6041 external EDID. The
  integration/aurora side only changed how the lookup_mode() definition is
  found; its line-start pattern also matches the indented
  "lookup_mode(dcp, ..." call that batch5's iomfb.c has before the
  definition, while batch5's 'bool lookup_mode(' marker finds the
  definition in either form.

aurora-silicon#529's ATC and dwc3 changes merge cleanly beside aurora-silicon#516's two-lane DP pin D.

Assisted-by: LLM
Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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