|
@@ -1305,7 +1305,7 @@ static void s3c_hsotg_rx_data(struct dwc2_hsotg *hsotg, int ep_idx, int size)
|
|
|
u32 epctl = readl(hsotg->regs + DOEPCTL(ep_idx));
|
|
|
int ptr;
|
|
|
|
|
|
- dev_warn(hsotg->dev,
|
|
|
+ dev_dbg(hsotg->dev,
|
|
|
"%s: FIFO %d bytes on ep%d but no req (DXEPCTl=0x%08x)\n",
|
|
|
__func__, size, ep_idx, epctl);
|
|
|
|
|
@@ -1988,30 +1988,23 @@ static void s3c_hsotg_irq_enumdone(struct dwc2_hsotg *hsotg)
|
|
|
* @hsotg: The device state.
|
|
|
* @ep: The endpoint the requests may be on.
|
|
|
* @result: The result code to use.
|
|
|
- * @force: Force removal of any current requests
|
|
|
*
|
|
|
* Go through the requests on the given endpoint and mark them
|
|
|
* completed with the given result code.
|
|
|
*/
|
|
|
static void kill_all_requests(struct dwc2_hsotg *hsotg,
|
|
|
struct s3c_hsotg_ep *ep,
|
|
|
- int result, bool force)
|
|
|
+ int result)
|
|
|
{
|
|
|
struct s3c_hsotg_req *req, *treq;
|
|
|
unsigned size;
|
|
|
|
|
|
- list_for_each_entry_safe(req, treq, &ep->queue, queue) {
|
|
|
- /*
|
|
|
- * currently, we can't do much about an already
|
|
|
- * running request on an in endpoint
|
|
|
- */
|
|
|
-
|
|
|
- if (ep->req == req && ep->dir_in && !force)
|
|
|
- continue;
|
|
|
+ ep->req = NULL;
|
|
|
|
|
|
+ list_for_each_entry_safe(req, treq, &ep->queue, queue)
|
|
|
s3c_hsotg_complete_request(hsotg, ep, req,
|
|
|
result);
|
|
|
- }
|
|
|
+
|
|
|
if (!hsotg->dedicated_fifos)
|
|
|
return;
|
|
|
size = (readl(hsotg->regs + DTXFSTS(ep->index)) & 0xffff) * 4;
|
|
@@ -2036,7 +2029,7 @@ void s3c_hsotg_disconnect(struct dwc2_hsotg *hsotg)
|
|
|
|
|
|
hsotg->connected = 0;
|
|
|
for (ep = 0; ep < hsotg->num_of_eps; ep++)
|
|
|
- kill_all_requests(hsotg, &hsotg->eps[ep], -ESHUTDOWN, true);
|
|
|
+ kill_all_requests(hsotg, &hsotg->eps[ep], -ESHUTDOWN);
|
|
|
|
|
|
call_gadget(hsotg, disconnect);
|
|
|
}
|
|
@@ -2334,7 +2327,7 @@ irq_retry:
|
|
|
msecs_to_jiffies(200))) {
|
|
|
|
|
|
kill_all_requests(hsotg, &hsotg->eps[0],
|
|
|
- -ECONNRESET, true);
|
|
|
+ -ECONNRESET);
|
|
|
|
|
|
s3c_hsotg_core_init_disconnected(hsotg);
|
|
|
s3c_hsotg_core_connect(hsotg);
|
|
@@ -2588,7 +2581,7 @@ static int s3c_hsotg_ep_disable(struct usb_ep *ep)
|
|
|
|
|
|
spin_lock_irqsave(&hsotg->lock, flags);
|
|
|
/* terminate all requests with shutdown */
|
|
|
- kill_all_requests(hsotg, hs_ep, -ESHUTDOWN, false);
|
|
|
+ kill_all_requests(hsotg, hs_ep, -ESHUTDOWN);
|
|
|
|
|
|
hsotg->fifo_map &= ~(1<<hs_ep->fifo_index);
|
|
|
hs_ep->fifo_index = 0;
|