usb: musb: omap2430: Idle musb on init
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>
This commit is contained in:
parent
b769ae4f26
commit
8b359cbc3c
@ -212,7 +212,6 @@ static int omap2430_musb_init(struct musb *musb)
|
|||||||
u32 l;
|
u32 l;
|
||||||
int status = 0;
|
int status = 0;
|
||||||
struct device *dev = musb->controller;
|
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 musb_hdrc_platform_data *plat = dev_get_platdata(dev);
|
||||||
struct omap_musb_board_data *data = plat->board_data;
|
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_INTERFSEL),
|
||||||
musb_readl(musb->mregs, OTG_SIMENABLE));
|
musb_readl(musb->mregs, OTG_SIMENABLE));
|
||||||
|
|
||||||
if (glue->status != MUSB_UNKNOWN)
|
|
||||||
omap_musb_set_mailbox(glue);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -279,19 +275,9 @@ static void omap2430_musb_enable(struct musb *musb)
|
|||||||
struct device *dev = musb->controller;
|
struct device *dev = musb->controller;
|
||||||
struct omap2430_glue *glue = dev_get_drvdata(dev->parent);
|
struct omap2430_glue *glue = dev_get_drvdata(dev->parent);
|
||||||
|
|
||||||
switch (glue->status) {
|
if (glue->status == MUSB_UNKNOWN)
|
||||||
|
glue->status = MUSB_VBUS_OFF;
|
||||||
case MUSB_ID_GROUND:
|
omap_musb_set_mailbox(glue);
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void omap2430_musb_disable(struct musb *musb)
|
static void omap2430_musb_disable(struct musb *musb)
|
||||||
|
Loading…
Reference in New Issue
Block a user