|
Takashi Iwai |
c2c827 |
From 2d7b78f59e020b07fc6338eefe286f54ee2d6773 Mon Sep 17 00:00:00 2001
|
|
Takashi Iwai |
c2c827 |
From: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
|
|
Takashi Iwai |
c2c827 |
Date: Wed, 27 Nov 2019 13:10:54 -0800
|
|
Takashi Iwai |
c2c827 |
Subject: [PATCH] usb: dwc3: ep0: Clear started flag on completion
|
|
Takashi Iwai |
c2c827 |
Git-commit: 2d7b78f59e020b07fc6338eefe286f54ee2d6773
|
|
Takashi Iwai |
c2c827 |
Patch-mainline: v5.5-rc2
|
|
Takashi Iwai |
c2c827 |
References: bsc#1051510
|
|
Takashi Iwai |
c2c827 |
|
|
Takashi Iwai |
c2c827 |
Clear ep0's DWC3_EP_TRANSFER_STARTED flag if the END_TRANSFER command is
|
|
Takashi Iwai |
c2c827 |
completed. Otherwise, we can't start control transfer again after
|
|
Takashi Iwai |
c2c827 |
END_TRANSFER.
|
|
Takashi Iwai |
c2c827 |
|
|
Takashi Iwai |
c2c827 |
Cc: stable@vger.kernel.org
|
|
Takashi Iwai |
c2c827 |
Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
|
|
Takashi Iwai |
c2c827 |
Signed-off-by: Felipe Balbi <balbi@kernel.org>
|
|
Takashi Iwai |
c2c827 |
Acked-by: Takashi Iwai <tiwai@suse.de>
|
|
Takashi Iwai |
c2c827 |
|
|
Takashi Iwai |
c2c827 |
---
|
|
Takashi Iwai |
c2c827 |
drivers/usb/dwc3/ep0.c | 8 ++++++++
|
|
Takashi Iwai |
c2c827 |
1 file changed, 8 insertions(+)
|
|
Takashi Iwai |
c2c827 |
|
|
Takashi Iwai |
c2c827 |
diff --git a/drivers/usb/dwc3/ep0.c b/drivers/usb/dwc3/ep0.c
|
|
Takashi Iwai |
c2c827 |
index 3996b9c4ff8d..fd1b100d2927 100644
|
|
Takashi Iwai |
c2c827 |
--- a/drivers/usb/dwc3/ep0.c
|
|
Takashi Iwai |
c2c827 |
+++ b/drivers/usb/dwc3/ep0.c
|
|
Takashi Iwai |
c2c827 |
@@ -1117,6 +1117,9 @@ static void dwc3_ep0_xfernotready(struct dwc3 *dwc,
|
|
Takashi Iwai |
c2c827 |
void dwc3_ep0_interrupt(struct dwc3 *dwc,
|
|
Takashi Iwai |
c2c827 |
const struct dwc3_event_depevt *event)
|
|
Takashi Iwai |
c2c827 |
{
|
|
Takashi Iwai |
c2c827 |
+ struct dwc3_ep *dep = dwc->eps[event->endpoint_number];
|
|
Takashi Iwai |
c2c827 |
+ u8 cmd;
|
|
Takashi Iwai |
c2c827 |
+
|
|
Takashi Iwai |
c2c827 |
switch (event->endpoint_event) {
|
|
Takashi Iwai |
c2c827 |
case DWC3_DEPEVT_XFERCOMPLETE:
|
|
Takashi Iwai |
c2c827 |
dwc3_ep0_xfer_complete(dwc, event);
|
|
Takashi Iwai |
c2c827 |
@@ -1129,7 +1132,12 @@ void dwc3_ep0_interrupt(struct dwc3 *dwc,
|
|
Takashi Iwai |
c2c827 |
case DWC3_DEPEVT_XFERINPROGRESS:
|
|
Takashi Iwai |
c2c827 |
case DWC3_DEPEVT_RXTXFIFOEVT:
|
|
Takashi Iwai |
c2c827 |
case DWC3_DEPEVT_STREAMEVT:
|
|
Takashi Iwai |
c2c827 |
+ break;
|
|
Takashi Iwai |
c2c827 |
case DWC3_DEPEVT_EPCMDCMPLT:
|
|
Takashi Iwai |
c2c827 |
+ cmd = DEPEVT_PARAMETER_CMD(event->parameters);
|
|
Takashi Iwai |
c2c827 |
+
|
|
Takashi Iwai |
c2c827 |
+ if (cmd == DWC3_DEPCMD_ENDTRANSFER)
|
|
Takashi Iwai |
c2c827 |
+ dep->flags &= ~DWC3_EP_TRANSFER_STARTED;
|
|
Takashi Iwai |
c2c827 |
break;
|
|
Takashi Iwai |
c2c827 |
}
|
|
Takashi Iwai |
c2c827 |
}
|
|
Takashi Iwai |
c2c827 |
--
|
|
Takashi Iwai |
c2c827 |
2.16.4
|
|
Takashi Iwai |
c2c827 |
|