Skip to contentSkip to conversation

dwc2: gadget mode and timeout with GRSTCTL_CSFTRST

DISCUSSION Heiko Stuebner 2 participants 2 messages Feb 5, 2020 – Feb 6, 2020

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

Hi,

right now we're experiencing strange behaviour with a dwc2 on Rockchip's PX30 soc.

With a cable connected to the port, the configfs-snippet below seems to work and at least creates a acm device on the host. Though I'm told that a

	 picocom -b 115200 /dev/ttyACM

sometimes works ok but also sometimes returns -EBUSY or hangs. [But I guess that is a separate problem]

But if there is no cable connected when trying to do the configfs steps we end up with
dwc2_core_reset: HANG! Soft Reset timeout GRSTCTL GRSTCTL_CSFTRST
and no gadget gets configured.

So I guess to get a feeling for the issue, is this something to be expected, or at least a known issue, with maybe a fix flying around somewhere?

Or is this working on other dwc2 platforms correctly and is caused by some other part talking to the dwc2 doing strange things?

Thanks
Heiko

-------- 8< ---- configfs snippet ------ >8 -------- cd /configfs/usb_gadget
mkdir g1
cd g1
echo "0x1d6d" > idVendor
echo "0x0104" > idProduct
mkdir strings/0x409
echo "0123456789" > strings/0x409/serialnumber echo "Theobroma Systems" > strings/0x409/manufacturer echo "Cobra Debug Serial" > strings/0x409/product

# create config
mkdir configs/c.1
mkdir configs/c.1/strings/0x409
echo "conf1" > configs/c.1/strings/0x409/configuration
# create function
mkdir functions/acm.usb0
ln -s functions/acm.usb0 configs/c.1
# activate new config
echo "" > UDC
echo "ff300000.usb" > UDC
#1 lore raw

Hi Heiko,

Quoted 7 lines · Heiko Stuebner

Hi,

right now we're experiencing strange behaviour with a dwc2 on Rockchip's PX30 soc.

With a cable connected to the port, the configfs-snippet below seems to work and at least creates a acm device on the host. Though I'm told that a

Quoted 9 lines
	 picocom -b 115200 /dev/ttyACM

sometimes works ok but also sometimes returns -EBUSY or hangs. [But I guess that is a separate problem]

But if there is no cable connected when trying to do the configfs steps we end up with
dwc2_core_reset: HANG! Soft Reset timeout GRSTCTL GRSTCTL_CSFTRST
and no gadget gets configured.

Which timeout value set to wait GRSTCTL cleared? Does this commit
applied: 6689f0f4bb14e "usb: dwc2: use a longer core rest timeout in dwc2_core_reset()"?
If yes, can you send debug log for above case.

Thanks,
Minas

Quoted 38 lines

So I guess to get a feeling for the issue, is this something to be expected, or at least a known issue, with maybe a fix flying around somewhere?

Or is this working on other dwc2 platforms correctly and is caused by some other part talking to the dwc2 doing strange things?

Thanks
Heiko

-------- 8< ---- configfs snippet ------ >8 -------- cd /configfs/usb_gadget
mkdir g1
cd g1
echo "0x1d6d" > idVendor
echo "0x0104" > idProduct
mkdir strings/0x409
echo "0123456789" > strings/0x409/serialnumber echo "Theobroma Systems" > strings/0x409/manufacturer echo "Cobra Debug Serial" > strings/0x409/product

# create config
mkdir configs/c.1
mkdir configs/c.1/strings/0x409
echo "conf1" > configs/c.1/strings/0x409/configuration
# create function
mkdir functions/acm.usb0
ln -s functions/acm.usb0 configs/c.1
# activate new config
echo "" > UDC
echo "ff300000.usb" > UDC