Re: usb: gadget: dwc2: not getting audio data

Minas Harutyunyan
2023-05-16T07:51:24Z

Hi Palak,

On 5/11/23 17:16, PALAK SHAH wrote:
> Hi Minas,
>
> Can you please respond to this? We need USB Audio Gadget working and we
> cannot proceed without Synopsis support on this.
>
> Thanks,
>
> Palak
>
> *From:* PALAK SHAH
> *Sent:* Tuesday, May 9, 2023 10:52 AM
> *To:* Minas Harutyunyan <Minas.Harutyunyan@synopsys.com>; Maynard
> CABIENTE <maynard.cabiente@raritan.com>
> *Cc:* linux-usb@vger.kernel.org
> *Subject:* RE: usb: gadget: dwc2: not getting audio data
>
> Hi Minas,
>
> I have updated the kernel to 5.10.100. I have done the IP core test and
> all the tests (esp. t15 and t16 for ISOC) pass on our system.
>
> However, I am still seeing the original problem. USB gadget DWC2 driver
> is getting stuck and not getting the transfers completed.
>
> When I am running audio on the host, and trying to capture the data on
> EP1(out) end point -
>
> [  270.855174] dwc2 ffb40000.usb: dwc2_hsotg_irq: gintsts: 042c8028,
> gintsts & gintmsk: 000c0000, gintmsk: (d08c3c44) retry 8
> [  270.855189] dwc2 ffb40000.usb: dwc2_hsotg_irq: daint=00020002
> [  270.855205] dwc2 ffb40000.usb: dwc2_hsotg_epint: ep1(out)
> DxEPINT=0x00000001
> [  270.855218] dwc2 ffb40000.usb: dwc2_hsotg_epint: XferCompl:
> DxEPCTL=0x800480c8, DXEPTSIZ=11e55680
> [  270.855238] dwc2 ffb40000.usb: complete: ep 822473bd ep1out, req
> 76bf77e8, 0 => 778da9a8
> [  270.855260] dwc2 ffb40000.usb: ep1out: req 76bf77e8: 200@1c821d4e,
> noi=0, zero=0, snok=0
> [  270.855279] dwc2 ffb40000.usb: dwc2_gadget_fill_isoc_desc: Filling ep
> 1, dir out isoc desc # 195
> [  270.855292] dwc2 ffb40000.usb:
> dwc2_gadget_complete_isoc_request_ddma: compl_desc # 193
>
> [  270.856242] dwc2 ffb40000.usb: dwc2_hsotg_irq: gintsts: 04288028,
> gintsts & gintmsk: 00080000, gintmsk: (d08c3c44) retry 8
> [  270.856255] dwc2 ffb40000.usb: dwc2_hsotg_irq: daint=00020000
> [  270.856268] dwc2 ffb40000.usb: dwc2_hsotg_epint: ep1(out)
> DxEPINT=0x00000001
> [  270.856282] dwc2 ffb40000.usb: dwc2_hsotg_epint: XferCompl:
> DxEPCTL=0x800480c8, DXEPTSIZ=11dd5620
> [  270.856311] dwc2 ffb40000.usb: complete: ep 822473bd ep1out, req
> 5af4a660, 0 => 778da9a8
> [  270.856346] dwc2 ffb40000.usb: ep1out: req 5af4a660: 200@f8820950,
> noi=0, zero=0, snok=0
> [  270.856371] dwc2 ffb40000.usb: dwc2_gadget_fill_isoc_desc: Filling ep
> 1, dir out isoc desc # 196
> [  270.856398] dwc2 ffb40000.usb:
> dwc2_gadget_complete_isoc_request_ddma: compl_desc # 194
>
> [  281.700537] dwc2 ffb40000.usb: dwc2_hsotg_irq: daint=00020002
> [  281.700552] dwc2 ffb40000.usb: dwc2_hsotg_epint: ep1(out)
> DxEPINT=0x00000010
> [  281.700564] dwc2 ffb40000.usb:
> dwc2_gadget_handle_out_token_ep_disabled: target_frame = 0x000013d0
> [  281.700580] dwc2 ffb40000.usb: dwc2_gadget_fill_isoc_desc: Filling ep
> 1, dir out isoc desc # 0
> [  281.700594] dwc2 ffb40000.usb: dwc2_gadget_fill_isoc_desc: Filling ep
> 1, dir out isoc desc # 1
>
> At 270 seconds, the request #194 was completed and request #196 was
> queued. But right after that, there was a 11 second gap and the request
> #195 was never completed.
>
> For some unknown reason, the DWC2 core just stops. There is nothing in
> our system that causes it to get stuck. The interrupts are not disabled.
> The USB sniffer data shows that the data is coming in. However, dwc2 is
> not running.
> After the time gap, everything stop working.
>
> I have attached the log file here. Can you please help me fix this dwc2
> core issue?
>
> Thanks,
> Palak
>
>

Based on your usbtest successful results for ISOCs, both core and dwc2
driver works OK.

As I recommended earlier, please try:

1. Depend on which uac(uac1 or uac2) you use, increase
UAC1/2_DEF_REQ_NUM 2 to 32

2. Change descriptor DMA (DDMA) mode to buffer DMA (BDMA) mode

Thanks,
Minas