From c2e482aa78801d00233fbd041a90748ef6f3b660 Mon Sep 17 00:00:00 2001 From: Mayank Rana Date: Tue, 15 Aug 2017 10:41:28 -0700 Subject: [PATCH] usb: dwc3: Suspend USB SS PHY in host mode with device connect case Currently driver is not suspending USB Super Speed PHY (here USB QMP PHY) with below usecases. a. USB super speed HUB is connected and going into bus suspend b. USB super speed HUB is connected and having USB super speed device connected on HUB's downstream port This results into no USB super speed device connect or removal being detected as autonomous mode is not being enabled with USB QMP PHY. Fix these issues by suspending USB SS PHY in host mode with device connect (i.e. HUB or HUB with USB SS device connected) case. Change-Id: I469b02f0845228f55d9253e7683ea3c133fd9542 Signed-off-by: Mayank Rana --- drivers/usb/dwc3/dwc3-msm.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/drivers/usb/dwc3/dwc3-msm.c b/drivers/usb/dwc3/dwc3-msm.c index 9c3edae35422..2cd600a58fd7 100644 --- a/drivers/usb/dwc3/dwc3-msm.c +++ b/drivers/usb/dwc3/dwc3-msm.c @@ -1996,7 +1996,6 @@ static void msm_dwc3_perf_vote_update(struct dwc3_msm *mdwc, static int dwc3_msm_suspend(struct dwc3_msm *mdwc) { int ret, i; - bool can_suspend_ssphy; struct dwc3 *dwc = platform_get_drvdata(mdwc->dwc3); dbg_event(0xFF, "Ctl Sus", atomic_read(&dwc->in_lpm)); @@ -2065,10 +2064,6 @@ static int dwc3_msm_suspend(struct dwc3_msm *mdwc) return ret; } - /* Initialize variables here */ - can_suspend_ssphy = !(mdwc->in_host_mode && - dwc3_msm_is_host_superspeed(mdwc)); - /* Disable core irq */ if (dwc->irq) disable_irq(dwc->irq); @@ -2084,7 +2079,7 @@ static int dwc3_msm_suspend(struct dwc3_msm *mdwc) usb_phy_set_suspend(mdwc->hs_phy, 1); /* Suspend SS PHY */ - if (dwc->maximum_speed == USB_SPEED_SUPER && can_suspend_ssphy) { + if (dwc->maximum_speed == USB_SPEED_SUPER) { /* indicate phy about SS mode */ if (dwc3_msm_is_superspeed(mdwc)) mdwc->ss_phy->flags |= DEVICE_IN_SS_MODE;