usb: dwc2: Fix INTR OUT transfers in DDMA mode.
authorMinas Harutyunyan <Minas.Harutyunyan@synopsys.com>
Thu, 24 Sep 2020 14:08:39 +0000 (18:08 +0400)
committerFelipe Balbi <balbi@kernel.org>
Fri, 2 Oct 2020 10:29:13 +0000 (13:29 +0300)
commitb2c586eb07efab982419f32b7c3bd96829bc8bcd
treee35041729df7bed3ee9ac427b2893f7d3fc665d0
parentd58ba480285a1741ec65c3e470074d7ba31c7e60
usb: dwc2: Fix INTR OUT transfers in DDMA mode.

In DDMA mode if INTR OUT transfers mps not multiple of 4 then single packet
corresponds to single descriptor.

Descriptor limit set to mps and desc chain limit set to mps *
MAX_DMA_DESC_NUM_GENERIC. On that descriptors complete, to calculate
transfer size should be considered correction value for each descriptor.

In start request function, if "continue" is true then dma buffer address
should be incremmented by offset for all type of transfers, not only for
Control DATA_OUT transfers.

Fixes: cf77b5fb9b394 ("usb: dwc2: gadget: Transfer length limit checking for DDMA")
Fixes: e02f9aa6119e0 ("usb: dwc2: gadget: EP 0 specific DDMA programming")
Fixes: aa3e8bc81311e ("usb: dwc2: gadget: DDMA transfer start and complete")

Signed-off-by: Minas Harutyunyan <hminas@synopsys.com>
Signed-off-by: Felipe Balbi <balbi@kernel.org>
drivers/usb/dwc2/gadget.c