]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/usb/musb/omap2430.c
Merge branch 'musb'
[linux-2.6-omap-h63xx.git] / drivers / usb / musb / omap2430.c
index 03fc8640ddaf853fab87a051cef0f87274c93de4..3f9953640bfe3d8ba0f273025a0336dde2730b17 100644 (file)
@@ -58,10 +58,10 @@ static void musb_do_idle(unsigned long _musb)
 #endif
        u8      devctl;
 
-       devctl = musb_readb(musb->mregs, MUSB_DEVCTL);
-
        spin_lock_irqsave(&musb->lock, flags);
 
+       devctl = musb_readb(musb->mregs, MUSB_DEVCTL);
+
        switch (musb->xceiv.state) {
        case OTG_STATE_A_WAIT_BCON:
                devctl &= ~MUSB_DEVCTL_SESSION;
@@ -196,7 +196,7 @@ static int omap_set_power(struct otg_transceiver *x, unsigned mA)
 
 static int musb_platform_resume(struct musb *musb);
 
-void musb_platform_set_mode(struct musb *musb, u8 musb_mode)
+int musb_platform_set_mode(struct musb *musb, u8 musb_mode)
 {
        u8      devctl = musb_readb(musb->mregs, MUSB_DEVCTL);
 
@@ -204,15 +204,24 @@ void musb_platform_set_mode(struct musb *musb, u8 musb_mode)
        musb_writeb(musb->mregs, MUSB_DEVCTL, devctl);
 
        switch (musb_mode) {
+#ifdef CONFIG_USB_MUSB_HDRC_HCD
        case MUSB_HOST:
                otg_set_host(&musb->xceiv, musb->xceiv.host);
                break;
+#endif
+#ifdef CONFIG_USB_GADGET_MUSB_HDRC
        case MUSB_PERIPHERAL:
                otg_set_peripheral(&musb->xceiv, musb->xceiv.gadget);
                break;
+#endif
+#ifdef CONFIG_USB_MUSB_OTG
        case MUSB_OTG:
                break;
+#endif
+       default:
+               return -EINVAL;
        }
+       return 0;
 }
 
 int __init musb_platform_init(struct musb *musb)