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

Minas Harutyunyan
2023-02-23T06:31:48Z

Hi Palak,

>On 2/23/2023 12:51 AM, Palak SHAH wrote:
>From: Palak SHAH <palak.shah@raritan.com>
>Sent: Thursday, February 23, 2023 12:51 AM
>To: Minas Harutyunyan <hminas@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 applied the patch you sent and I have attached the logs. Around 197 secs,
>there is a gap of 8 seconds and jumps to 205 secs.
>
>[ 197.618605] dwc2 ffb40000.usb: dwc2_gadget_read_ep_interrupts [
>197.618628] dwc2 ffb40000.usb: dwc2_hsotg_epint: ep1(out) DxEPINT=0x00000001
>[ 197.618652] dwc2 ffb40000.usb: dwc2_hsotg_epint: XferCompl:
>DxEPCTL=0x800480c8, DXEPTSIZ=0ec10070 [ 197.618668] dwc2 ffb40000.usb:
>dwc2_hsotg_epint: calling dwc2_gadget_complete_isoc_request_ddma
>[ 197.618680] dwc2 ffb40000.usb: dwc2_gadget_complete_isoc_request_ddma:
>calling dwc2_hsotg_complete_request() [ 197.618705] dwc2 ffb40000.usb:
>dwc2_hsotg_complete_request, complete: ep 47138ecf ep1out, req 516c0b0e, 0
>=> db2182cd [ 197.618730] dwc2 ffb40000.usb: dwc2_hsotg_ep_queue, ep1out:
>req 516c0b0e: req len(200)@req buf(68be9ea5), # of int=0, req zero=0,
>snok(short not ok)=0 [ 197.618743] dwc2 ffb40000.usb: dwc2_hsotg_ep_queue,
>EP #(ep1out) Handle DDMA isochronous transfers separately.
>[ 197.618752] dwc2 ffb40000.usb: ENTERING dwc2_gadget_fill_isoc_desc [
>197.618763] dwc2 ffb40000.usb: dwc2_gadget_fill_isoc_desc: Filling ep 1, dir
>(out) isoc desc # (41) [ 197.618786] dwc2 ffb40000.usb:
>dwc2_gadget_complete_isoc_request_ddma: compl_desc # 39 [ 197.618807] dwc2
>ffb40000.usb: dwc2_hsotg_epint: At the end of the function,
>dwc2_hsotg_epint() [ 197.618807]
>
>------ GAP of 8 secs -------------------------------
>
>[ 205.262626] dwc2 ffb40000.usb: dwc2_hsotg_irq: daint=00020000 [
>205.264633] dwc2 ffb40000.usb: dwc2_hsotg_irq: daint=00020000 [ 205.264642]
>dwc2 ffb40000.usb: dwc2_hsotg_irq, calling dwc2_hsotg_epint 0 [ 205.264651]
>dwc2 ffb40000.usb: ENTERING dwc2_hsotg_epint: EP(1) DIRECTION (out) [
>205.264659] dwc2 ffb40000.usb: dwc2_gadget_read_ep_interrupts [ 205.264669]
>dwc2 ffb40000.usb: dwc2_hsotg_epint: ep1(out) DxEPINT=0x00000010 [
>205.264678] dwc2 ffb40000.usb: dwc2_hsotg_epint, calling
>dwc2_gadget_handle_out_token_ep_disabled
>[ 205.264687] dwc2 ffb40000.usb: dwc2_gadget_handle_out_token_ep_disabled:
>target_frame = 0x00002a80 [ 205.264695] dwc2 ffb40000.usb: ENTERING
>dwc2_gadget_start_isoc_ddma [ 205.264715] dwc2 ffb40000.usb: ENTERING
>dwc2_gadget_fill_isoc_desc [ 205.264725] dwc2 ffb40000.usb:
>dwc2_gadget_fill_isoc_desc: Filling ep 1, dir (out) isoc desc # (0) [
>205.264733] dwc2 ffb40000.usb: ENTERING dwc2_gadget_fill_isoc_desc [
>205.264743] dwc2 ffb40000.usb: dwc2_gadget_fill_isoc_desc: Filling ep 1, dir
>(out) isoc desc # (1) [ 205.264758] dwc2 ffb40000.usb:
>dwc2_gadget_start_isoc_ddma: GRXSTSR=0xfefafe10 DCFG==0x008402c0
>DCTL=0x00000000 DSTS=0x002a8900 DxEPCTL(1)=0x800480c8 [ 205.264767] dwc2
>ffb40000.usb: dwc2_hsotg_epint: At the end of the function,
>dwc2_hsotg_epint()
>

According log in dwc2_gadget_start_isoc_ddma() EP successfully enabled:
DxEPCTL(1)=0x800480c8, but looks like GRXSTSR=0xfefafe10 contain garbage,
more probably it's data pattern from ISOC OUT packet.
Could you please send me register dump for follow cases:
1. After driver loading
2. After connecting to host, but not start any play audio
3. After issue seen (after DXEPINT_OUTTKNEPDIS interrupts started)

Thanks,
Minas