linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] usb: dwc2: skip L2 state of hcd if work in device mode
@ 2017-07-24  3:56 Meng Dongyang
  2017-07-24  3:56 ` [PATCH] usb: dwc2: skip L2 state of hcd if controller " Meng Dongyang
  0 siblings, 1 reply; 2+ messages in thread
From: Meng Dongyang @ 2017-07-24  3:56 UTC (permalink / raw)
  To: gregkh, linux-kernel; +Cc: wulf, frank.wang, Meng Dongyang

The gadget may fail to enqueue request if the controller has enter L2
state. This patch prevent enter L2 state in hcd driver if the controller
works in device mode.

Meng Dongyang (1):
  usb: dwc2: skip L2 state of hcd if controller work in device mode

 drivers/usb/dwc2/hcd.c | 6 ++++++
 1 file changed, 6 insertions(+)

-- 
1.9.1

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [PATCH] usb: dwc2: skip L2 state of hcd if controller work in device mode
  2017-07-24  3:56 [PATCH] usb: dwc2: skip L2 state of hcd if work in device mode Meng Dongyang
@ 2017-07-24  3:56 ` Meng Dongyang
  0 siblings, 0 replies; 2+ messages in thread
From: Meng Dongyang @ 2017-07-24  3:56 UTC (permalink / raw)
  To: gregkh, linux-kernel; +Cc: wulf, frank.wang, Meng Dongyang

In the case hcd autosuspend is enabled, the hcd will enter L2 state
if no device connected. But if the controller works in otg mode, the
gadget driver still works in L0 state if connected with host. This
may result in transfer fail when gadget enqueue new request but the
hcd driver has set the global state into L2. This patch prevent the
hcd enter L2 state if the controller work in device mode.

Signed-off-by: Meng Dongyang <daniel.meng@rock-chips.com>
---
 drivers/usb/dwc2/hcd.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/usb/dwc2/hcd.c b/drivers/usb/dwc2/hcd.c
index 740c7e8..c263114 100644
--- a/drivers/usb/dwc2/hcd.c
+++ b/drivers/usb/dwc2/hcd.c
@@ -4388,6 +4388,9 @@ static int _dwc2_hcd_suspend(struct usb_hcd *hcd)
 
 	spin_lock_irqsave(&hsotg->lock, flags);
 
+	if (dwc2_is_device_mode(hsotg))
+		goto unlock;
+
 	if (hsotg->lx_state != DWC2_L0)
 		goto unlock;
 
@@ -4446,6 +4449,9 @@ static int _dwc2_hcd_resume(struct usb_hcd *hcd)
 
 	spin_lock_irqsave(&hsotg->lock, flags);
 
+	if (dwc2_is_device_mode(hsotg))
+		goto unlock;
+
 	if (hsotg->lx_state != DWC2_L2)
 		goto unlock;
 
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2017-07-24  3:54 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-07-24  3:56 [PATCH] usb: dwc2: skip L2 state of hcd if work in device mode Meng Dongyang
2017-07-24  3:56 ` [PATCH] usb: dwc2: skip L2 state of hcd if controller " Meng Dongyang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).