diff options
Diffstat (limited to 'target/linux/brcm2708/patches-4.9/950-0139-usb-dwc2-Avoid-suspending-if-we-re-in-gadget-mode-18.patch')
-rw-r--r-- | target/linux/brcm2708/patches-4.9/950-0139-usb-dwc2-Avoid-suspending-if-we-re-in-gadget-mode-18.patch | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/target/linux/brcm2708/patches-4.9/950-0139-usb-dwc2-Avoid-suspending-if-we-re-in-gadget-mode-18.patch b/target/linux/brcm2708/patches-4.9/950-0139-usb-dwc2-Avoid-suspending-if-we-re-in-gadget-mode-18.patch new file mode 100644 index 0000000000..1ed31c2d2e --- /dev/null +++ b/target/linux/brcm2708/patches-4.9/950-0139-usb-dwc2-Avoid-suspending-if-we-re-in-gadget-mode-18.patch @@ -0,0 +1,51 @@ +From 2ca9749f5b4326dad52756eaf5e7865504b4d374 Mon Sep 17 00:00:00 2001 +From: ED6E0F17 <edge@karikoa.net> +Date: Fri, 3 Feb 2017 14:52:42 +0000 +Subject: [PATCH] usb: dwc2: Avoid suspending if we're in gadget mode (#1825) + +I've found when booting HiKey with the usb gadget cable attached +if I then try to connect via adb, I get an infinite spew of: + +dwc2 f72c0000.usb: dwc2_hsotg_ep_sethalt(ep ffffffc0790ecb18 ep1out, 0) +dwc2 f72c0000.usb: dwc2_hsotg_ep_sethalt(ep ffffffc0790eca18 ep1in, 0) + +It seems that the usb autosuspend is suspending the bus shortly +after bootup when the gadget cable is attached. So when adbd +then tries to use the device, it doesn't work and it then tries +to restart it over and over via the ep_sethalt calls (via +FUNCTIONFS_CLEAR_HALT ioctl). + +Chen Yu suggested this patch to avoid suspending if we're +in device mode, and it avoids the problem. + +Cc: Wei Xu <xuwei5@hisilicon.com> +Cc: Guodong Xu <guodong.xu@linaro.org> +Cc: Amit Pundir <amit.pundir@linaro.org> +Cc: Rob Herring <robh+dt@kernel.org> +Cc: John Youn <johnyoun@synopsys.com> +Cc: Douglas Anderson <dianders@chromium.org> +Cc: Chen Yu <chenyu56@huawei.com> +Cc: Kishon Vijay Abraham I <kishon@ti.com> +Cc: Felipe Balbi <felipe.balbi@linux.intel.com> +Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> +Cc: linux-usb@vger.kernel.org +Suggested-by: Chen Yu <chenyu56@huawei.com> +Signed-off-by: John Stultz <john.stultz@linaro.org> +Signed-off-by: John Youn <johnyoun@synopsys.com> +Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> +--- + drivers/usb/dwc2/hcd.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/drivers/usb/dwc2/hcd.c ++++ b/drivers/usb/dwc2/hcd.c +@@ -4365,6 +4365,9 @@ static int _dwc2_hcd_suspend(struct usb_ + if (!HCD_HW_ACCESSIBLE(hcd)) + goto unlock; + ++ if (hsotg->op_state == OTG_STATE_B_PERIPHERAL) ++ goto unlock; ++ + if (!hsotg->core_params->hibernation) + goto skip_power_saving; + |