On Sun, Sep 26, 2021 at 06:14:15PM +0800, Xu Yang wrote: > 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: 766c485b86ef ("usb: typec: tcpci: Add support to report vSafe0V") > cc: <stable@xxxxxxxxxxxxxxx> > Signed-off-by: Xu Yang <xu.yang_2@xxxxxxx> Reviewed-by: Guenter Roeck <linux@xxxxxxxxxxxx> > --- > drivers/usb/typec/tcpm/tcpci.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/usb/typec/tcpm/tcpci.c b/drivers/usb/typec/tcpm/tcpci.c > index 9858716698df..c15eec9cc460 100644 > --- a/drivers/usb/typec/tcpm/tcpci.c > +++ b/drivers/usb/typec/tcpm/tcpci.c > @@ -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); > -- > 2.25.1 >