Skip to content

tps6598x driver fails to read status: DP Alt Mode never negotiates #586

Description

@mpcref

Please note that I've asked AI to write the following summary after an extensive debugging session.

Summary

The tps6598x USB-C PD/alt-mode controller driver repeatedly fails with tps6598x_read_status: failed to read status, preventing DP Alt Mode and USB 3.x negotiation. All USB-C hubs/devices fall back to USB 2.0 only. HDMI video output via DP Alt Mode does not work.

Hardware

  • Device: MacBook Air (M1, J813)
  • Kernel: 7.1.6-1-1-ARCH (7.1.6.asahi1-1-ARCH)
  • USB-C controller: TI CD321x (tps6598x at I2C address 0-0038)

Symptoms

  • USB-C hub that support USB 3.1 / Thunderbolt 3 enumerate as USB 2.0 (480 Mbps) only
  • No USB 3.x superspeed lanes are ever negotiated
  • DP Alt Mode never establishes — HDMI video output from USB-C hub does not work
  • All USB 2.0 devices on the hub function normally (keyboard, mouse, mass storage, LAN, etc.)
  • Same hub works correctly on macOS — hardware is fine

dmesg output

tps6598x 0-0038: tps6598x_read_status: failed to read status
tps6598x 0-0038: cd321x_interrupt: failed to read events

These errors repeat continuously at boot and on every hotplug event.

Relevant kernel config

CONFIG_TYPEC=y
CONFIG_TYPEC_TCPM=y
CONFIG_TYPEC_TCPCI=y
CONFIG_TYPEC_UCSI=y
CONFIG_TYPEC_TPS6598X_CORE=y
CONFIG_TYPEC_TPS6598X=y
CONFIG_TYPEC_DP_ALTMODE=y
CONFIG_USB_APPLEDISPLAY=y

The driver is present and loaded. The failure is at runtime during I2C status reads.

Reproduction

  1. Connect the USB-C hub with DP Alt Mode video output
  2. Observe dmesg — repeated tps6598x_read_status: failed to read status
  3. Check /sys/bus/usb/devices/*/speed — hub and all downstream devices show 480 (USB 2.0)
  4. Video output does not work
  5. Same hub on macOS works at USB 3.x speeds with video output

Expected behavior

  • tps6598x should successfully read controller status
  • USB 3.x lanes should negotiate when the hub supports it
  • DP Alt Mode should establish, enabling video output via USB-C hubs

Actual behavior

  • tps6598x I2C reads fail immediately
  • Fallback to USB 2.0-only operation
  • No video output possible via USB-C hubs

Notes

  • This appears to be a hardware/firmware quirk specific to this J813 unit — the driver works in principle but the I2C communication with the controller fails at runtime
  • A full power cycle of the hub can temporarily restore USB 2.0 device enumeration, but USB 3.x and DP Alt Mode remain unavailable
  • No DisplayLink is involved — this is native DP Alt Mode hardware that the kernel driver cannot initialize

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions