armbian-build/patch/kernel
Igor Velkov 18848f530d rockchip64: Helios64: fix Type-C PHY and TCPM registration
Problem:
On Helios64 boot, the Type-C PHY (ff7c0000.phy) gets stuck in
"deferred probe" state with unknown reason. This causes:
- USB 3.0 SuperSpeed via Type-C port not working
- DisplayPort via Type-C (Alt Mode) not working

The following messages appear in dmesg:
  platform ff7c0000.phy: deferred probe pending: (reason unknown)
  platform fe800000.usb: deferred probe pending: wait for supplier /phy@ff7c0000/usb3-port
  platform fec00000.dp: deferred probe pending: wait for supplier /phy@ff7c0000/dp-port

Along with dependency cycle warnings:
  /phy@ff7c0000/dp-port: Fixed dependency cycle(s) with /i2c@ff3d0000/typec-portc@22/connector

Root cause:
The Helios64 DTS uses a legacy Type-C connection method:

  &tcphy0 {
      extcon = <&fusb0>;  // Expects extcon from fusb302
  };

However:
1. The FUSB302 driver with TCPM support (since kernel ~4.14) does NOT
   create extcon devices
2. Instead, it uses the Type-C connector class (/sys/class/typec/)
3. The phy-rockchip-typec driver calls extcon_get_edev_by_phandle(),
   fails to find an extcon device at the specified phandle, and
   returns -EPROBE_DEFER
4. The PHY remains in deferred probe indefinitely

The extcon-cables property is present in the DTS, but without a
typec_extcon_bridge node it serves no purpose.

This bug has existed since Type-C support was added to Helios64
(at least since kernel 6.6). It likely worked with older fusb302
driver versions, but broke after the transition to TCPM.

Solution:
Use the typec-extcon-bridge driver (Armbian patch from Ondrej Jirman/megi)
which translates Type-C connector class events to the extcon interface.

The Pinebook Pro patch (board-pbp-add-dp-alt-mode.patch) implements this
correctly: it has a typec_extcon_bridge node, and all extcon references
point to it rather than directly to fusb0.

Changes:
1. Add typec_extcon_bridge node with compatible = "linux,typec-extcon-bridge"
2. Change extcon = <&fusb0> to extcon = <&typec_extcon_bridge> in
   tcphy0, cdn_dp, u2phy0, usbdrd_dwc3_0 nodes
3. Add usb-role-switch, mode-switch, orientation-switch properties
   to fusb0 connector for integration with the bridge
4. Update PDO definitions with DUAL_ROLE and DATA_SWAP flags
5. Convert typec-altmodes property to modern altmodes subnode format
   (required for TCPM port registration)
6. Add extcon,ignore-usb to u2phy0 (following Pinebook Pro pattern)
7. Add snps,usb3-phy-reset-quirk to usbdrd_dwc3_0

After this fix:
- Type-C PHY (ff7c0000.phy) no longer stuck in deferred probe
- USB 3.0 SuperSpeed via Type-C port should work
- DisplayPort via Type-C (Alt Mode) should work
- Correct cable orientation detection
- USB role switching (host/device)

Known remaining issues:
- FUSB302 fails to register TCPM port with error:
    4-0022    typec_fusb302: cannot register tcpm port
  This prevents USB Power Delivery negotiation. The root cause
  appears to be in the connector configuration and requires
  further investigation.
2026-01-12 23:36:43 +01:00
..
archive rockchip64: Helios64: fix Type-C PHY and TCPM registration 2026-01-12 23:36:43 +01:00
genio-1200-vendor Switch canonical to vendor to keep more inline with other families 2025-03-28 12:38:01 +01:00
integrate-6.15 RESEND - Add initial support for Orangepi 5 Ultra (#7902) 2025-03-08 20:10:34 +01:00
rk35xx-legacy rk35xx/legacy: rewrite-kernel-patches, no changes 2025-01-05 18:46:59 +01:00
rk35xx-vendor-6.1 Move to supported, drop device tree as it was merged to the kernel repository 2025-10-20 10:51:12 +02:00
spacemit-legacy-6.1 spacemit: opensbi, u-boot, kernel legacy: Update for v1.0.15 2024-10-09 20:47:00 +02:00