Hi Palak, On 5/17/23 00:43, PALAK SHAH wrote: > Hi Minas, > 1. Depend on which uac(uac1 or uac2) you use, increase 2 to 32 > > I change the #define UAC1_DEF_REQ_NUM 32. > > When I do this, what I see is, that when I play audio on the target, I don’t see the ENDPOINT shutdown. HOWEVER, when I try to record the data, I DO NOT RECORD any data. > The arecord file is empty with only 44 bytes. I saw the same behavior 2 months ago with the older version of kernel. > So, to set req num to 32 resolve time gap issue and ISOC OUT transfers (aplay) going OK. Please keep this 32 setting always. Arecord. In latest log I see that function driver, besides EP1OUT (which for aplay and it normally works), queued 32 requests to EP4IN, which I assume endpoint for ISOC IN for arecord. But transfer on EP4IN never start. Please provide me log and usb tarce when you doing aplay with arecord. > The logs show that the data comes on EP1(OUT) and the buffer queues upto #255 and then wraps around to 0. USB sniffer also shows data coming in. Wrapping from #255 to #0 is Ok, driver allocate 256 descriptors Thanks, Minas > > [ 4022.593932] dwc2 ffb40000.usb: dwc2_hsotg_epint: ep1(out) DxEPINT=0x00000001 > [ 4022.593945] dwc2 ffb40000.usb: dwc2_hsotg_epint: XferCompl: DxEPCTL=0x800480c8, DXEPTSIZ=1411f0c0 > [ 4022.593962] dwc2 ffb40000.usb: complete: ep 5a34f664 ep1out, req 071607a0, 0 => 209d0061 > [ 4022.593981] dwc2 ffb40000.usb: ep1out: req 071607a0: 200@f268b719, noi=0, zero=0, snok=0 > [ 4022.594005] dwc2 ffb40000.usb: dwc2_gadget_fill_isoc_desc: Filling ep 1, dir out isoc desc # 255 > [ 4022.594017] dwc2 ffb40000.usb: dwc2_gadget_complete_isoc_request_ddma: compl_desc # 223 > > [ 4022.594922] dwc2 ffb40000.usb: dwc2_hsotg_epint: ep1(out) DxEPINT=0x00000001 > [ 4022.594935] dwc2 ffb40000.usb: dwc2_hsotg_epint: XferCompl: DxEPCTL=0x800480c8, DXEPTSIZ=1409f060 > [ 4022.594951] dwc2 ffb40000.usb: complete: ep 5a34f664 ep1out, req bba03a8f, 0 => 209d0061 > [ 4022.594971] dwc2 ffb40000.usb: ep1out: req bba03a8f: 200@a96a5d42, noi=0, zero=0, snok=0 > [ 4022.594994] dwc2 ffb40000.usb: dwc2_gadget_fill_isoc_desc: Filling ep 1, dir out isoc desc # 0 > [ 4022.595006] dwc2 ffb40000.usb: dwc2_gadget_complete_isoc_request_ddma: compl_desc # 224 > > I see this going on indefinitely in logs. But when I do arecord and try to capture, I don’t get anything recorded. > > Is there anything more that needs to be enabled, to get this working? The endpoint is not shutting down but the data isn’t getting recorded. > > May be this is the going in the right direction but needs something more to be done? > > Attached the logs file here, showing no endpoint shutdown, but arecord file showing NO data. > > 2. Change descriptor DMA (DDMA) mode to buffer DMA (BDMA) mode > When I change this, I am seeing a kernel crash. I will investigate this further. > > Thanks, > Palak > > > -----Original Message----- > From: Minas Harutyunyan <Minas.Harutyunyan@xxxxxxxxxxxx> > Sent: Tuesday, May 16, 2023 3:54 AM > To: PALAK SHAH <palak.shah@xxxxxxxxxxx>; Maynard CABIENTE <maynard.cabiente@xxxxxxxxxxx> > Cc: linux-usb@xxxxxxxxxxxxxxx > Subject: Re: usb: gadget: dwc2: not getting audio data > > 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@xxxxxxxxxxxx>; Maynard >> CABIENTE <maynard.cabiente@xxxxxxxxxxx> >> *Cc:* linux-usb@xxxxxxxxxxxxxxx >> *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 >> >> > > As I recommended earlier, please try: > > 1. Depend on which uac(uac1 or uac2) you use, increase 2 to 32 > > 2. Change descriptor DMA (DDMA) mode to buffer DMA (BDMA) mode > > Thanks, > Minas > > > ________________________________ > > Ce message, ainsi que tous les fichiers joints à ce message, peuvent contenir des informations sensibles et/ ou confidentielles ne devant pas être divulguées. Si vous n'êtes pas le destinataire de ce message (ou que vous recevez ce message par erreur), nous vous remercions de le notifier immédiatement à son expéditeur, et de détruire ce message. Toute copie, divulgation, modification, utilisation ou diffusion, non autorisée, directe ou indirecte, de tout ou partie de ce message, est strictement interdite. > > > This e-mail, and any document attached hereby, may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorized, direct or indirect, copying, disclosure, distribution or other use of the material or parts thereof is strictly forbidden.