summaryrefslogtreecommitdiff
path: root/target/linux/brcm2708/patches-4.9/950-0139-usb-dwc2-Avoid-suspending-if-we-re-in-gadget-mode-18.patch
diff options
context:
space:
mode:
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.patch51
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 0000000..1ed31c2
--- /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;
+