aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/dwc3/ep0.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/dwc3/ep0.c')
-rw-r--r--drivers/usb/dwc3/ep0.c15
1 files changed, 4 insertions, 11 deletions
diff --git a/drivers/usb/dwc3/ep0.c b/drivers/usb/dwc3/ep0.c
index 2f51de57593a..c8df1dd967ef 100644
--- a/drivers/usb/dwc3/ep0.c
+++ b/drivers/usb/dwc3/ep0.c
@@ -126,7 +126,6 @@ static int __dwc3_gadget_ep0_queue(struct dwc3_ep *dep,
126 struct dwc3_request *req) 126 struct dwc3_request *req)
127{ 127{
128 struct dwc3 *dwc = dep->dwc; 128 struct dwc3 *dwc = dep->dwc;
129 u32 type;
130 int ret = 0; 129 int ret = 0;
131 130
132 req->request.actual = 0; 131 req->request.actual = 0;
@@ -149,20 +148,14 @@ static int __dwc3_gadget_ep0_queue(struct dwc3_ep *dep,
149 148
150 direction = !!(dep->flags & DWC3_EP0_DIR_IN); 149 direction = !!(dep->flags & DWC3_EP0_DIR_IN);
151 150
152 if (dwc->ep0state == EP0_STATUS_PHASE) { 151 if (dwc->ep0state != EP0_DATA_PHASE) {
153 type = dwc->three_stage_setup 152 dev_WARN(dwc->dev, "Unexpected pending request\n");
154 ? DWC3_TRBCTL_CONTROL_STATUS3
155 : DWC3_TRBCTL_CONTROL_STATUS2;
156 } else if (dwc->ep0state == EP0_DATA_PHASE) {
157 type = DWC3_TRBCTL_CONTROL_DATA;
158 } else {
159 /* should never happen */
160 WARN_ON(1);
161 return 0; 153 return 0;
162 } 154 }
163 155
164 ret = dwc3_ep0_start_trans(dwc, direction, 156 ret = dwc3_ep0_start_trans(dwc, direction,
165 req->request.dma, req->request.length, type); 157 req->request.dma, req->request.length,
158 DWC3_TRBCTL_CONTROL_DATA);
166 dep->flags &= ~(DWC3_EP_PENDING_REQUEST | 159 dep->flags &= ~(DWC3_EP_PENDING_REQUEST |
167 DWC3_EP0_DIR_IN); 160 DWC3_EP0_DIR_IN);
168 } else if (dwc->delayed_status) { 161 } else if (dwc->delayed_status) {