Tool/software: Linux
Hello team,
I'm working on an am335x based board with linux kernel 4.9.69. I have two USB interfaces(USB0 and USB1) having a cell modem and a USB stick attached to them respectively.
# lsusb
Bus 002 Device 002: ID 0781:5567 SanDisk Corp. Cruzer Blade
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 1bc7:0021 Telit HE910
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Now I try to unbind cell modem using the below command.
# echo musb-hdrc.0 > /sys/bus/platform/drivers/musb-hdrc/unbind
I could trace that the driver remove method (musb_remove() ) is called the the device unbind happens.
# lsusb
Bus 002 Device 002: ID 0781:5567 SanDisk Corp. Cruzer Blade
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
However, the second device, a USB stick attached to USB1 interface, is no longer accessible. I'm unable to mount or use it. If I remove and reinsert the USB stick, it is detected but not properly enumerated(/dev/sd<x> entry is missing).
If I try to bind the device again, the system hangs and goes for a reboot.
Some points to note:
1. The behaviour is not observed with 4.1.18 kernel
2. Using softconnect works
#echo 1 > /sys/kernel/debug/musb-hdrc.0/softconnect
But I need to go with the bind-unbind method.
Is there some known issue around this? Can someone provide me on how to possibly debug this ?
Thanks and Regards,
Jayadev