]> git.karo-electronics.de Git - linux-beck.git/commitdiff
usb: dwc3: don't set last bit for ISOC endpoints
authorJanusz Dziedzic <januszx.dziedzic@intel.com>
Thu, 7 Jul 2016 06:39:09 +0000 (08:39 +0200)
committerFelipe Balbi <felipe.balbi@linux.intel.com>
Thu, 11 Aug 2016 12:09:48 +0000 (15:09 +0300)
According to Synopsys Databook 2.60a, section 8.3.4,
it's stated that:

The LST bit should be set to 0 (isochronous
transfers normally continue until the
endpoint is removed entirely, at which time
an End Transfer command is used to stop the
transfer).

This patch makes sure that detail is observed and
fixes a regression with Android Audio playback
caused by recent changes to DWC3 gadget.

Signed-off-by: Janusz Dziedzic <januszx.dziedzic@linux.intel.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
drivers/usb/dwc3/gadget.c

index eb820e4ab49d20f1a8526a48037c3ac78a365342..7a4d4d2534d4970854004900c9ea8be61a26b76b 100644 (file)
@@ -829,7 +829,7 @@ static void dwc3_prepare_one_trb(struct dwc3_ep *dep,
        if (!req->request.no_interrupt && !chain)
                trb->ctrl |= DWC3_TRB_CTRL_IOC | DWC3_TRB_CTRL_ISP_IMI;
 
-       if (last)
+       if (last && !usb_endpoint_xfer_isoc(dep->endpoint.desc))
                trb->ctrl |= DWC3_TRB_CTRL_LST;
 
        if (chain)