diff options
author | Felipe Balbi <balbi@ti.com> | 2013-10-29 12:17:17 -0500 |
---|---|---|
committer | Felipe Balbi <balbi@ti.com> | 2013-11-26 10:35:15 -0600 |
commit | 2df6761e5eca9a810050a15062ae8abce1bbae41 (patch) | |
tree | b472fcd90afca1029d95b7e5435dd4c1b2d38f91 /drivers/usb/musb | |
parent | 943c13971c08ddeb06f4cb9dea1addb76f6b4423 (diff) |
usb: musb: core: call musb_platform_set_mode() during probe
This will tell glue layer which mode we want port
to be in.
Signed-off-by: Felipe Balbi <balbi@ti.com>
Diffstat (limited to 'drivers/usb/musb')
-rw-r--r-- | drivers/usb/musb/musb_core.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c index 0a43329569d1..377ef9b29c73 100644 --- a/drivers/usb/musb/musb_core.c +++ b/drivers/usb/musb/musb_core.c @@ -1941,17 +1941,26 @@ musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl) switch (musb->port_mode) { case MUSB_PORT_MODE_HOST: status = musb_host_setup(musb, plat->power); + if (status < 0) + goto fail3; + status = musb_platform_set_mode(musb, MUSB_HOST); break; case MUSB_PORT_MODE_GADGET: status = musb_gadget_setup(musb); + if (status < 0) + goto fail3; + status = musb_platform_set_mode(musb, MUSB_PERIPHERAL); break; case MUSB_PORT_MODE_DUAL_ROLE: status = musb_host_setup(musb, plat->power); if (status < 0) goto fail3; status = musb_gadget_setup(musb); - if (status) + if (status) { musb_host_cleanup(musb); + goto fail3; + } + status = musb_platform_set_mode(musb, MUSB_OTG); break; default: dev_err(dev, "unsupported port mode %d\n", musb->port_mode); |