UCSI, TCPM, PD, AltModes: Demystifying USB-C and Its Support in Linux
summary
Overview of how Linux actually implements USB‑C: the kernel uses a tcpm state machine to run PD negotiation and alt modes, with platform glue for TCPC/CC handling; some Qualcomm laptops expose UCSI 1.0/1.2 to firmware while older boards are non‑PD (5 V, ~1.5 A) or require board muxing and external retimers; a Linux host altmode emulation fills gaps where UCSI doesn't pass vendor VDMs. Upstream patches land in 6.11/6.12, RB5/STM32 boards are useful test hardware, out‑of‑band legacy support still pending.
AI-written summary · about
chapters (16)
- 0:00USB-C complexity
- 1:04USB standards history
- 6:07USB-C connectors evolution
- 9:00USB-C pins and channels
- 11:30USB-C alternative modes
- 14:53Linux USB-C kernel support
- 17:25TCPM in Linux
- 19:11Type-C Port Controller Interface (TCPCI)
- 20:14UCSI firmware management
- 22:44Alt mode drivers
- 25:12USB-C hardware bring-up
- 26:13Device Tree for USB-C
- 28:00Qualcomm USB-C implementation
- 30:54DisplayPort over USB-C
- 33:25DRM connector challenges
- 35:33Summary and Q&A
related talks
43mUCSI, TCPM, PD, AltModes: Demystifying USB-C and Its Support in Linux
40mA Tour of USB Device Controller (UDC) in Linux
40mUSB on Embedded Linux Systems Deep Dive
49mSD/eMMC: New Speed Modes and Their Support in Linux
52mDebugging Usually Slightly Broken (USB) Devices and Drivers
43mLinux Power! (from the Perspective of a PMIC Vendor)
14mPCI Pwrctrl woes
35mIntroducing UACCE Bus of DPDK
