• Sebastian Andrzej Siewior's avatar
    usb: dwc3: gadget: rework the dequeue on RESET & DISCONNECT · 624407f9
    Sebastian Andrzej Siewior authored
    - since a while we are disabling an endpoint and purging every requests on
      RESET and DISCONNECT which leads to a warning since the endpoint was
      disabled twice (once by the UDC, and second time by the gadget). I
      think UDC should nuke all requests because all those requests
      become invalid. It's gadget driver's responsability, though, to disable
      its used endpoints. This is done by merging dwc3_stop_active_transfer()
      and dwc3_gadget_nuke_reqs() into dwc3_remove_requests().
    
    - dwc3_stop_active_transfer() is now no longer called unconditionaly.
      This has the advantage that it is always called to disable an active
      transfer which means if res_trans_idx 0 than something went wrong and
      it is an error condition because we can't clean up the requests.
    
    - Remove the DWC3_EP_WILL_SHUTDOWN which was introduced while
      introducing the command complete part for dequeue. All requests on
      req_queued list should be removed during the dwc3_cleanup_done_reqs()
      callback so there is no reason to go through the list again.
      We consider it an error condition if requests are still on this
      list since we never queue TRB without LST=1 (the last requests has
      always LST=1, there are no requests with LST=0 behind it).
    
    [ balbi@ti.com : reworked commit log a bit, made patch apply ]
    Signed-off-by: default avatarSebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
    624407f9
gadget.c 50.2 KB