mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-16 23:45:31 +08:00
usb: musb: sunxi: Add set_mode platform function
Move the mode handling to the platform_set_mode callback. Signed-off-by: Hans de Goede <hdegoede@redhat.com> [b-liu@ti.com: revise subject prefix] Signed-off-by: Bin Liu <b-liu@ti.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
b6a6631dc3
commit
37f30d887a
@ -264,15 +264,6 @@ static int sunxi_musb_init(struct musb *musb)
|
||||
if (ret)
|
||||
goto error_unregister_notifier;
|
||||
|
||||
if (musb->port_mode == MUSB_PORT_MODE_HOST) {
|
||||
ret = phy_power_on(glue->phy);
|
||||
if (ret)
|
||||
goto error_phy_exit;
|
||||
set_bit(SUNXI_MUSB_FL_PHY_ON, &glue->flags);
|
||||
/* Stop musb work from turning vbus off again */
|
||||
set_bit(SUNXI_MUSB_FL_VBUS_ON, &glue->flags);
|
||||
}
|
||||
|
||||
musb->isr = sunxi_musb_interrupt;
|
||||
|
||||
/* Stop the musb-core from doing runtime pm (not supported on sunxi) */
|
||||
@ -280,8 +271,6 @@ static int sunxi_musb_init(struct musb *musb)
|
||||
|
||||
return 0;
|
||||
|
||||
error_phy_exit:
|
||||
phy_exit(glue->phy);
|
||||
error_unregister_notifier:
|
||||
if (musb->port_mode == MUSB_PORT_MODE_DUAL_ROLE)
|
||||
extcon_unregister_notifier(glue->extcon, EXTCON_USB_HOST,
|
||||
@ -323,6 +312,24 @@ static int sunxi_musb_exit(struct musb *musb)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int sunxi_set_mode(struct musb *musb, u8 mode)
|
||||
{
|
||||
struct sunxi_glue *glue = dev_get_drvdata(musb->controller->parent);
|
||||
int ret;
|
||||
|
||||
if (mode == MUSB_HOST) {
|
||||
ret = phy_power_on(glue->phy);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
set_bit(SUNXI_MUSB_FL_PHY_ON, &glue->flags);
|
||||
/* Stop musb work from turning vbus off again */
|
||||
set_bit(SUNXI_MUSB_FL_VBUS_ON, &glue->flags);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void sunxi_musb_enable(struct musb *musb)
|
||||
{
|
||||
struct sunxi_glue *glue = dev_get_drvdata(musb->controller->parent);
|
||||
@ -569,6 +576,7 @@ static const struct musb_platform_ops sunxi_musb_ops = {
|
||||
.exit = sunxi_musb_exit,
|
||||
.enable = sunxi_musb_enable,
|
||||
.disable = sunxi_musb_disable,
|
||||
.set_mode = sunxi_set_mode,
|
||||
.fifo_offset = sunxi_musb_fifo_offset,
|
||||
.ep_offset = sunxi_musb_ep_offset,
|
||||
.busctl_offset = sunxi_musb_busctl_offset,
|
||||
|
Loading…
Reference in New Issue
Block a user