OSDN Git Service

usb: musb: omap2430: Idle musb on init
authorTony Lindgren <tony@atomide.com>
Wed, 15 Jan 2020 13:25:31 +0000 (07:25 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 15 Jan 2020 13:46:56 +0000 (14:46 +0100)
We want to configure musb state in omap2430_musb_enable() instead of
omap2430_musb_init(). Otherwise musb may not idle properly until
USB cable has been connected at least once.

And we already have omap_musb_set_mailbox() configure mode with
omap_control_usb_set_mode() so we can remove those calls from
omap2430_musb_enable().

Cc: Jacopo Mondi <jacopo@jmondi.org>
Cc: Marcel Partap <mpartap@gmx.net>
Cc: Merlijn Wajer <merlijn@wizzup.org>
Cc: Michael Scott <hashcode0f@gmail.com>
Cc: NeKit <nekit1000@gmail.com>
Cc: Pavel Machek <pavel@ucw.cz>
Cc: Sebastian Reichel <sre@kernel.org>
Acked-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Bin Liu <b-liu@ti.com>
Link: https://lore.kernel.org/r/20200115132547.364-10-b-liu@ti.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/musb/omap2430.c

index 2cc5413..bc5810e 100644 (file)
@@ -212,7 +212,6 @@ static int omap2430_musb_init(struct musb *musb)
        u32 l;
        int status = 0;
        struct device *dev = musb->controller;
-       struct omap2430_glue *glue = dev_get_drvdata(dev->parent);
        struct musb_hdrc_platform_data *plat = dev_get_platdata(dev);
        struct omap_musb_board_data *data = plat->board_data;
 
@@ -268,9 +267,6 @@ static int omap2430_musb_init(struct musb *musb)
                        musb_readl(musb->mregs, OTG_INTERFSEL),
                        musb_readl(musb->mregs, OTG_SIMENABLE));
 
-       if (glue->status != MUSB_UNKNOWN)
-               omap_musb_set_mailbox(glue);
-
        return 0;
 }
 
@@ -279,19 +275,9 @@ static void omap2430_musb_enable(struct musb *musb)
        struct device *dev = musb->controller;
        struct omap2430_glue *glue = dev_get_drvdata(dev->parent);
 
-       switch (glue->status) {
-
-       case MUSB_ID_GROUND:
-               omap_control_usb_set_mode(glue->control_otghs, USB_MODE_HOST);
-               break;
-
-       case MUSB_VBUS_VALID:
-               omap_control_usb_set_mode(glue->control_otghs, USB_MODE_DEVICE);
-               break;
-
-       default:
-               break;
-       }
+       if (glue->status == MUSB_UNKNOWN)
+               glue->status = MUSB_VBUS_OFF;
+       omap_musb_set_mailbox(glue);
 }
 
 static void omap2430_musb_disable(struct musb *musb)