[PATCH v2 0/2] usb: typec: add CIX Type-C PD controller driver
From: Gary Yang
Date: Mon Nov 09 2026 - 04:32:50 EST
This series adds a Type-C PD controller driver for CIX platforms.
The first supported controller is the Realtek RTS5453H, a stand-alone
port controller: the CC and USB Power Delivery state machines run in
its firmware and are configured through vendor registers rather than
the TCPC register interface, so it cannot be driven by the tcpm
framework. The driver translates the controller status registers into
Type-C class notifications and drives the platform PHY's orientation
switch and mode mux.
The driver is named after the CIX platform integration rather than the
RTS5453H so that further register-compatible PD controllers can be
supported without renaming it.
Patch 1 adds the devicetree binding and patch 2 adds the driver and its
MAINTAINERS entry. The two DTS patches from v1 (the Sky1 I2C
#address-cells/#size-cells fix and the Orion O6 board enablement) have
been split out of this series and will be sent separately through the
SoC tree.
Changes since v1:
- Drop the DTS patches from the series.
- binding: describe the single connector as a plain "connector" child
node instead of an addressed node, and stop requiring
"try-power-role", which only applies to dual-role ports.
- driver: add the missing USB_ROLE_SWITCH Kconfig dependency.
- driver: register the DisplayPort partner alternate mode only for
actual DP connections, with a valid VDO, call
typec_altmode_update_active() on attach/detach and set
no_mode_control since the firmware drives mode entry.
- driver: never pass a NULL alternate mode to typec_mux_set(), and
treat debug accessories as disconnected everywhere.
- driver: handle USB 2.0-only connections in orientation, role and mux
state.
- driver: only cache the USB role after the role switch accepted it,
and force a role refresh on resume.
- driver: use typec_get_fw_cap() instead of open-coding the connector
properties.
- driver: acquire the mux and role switch before registering the port,
use dev_err_probe() on probe failures and reset the mux to the safe
state on teardown.
- driver: remove the undocumented disable_pd_interrupt sysfs attribute
and the manual disable_irq()/IRQ_DISABLE_UNLAZY handling that could
leak the shared IRQ's disable depth. This also fixes the build error
reported by the kernel test robot on sparc64 and s390.
- driver: use a named i2c_device_id initializer and add the missing
hibernation PM callbacks.
Tested on a Radxa Orion O6 (Sky1): attach/detach, USB-only and DP-only
alt modes, cable orientation detection and HPD reporting all work.
Gary Yang (2):
dt-bindings: usb: add Realtek RTS5453H Type-C port controller
usb: typec: add CIX Type-C PD controller driver
.../bindings/usb/realtek,rts5453h.yaml | 112 +++
MAINTAINERS | 7 +
drivers/usb/typec/Kconfig | 13 +
drivers/usb/typec/Makefile | 1 +
drivers/usb/typec/cix_pd.c | 687 ++++++++++++++++++
5 files changed, 820 insertions(+)
create mode 100644 Documentation/devicetree/bindings/usb/realtek,rts5453h.yaml
create mode 100644 drivers/usb/typec/cix_pd.c
--
2.50.1