Skip to content

phy: apple: t6050: let the combo PHY hold the USB domain for its USB2 banks - #895

Closed
funkzy wants to merge 3 commits into
aurora-silicon:t6050/display-phyfrom
funkzy:pr/t6050-combo-usb-domain
Closed

funkzy wants to merge 3 commits into
aurora-silicon:t6050/display-phyfrom
funkzy:pr/t6050-combo-usb-domain

Conversation

@funkzy

@funkzy funkzy commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

Summary

The T6050 combo PHY's USB2 PHY and digital banks sit in the USB controller's power domain. Only a bound USB
controller holds it. On a port with no controller (on the M5 Ultra Mac Studio, J775D, with Linux on the hardware,
the rear Type-C ports drive DisplayPort with no USB controller bound), the first Type-C mode switch wrote an
unclocked bank and took an SError. A combo PHY node may now name that domain fourth, as usb, and the PHY then
holds it while it runs.

What it changes

  • Binding: power-domains and power-domain-names take three or four entries; the fourth is usb. The fixed
    DisplayPort PHY (#phy-cells = <0>) keeps exactly three.
  • Driver: probe accepts three domains, or four on a combo PHY, and attaches each one named. combo_start() takes
    the USB domain after the common one, before the USB2 sequence; combo_stop() drops it before the common one.
  • A combo node that names three domains probes and runs exactly as before.

Why

Without it, a combo port with no USB controller cannot switch modes on bare metal: the SError takes the machine
down. Holding the domain in the PHY makes the port independent of whether a controller is bound.

Testing (J775D, M5 Ultra)

The kernel: our J775D series (integration/aurora's lineage, as on the Studio every day) with this PR's code and
that of the other T6050 PRs sent with it in place of the series' own forms, booted once on 2026-11-02 and restarted
through the SMC at the end. The same code is in the series kernel the machine boots by default.

  • The combo PHY of the port the display is on (ATC2, phy@383000000) bound with its four domains: usb-aon, common,
    wrapper and usb. No USB controller is bound on that port.
  • At hotplug the DCP took that port's DPTX PHY and the link came up: Hyprland ran on it, 682 swaps in the first
    minute. The mode switch that took the SError before ran without one.
  • No panic, BUG, Oops, WARNING or SError line.
  • Builds on phy: apple: Add T6050 DisplayPort and USB combo PHY #480: 0 errors, 0 warnings in the kernel. checkpatch --strict: clean.

Not tested

  • A three-domain combo node (the guest's DT) on this code: J775D's DT names four. The three-domain path is phy: apple: Add T6050 DisplayPort and USB combo PHY #480's,
    unchanged apart from the count check.
  • A combo port with a USB controller bound and the fourth domain named (both then hold it; runtime PM counts both).

Dependencies

#480 (t6050/display-phy). J775D's board DT names the fourth domain; it comes later with the J775D board. The DCP
side is the T6050 bare-metal DCP PR on #485.

For dj

Does the guest bind a USB controller on every combo port? If it does, the guest never needs the fourth domain. Is an
optional fourth domain the shape you want, or would you rather the guest DT name it too?

funkzy and others added 3 commits November 2, 2026 14:19
The combo PHY's USB2 PHY and digital banks are in the USB controller's
power domain. Let a combo PHY name it fourth, as "usb", so the PHY can
hold it on a port with no USB controller bound. The fixed DisplayPort
PHY keeps exactly three domains.

Signed-off-by: Jeff Queisser <funkzy@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The combo PHY's USB2 PHY and digital banks are in the USB controller's
power domain. Only a bound USB controller holds that domain, so on a
port with no controller (a DisplayPort-only port, as on J775D with Linux
on the hardware) the first Type-C mode switch wrote an unclocked bank
and took an SError.

A combo PHY node may now name that domain as a fourth power domain,
"usb". When it does, the PHY holds it from combo start to combo stop,
after the common domain on the way up and before it on the way down.
Nodes that name three domains probe and run exactly as before, and the
fixed DisplayPort PHY still takes exactly three.

Testing: on J775D (M5 Ultra), with the fourth domain named on each combo
port, Type-C mode switches and DisplayPort on the rear ports ran without
an SError on every boot since 2026-10-30.

Signed-off-by: Jeff Queisser <funkzy@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
apple,port-index has an enum but no type, so dtschema cannot decode the
cell and every combo PHY node fails with "b'\x00\x00\x00\x02' is not one
of [1, 2]" and a core-schema type error, whatever port it names. Give it
the uint32 type.

This is a small fix to the binding added in 2aaccf6 ("phy: apple:
Add T6050 DisplayPort and USB combo PHY", aurora-silicon#480), offered here only
because this series is the next to touch the file. Please fold it into
that commit, or drop it here, whichever suits aurora-silicon#480 better.

Signed-off-by: Jeff Queisser <funkzy@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@funkzy
funkzy force-pushed the pr/t6050-combo-usb-domain branch from 8f28691 to 5573a22 Compare November 3, 2026 01:15
@funkzy

funkzy commented Nov 3, 2026

Copy link
Copy Markdown
Contributor Author

Closing: this change now lives in the funkzy/j775d branch of aurora-silicon/linux-aurora (the J775D series as built and booted, 681521644671), which dj merges directly; no PR flow for it any more.

@funkzy funkzy closed this Nov 3, 2026
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