dwc2 gadget issues

Francesco Lavra francescolavra.fl at gmail.com
Tue Feb 28 23:37:15 PST 2017


On 02/28/2017 02:44 PM, Vardan Mikayelyan wrote:
> On 2/28/2017 3:44 PM, Francesco Lavra wrote:
>> Hi Vardan,
>>
>> On 02/28/2017 09:41 AM, Vardan Mikayelyan wrote:
>>> On 2/27/2017 11:55 PM, Francesco Lavra wrote:
>>>> Hi,
>>>>
>>>> On 02/23/2017 08:27 PM, Heiko Stuebner wrote:
>>>>> Hi Francesco,
>>>>>
>>>>> Am Donnerstag, 23. Februar 2017, 19:11:37 CET schrieb Francesco Lavra:
>>>>>> I'm having trouble getting the RK3288 OTG controller (the one at
>>>>>> ff580000) to work in peripheral mode. I'm using a Firefly Reload board,
>>>>>> and I know the hardware is fine because I can successfully use the port
>>>>>> in device mode with U-Boot's mass storage gadget driver.
>>>>>> Under Linux, the OTG port works fine when used in host mode, but fails
>>>>>> to work in device mode: nothing happens when the a USB host is plugged
>>>>>> into the OTG port, not even a single interrupt is generated by the
>>>>>> controller. I'm using the latest device tree definitions from
>>>>>> git://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip.git.
>>>>>
>>>>> you shouldn't use my tree as base for any real work :-) . Best to use the
>>>>> regular mainline kernel or alternatively try linux-next to get all recent usb
>>>>> changes schedules for the next release.
>>>>
>>>> Thanks for your inputs.
>>>>
>>>> I was actually using the mainline kernel (4.8.1), in which the dwc2
>>>> driver wasn't working, that's why I went to your tree to pick up any
>>>> fixes or new features that might have been done. I also went to the
>>>> linux-usb tree for the same reason.
>>>>
>>>> Anyway, today I tried with the latest mainline release 4.10.0, and also
>>>> with linux-next. Unfortunately, still no luck: I can load a gadget
>>>> driver, which gets correctly bound to the OTG controller, but then
>>>> nothing happens if a USB host is connected to the OTG port.
>>>> I'm pasting below the dmesg contents (obtained with 4.10.0, with verbose
>>>> debugging enabled for the dwc2 driver) when a gadget driver is loaded,
>>>> in case you might spot something suspicious:
>>>>
>>>> [ 1147.035367] dwc2 ff580000.usb: bound driver g_audio
>>>> [ 1147.041203] dwc2 ff580000.usb: dwc2_hsotg_pullup: is_on: 1 op_state: 3
>>>> [ 1147.041250] dwc2 ff580000.usb: dwc2_core_reset()
>>>> [ 1147.041345] dwc2 ff580000.usb: FIFOs reset, timeout at 100
>>>> [ 1147.041405] dwc2 ff580000.usb: EP0: DIEPCTL0=0x00008000,
>>>> DOEPCTL0=0x00008000
>>>> [ 1147.041447] dwc2 ff580000.usb: gsintmsk now 0xd08c3cc4
>>>> [ 1147.041554] dwc2 ff580000.usb: DCTL=0x00000002
>>>> [ 1147.041631] dwc2 ff580000.usb: dwc2_hsotg_enqueue_setup: queueing
>>>> setup request
>>>> [ 1147.041692] dwc2 ff580000.usb: ep0: req ee241680: 8 at ee241198, noi=0,
>>>> zero=0, snok=0
>>>> [ 1147.041757] dwc2 ff580000.usb: dwc2_hsotg_start_req:
>>>> DxEPCTL=0x80008000, ep 0, dir out
>>>> [ 1147.041799] dwc2 ff580000.usb: ureq->length:8 ureq->actual:0
>>>> [ 1147.041896] dwc2 ff580000.usb: dwc2_hsotg_start_req: 1 at 8/8,
>>>> 0x00080008 => 0x00000b10
>>>> [ 1147.041975] dwc2 ff580000.usb: dwc2_hsotg_start_req: 2e243000 pad =>
>>>> 0x00000b14
>>>> [ 1147.042014] dwc2 ff580000.usb: ep0 state:0
>>>> [ 1147.042055] dwc2 ff580000.usb: dwc2_hsotg_start_req: DxEPCTL=0x80008000
>>>> [ 1147.042097] dwc2 ff580000.usb: dwc2_hsotg_start_req: DXEPCTL=0x80008000
>>>> [ 1147.042169] dwc2 ff580000.usb: EP0: DIEPCTL0=0x00008000,
>>>> DOEPCTL0=0x80008000
>>>>
>>>> Thanks,
>>>> Francesco
>>>> --
>>>
>>> Hi Francesco,
>>>
>>> Could you please provide full log (with debugs enabled) from DWC2 driver
>>> loading to issue point? Two logs are not giving us the full picture.
>>
>> The full log from the DWC2 driver is below:
>>
>> [    1.498030] dwc2 ff580000.usb: ff580000.usb supply vusb_d not found,
>> using dummy regulator
>> [    1.507431] dwc2 ff580000.usb: ff580000.usb supply vusb_a not found,
>> using dummy regulator
>> [    1.880012] dwc2 ff580000.usb: dwc2_check_param_tx_fifo_sizes:
>> Invalid parameter g-tx-fifo-size, setting to default average
>> [    1.892596] dwc2 ff580000.usb: EPs: 10, dedicated fifos, 972 entries
>> in SPRAM
>> [    1.901018] dwc2 ff580000.usb: DCFG=0x08100000, DCTL=0x00000002,
>> DIEPMSK=00000000
>> [    1.909432] dwc2 ff580000.usb: GAHBCFG=0x00000000, GHWCFG1=0x00006664
>> [    1.916698] dwc2 ff580000.usb: GRXFSIZ=0x00000400, GNPTXFSIZ=0x00100400
>> [    1.924161] dwc2 ff580000.usb: DPTx[1] FSize=256, StAddr=0x00000410
>> [    1.931224] dwc2 ff580000.usb: DPTx[2] FSize=256, StAddr=0x00000900
>> [    1.938261] dwc2 ff580000.usb: DPTx[3] FSize=256, StAddr=0x00000a00
>> [    1.945318] dwc2 ff580000.usb: DPTx[4] FSize=256, StAddr=0x00000b00
>> [    1.952375] dwc2 ff580000.usb: DPTx[5] FSize=256, StAddr=0x00000c00
>> [    1.959410] dwc2 ff580000.usb: DPTx[6] FSize=256, StAddr=0x00000d00
>> [    1.966456] dwc2 ff580000.usb: DPTx[7] FSize=0, StAddr=0x00000e00
>> [    1.973317] dwc2 ff580000.usb: DPTx[8] FSize=0, StAddr=0x00000f00
>> [    1.980180] dwc2 ff580000.usb: DPTx[9] FSize=256, StAddr=0x00000410
>> [    1.987216] dwc2 ff580000.usb: ep0-in: EPCTL=0x00008800,
>> SIZ=0x00000000, DMA=0x379a4f2d
>> [    1.996232] dwc2 ff580000.usb: ep0-out: EPCTL=0x00008000,
>> SIZ=0x00000000, DMA=0xe3103c4f
>> [    2.005352] dwc2 ff580000.usb: ep1-in: EPCTL=0x00001000,
>> SIZ=0x00000000, DMA=0x5cf9a35d
>> [    2.014369] dwc2 ff580000.usb: ep1-out: EPCTL=0x00000000,
>> SIZ=0x00000000, DMA=0x8b00a168
>> [    2.023482] dwc2 ff580000.usb: ep2-in: EPCTL=0x00000000,
>> SIZ=0x00000000, DMA=0xfef360cf
>> [    2.032497] dwc2 ff580000.usb: ep2-out: EPCTL=0x00000000,
>> SIZ=0x00000000, DMA=0x9f637bc4
>> [    2.041609] dwc2 ff580000.usb: ep3-in: EPCTL=0x00002000,
>> SIZ=0x00000000, DMA=0xf03470c5
>> [    2.050625] dwc2 ff580000.usb: ep3-out: EPCTL=0x00000000,
>> SIZ=0x00000000, DMA=0x8b00a168
>> [    2.059715] dwc2 ff580000.usb: ep4-in: EPCTL=0x00000000,
>> SIZ=0x00000000, DMA=0xfef360cf
>> [    2.068731] dwc2 ff580000.usb: ep4-out: EPCTL=0x00000000,
>> SIZ=0x00000000, DMA=0xb6c8c271
>> [    2.077843] dwc2 ff580000.usb: ep5-in: EPCTL=0x00003000,
>> SIZ=0x00000000, DMA=0x84245611
>> [    2.086858] dwc2 ff580000.usb: ep5-out: EPCTL=0x00000000,
>> SIZ=0x00000000, DMA=0x8b00a168
>> [    2.095970] dwc2 ff580000.usb: ep6-in: EPCTL=0x00000000,
>> SIZ=0x00000000, DMA=0xfef360cf
>> [    2.104986] dwc2 ff580000.usb: ep6-out: EPCTL=0x00000000,
>> SIZ=0x00000000, DMA=0x0a6c1c90
>> [    2.114102] dwc2 ff580000.usb: ep7-in: EPCTL=0x00004000,
>> SIZ=0x00000000, DMA=0xaccb75ec
>> [    2.123111] dwc2 ff580000.usb: ep7-out: EPCTL=0x00000000,
>> SIZ=0x00000000, DMA=0x8b00a168
>> [    2.132222] dwc2 ff580000.usb: ep8-in: EPCTL=0x00004800,
>> SIZ=0x00000000, DMA=0x4625773c
>> [    2.141254] dwc2 ff580000.usb: ep8-out: EPCTL=0x00000000,
>> SIZ=0x00000000, DMA=0x437c9154
>> [    2.150371] dwc2 ff580000.usb: ep9-in: EPCTL=0x00005000,
>> SIZ=0x00000000, DMA=0x9cb1c89c
>> [    2.159365] dwc2 ff580000.usb: ep9-out: EPCTL=0x00000000,
>> SIZ=0x00000000, DMA=0x6ec79617
>> [    2.168476] dwc2 ff580000.usb: DVBUSDIS=0x00000b8f, DVBUSPULSE=000002c6
>> [    2.175996] usb 1-1: new high-speed USB device number 2 using dwc2
>> [    2.176105] dwc2 ff580000.usb: DWC OTG Controller
>> [    2.176147] dwc2 ff580000.usb: new USB bus registered, assigned bus
>> number 2
>> [    2.176195] dwc2 ff580000.usb: irq 41, io mem 0xff580000
>> [    2.176450] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002
>> [    2.176462] usb usb2: New USB device strings: Mfr=3, Product=2,
>> SerialNumber=1
>> [    2.176470] usb usb2: Product: DWC OTG Controller
>> [    2.176478] usb usb2: Manufacturer: Linux 4.10.0+ dwc2_hsotg
>> [    2.176485] usb usb2: SerialNumber: ff580000.usb
>> [ 1147.035367] dwc2 ff580000.usb: bound driver g_audio
>> [ 1147.041203] dwc2 ff580000.usb: dwc2_hsotg_pullup: is_on: 1 op_state: 3
>> [ 1147.041250] dwc2 ff580000.usb: dwc2_core_reset()
>> [ 1147.041345] dwc2 ff580000.usb: FIFOs reset, timeout at 100
>> [ 1147.041405] dwc2 ff580000.usb: EP0: DIEPCTL0=0x00008000,
>> DOEPCTL0=0x00008000
>> [ 1147.041447] dwc2 ff580000.usb: gsintmsk now 0xd08c3cc4
>> [ 1147.041554] dwc2 ff580000.usb: DCTL=0x00000002
>> [ 1147.041631] dwc2 ff580000.usb: dwc2_hsotg_enqueue_setup: queueing
>> setup request
>> [ 1147.041692] dwc2 ff580000.usb: ep0: req ee241680: 8 at ee241198, noi=0,
>> zero=0, snok=0
>> [ 1147.041757] dwc2 ff580000.usb: dwc2_hsotg_start_req:
>> DxEPCTL=0x80008000, ep 0, dir out
>> [ 1147.041799] dwc2 ff580000.usb: ureq->length:8 ureq->actual:0
>> [ 1147.041896] dwc2 ff580000.usb: dwc2_hsotg_start_req: 1 at 8/8,
>> 0x00080008 => 0x00000b10
>> [ 1147.041975] dwc2 ff580000.usb: dwc2_hsotg_start_req: 2e243000 pad =>
>> 0x00000b14
>> [ 1147.042014] dwc2 ff580000.usb: ep0 state:0
>> [ 1147.042055] dwc2 ff580000.usb: dwc2_hsotg_start_req: DxEPCTL=0x80008000
>> [ 1147.042097] dwc2 ff580000.usb: dwc2_hsotg_start_req: DXEPCTL=0x80008000
>> [ 1147.042169] dwc2 ff580000.usb: EP0: DIEPCTL0=0x00008000,
>> DOEPCTL0=0x80008000
>>
>> Thanks,
>> Francesco
>>
>>> Thanks,
>>> Vardan.
>>>
>>
>
> Seems here we have fifo configuration issue. We will follow up it and
> provide feedback soon.
>
> If it is possible, can you please provide to us register dump after
> driver loading.

