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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Minas,
Can you please respond to this email, when you get a chance?

Thanks,
Palak

-----Original Message-----
From: PALAK SHAH
Sent: Tuesday, August 8, 2023 4:49 PM
To: Minas Harutyunyan <Minas.Harutyunyan@xxxxxxxxxxxx>
Cc: linux-usb@xxxxxxxxxxxxxxx
Subject: RE: usb: gadget: dwc2: not getting audio data

Hi Minas,
Hope you are doing well.

This is regarding the DWC2 core EP1 OUT getting disabled and not able to turn it on again. We spoke last in May.

I am on 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.

The original issue was that, when I am playing an audio on the HOST, EP1 OUT on our platform starts receiving the data. After a while, we saw a mysterious time gap and the EP got disabled. And we received the DXEPINT_OUTTKNEPDIS interrupt.

After your suggestion, I change the #define UAC1_DEF_REQ_NUM  from 2 to 32.

Please note that, with this change, if the host is running audio and the DWC2 core is receiving data, EP keeps running. No issue.

However, AFTER I START ARECORD, I get some data like 45076 bytes, and then again, the EP is disabled. And the original issue comes back. I receive DXEPINT_OUTTKNEPDIS interrupt.

So by changing the buffer count from 2 to 32, the problem still exists, just delayed, UNTIL AFTER I start ARECORD. It runs for a couple of seconds, then the time gap and then the EP is disabled. Since we don’t know how the IP core works, I cant really figure this out.

I got a raspberry PI set up with kernel 6.2 and 5.10.110, and the arecord work just fine. I even compared the source code and the logs between our system and R-PI. Once R-PI starts receiving data, it never stops. I get nice audio. But on our system the EP gets disabled.

I have attached the log file. You will see the DWC2 core messages first showing the data coming in on EP1(OUT), then you will see ALSA messages when I start arecord, then you will see the mysterious time gap and then the EP disabled. Once its disabled, it never gets the XFERCOMPL int. We keep getting DXEPINT_OUTTKNEPDIS interrupt.

 I have spent a lot of time to understand the g_audio and DWC2 core in detail, but at this point there isn’t more I can do, without synopsis help since we don’t have full sources.

Any help appreciated.

Thanks,
Palak

-----Original Message-----
From: Minas Harutyunyan <Minas.Harutyunyan@xxxxxxxxxxxx>
Sent: Wednesday, May 17, 2023 2:05 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/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.

________________________________

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.




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux