From cba3c4bddaa8d9f2f0806561ca0447f03b43f4ad Mon Sep 17 00:00:00 2001 From: Meng Dongyang Date: Thu, 8 Mar 2018 19:00:02 +0800 Subject: [PATCH] usb: dwc2: make hcd into L3 power off state when suspend The controller will reset and run into error state if turn off power when suspend in host mode. This patch stop hcd to make the controller into L3 state to make sure that the controller and driver state will reset when resume. Change-Id: If66bc1a249e919f440ecde0c66f18dabde0b2e62 Signed-off-by: Meng Dongyang --- drivers/usb/dwc2/platform.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/usb/dwc2/platform.c b/drivers/usb/dwc2/platform.c index 3d91d100600d..de3fd94a1eb5 100644 --- a/drivers/usb/dwc2/platform.c +++ b/drivers/usb/dwc2/platform.c @@ -558,6 +558,12 @@ static int __maybe_unused dwc2_resume(struct device *dev) return ret; } + /* Stop hcd if dr_mode is host and PD is power off when suspend */ + if (dwc2->op_state == OTG_STATE_A_HOST && dwc2_is_device_mode(dwc2)) { + dwc2_hcd_disconnect(dwc2, true); + dwc2->lx_state = DWC2_L3; + } + if (dwc2_is_device_mode(dwc2)) ret = dwc2_hsotg_resume(dwc2);