Sure, here is the dump before loading the gadget driver:

GOTGCTL = 0x00010000
GOTGINT = 0x00000000
GAHBCFG = 0x0000002f
GUSBCFG = 0x00001408
GRSTCTL = 0x80000000
GINTSTS = 0x04000030
GINTMSK = 0xd0000806
GRXSTSR = 0x00000000
GRXSTSP = 0x00000000
GRXFSIZ = 0x00000400
GNPTXFSIZ = 0x00100400
GNPTXSTS = 0x00080010
GI2CCTL = 0x00000000
GPVNDCTL = 0x00000000
GGPIO = 0x00000000
GUID = 0x32000001
GSNPSID = 0x4f54310a
GHWCFG1 = 0x00006664
GHWCFG2 = 0x228e2450
GHWCFG3 = 0x03cc90e8
GHWCFG4 = 0xdbf04030
GLPMCFG = 0x00000000
GPWRDN = 0x00000000
GDFIFOCFG = 0x03cc0400
ADPCTL = 0x00000000
HPTXFSIZ = 0x00000000
DPTXFSIZN(1) = 0x01000410
DPTXFSIZN(2) = 0x01000900
DPTXFSIZN(3) = 0x01000a00
DPTXFSIZN(4) = 0x01000b00
DPTXFSIZN(5) = 0x01000c00
DPTXFSIZN(6) = 0x01000d00
DPTXFSIZN(7) = 0x00000e00
DPTXFSIZN(8) = 0x00000f00
DPTXFSIZN(9) = 0x01000410
DPTXFSIZN(10) = 0x01000900
DPTXFSIZN(11) = 0x01000a00
DPTXFSIZN(12) = 0x01000b00
DPTXFSIZN(13) = 0x01000c00
DPTXFSIZN(14) = 0x01000d00
DPTXFSIZN(15) = 0x00000e00
DCFG = 0x08100000
DCTL = 0x00000002
DSTS = 0x0007ff02
DIEPMSK = 0x00000000
DOEPMSK = 0x00000000
DAINT = 0x00000000
DAINTMSK = 0x00000000
DTKNQR1 = 0x00000000
DTKNQR2 = 0x00000000
DTKNQR3 = 0x0c100020
DTKNQR4 = 0x00000000
DVBUSDIS = 0x00000b8f
DVBUSPULSE = 0x000002c6
DIEPCTL(0) = 0x00008800
DIEPCTL(1) = 0x00001000
DIEPCTL(2) = 0x00000000
DIEPCTL(3) = 0x00002000
DIEPCTL(4) = 0x00000000
DIEPCTL(5) = 0x00003000
DIEPCTL(6) = 0x00000000
DIEPCTL(7) = 0x00004000
DIEPCTL(8) = 0x00004800
DIEPCTL(9) = 0x00005000
DIEPCTL(10) = 0x00000000
DIEPCTL(11) = 0x00000000
DIEPCTL(12) = 0x00000000
DIEPCTL(13) = 0x00000000
DIEPCTL(14) = 0x00000000
DIEPCTL(15) = 0x00000000
DOEPCTL(0) = 0x00008000
DOEPCTL(1) = 0x00000000
DOEPCTL(2) = 0x00000000
DOEPCTL(3) = 0x00000000
DOEPCTL(4) = 0x00000000
DOEPCTL(5) = 0x00000000
DOEPCTL(6) = 0x00000000
DOEPCTL(7) = 0x00000000
DOEPCTL(8) = 0x00000000
DOEPCTL(9) = 0x00000000
DOEPCTL(10) = 0x00000000
DOEPCTL(11) = 0x00000000
DOEPCTL(12) = 0x00000000
DOEPCTL(13) = 0x00000000
DOEPCTL(14) = 0x00000000
DOEPCTL(15) = 0x00000000
DIEPINT(0) = 0x00000080
DIEPINT(1) = 0x00000080
DIEPINT(2) = 0x00000080
DIEPINT(3) = 0x00000080
DIEPINT(4) = 0x00000080
DIEPINT(5) = 0x00000080
DIEPINT(6) = 0x00000080
DIEPINT(7) = 0x00000080
DIEPINT(8) = 0x00000080
DIEPINT(9) = 0x00000080
DIEPINT(10) = 0x00000080
DIEPINT(11) = 0x00000080
DIEPINT(12) = 0x00000080
DIEPINT(13) = 0x00000080
DIEPINT(14) = 0x00000080
DIEPINT(15) = 0x00000080
DOEPINT(0) = 0x00000000
DOEPINT(1) = 0x00000000
DOEPINT(2) = 0x00000000
DOEPINT(3) = 0x00000000
DOEPINT(4) = 0x00000000
DOEPINT(5) = 0x00000000
DOEPINT(6) = 0x00000000
DOEPINT(7) = 0x00000000
DOEPINT(8) = 0x00000000
DOEPINT(9) = 0x00000000
DOEPINT(10) = 0x00000000
DOEPINT(11) = 0x00000000
DOEPINT(12) = 0x00000000
DOEPINT(13) = 0x00000000
DOEPINT(14) = 0x00000000
DOEPINT(15) = 0x00000000
DIEPTSIZ(0) = 0x00000000
DIEPTSIZ(1) = 0x00000000
DIEPTSIZ(2) = 0x00000000
DIEPTSIZ(3) = 0x00000000
DIEPTSIZ(4) = 0x00000000
DIEPTSIZ(5) = 0x00000000
DIEPTSIZ(6) = 0x00000000
DIEPTSIZ(7) = 0x00000000
DIEPTSIZ(8) = 0x00000000
DIEPTSIZ(9) = 0x00000000
DIEPTSIZ(10) = 0x00000000
DIEPTSIZ(11) = 0x00000000
DIEPTSIZ(12) = 0x00000000
DIEPTSIZ(13) = 0x00000000
DIEPTSIZ(14) = 0x00000000
DIEPTSIZ(15) = 0x00000000
DOEPTSIZ(0) = 0x00000000
DOEPTSIZ(1) = 0x00000000
DOEPTSIZ(2) = 0x00000000
DOEPTSIZ(3) = 0x00000000
DOEPTSIZ(4) = 0x00000000
DOEPTSIZ(5) = 0x00000000
DOEPTSIZ(6) = 0x00000000
DOEPTSIZ(7) = 0x00000000
DOEPTSIZ(8) = 0x00000000
DOEPTSIZ(9) = 0x00000000
DOEPTSIZ(10) = 0x00000000
DOEPTSIZ(11) = 0x00000000
DOEPTSIZ(12) = 0x00000000
DOEPTSIZ(13) = 0x00000000
DOEPTSIZ(14) = 0x00000000
DOEPTSIZ(15) = 0x00000000
DIEPDMA(0) = 0x379a4f6d
DIEPDMA(1) = 0x5cc9a35d
DIEPDMA(2) = 0xfef360cb
DIEPDMA(3) = 0xf83470c5
DIEPDMA(4) = 0xfef360cb
DIEPDMA(5) = 0xbc245623
DIEPDMA(6) = 0xfef360cb
DIEPDMA(7) = 0xbdcb75ec
DIEPDMA(8) = 0x46617f3e
DIEPDMA(9) = 0x9cb1ca9c
DIEPDMA(10) = 0xfef360cb
DIEPDMA(11) = 0xfef360cb
DIEPDMA(12) = 0xfef360cb
DIEPDMA(13) = 0xfef360cb
DIEPDMA(14) = 0xfef360cb
DIEPDMA(15) = 0xfef360cb
DOEPDMA(0) = 0xf3143c4f
DOEPDMA(1) = 0x8b10a1e8
DOEPDMA(2) = 0x9f637bc4
DOEPDMA(3) = 0x8b10a1e8
DOEPDMA(4) = 0xb6c84231
DOEPDMA(5) = 0x8b10a1e8
DOEPDMA(6) = 0x126c1490
DOEPDMA(7) = 0x8b10a1e8
DOEPDMA(8) = 0x437c9154
DOEPDMA(9) = 0x6ec79607
DOEPDMA(10) = 0x8b10a1e8
DOEPDMA(11) = 0x8b10a1e8
DOEPDMA(12) = 0x8b10a1e8
DOEPDMA(13) = 0x8b10a1e8
DOEPDMA(14) = 0x8b10a1e8
DOEPDMA(15) = 0x8b10a1e8
DTXFSTS(0) = 0x00000010
DTXFSTS(1) = 0x00000010
DTXFSTS(2) = 0x00000010
DTXFSTS(3) = 0x00000010
DTXFSTS(4) = 0x00000010
DTXFSTS(5) = 0x00000010
DTXFSTS(6) = 0x00000010
DTXFSTS(7) = 0x00000010
DTXFSTS(8) = 0x00000010
DTXFSTS(9) = 0x00000010
DTXFSTS(10) = 0x00000010
DTXFSTS(11) = 0x00000010
DTXFSTS(12) = 0x00000010
DTXFSTS(13) = 0x00000010
DTXFSTS(14) = 0x00000010
DTXFSTS(15) = 0x00000010
PCGCTL = 0x00000000
HCFG = 0x00100000
HFIR = 0x00000b8f
HFNUM = 0x00003fff
HPTXSTS = 0x00080100
HAINT = 0x00000000
HAINTMSK = 0x00000000
HFLBADDR = 0x00000000
HPRT0 = 0x00000000
HCCHAR(0) = 0x00001000
HCCHAR(1) = 0x00004800
HCCHAR(2) = 0x00000000
HCCHAR(3) = 0x00004800
HCCHAR(4) = 0x00000000
HCCHAR(5) = 0x00004800
HCCHAR(6) = 0x00000000
HCCHAR(7) = 0x00004800
HCCHAR(8) = 0x00000000
HCCHAR(9) = 0x00000000
HCCHAR(10) = 0x00004800
HCCHAR(11) = 0x00004800
HCCHAR(12) = 0x00004800
HCCHAR(13) = 0x00004800
HCCHAR(14) = 0x00004800
HCCHAR(15) = 0x00004800
HCSPLT(0) = 0x00000000
HCSPLT(1) = 0x00000000
HCSPLT(2) = 0x00000000
HCSPLT(3) = 0x00000000
HCSPLT(4) = 0x00000000
HCSPLT(5) = 0x00000000
HCSPLT(6) = 0x00000000
HCSPLT(7) = 0x00000000
HCSPLT(8) = 0x00000000
HCSPLT(9) = 0x00000000
HCSPLT(10) = 0x00000000
HCSPLT(11) = 0x00000000
HCSPLT(12) = 0x00000000
HCSPLT(13) = 0x00000000
HCSPLT(14) = 0x00000000
HCSPLT(15) = 0x00000000
HCINT(0) = 0x00000000
HCINT(1) = 0x00000000
HCINT(2) = 0x00000000
HCINT(3) = 0x00000000
HCINT(4) = 0x00000000
HCINT(5) = 0x00000000
HCINT(6) = 0x00000000
HCINT(7) = 0x00000000
HCINT(8) = 0x00000000
HCINT(9) = 0x00000000
HCINT(10) = 0x00000000
HCINT(11) = 0x00000000
HCINT(12) = 0x00000000
HCINT(13) = 0x00000000
HCINT(14) = 0x00000000
HCINT(15) = 0x00000000
HCINTMSK(0) = 0x00000000
HCINTMSK(1) = 0x00000000
HCINTMSK(2) = 0x00000000
HCINTMSK(3) = 0x00000000
HCINTMSK(4) = 0x00000000
HCINTMSK(5) = 0x00000000
HCINTMSK(6) = 0x00000000
HCINTMSK(7) = 0x00000000
HCINTMSK(8) = 0x00000000
HCINTMSK(9) = 0x00000000
HCINTMSK(10) = 0x00000000
HCINTMSK(11) = 0x00000000
HCINTMSK(12) = 0x00000000
HCINTMSK(13) = 0x00000000
HCINTMSK(14) = 0x00000000
HCINTMSK(15) = 0x00000000
HCTSIZ(0) = 0x00000000
HCTSIZ(1) = 0x00000000
HCTSIZ(2) = 0x00000000
HCTSIZ(3) = 0x00000000
HCTSIZ(4) = 0x00000000
HCTSIZ(5) = 0x00000000
HCTSIZ(6) = 0x00000000
HCTSIZ(7) = 0x00000000
HCTSIZ(8) = 0x00000000
HCTSIZ(9) = 0x00000000
HCTSIZ(10) = 0x00000000
HCTSIZ(11) = 0x00000000
HCTSIZ(12) = 0x00000000
HCTSIZ(13) = 0x00000000
HCTSIZ(14) = 0x00000000
HCTSIZ(15) = 0x00000000
HCDMA(0) = 0xf3143c4f
HCDMA(1) = 0x8b10a1e8
HCDMA(2) = 0x9f637bc4
HCDMA(3) = 0x8b10a1e8
HCDMA(4) = 0xb6c84231
HCDMA(5) = 0x8b10a1e8
HCDMA(6) = 0x126c1490
HCDMA(7) = 0x8b10a1e8
HCDMA(8) = 0x437c9154
HCDMA(9) = 0x6ec79607
HCDMA(10) = 0x8b10a1e8
HCDMA(11) = 0x8b10a1e8
HCDMA(12) = 0x8b10a1e8
HCDMA(13) = 0x8b10a1e8
HCDMA(14) = 0x8b10a1e8
HCDMA(15) = 0x8b10a1e8
HCDMAB(0) = 0x8b10a1e8
HCDMAB(1) = 0x8b10a1e8
HCDMAB(2) = 0x8b10a1e8
HCDMAB(3) = 0x8b10a1e8
HCDMAB(4) = 0x8b10a1e8
HCDMAB(5) = 0x8b10a1e8
HCDMAB(6) = 0x8b10a1e8
HCDMAB(7) = 0x8b10a1e8
HCDMAB(8) = 0x8b10a1e8
HCDMAB(9) = 0x8b10a1e8
HCDMAB(10) = 0x8b10a1e8
HCDMAB(11) = 0x8b10a1e8
HCDMAB(12) = 0x8b10a1e8
HCDMAB(13) = 0x8b10a1e8
HCDMAB(14) = 0x8b10a1e8
HCDMAB(15) = 0x8b10a1e8

