Skip to content

Commit 0530087

Browse files
Xu Yanggregkh
authored andcommitted
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. Fixes: 766c485 ("usb: typec: tcpci: Add support to report vSafe0V") cc: <[email protected]> Reviewed-by: Guenter Roeck <[email protected]> Acked-by: Heikki Krogerus <[email protected]> Signed-off-by: Xu Yang <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent b87d8d0 commit 0530087

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

drivers/usb/typec/tcpm/tcpci.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -696,7 +696,7 @@ irqreturn_t tcpci_irq(struct tcpci *tcpci)
696696
tcpm_pd_receive(tcpci->port, &msg);
697697
}
698698

699-
if (status & TCPC_ALERT_EXTENDED_STATUS) {
699+
if (tcpci->data->vbus_vsafe0v && (status & TCPC_ALERT_EXTENDED_STATUS)) {
700700
ret = regmap_read(tcpci->regmap, TCPC_EXTENDED_STATUS, &raw);
701701
if (!ret && (raw & TCPC_EXTENDED_STATUS_VSAFE0V))
702702
tcpm_vbus_change(tcpci->port);

0 commit comments

Comments
 (0)