Re: [PATCH] usb: dwc2: gadget: fix missing process for isoc descriptor dma mode

From: Minas Harutyunyan
Date: Wed May 30 2018 - 03:16:49 EST


Hi Zeng Tao,

On 5/30/2018 9:09 AM, Zeng Tao wrote:
> If it's the first request to queue, and we are using descriptor dma mode
> for isoc transfer, we only need to add the request to the queue, and it
> will be processed in the future nak interrupt handler.
>
> Signed-off-by: Zeng Tao <prime.zeng@xxxxxxxxxxxxx>
> ---
> drivers/usb/dwc2/gadget.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c
> index f0d9ccf..48e3a48c 100644
> --- a/drivers/usb/dwc2/gadget.c
> +++ b/drivers/usb/dwc2/gadget.c
> @@ -1365,6 +1365,9 @@ static int dwc2_hsotg_ep_queue(struct usb_ep *ep, struct usb_request *req,
> return 0;
> }
>
> + if (using_desc_dma(hs))
> + return 0;
> +
> /* Update current frame number value. */
> hs->frame_number = dwc2_hsotg_read_frameno(hs);
> while (dwc2_gadget_target_frame_elapsed(hs_ep)) {
>

Actually it considered in "[PATCH] usb: dwc2: Change ISOC DDMA flow"
before checking is this request first or no:

+ if (using_desc_dma(hs) && hs_ep->isochronous) {
+ if (hs_ep->target_frame != TARGET_FRAME_INITIAL) {
+ dwc2_gadget_fill_isoc_desc(hs_ep, hs_req->req.dma,
+ hs_req->req.length);
+ }
return 0;
}


Thanks,
Minas