UPSTREAM: 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: 766c485b86ef ("usb: typec: tcpci: Add support to report vSafe0V") cc: <stable@vger.kernel.org> Reviewed-by: Guenter Roeck <linux@roeck-us.net> Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> Signed-off-by: Xu Yang <xu.yang_2@nxp.com> Link: https://lore.kernel.org/r/20210926101415.3775058-1-xu.yang_2@nxp.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> (cherry picked from commit 05300871c0e21c288bd5c30ac6f9b1da6ddeed22) Bug: 187129171 Signed-off-by: Connor O'Brien <connoro@google.com> Change-Id: Iad4f5330bf080f5f00b8599064c23e6d59e0ad51
This commit is contained in:
parent
cac9433c3a
commit
5be4ad1d99
@ -722,7 +722,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);
|
||||
|
Loading…
Reference in New Issue
Block a user