usb: musb: use musb->port_mode
Initialize the host and gadget subsystems of the musb driver only when the appropriate mode is selected from platform data, or device-tree information, respectively. Signed-off-by: Daniel Mack <zonque@gmail.com> Acked-by: Peter Korsgaard <jacmet@sunsite.dk> Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
parent
9ad96e694c
commit
6c5f6a6f53
|
@ -1904,11 +1904,23 @@ musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl)
|
||||||
musb->xceiv->state = OTG_STATE_B_IDLE;
|
musb->xceiv->state = OTG_STATE_B_IDLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
status = musb_host_setup(musb, plat->power);
|
switch (musb->port_mode) {
|
||||||
if (status < 0)
|
case MUSB_PORT_MODE_HOST:
|
||||||
goto fail3;
|
status = musb_host_setup(musb, plat->power);
|
||||||
|
break;
|
||||||
status = musb_gadget_setup(musb);
|
case MUSB_PORT_MODE_GADGET:
|
||||||
|
status = musb_gadget_setup(musb);
|
||||||
|
break;
|
||||||
|
case MUSB_PORT_MODE_DUAL_ROLE:
|
||||||
|
status = musb_host_setup(musb, plat->power);
|
||||||
|
if (status < 0)
|
||||||
|
goto fail3;
|
||||||
|
status = musb_gadget_setup(musb);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
dev_err(dev, "unsupported port mode %d\n", musb->port_mode);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (status < 0)
|
if (status < 0)
|
||||||
goto fail3;
|
goto fail3;
|
||||||
|
|
|
@ -79,7 +79,8 @@ static void musb_start(struct musb *musb)
|
||||||
* (b) vbus present/connect IRQ, peripheral mode;
|
* (b) vbus present/connect IRQ, peripheral mode;
|
||||||
* (c) peripheral initiates, using SRP
|
* (c) peripheral initiates, using SRP
|
||||||
*/
|
*/
|
||||||
if ((devctl & MUSB_DEVCTL_VBUS) == MUSB_DEVCTL_VBUS) {
|
if (musb->port_mode != MUSB_PORT_MODE_HOST &&
|
||||||
|
(devctl & MUSB_DEVCTL_VBUS) == MUSB_DEVCTL_VBUS) {
|
||||||
musb->is_active = 1;
|
musb->is_active = 1;
|
||||||
} else {
|
} else {
|
||||||
devctl |= MUSB_DEVCTL_SESSION;
|
devctl |= MUSB_DEVCTL_SESSION;
|
||||||
|
|
Loading…
Reference in New Issue