USB: dwc3_otg: Cancel charger detection work before entering LPM
Charger detection algorithm takes significant time (hundreds of msec)
to complete. This can result in a scenario where chg_det work is
pending to run even after cable disconnection. Since, USB clocks are
turned off after cable disconnect, hence, execution of detection-work
later can result in unlocked register accesses. Hence, cancel any
pending charger detection work before turning off clocks.
CRs-Fixed: 422848
Change-Id: Iccaba4c003ee492b84bce057de64a2ae8edc2ef6
Signed-off-by: Manu Gautam <mgautam@codeaurora.org>
diff --git a/drivers/usb/dwc3/dwc3_otg.c b/drivers/usb/dwc3/dwc3_otg.c
index 7b672c4..fab443c 100644
--- a/drivers/usb/dwc3/dwc3_otg.c
+++ b/drivers/usb/dwc3/dwc3_otg.c
@@ -640,14 +640,9 @@
}
}
} else {
- if (charger) {
- if (charger->chg_type == DWC3_INVALID_CHARGER)
- charger->start_detection(dotg->charger,
- false);
- else
- charger->chg_type =
- DWC3_INVALID_CHARGER;
- }
+ if (charger)
+ charger->start_detection(dotg->charger, false);
+
dwc3_otg_set_power(phy, 0);
dev_dbg(phy->dev, "No device, trying to suspend\n");
pm_runtime_put_sync(phy->dev);