• Pratyush Anand's avatar
    usb: dwc3: gadget: fix isoc END TRANSFER Condition · cdc359dd
    Pratyush Anand authored
    There were still some corner cases where isoc transfer was not able to
    restart, specially when missed isoc does not happen , and in fact gadget does
    not queue any new request during giveback.
    
    Cleanup function calls giveback first, which provides a way to queue
    another request to gadget. But gadget did not had any data. So , it did
    not call ep_queue. To twist it further, gadget did not queue till
    cleanup for last queued TRB is called. If we ever reach this scenario,
    we must call END TRANSFER, so that we receive a new  xfernotready with
    information about current microframe number.
    
    Also insure that there is no request submitted to core when issuing END
    TRANSFER.
    
    Cc: <stable@vger.kernel.org> # v3.8
    Signed-off-by: default avatarPratyush Anand <pratyush.anand@st.com>
    Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
    cdc359dd
gadget.c 63 KB