summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLi Jun <jun.li@nxp.com>2019-08-15 16:20:13 +0800
committerDong Aisheng <aisheng.dong@nxp.com>2019-11-25 15:57:13 +0800
commit688a7084136dedc3fe085842a8ec897795b26bc1 (patch)
tree549d00ea43ba1a61fd0186e3593c93bd0333e3b4
parent08cef4ba5383906f4201a9c31e1937fe9416e606 (diff)
MLK-21641 usb: typec: tcpm: cancel delayed work when unregister tcpm
We may do tcpm port unregister in middle of tcpm state transitions, if there are delayed works queued, we need cancel them before finish the tcpm unregsiter. Reviewed-by: Fugang Duan <fugang.duan@nxp.com> Signed-off-by: Li Jun <jun.li@nxp.com>
-rw-r--r--drivers/usb/typec/tcpm/tcpm.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c
index 296364f8c857..fd6c2b902444 100644
--- a/drivers/usb/typec/tcpm/tcpm.c
+++ b/drivers/usb/typec/tcpm/tcpm.c
@@ -4844,6 +4844,9 @@ void tcpm_unregister_port(struct tcpm_port *port)
{
int i;
+ cancel_delayed_work_sync(&port->state_machine);
+ cancel_delayed_work_sync(&port->vdm_state_machine);
+
tcpm_reset_port(port);
for (i = 0; i < ARRAY_SIZE(port->port_altmode); i++)
typec_unregister_altmode(port->port_altmode[i]);