* [PATCH 0/5] usb: typec: cable comms on RT1711H-compatible TCPCs and FUSB302
@ 2026-11-03 11:21 Alexey Charkov
2026-11-03 11:21 ` [PATCH 1/5] usb: typec: tcpm: Stop a source from repeating a cable Soft_Reset Alexey Charkov
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Alexey Charkov @ 2026-11-03 11:21 UTC (permalink / raw)
To: Badhri Jagan Sridharan, Heikki Krogerus, Greg Kroah-Hartman,
RD Babiera
Cc: Sebastian Reichel, linux-usb, linux-kernel, Alexey Charkov,
stable
Neither the RT1711H family (including the HUSB311 and ET7304) nor the
FUSB302 lets TCPM talk to cable plugs today, so cable discovery is
skipped, and with it the cable's current and speed ratings.
The RT1711H family handles SOP' like any other TCPCI-compliant TCPC, but
enabling it exposed a problem in the TCPCI core: it set SOP' in
RECEIVE_DETECT whenever the TCPC can talk to cables, regardless of who
sources VCONN. With the partner as the VCONN Source, the port then acks
and processes the partner's own traffic with the cable plug.
Patch 1 fixes a TCPM bug that cable communication on the FUSB302 made
visible: after a VCONN swap, a source resets the cable plug twice.
Patch 2 lets a TCPCI TCPC receive SOP' only while it sources VCONN,
which also affects the Maxim TCPCs, the only ones that enable SOP'
today. Patch 3 enables SOP' on the RT1711H family. Patches 4 and 5 add
SOP' to the FUSB302 driver, receiving it under the same VCONN rule.
Tested on an RK3576 EVB1 (HUSB311, source-only) and Flipper One boards
(FUSB302B):
- Without patch 2, a FUSB302 sink sent SOP' Discover Identity over a
cable with no e-marker, so the HUSB311 had no VCONN to source. The
HUSB311 acked each one and its TCPM answered over SOP, after which the
sink soft reset the contract every time.
- With patch 2, the same messages went unacked and the HUSB311 port
correctly ignored them.
- Over an e-marked 5A EPR cable, the HUSB311 sourced VCONN, read the
cable identity and completed discovery, while the FUSB302 sink kept
SOP' reception off.
- With a FUSB302 as source on the same cable, it sourced VCONN, read
the cable identity and completed discovery. The cable plug accepted
the FUSB302's automatic GoodCRC to its replies, which the datasheet
leaves undocumented for SOP'.
- Between two FUSB302 ports on the same cable, VCONN swaps both ways
moved SOP' reception along with VCONN, and each new VCONN Source
soft reset the cable plug over SOP'. Without patch 1, the source did
so twice.
Signed-off-by: Alexey Charkov <alchark@flipper.net>
---
Alexey Charkov (5):
usb: typec: tcpm: Stop a source from repeating a cable Soft_Reset
usb: typec: tcpci: Receive SOP' only while sourcing VCONN
usb: typec: tcpci_rt1711h: Enable SOP' communication
usb: typec: fusb302: Tell SOP' messages apart from SOP
usb: typec: fusb302: Enable SOP' communication
drivers/usb/typec/tcpm/fusb302.c | 63 ++++++++++++++++++++++++++---
drivers/usb/typec/tcpm/fusb302_reg.h | 10 +++++
drivers/usb/typec/tcpm/tcpci.c | 72 +++++++++++++++++++++++-----------
drivers/usb/typec/tcpm/tcpci_rt1711h.c | 1 +
drivers/usb/typec/tcpm/tcpm.c | 2 +
5 files changed, 119 insertions(+), 29 deletions(-)
---
base-commit: 2637bdec0535a2044cd830eba9a79363651d9043
change-id: 20261103-husb311-cable-comm-46f2e77e4c18
Best regards,
--
Alexey Charkov <alchark@flipper.net>
^ permalink raw reply [flat|nested] 5+ messages in thread* [PATCH 1/5] usb: typec: tcpm: Stop a source from repeating a cable Soft_Reset 2026-11-03 11:21 [PATCH 0/5] usb: typec: cable comms on RT1711H-compatible TCPCs and FUSB302 Alexey Charkov @ 2026-11-03 11:21 ` Alexey Charkov 2026-11-03 11:21 ` [PATCH 2/5] usb: typec: tcpci: Receive SOP' only while sourcing VCONN Alexey Charkov 2026-11-11 14:00 ` [PATCH 0/5] usb: typec: cable comms on RT1711H-compatible TCPCs and FUSB302 Heikki Krogerus 2 siblings, 0 replies; 5+ messages in thread From: Alexey Charkov @ 2026-11-03 11:21 UTC (permalink / raw) To: Badhri Jagan Sridharan, Heikki Krogerus, Greg Kroah-Hartman, RD Babiera Cc: Sebastian Reichel, linux-usb, linux-kernel, Alexey Charkov, stable A soft reset AMS starts with upcoming_state set to SOFT_RESET_SEND and a call to tcpm_ams_start(). A sink then enters SOFT_RESET_SEND through upcoming_state, which consumes it. A source enters SOFT_RESET_SEND right away and leaves upcoming_state set, for the next SRC_READY to replay. After an SOP Soft_Reset that is harmless, as the Accept handler or a hard reset replaces upcoming_state. The SOP' Soft_Reset sent after a VCONN swap returns to SRC_READY instead, so a source resets the cable plug a second time, outside of any AMS. Clear upcoming_state when a source enters SOFT_RESET_SEND right away. Cc: stable@vger.kernel.org Fixes: 6bd181ba60e1 ("usb: typec: tcpm: add control message support to sop'") Signed-off-by: Alexey Charkov <alchark@flipper.net> --- drivers/usb/typec/tcpm/tcpm.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index d721baef5210..c0c54caf99d6 100644 --- a/drivers/usb/typec/tcpm/tcpm.c +++ b/drivers/usb/typec/tcpm/tcpm.c @@ -1914,6 +1914,8 @@ static int tcpm_ams_start(struct tcpm_port *port, enum tcpm_ams ams) } else if (ams == SOFT_RESET_AMS) { if (!port->explicit_contract) tcpm_set_cc(port, tcpm_rp_cc(port)); + /* entered right away, so don't leave it to be replayed */ + port->upcoming_state = INVALID_STATE; tcpm_set_state(port, SOFT_RESET_SEND, 0); return ret; } else if (tcpm_vdm_ams(port)) { -- 2.56.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/5] usb: typec: tcpci: Receive SOP' only while sourcing VCONN 2026-11-03 11:21 [PATCH 0/5] usb: typec: cable comms on RT1711H-compatible TCPCs and FUSB302 Alexey Charkov 2026-11-03 11:21 ` [PATCH 1/5] usb: typec: tcpm: Stop a source from repeating a cable Soft_Reset Alexey Charkov @ 2026-11-03 11:21 ` Alexey Charkov 2026-11-12 0:26 ` Sebastian Reichel 2026-11-11 14:00 ` [PATCH 0/5] usb: typec: cable comms on RT1711H-compatible TCPCs and FUSB302 Heikki Krogerus 2 siblings, 1 reply; 5+ messages in thread From: Alexey Charkov @ 2026-11-03 11:21 UTC (permalink / raw) To: Badhri Jagan Sridharan, Heikki Krogerus, Greg Kroah-Hartman, RD Babiera Cc: Sebastian Reichel, linux-usb, linux-kernel, Alexey Charkov, stable A TCPC acks every message type enabled in RECEIVE_DETECT and passes it on to TCPM. With SOP' enabled while the partner sources VCONN, the port acks the partner's requests to the cable plug and the plug's replies to the partner, colliding with the GoodCRC that the plug or the partner sends. TCPM also tries to answer these messages as if they were destined to it, which for the case of a partner's SOP' Discover Identity on a HUSB311 made the partner soft reset the contract every time. TCPM talks to the cable plug only while it is the VCONN Source, as USB PD 3.0 section 6.3.11 requires, so listen for SOP' only then. Switch SOP' reception off before VCONN goes off and on only once it is on. If that fails, warn instead of failing the VCONN switch: SOP' reception left off only costs cable discovery, and left on is no worse than before this change. Cc: stable@vger.kernel.org Fixes: 3bbb9ba4f660 ("usb: typec: tcpci: add tcpm_transmit_type to tcpm_pd_receive") Signed-off-by: Alexey Charkov <alchark@flipper.net> --- drivers/usb/typec/tcpm/tcpci.c | 72 ++++++++++++++++++++++++++++-------------- 1 file changed, 49 insertions(+), 23 deletions(-) diff --git a/drivers/usb/typec/tcpm/tcpci.c b/drivers/usb/typec/tcpm/tcpci.c index 6717ac914c6a..af8db6b4497a 100644 --- a/drivers/usb/typec/tcpm/tcpci.c +++ b/drivers/usb/typec/tcpm/tcpci.c @@ -41,6 +41,7 @@ struct tcpci { unsigned int rx_type_mask; bool controls_vbus; + bool vconn_enabled; struct tcpc_dev tcpc; struct tcpci_data *data; @@ -344,11 +345,45 @@ static void tcpci_set_partner_usb_comm_capable(struct tcpc_dev *tcpc, bool capab tcpci->data->set_partner_usb_comm_capable(tcpci, tcpci->data, capable); } +static int tcpci_set_pd_rx(struct tcpc_dev *tcpc, bool enable) +{ + struct tcpci *tcpci = tcpc_to_tcpci(tcpc); + unsigned int reg = 0; + int ret; + + if (enable) { + reg = TCPC_RX_DETECT_SOP | TCPC_RX_DETECT_HARD_RESET; + /* Only the VCONN Source talks to the cable plug */ + if (tcpci->data->cable_comm_capable && tcpci->vconn_enabled) + reg |= TCPC_RX_DETECT_SOP1; + } + + tcpci->rx_type_mask = reg; + ret = regmap_write(tcpci->regmap, TCPC_RX_DETECT, reg); + if (ret < 0) + return ret; + + return 0; +} + static int tcpci_set_vconn(struct tcpc_dev *tcpc, bool enable) { struct tcpci *tcpci = tcpc_to_tcpci(tcpc); int ret; + /* + * Without VCONN from us, SOP' traffic is between the partner and the + * cable plug, and our GoodCRC would collide with theirs. So stop + * receiving SOP' before VCONN goes off, and start only once it is on. + * Neither is worth failing the VCONN switch over. + */ + if (!enable) { + tcpci->vconn_enabled = false; + if ((tcpci->rx_type_mask & TCPC_RX_DETECT_SOP1) && + tcpci_set_pd_rx(tcpc, true) < 0) + dev_warn(tcpci->dev, "Failed to disable SOP' reception\n"); + } + /* Handle vendor set vconn */ if (tcpci->data->set_vconn) { ret = tcpci->data->set_vconn(tcpci, tcpci->data, enable); @@ -356,9 +391,20 @@ static int tcpci_set_vconn(struct tcpc_dev *tcpc, bool enable) return ret; } - return regmap_update_bits(tcpci->regmap, TCPC_POWER_CTRL, - TCPC_POWER_CTRL_VCONN_ENABLE, - enable ? TCPC_POWER_CTRL_VCONN_ENABLE : 0); + ret = regmap_update_bits(tcpci->regmap, TCPC_POWER_CTRL, + TCPC_POWER_CTRL_VCONN_ENABLE, + enable ? TCPC_POWER_CTRL_VCONN_ENABLE : 0); + if (ret < 0) + return ret; + + if (enable) { + tcpci->vconn_enabled = true; + if (tcpci->data->cable_comm_capable && tcpci->rx_type_mask && + tcpci_set_pd_rx(tcpc, true) < 0) + dev_warn(tcpci->dev, "Failed to enable SOP' reception\n"); + } + + return 0; } static int tcpci_enable_auto_vbus_discharge(struct tcpc_dev *dev, bool enable) @@ -478,26 +524,6 @@ static int tcpci_set_roles(struct tcpc_dev *tcpc, bool attached, return 0; } -static int tcpci_set_pd_rx(struct tcpc_dev *tcpc, bool enable) -{ - struct tcpci *tcpci = tcpc_to_tcpci(tcpc); - unsigned int reg = 0; - int ret; - - if (enable) { - reg = TCPC_RX_DETECT_SOP | TCPC_RX_DETECT_HARD_RESET; - if (tcpci->data->cable_comm_capable) - reg |= TCPC_RX_DETECT_SOP1; - } - - tcpci->rx_type_mask = reg; - ret = regmap_write(tcpci->regmap, TCPC_RX_DETECT, reg); - if (ret < 0) - return ret; - - return 0; -} - static int tcpci_get_vbus(struct tcpc_dev *tcpc) { struct tcpci *tcpci = tcpc_to_tcpci(tcpc); -- 2.56.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 2/5] usb: typec: tcpci: Receive SOP' only while sourcing VCONN 2026-11-03 11:21 ` [PATCH 2/5] usb: typec: tcpci: Receive SOP' only while sourcing VCONN Alexey Charkov @ 2026-11-12 0:26 ` Sebastian Reichel 0 siblings, 0 replies; 5+ messages in thread From: Sebastian Reichel @ 2026-11-12 0:26 UTC (permalink / raw) To: Alexey Charkov Cc: Badhri Jagan Sridharan, Heikki Krogerus, Greg Kroah-Hartman, RD Babiera, linux-usb, linux-kernel, stable [-- Attachment #1: Type: text/plain, Size: 4923 bytes --] Hi, On Tue, Nov 03, 2026 at 03:21:23PM +0400, Alexey Charkov wrote: > A TCPC acks every message type enabled in RECEIVE_DETECT and passes it > on to TCPM. With SOP' enabled while the partner sources VCONN, the port > acks the partner's requests to the cable plug and the plug's replies to > the partner, colliding with the GoodCRC that the plug or the partner > sends. TCPM also tries to answer these messages as if they were destined > to it, which for the case of a partner's SOP' Discover Identity on a > HUSB311 made the partner soft reset the contract every time. > > TCPM talks to the cable plug only while it is the VCONN Source, as USB > PD 3.0 section 6.3.11 requires, so listen for SOP' only then. > > Switch SOP' reception off before VCONN goes off and on only once it is > on. If that fails, warn instead of failing the VCONN switch: SOP' > reception left off only costs cable discovery, and left on is no worse > than before this change. > > Cc: stable@vger.kernel.org > Fixes: 3bbb9ba4f660 ("usb: typec: tcpci: add tcpm_transmit_type to tcpm_pd_receive") > Signed-off-by: Alexey Charkov <alchark@flipper.net> > --- Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com> Greetings, -- Sebastian > drivers/usb/typec/tcpm/tcpci.c | 72 ++++++++++++++++++++++++++++-------------- > 1 file changed, 49 insertions(+), 23 deletions(-) > > diff --git a/drivers/usb/typec/tcpm/tcpci.c b/drivers/usb/typec/tcpm/tcpci.c > index 6717ac914c6a..af8db6b4497a 100644 > --- a/drivers/usb/typec/tcpm/tcpci.c > +++ b/drivers/usb/typec/tcpm/tcpci.c > @@ -41,6 +41,7 @@ struct tcpci { > unsigned int rx_type_mask; > > bool controls_vbus; > + bool vconn_enabled; > > struct tcpc_dev tcpc; > struct tcpci_data *data; > @@ -344,11 +345,45 @@ static void tcpci_set_partner_usb_comm_capable(struct tcpc_dev *tcpc, bool capab > tcpci->data->set_partner_usb_comm_capable(tcpci, tcpci->data, capable); > } > > +static int tcpci_set_pd_rx(struct tcpc_dev *tcpc, bool enable) > +{ > + struct tcpci *tcpci = tcpc_to_tcpci(tcpc); > + unsigned int reg = 0; > + int ret; > + > + if (enable) { > + reg = TCPC_RX_DETECT_SOP | TCPC_RX_DETECT_HARD_RESET; > + /* Only the VCONN Source talks to the cable plug */ > + if (tcpci->data->cable_comm_capable && tcpci->vconn_enabled) > + reg |= TCPC_RX_DETECT_SOP1; > + } > + > + tcpci->rx_type_mask = reg; > + ret = regmap_write(tcpci->regmap, TCPC_RX_DETECT, reg); > + if (ret < 0) > + return ret; > + > + return 0; > +} > + > static int tcpci_set_vconn(struct tcpc_dev *tcpc, bool enable) > { > struct tcpci *tcpci = tcpc_to_tcpci(tcpc); > int ret; > > + /* > + * Without VCONN from us, SOP' traffic is between the partner and the > + * cable plug, and our GoodCRC would collide with theirs. So stop > + * receiving SOP' before VCONN goes off, and start only once it is on. > + * Neither is worth failing the VCONN switch over. > + */ > + if (!enable) { > + tcpci->vconn_enabled = false; > + if ((tcpci->rx_type_mask & TCPC_RX_DETECT_SOP1) && > + tcpci_set_pd_rx(tcpc, true) < 0) > + dev_warn(tcpci->dev, "Failed to disable SOP' reception\n"); > + } > + > /* Handle vendor set vconn */ > if (tcpci->data->set_vconn) { > ret = tcpci->data->set_vconn(tcpci, tcpci->data, enable); > @@ -356,9 +391,20 @@ static int tcpci_set_vconn(struct tcpc_dev *tcpc, bool enable) > return ret; > } > > - return regmap_update_bits(tcpci->regmap, TCPC_POWER_CTRL, > - TCPC_POWER_CTRL_VCONN_ENABLE, > - enable ? TCPC_POWER_CTRL_VCONN_ENABLE : 0); > + ret = regmap_update_bits(tcpci->regmap, TCPC_POWER_CTRL, > + TCPC_POWER_CTRL_VCONN_ENABLE, > + enable ? TCPC_POWER_CTRL_VCONN_ENABLE : 0); > + if (ret < 0) > + return ret; > + > + if (enable) { > + tcpci->vconn_enabled = true; > + if (tcpci->data->cable_comm_capable && tcpci->rx_type_mask && > + tcpci_set_pd_rx(tcpc, true) < 0) > + dev_warn(tcpci->dev, "Failed to enable SOP' reception\n"); > + } > + > + return 0; > } > > static int tcpci_enable_auto_vbus_discharge(struct tcpc_dev *dev, bool enable) > @@ -478,26 +524,6 @@ static int tcpci_set_roles(struct tcpc_dev *tcpc, bool attached, > return 0; > } > > -static int tcpci_set_pd_rx(struct tcpc_dev *tcpc, bool enable) > -{ > - struct tcpci *tcpci = tcpc_to_tcpci(tcpc); > - unsigned int reg = 0; > - int ret; > - > - if (enable) { > - reg = TCPC_RX_DETECT_SOP | TCPC_RX_DETECT_HARD_RESET; > - if (tcpci->data->cable_comm_capable) > - reg |= TCPC_RX_DETECT_SOP1; > - } > - > - tcpci->rx_type_mask = reg; > - ret = regmap_write(tcpci->regmap, TCPC_RX_DETECT, reg); > - if (ret < 0) > - return ret; > - > - return 0; > -} > - > static int tcpci_get_vbus(struct tcpc_dev *tcpc) > { > struct tcpci *tcpci = tcpc_to_tcpci(tcpc); > > -- > 2.56.0 > [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 0/5] usb: typec: cable comms on RT1711H-compatible TCPCs and FUSB302 2026-11-03 11:21 [PATCH 0/5] usb: typec: cable comms on RT1711H-compatible TCPCs and FUSB302 Alexey Charkov 2026-11-03 11:21 ` [PATCH 1/5] usb: typec: tcpm: Stop a source from repeating a cable Soft_Reset Alexey Charkov 2026-11-03 11:21 ` [PATCH 2/5] usb: typec: tcpci: Receive SOP' only while sourcing VCONN Alexey Charkov @ 2026-11-11 14:00 ` Heikki Krogerus 2 siblings, 0 replies; 5+ messages in thread From: Heikki Krogerus @ 2026-11-11 14:00 UTC (permalink / raw) To: Alexey Charkov Cc: Badhri Jagan Sridharan, Greg Kroah-Hartman, RD Babiera, Sebastian Reichel, linux-usb, linux-kernel, stable On Tue, Nov 03, 2026 at 03:21:21PM +0400, Alexey Charkov wrote: > Neither the RT1711H family (including the HUSB311 and ET7304) nor the > FUSB302 lets TCPM talk to cable plugs today, so cable discovery is > skipped, and with it the cable's current and speed ratings. > > The RT1711H family handles SOP' like any other TCPCI-compliant TCPC, but > enabling it exposed a problem in the TCPCI core: it set SOP' in > RECEIVE_DETECT whenever the TCPC can talk to cables, regardless of who > sources VCONN. With the partner as the VCONN Source, the port then acks > and processes the partner's own traffic with the cable plug. > > Patch 1 fixes a TCPM bug that cable communication on the FUSB302 made > visible: after a VCONN swap, a source resets the cable plug twice. > Patch 2 lets a TCPCI TCPC receive SOP' only while it sources VCONN, > which also affects the Maxim TCPCs, the only ones that enable SOP' > today. Patch 3 enables SOP' on the RT1711H family. Patches 4 and 5 add > SOP' to the FUSB302 driver, receiving it under the same VCONN rule. > > Tested on an RK3576 EVB1 (HUSB311, source-only) and Flipper One boards > (FUSB302B): > - Without patch 2, a FUSB302 sink sent SOP' Discover Identity over a > cable with no e-marker, so the HUSB311 had no VCONN to source. The > HUSB311 acked each one and its TCPM answered over SOP, after which the > sink soft reset the contract every time. > - With patch 2, the same messages went unacked and the HUSB311 port > correctly ignored them. > - Over an e-marked 5A EPR cable, the HUSB311 sourced VCONN, read the > cable identity and completed discovery, while the FUSB302 sink kept > SOP' reception off. > - With a FUSB302 as source on the same cable, it sourced VCONN, read > the cable identity and completed discovery. The cable plug accepted > the FUSB302's automatic GoodCRC to its replies, which the datasheet > leaves undocumented for SOP'. > - Between two FUSB302 ports on the same cable, VCONN swaps both ways > moved SOP' reception along with VCONN, and each new VCONN Source > soft reset the cable plug over SOP'. Without patch 1, the source did > so twice. > > Signed-off-by: Alexey Charkov <alchark@flipper.net> These look okay to me, but let's still wait for Badhri and RD. Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> > --- > Alexey Charkov (5): > usb: typec: tcpm: Stop a source from repeating a cable Soft_Reset > usb: typec: tcpci: Receive SOP' only while sourcing VCONN > usb: typec: tcpci_rt1711h: Enable SOP' communication > usb: typec: fusb302: Tell SOP' messages apart from SOP > usb: typec: fusb302: Enable SOP' communication > > drivers/usb/typec/tcpm/fusb302.c | 63 ++++++++++++++++++++++++++--- > drivers/usb/typec/tcpm/fusb302_reg.h | 10 +++++ > drivers/usb/typec/tcpm/tcpci.c | 72 +++++++++++++++++++++++----------- > drivers/usb/typec/tcpm/tcpci_rt1711h.c | 1 + > drivers/usb/typec/tcpm/tcpm.c | 2 + > 5 files changed, 119 insertions(+), 29 deletions(-) > --- > base-commit: 2637bdec0535a2044cd830eba9a79363651d9043 > change-id: 20261103-husb311-cable-comm-46f2e77e4c18 > > Best regards, > -- > Alexey Charkov <alchark@flipper.net> -- heikki ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-11-12 0:27 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-11-03 11:21 [PATCH 0/5] usb: typec: cable comms on RT1711H-compatible TCPCs and FUSB302 Alexey Charkov 2026-11-03 11:21 ` [PATCH 1/5] usb: typec: tcpm: Stop a source from repeating a cable Soft_Reset Alexey Charkov 2026-11-03 11:21 ` [PATCH 2/5] usb: typec: tcpci: Receive SOP' only while sourcing VCONN Alexey Charkov 2026-11-12 0:26 ` Sebastian Reichel 2026-11-11 14:00 ` [PATCH 0/5] usb: typec: cable comms on RT1711H-compatible TCPCs and FUSB302 Heikki Krogerus
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox