usb: dwc2: gadget: Fix sending zero length packet in DDMA mode.
Sending zero length packet in DDMA mode perform by DMA descriptor
by setting SP (short packet) flag.
For DDMA in function dwc2_hsotg_complete_in() does not need to send
zlp.
Tested by USBCV MSC tests.
Fixes: f71b5e2533
("usb: dwc2: gadget: fix zero length packet transfers")
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Minas Harutyunyan <Minas.Harutyunyan@synopsys.com>
Link: https://lore.kernel.org/r/967bad78c55dd2db1c19714eee3d0a17cf99d74a.1626777738.git.Minas.Harutyunyan@synopsys.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
c4a0f7a6ab
commit
d53dc38857
@ -2749,12 +2749,14 @@ static void dwc2_hsotg_complete_in(struct dwc2_hsotg *hsotg,
|
||||
return;
|
||||
}
|
||||
|
||||
/* Zlp for all endpoints, for ep0 only in DATA IN stage */
|
||||
/* Zlp for all endpoints in non DDMA, for ep0 only in DATA IN stage */
|
||||
if (hs_ep->send_zlp) {
|
||||
dwc2_hsotg_program_zlp(hsotg, hs_ep);
|
||||
hs_ep->send_zlp = 0;
|
||||
/* transfer will be completed on next complete interrupt */
|
||||
return;
|
||||
if (!using_desc_dma(hsotg)) {
|
||||
dwc2_hsotg_program_zlp(hsotg, hs_ep);
|
||||
/* transfer will be completed on next complete interrupt */
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (hs_ep->index == 0 && hsotg->ep0_state == DWC2_EP0_DATA_IN) {
|
||||
|
Loading…
Reference in New Issue
Block a user