Hi
I'm facing an issue on USB host port of an AM335x-based custom board after moving to PSP 04.06.00.08 kernel: plugged devices seem not to be powered. Everything seems fine using older kernel (PSP 04.06.00.07 or previous). I've dug a little bit into the code, adding some debug, and my conclusion is that the different behaviour is due to this change: http://arago-project.org/git/projects/?p=linux-am33x.git;a=commitdiff;h=0b3c89e5bc84b5b3a9eef81522a120c420a9caed Details are as follow:
When kernel boots and musb is initialized, an USB_INTR_DRVVBUS IRQ arises: in the old code, this causes musb->xceiv->state to be set to OTG_STATE_A_WAIT_VRISE; within new PSP it is left as is, A_IDLE.
When a USB device is plugged in the custom board, due to a low value capacitor on USB host port, a MUSB_INTR_VBUSERROR IRQ arises: the musb interrupt handler, in case of OTG_STATE_A_WAIT_VRISE state, sets again the session bit in the devctl register, making session to be restarted. A new USB_INTR_DRVVBUS arises, followed by MUSB_INTR_CONNECT, and everything starts working. But within new PSP this does not happen because state has not been set to OTG_STATE_A_WAIT_VRISE due to code change, so session is not restarted.
I would like to understand a little bit about the code change reasons, and to ask if any can suggest how to workaround this issue. As now I need to find the best solution (if any) with this custom hardware.
Ajay, hope you will read this message.
Thanks in advance for any help.
Max