USB3503 enumeration after wp7608 boot cycle

We have a custom board based on WP7608 where we have interfaced USB3503 (HSIC) for additional USB Ports. After we boot the WP device, we can see the USB devices in the dmesg, as below.

root@swi-mdm9x28-wp:~# dmesg | grep usb
[ 1.100206] usb 1-1: new high-speed USB device number 2 using msm_hsic_host
[ 1.250787] usb 1-1: New USB device found, idVendor=0424, idProduct=3503
[ 1.250805] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0

And we have the condition where we keep USB3503 powered off initially, during the WP boot cycle, and will only be powered up USB3503 after some time. In this condition, we found that the USB3503 does not show up in the dmesg. Kindly advise how we can handle the USB3503 enumeration after the boot cycle?

Here says you can re-enable HSIC bus by the followings:


echo 0 > /sys/devices/platform/msm_hsic_host/usb1/authorized
sleep 3
echo 1 > /sys/devices/platform/msm_hsic_host/usb1/authorized

@jyijyi Thank you for the reply.

We dont have /sys/devices/platform/msm_hsic_host/usb1/authorized. Instead we have tried /sys/devices/7c00000.hsic_host/usb1/authorized

echo 0 > /sys/devices/7c00000.hsic_host/usb1/authorized
sleep 20
echo 1 > /sys/devices/7c00000.hsic_host/usb1/authorized

It is working when the USB3503 is powered up along with WP and later I am able to disconnect and connect it again using the above commands.

root@swi-mdm9x28-wp:~# dmesg | grep usb
[ 0.958746] msm_hsusb msm_hsusb: CI13XXX_CONTROLLER_UDC_STARTED_EVENT received
[ 1.110267] usb 1-1: new high-speed USB device number 2 using msm_hsic_host
[ 1.260837] usb 1-1: New USB device found, idVendor=0424, idProduct=3503
[ 1.260855] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 10.871615] enable_store: android_usb: already disabled
[ 10.886568] msm_hsusb msm_hsusb: CI13XXX_CONTROLLER_CONNECT_EVENT received
[ 10.889668] msm_otg 78d9000.usb: Avail curr from USB = 2
[ 10.889705] msm_hsusb msm_hsusb: CI13XXX_CONTROLLER_SUSPEND_EVENT received
[ 11.030209] msm_hsusb msm_hsusb: CI13XXX_CONTROLLER_RESUME_EVENT received
[ 11.030270] msm_otg 78d9000.usb: Avail curr from USB = 100
[ 11.318734] android_usb gadget: high-speed config #1: 86000c8.android_usb
[ 11.318871] msm_otg 78d9000.usb: Avail curr from USB = 500
[ 158.235365] usb 1-1: USB disconnect, device number 2
[ 173.193087] usb usb1: authorized to connect
[ 173.411050] usb 1-1: new high-speed USB device number 3 using msm_hsic_host
[ 173.563205] usb 1-1: New USB device found, idVendor=0424, idProduct=3503
[ 173.563238] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0

But when we postpone the USB3503 power cycle, sometime after the WP is booted up, we are not able to enumerate the USB connection. When we execute the HSIC authorize commands, we are getting the ‘authorized to connect’ message in the dmesg but USB3503 is not enumerated. Please log the message below

root@swi-mdm9x28-wp:~# dmesg | grep usb
[ 0.816004] usbhid: USB HID core driver
[ 0.816551] of_get_named_gpiod_flags: can’t parse ‘qcom,gpio-mode-sel’ property of node ‘/soc/usb_detect[0]’
[ 0.944619] android_usb gadget: android_usb ready
[ 0.944636] msm_hsusb msm_hsusb: [ci13xxx_start] hw_ep_max = 32
[ 0.944683] msm_hsusb msm_hsusb: CI13XXX_CONTROLLER_RESET_EVENT received
[ 0.944700] msm_hsusb msm_hsusb: CI13XXX_CONTROLLER_UDC_STARTED_EVENT received
[ 11.074953] enable_store: android_usb: already disabled
[ 11.091542] msm_hsusb msm_hsusb: CI13XXX_CONTROLLER_CONNECT_EVENT received
[ 11.094643] msm_otg 78d9000.usb: Avail curr from USB = 2
[ 11.094682] msm_hsusb msm_hsusb: CI13XXX_CONTROLLER_SUSPEND_EVENT received
[ 11.233728] msm_hsusb msm_hsusb: CI13XXX_CONTROLLER_RESUME_EVENT received
[ 11.233803] msm_otg 78d9000.usb: Avail curr from USB = 100
[ 11.526090] android_usb gadget: high-speed config #1: 86000c8.android_usb
[ 11.526213] msm_otg 78d9000.usb: Avail curr from USB = 500
[ 77.711631] usb usb1: authorized to connect

Please let us know if there is any other way.

why do you delay the power up of USB3503?

We have a critical application where the initial power cycle involves only a few components in the circuit which is powered from the main supply. The USB3503 is connected to a secondary supply which is powered up later.

then you can keep secondary supply, and then type AT!RESET to restart the WP76 module

As we have alreay mentioned, we are using USB3503 in a secondary application. We cannot reset the module, is they anything we can do from OS?

how about you wait for the “authorized to connect” message after typing the command, and then power up the USB3503?

Or you can try:

echo 0 > /sys/devices/7c00000.hsic_host/usb1/authorized
power up the USB3503
echo 1 > /sys/devices/7c00000.hsic_host/usb1/authorized