lkml.org 
[lkml]   [2021]   [May]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 094/244] fotg210-udc: Complete OUT requests on short packets
    Date
    From: Fabian Vogt <fabian@ritter-vogt.de>

    [ Upstream commit 75bb93be0027123b5db6cbcce89eb62f0f6b3c5b ]

    A short packet indicates the end of a transfer and marks the request as
    complete.

    Fixes: b84a8dee23fd ("usb: gadget: add Faraday fotg210_udc driver")
    Signed-off-by: Fabian Vogt <fabian@ritter-vogt.de>
    Link: https://lore.kernel.org/r/20210324141115.9384-8-fabian@ritter-vogt.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/usb/gadget/udc/fotg210-udc.c | 8 ++++++--
    1 file changed, 6 insertions(+), 2 deletions(-)

    diff --git a/drivers/usb/gadget/udc/fotg210-udc.c b/drivers/usb/gadget/udc/fotg210-udc.c
    index 5e2f84818896..c313d07ec16f 100644
    --- a/drivers/usb/gadget/udc/fotg210-udc.c
    +++ b/drivers/usb/gadget/udc/fotg210-udc.c
    @@ -849,12 +849,16 @@ static void fotg210_out_fifo_handler(struct fotg210_ep *ep)
    {
    struct fotg210_request *req = list_entry(ep->queue.next,
    struct fotg210_request, queue);
    + int disgr1 = ioread32(ep->fotg210->reg + FOTG210_DISGR1);

    fotg210_start_dma(ep, req);

    - /* finish out transfer */
    + /* Complete the request when it's full or a short packet arrived.
    + * Like other drivers, short_not_ok isn't handled.
    + */
    +
    if (req->req.length == req->req.actual ||
    - req->req.actual < ep->ep.maxpacket)
    + (disgr1 & DISGR1_SPK_INT(ep->epnum - 1)))
    fotg210_done(ep, req, 0);
    }

    --
    2.30.2


    \
     
     \ /
      Last update: 2021-05-12 17:02    [W:2.675 / U:1.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site