Kernel Cold-plug USB power issues, where to start looking

Hi there,

I’m new to debugging USB power issues in the Kernel, so I am looking for help in
understanding the sequence of events / where to continue looking:

My board is loosely based on the mangOH green, it is using Legato for wp76xx R12,
Linux kernel 3.18.122.

My issue is that on powering up the board, 2 devices directly connected to the HSIC host,
are not enumerated. The 2 devices are Ethernet (on HSIC) and an SD card reader.

I have 2 boards: one which exhibits the issue and one that does not.

The only differences that I can see from dmesg/logread are:

swi-mdm9x28-wp kernel: [    1.141708] msm_hsic_host 7c00000.hsic_host: HSIC-USB in low power mode
swi-mdm9x28-wp kernel: [    1.141916] msm_hsic_host 7c00000.hsic_host: HSIC-USB exited from low power mode
swi-mdm9x28-wp user.err kernel: [    6.530202] usb 1-1: device descriptor read/64, error -110

So with a bit of digging I see that msm_hsic_runtime_suspend() from ehci-msm-hsic.c is being called,
bu I know of no reason why msm_hsic_runtime_suspend(0 is getting called -
the USB controller or system should not be entering into suspend.

I suppose disabling USB sleep might help, but I still don’t understand why/how it’s being told to go to sleep.

Any pointers on where to look greatly received.

OK so after some more digging :
The system can put the USB into suspend/low power mode if it thinks that nothing is connected to it. So this is possibly connected to the read/64, error -110 error message though as that message appears over six seconds later this still begs the question(s)
“What is the initial cause ?” -
Where is the decision made to put the USB hub into low power made ?
Where in the code could the issue be seen first ?

So far half the remedies, that I have seen, for read/64, error -110 are to power down the board and disconnect the devices for a few minutes. Not really practical where everything in connected to tracks on a board, and I don’t know why solution should work.

The other half center on filters, shorter cables and using powered hubs which all tally with power/voltage drop issues.

At the moment I am still trying to rule out software/config issues.

Again, any hints on where in the code to look gratefully received(and may to stop my ramblings).