patch "usb: typec: tcpci: don't handle vSafe0V event if it's not enabled" added to usb-linus
Subsystems (4)
This is a note to let you know that I've just added the patch titled
usb: typec: tcpci: don't handle vSafe0V event if it's not enabled
to my usb git tree which can be found at
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git
in the usb-linus branch.
The patch will show up in the next release of the linux-next tree (usually sometime within the next 24 hours during the week.)
The patch will hopefully also be merged in Linus's tree for the next -rc kernel release.
If you have any questions about this process, please let me know.
From 05300871c0e21c288bd5c30ac6f9b1da6ddeed22 Mon Sep 17 00:00:00 2001
From: Xu Yang <[email protected]>
Date: Sun, 26 Sep 2021 18:14:15 +0800
Subject: usb: typec: tcpci: don't handle vSafe0V event if it's not enabled
USB TCPCI Spec, 4.4.3 Mask Registers:
"A masked register will still indicate in the ALERT register, but shall not set the Alert# pin low."
Thus, the Extended Status will still indicate in ALERT register if vSafe0V is detected by TCPC even though being masked. In current code, howerer, this event will not be handled in detection time. Rather it will be handled when next ALERT event coming(CC evnet, PD event, etc).
Tcpm might transition to a wrong state in this situation. Thus, the vSafe0V event should not be handled when it's masked.
--- drivers/usb/typec/tcpm/tcpci.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/usb/typec/tcpm/tcpci.c +1 -1
@@ -696,7 +696,7 @@ irqreturn_t tcpci_irq(struct tcpci *tcpci)tcpm_pd_receive (tcpci->port, &msg); } -if (status &TCPC_ALERT_EXTENDED_STATUS ) { +if (tcpci->data->vbus_vsafe0v && (status &TCPC_ALERT_EXTENDED_STATUS )) { ret =regmap_read (tcpci->regmap,TCPC_EXTENDED_STATUS , &raw);if (!ret && (raw &TCPC_EXTENDED_STATUS_VSAFE0V ))tcpm_vbus_change (tcpci->port);
Signature · 1 line
2.33.0