Tony,

On 04/05/2017 06:29 PM, Tony Lindgren wrote:
* Tony Lindgren <t...@atomide.com> [170405 06:53]:
* Peter Ujfalusi <peter.ujfal...@ti.com> [170405 00:15]:
To be precise this is what I have tried:
- boot w/o cable connected
- boot w/ board connected to PC (device mode)
- boot w/ OTG-A cable with USB keyboard
- boot w/ OTG-A cable connected to powered USB hub and the same keyboard

w/ and w/o this patch I have the same flood of prints in all cases.

OK interesting that it also happens with nothing connected.

Fwiw I have checked where the is_active is set - which causes the prints:
musb_core.c:musb_start()

if (musb->port_mode != MUSB_PORT_MODE_HOST &&
                musb->xceiv->otg->state != OTG_STATE_A_WAIT_BCON &&
                (devctl & MUSB_DEVCTL_VBUS) == MUSB_DEVCTL_VBUS) {
        musb->is_active = 1;
} else {
        devctl |= MUSB_DEVCTL_SESSION;
}

this was the only place where the is_active was set to 1.

That seems normal in musb_start(). Will try with your .config
here.

If the the port is configured as OTG, we should not need to
try to force any states during init. The change below will stop
the warnings with your .config, needs to be tested more though
to make sure things still work in all cases.

With this change I can boot up without issues, thanks!
I can not get the kernel to react to anything I plug to the A/B connector. Keyboard (directly or via powered hub), flash drive, connecting the board to PC. Nothing. Actually if I connect to a PC I got a print from twl6030 about an interrupt, but nothing happens in USB front. The same thing happens with 4.8, so it is not regression. Most likely it is an error in my setup...

Tested-by: Peter Ujfalusi <peter.ujfal...@ti.com>


Regards,

Tony

8< --------------------------
diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c
--- a/drivers/usb/musb/musb_host.c
+++ b/drivers/usb/musb/musb_host.c
@@ -2780,10 +2780,11 @@ int musb_host_setup(struct musb *musb, int power_budget)
        int ret;
        struct usb_hcd *hcd = musb->hcd;

-       MUSB_HST_MODE(musb);
-       musb->xceiv->otg->default_a = 1;
-       musb->xceiv->otg->state = OTG_STATE_A_IDLE;
-
+       if (musb->port_mode == MUSB_PORT_MODE_HOST) {
+               MUSB_HST_MODE(musb);
+               musb->xceiv->otg->default_a = 1;
+               musb->xceiv->otg->state = OTG_STATE_A_IDLE;
+       }
        otg_set_host(musb->xceiv->otg, &hcd->self);
        hcd->self.otg_port = 1;
        musb->xceiv->otg->host = &hcd->self;



--
Péter
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to