lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 19 Oct 2016 21:14:40 -0700 From: John Stultz <john.stultz@...aro.org> To: lkml <linux-kernel@...r.kernel.org> Cc: Chen Yu <chenyu56@...wei.com>, Wei Xu <xuwei5@...ilicon.com>, Guodong Xu <guodong.xu@...aro.org>, Amit Pundir <amit.pundir@...aro.org>, Rob Herring <robh+dt@...nel.org>, John Youn <johnyoun@...opsys.com>, Douglas Anderson <dianders@...omium.org>, Greg Kroah-Hartman <gregkh@...uxfoundation.org>, linux-usb@...r.kernel.org, John Stultz <john.stultz@...aro.org> Subject: [RFC][PATCH 1/2 v2] usb: dwc2: Force port resume on switching to device mode From: Chen Yu <chenyu56@...wei.com> We've seen failures when switching between host and gadget mode, which was diagnosed as being caused due to the bus being auto-suspended when we switched. So this patch forces a port resume when switching to device mode if the bus is suspended. Cc: Wei Xu <xuwei5@...ilicon.com> Cc: Guodong Xu <guodong.xu@...aro.org> Cc: Amit Pundir <amit.pundir@...aro.org> Cc: Rob Herring <robh+dt@...nel.org> Cc: John Youn <johnyoun@...opsys.com> Cc: Douglas Anderson <dianders@...omium.org> Cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org> Cc: linux-usb@...r.kernel.org Signed-off-by: Chen Yu <chenyu56@...wei.com> Signed-off-by: John Stultz <john.stultz@...aro.org> --- drivers/usb/dwc2/hcd.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/usb/dwc2/hcd.c b/drivers/usb/dwc2/hcd.c index df5a065..b374e60 100644 --- a/drivers/usb/dwc2/hcd.c +++ b/drivers/usb/dwc2/hcd.c @@ -54,6 +54,9 @@ #include "core.h" #include "hcd.h" + +static void dwc2_port_resume(struct dwc2_hsotg *hsotg); + /* * ========================================================================= * Host Core Layer Functions @@ -3204,6 +3207,11 @@ static void dwc2_conn_id_status_change(struct work_struct *work) if (gotgctl & GOTGCTL_CONID_B) { /* Wait for switch to device mode */ dev_dbg(hsotg->dev, "connId B\n"); + if (hsotg->bus_suspended) { + dev_info(hsotg->dev, + "Do port resume before switching to device mode\n"); + dwc2_port_resume(hsotg); + } while (!dwc2_is_device_mode(hsotg)) { dev_info(hsotg->dev, "Waiting for Peripheral Mode, Mode=%s\n", -- 2.7.4
Powered by blists - more mailing lists