and here is the dump after loading the gadget driver:

GOTGCTL = 0x00010000
GOTGINT = 0x00000000
GAHBCFG = 0x00000027
GUSBCFG = 0x0000140f
GRSTCTL = 0x80000400
GINTSTS = 0x04008020
GINTMSK = 0xd08c3cc4
GRXSTSR = 0x00000000
GRXSTSP = 0x00000000
GRXFSIZ = 0x00000113
GNPTXFSIZ = 0x00100113
GNPTXSTS = 0x00080010
GI2CCTL = 0x00000000
GPVNDCTL = 0x00000000
GGPIO = 0x00000000
GUID = 0x32000001
GSNPSID = 0x4f54310a
GHWCFG1 = 0x00006664
GHWCFG2 = 0x228e2450
GHWCFG3 = 0x03cc90e8
GHWCFG4 = 0xdbf04030
GLPMCFG = 0x00000000
GPWRDN = 0x00000000
GDFIFOCFG = 0x039303cc
ADPCTL = 0x00000000
HPTXFSIZ = 0x00000000
DPTXFSIZN(1) = 0x00680123
DPTXFSIZN(2) = 0x0068018b
DPTXFSIZN(3) = 0x006801f3
DPTXFSIZN(4) = 0x0068025b
DPTXFSIZN(5) = 0x006802c3
DPTXFSIZN(6) = 0x0068032b
DPTXFSIZN(7) = 0x000003f3
DPTXFSIZN(8) = 0x0000037b
DPTXFSIZN(9) = 0x00680123
DPTXFSIZN(10) = 0x0068018b
DPTXFSIZN(11) = 0x006801f3
DPTXFSIZN(12) = 0x0068025b
DPTXFSIZN(13) = 0x006802c3
DPTXFSIZN(14) = 0x0068032b
DPTXFSIZN(15) = 0x000003f3
DCFG = 0x00840000
DCTL = 0x00000000
DSTS = 0x00000002
DIEPMSK = 0x0000000f
DOEPMSK = 0x0000022f
DAINT = 0x00000000
DAINTMSK = 0x00010001
DTKNQR1 = 0x00000000
DTKNQR2 = 0x00000000
DTKNQR3 = 0x0c100020
DTKNQR4 = 0x00000000
DVBUSDIS = 0x00000b8f
DVBUSPULSE = 0x000002c6
DIEPCTL(0) = 0x00008000
DIEPCTL(1) = 0x00000000
DIEPCTL(2) = 0x00000000
DIEPCTL(3) = 0x00000000
DIEPCTL(4) = 0x00000000
DIEPCTL(5) = 0x00000000
DIEPCTL(6) = 0x00000000
DIEPCTL(7) = 0x00000000
DIEPCTL(8) = 0x00000000
DIEPCTL(9) = 0x00000000
DIEPCTL(10) = 0x00000000
DIEPCTL(11) = 0x00000000
DIEPCTL(12) = 0x00000000
DIEPCTL(13) = 0x00000000
DIEPCTL(14) = 0x00000000
DIEPCTL(15) = 0x00000000
DOEPCTL(0) = 0x80008000
DOEPCTL(1) = 0x00000000
DOEPCTL(2) = 0x00000000
DOEPCTL(3) = 0x00000000
DOEPCTL(4) = 0x00000000
DOEPCTL(5) = 0x00000000
DOEPCTL(6) = 0x00000000
DOEPCTL(7) = 0x00000000
DOEPCTL(8) = 0x00000000
DOEPCTL(9) = 0x00000000
DOEPCTL(10) = 0x00000000
DOEPCTL(11) = 0x00000000
DOEPCTL(12) = 0x00000000
DOEPCTL(13) = 0x00000000
DOEPCTL(14) = 0x00000000
DOEPCTL(15) = 0x00000000
DIEPINT(0) = 0x00000080
DIEPINT(1) = 0x00000080
DIEPINT(2) = 0x00000080
DIEPINT(3) = 0x00000080
DIEPINT(4) = 0x00000080
DIEPINT(5) = 0x00000080
DIEPINT(6) = 0x00000080
DIEPINT(7) = 0x00000080
DIEPINT(8) = 0x00000080
DIEPINT(9) = 0x00000080
DIEPINT(10) = 0x00000080
DIEPINT(11) = 0x00000080
DIEPINT(12) = 0x00000080
DIEPINT(13) = 0x00000080
DIEPINT(14) = 0x00000080
DIEPINT(15) = 0x00000080
DOEPINT(0) = 0x00000000
DOEPINT(1) = 0x00000000
DOEPINT(2) = 0x00000000
DOEPINT(3) = 0x00000000
DOEPINT(4) = 0x00000000
DOEPINT(5) = 0x00000000
DOEPINT(6) = 0x00000000
DOEPINT(7) = 0x00000000
DOEPINT(8) = 0x00000000
DOEPINT(9) = 0x00000000
DOEPINT(10) = 0x00000000
DOEPINT(11) = 0x00000000
DOEPINT(12) = 0x00000000
DOEPINT(13) = 0x00000000
DOEPINT(14) = 0x00000000
DOEPINT(15) = 0x00000000
DIEPTSIZ(0) = 0x00000000
DIEPTSIZ(1) = 0x00000000
DIEPTSIZ(2) = 0x00000000
DIEPTSIZ(3) = 0x00000000
DIEPTSIZ(4) = 0x00000000
DIEPTSIZ(5) = 0x00000000
DIEPTSIZ(6) = 0x00000000
DIEPTSIZ(7) = 0x00000000
DIEPTSIZ(8) = 0x00000000
DIEPTSIZ(9) = 0x00000000
DIEPTSIZ(10) = 0x00000000
DIEPTSIZ(11) = 0x00000000
DIEPTSIZ(12) = 0x00000000
DIEPTSIZ(13) = 0x00000000
DIEPTSIZ(14) = 0x00000000
DIEPTSIZ(15) = 0x00000000
DOEPTSIZ(0) = 0x20080008
DOEPTSIZ(1) = 0x00000000
DOEPTSIZ(2) = 0x00000000
DOEPTSIZ(3) = 0x00000000
DOEPTSIZ(4) = 0x00000000
DOEPTSIZ(5) = 0x00000000
DOEPTSIZ(6) = 0x00000000
DOEPTSIZ(7) = 0x00000000
DOEPTSIZ(8) = 0x00000000
DOEPTSIZ(9) = 0x00000000
DOEPTSIZ(10) = 0x00000000
DOEPTSIZ(11) = 0x00000000
DOEPTSIZ(12) = 0x00000000
DOEPTSIZ(13) = 0x00000000
DOEPTSIZ(14) = 0x00000000
DOEPTSIZ(15) = 0x00000000
DIEPDMA(0) = 0xb616a434
DIEPDMA(1) = 0x1def4eb6
DIEPDMA(2) = 0xbdcb75ec
DIEPDMA(3) = 0xd55e9df3
DIEPDMA(4) = 0xbdcb75ec
DIEPDMA(5) = 0x026813f5
DIEPDMA(6) = 0xbdcb75ec
DIEPDMA(7) = 0xc10f8789
DIEPDMA(8) = 0xb0f82040
DIEPDMA(9) = 0xcbf8ce30
DIEPDMA(10) = 0xbdcb75ec
DIEPDMA(11) = 0xbdcb75ec
DIEPDMA(12) = 0xbdcb75ec
DIEPDMA(13) = 0xbdcb75ec
DIEPDMA(14) = 0xbdcb75ec
DIEPDMA(15) = 0xbdcb75ec
DOEPDMA(0) = 0xff43819d
DOEPDMA(1) = 0x5afb2109
DOEPDMA(2) = 0x074e8688
DOEPDMA(3) = 0x5afb2109
DOEPDMA(4) = 0xe7952f76
DOEPDMA(5) = 0x5afb2109
DOEPDMA(6) = 0x19c23309
DOEPDMA(7) = 0x5afb2109
DOEPDMA(8) = 0x1a1bb42e
DOEPDMA(9) = 0xcd2257a4
DOEPDMA(10) = 0x5afb2109
DOEPDMA(11) = 0x5afb2109
DOEPDMA(12) = 0x5afb2109
DOEPDMA(13) = 0x5afb2109
DOEPDMA(14) = 0x5afb2109
DOEPDMA(15) = 0x5afb2109
DTXFSTS(0) = 0x00000010
DTXFSTS(1) = 0x00000010
DTXFSTS(2) = 0x00000010
DTXFSTS(3) = 0x00000010
DTXFSTS(4) = 0x00000010
DTXFSTS(5) = 0x00000010
DTXFSTS(6) = 0x00000010
DTXFSTS(7) = 0x00000010
DTXFSTS(8) = 0x00000010
DTXFSTS(9) = 0x00000010
DTXFSTS(10) = 0x00000010
DTXFSTS(11) = 0x00000010
DTXFSTS(12) = 0x00000010
DTXFSTS(13) = 0x00000010
DTXFSTS(14) = 0x00000010
DTXFSTS(15) = 0x00000010
PCGCTL = 0x00000000
HCFG = 0x00840000
HFIR = 0x00000b8f
HFNUM = 0x4ebd0000
HPTXSTS = 0x00080068
HAINT = 0x00000000
HAINTMSK = 0x00000001
HFLBADDR = 0x00000000
HPRT0 = 0x00000000
HCCHAR(0) = 0x00000000
HCCHAR(1) = 0x00000000
HCCHAR(2) = 0x00000000
HCCHAR(3) = 0x00000000
HCCHAR(4) = 0x00000000
HCCHAR(5) = 0x00000000
HCCHAR(6) = 0x00000000
HCCHAR(7) = 0x00000000
HCCHAR(8) = 0x00000000
HCCHAR(9) = 0x00000000
HCCHAR(10) = 0x00000000
HCCHAR(11) = 0x00000000
HCCHAR(12) = 0x00000000
HCCHAR(13) = 0x00000000
HCCHAR(14) = 0x00000000
HCCHAR(15) = 0x00000000
HCSPLT(0) = 0x00000000
HCSPLT(1) = 0x00000000
HCSPLT(2) = 0x00000000
HCSPLT(3) = 0x00000000
HCSPLT(4) = 0x00000000
HCSPLT(5) = 0x00000000
HCSPLT(6) = 0x00000000
HCSPLT(7) = 0x00000000
HCSPLT(8) = 0x00000000
HCSPLT(9) = 0x00000000
HCSPLT(10) = 0x00000000
HCSPLT(11) = 0x00000000
HCSPLT(12) = 0x00000000
HCSPLT(13) = 0x00000000
HCSPLT(14) = 0x00000000
HCSPLT(15) = 0x00000000
HCINT(0) = 0x00000000
HCINT(1) = 0x00000000
HCINT(2) = 0x00000000
HCINT(3) = 0x00000000
HCINT(4) = 0x00000000
HCINT(5) = 0x00000000
HCINT(6) = 0x00000000
HCINT(7) = 0x00000000
HCINT(8) = 0x00000000
HCINT(9) = 0x00000000
HCINT(10) = 0x00000000
HCINT(11) = 0x00000000
HCINT(12) = 0x00000000
HCINT(13) = 0x00000000
HCINT(14) = 0x00000000
HCINT(15) = 0x00000000
HCINTMSK(0) = 0x0000000f
HCINTMSK(1) = 0x00000000
HCINTMSK(2) = 0x00000000
HCINTMSK(3) = 0x00000000
HCINTMSK(4) = 0x00000000
HCINTMSK(5) = 0x00000000
HCINTMSK(6) = 0x00000000
HCINTMSK(7) = 0x00000000
HCINTMSK(8) = 0x00000000
HCINTMSK(9) = 0x00000000
HCINTMSK(10) = 0x00000000
HCINTMSK(11) = 0x00000000
HCINTMSK(12) = 0x00000000
HCINTMSK(13) = 0x00000000
HCINTMSK(14) = 0x00000000
HCINTMSK(15) = 0x00000000
HCTSIZ(0) = 0x00000000
HCTSIZ(1) = 0x00000000
HCTSIZ(2) = 0x00000000
HCTSIZ(3) = 0x00000000
HCTSIZ(4) = 0x00000000
HCTSIZ(5) = 0x00000000
HCTSIZ(6) = 0x00000000
HCTSIZ(7) = 0x00000000
HCTSIZ(8) = 0x00000000
HCTSIZ(9) = 0x00000000
HCTSIZ(10) = 0x00000000
HCTSIZ(11) = 0x00000000
HCTSIZ(12) = 0x00000000
HCTSIZ(13) = 0x00000000
HCTSIZ(14) = 0x00000000
HCTSIZ(15) = 0x00000000
HCDMA(0) = 0xff43819d
HCDMA(1) = 0x5afb2109
HCDMA(2) = 0x074e8688
HCDMA(3) = 0x5afb2109
HCDMA(4) = 0xe7952f76
HCDMA(5) = 0x5afb2109
HCDMA(6) = 0x19c23309
HCDMA(7) = 0x5afb2109
HCDMA(8) = 0x1a1bb42e
HCDMA(9) = 0xcd2257a4
HCDMA(10) = 0x5afb2109
HCDMA(11) = 0x5afb2109
HCDMA(12) = 0x5afb2109
HCDMA(13) = 0x5afb2109
HCDMA(14) = 0x5afb2109
HCDMA(15) = 0x5afb2109
HCDMAB(0) = 0x4d39126c
HCDMAB(1) = 0xdd37f8a2
HCDMAB(2) = 0x14b9118c
HCDMAB(3) = 0xdd37f8a2
HCDMAB(4) = 0x5d5bff79
HCDMAB(5) = 0xdd37f8a2
HCDMAB(6) = 0x01144f4d
HCDMAB(7) = 0xdd37f8a2
HCDMAB(8) = 0x8b35ac87
HCDMAB(9) = 0x28a47b1b
HCDMAB(10) = 0xdd37f8a2
HCDMAB(11) = 0xdd37f8a2
HCDMAB(12) = 0xdd37f8a2
HCDMAB(13) = 0xdd37f8a2
HCDMAB(14) = 0xdd37f8a2
HCDMAB(15) = 0xdd37f8a2

When I plug a USB host into the OTG port, GINTSTS changes from 
0x04008020 to 0x04008022, while the other registers remain unchanged 
(except HFNUM).
It may be worth noting that when I request a register dump for the first 
time, I get two interrupts from the controller, both of which say:

[   23.081525] dwc2 ff580000.usb: gintsts=04000032  gintmsk=d0000806
[   23.081568] dwc2 ff580000.usb: Mode Mismatch Interrupt: currently in 
Device mode
[   23.089908] dwc2 ff580000.usb: dwc2_hsotg_irq: 04000030 00000000 
(d0000806) retry 8

Thanks,
Francesco



More information about the Linux-rockchip mailing list