From e0d9b5dae90fe4ef7aa82dcb00a895f2aebf36a8 Mon Sep 17 00:00:00 2001 From: Vijayavardhan Vennapusa Date: Thu, 1 Sep 2016 12:05:50 +0530 Subject: USB: dwc3-msm: Fix issue related to error recovery for ERRATIC ERROR If ERRATIC event irq is triggered by USB controller, it requires to perform block reset USB controller as recovery mechanism as per SNPS data book. Error recovery happens through allowing USB entering low power mode and exit low power mode. We might see recovery failing as check for P3 state is true as part of suspend and results in USB not entering low power mode. Fix this issue by allowing USB enter low power mode in case of recovery flag mdwc->in_restart set. CRs-Fixed: 1060831 Change-Id: I41f935da3d4af1dd04eb4b3299e36a0f528633da Signed-off-by: Vijayavardhan Vennapusa --- drivers/usb/dwc3/dwc3-msm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'drivers/usb/dwc3') diff --git a/drivers/usb/dwc3/dwc3-msm.c b/drivers/usb/dwc3/dwc3-msm.c index add035269ae7..ff0564cfe065 100644 --- a/drivers/usb/dwc3/dwc3-msm.c +++ b/drivers/usb/dwc3/dwc3-msm.c @@ -1781,7 +1781,7 @@ static int dwc3_msm_prepare_suspend(struct dwc3_msm *mdwc) u32 reg = 0; if ((mdwc->in_host_mode || mdwc->vbus_active) - && dwc3_msm_is_superspeed(mdwc)) { + && dwc3_msm_is_superspeed(mdwc) && !mdwc->in_restart) { if (!atomic_read(&mdwc->in_p3)) { dev_err(mdwc->dev, "Not in P3,aborting LPM sequence\n"); return -EBUSY; -- cgit v1.2.3