]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/usb/musb/plat_uds.c
ARM: OMAP: MUSB: IRQ reset: babble handling is host only
[linux-2.6-omap-h63xx.git] / drivers / usb / musb / plat_uds.c
index a60e4b5333c268b13966471d0c5cda3f9fa50fd3..dacf930c7ffe65a5753260405c55ae71a6a68382 100644 (file)
@@ -467,7 +467,7 @@ static irqreturn_t musb_stage0_irq(struct musb * musb, u8 int_usb,
                 * a_wait_vrise_tmout triggers VBUS_ERROR transitions
                 */
                musb_writeb(mbase, MUSB_DEVCTL, MUSB_DEVCTL_SESSION);
-               musb->ep0_stage = MGC_END0_START;
+               musb->ep0_stage = MUSB_EP0_START;
                musb->xceiv.state = OTG_STATE_A_IDLE;
                MUSB_HST_MODE(musb);
                musb_set_vbus(musb, 1);
@@ -550,14 +550,13 @@ static irqreturn_t musb_stage0_irq(struct musb * musb, u8 int_usb,
                musb->is_active = 1;
                set_bit(HCD_FLAG_SAW_IRQ, &hcd->flags);
 
-               musb->ep0_stage = MGC_END0_START;
+               musb->ep0_stage = MUSB_EP0_START;
 
 #ifdef CONFIG_USB_MUSB_OTG
                /* flush endpoints when transitioning from Device Mode */
                if (is_peripheral_active(musb)) {
                        // REVISIT HNP; just force disconnect
                }
-               musb->delay_port_power_off = FALSE;
                musb_writew(mbase, MUSB_INTRTXE, musb->epmask);
                musb_writew(mbase, MUSB_INTRRXE, musb->epmask & 0xfffe);
                musb_writeb(mbase, MUSB_INTRUSBE, 0xf7);
@@ -604,6 +603,7 @@ static irqreturn_t musb_stage0_irq(struct musb * musb, u8 int_usb,
         * only host sees babble; only peripheral sees bus reset.
         */
        if (int_usb & MUSB_INTR_RESET) {
+#ifdef CONFIG_USB_MUSB_HDRC_HCD
                if (devctl & MUSB_DEVCTL_HM) {
                        /*
                         * Looks like non-HS BABBLE can be ignored, but
@@ -618,7 +618,9 @@ static irqreturn_t musb_stage0_irq(struct musb * musb, u8 int_usb,
                                ERR("Stopping host session because of babble\n");
                                musb_writeb(mbase, MUSB_DEVCTL, 0);
                        }
-               } else {
+               } else
+#endif /* CONFIG_USB_MUSB_HDRC_HCD */
+               {
                        DBG(1, "BUS RESET\n");
 
                        musb_g_reset(musb);
@@ -737,9 +739,11 @@ static irqreturn_t musb_stage2_irq(struct musb * musb, u8 int_usb,
                handled = IRQ_HANDLED;
 
                switch (musb->xceiv.state) {
+#ifdef CONFIG_USB_MUSB_OTG
                case OTG_STATE_A_PERIPHERAL:
                        musb_hnp_stop(musb);
                        break;
+#endif
                case OTG_STATE_B_PERIPHERAL:
                        musb_g_suspend(musb);
                        musb->is_active = is_otg_enabled(musb)
@@ -1244,14 +1248,14 @@ enum { MUSB_CONTROLLER_MHDRC, MUSB_CONTROLLER_HDRC, };
 /* Initialize MUSB (M)HDRC part of the USB hardware subsystem;
  * configure endpoints, or take their config from silicon
  */
-static int __init musb_core_init(u16 wType, struct musb *musb)
+static int __init musb_core_init(u16 musb_type, struct musb *musb)
 {
 #ifdef MUSB_AHB_ID
-       u32 dwData;
+       u32 data;
 #endif
        u8 reg;
        char *type;
-       u16 hwvers, wRelMajor, wRelMinor;
+       u16 hwvers, rev_major, rev_minor;
        char aInfo[78], aRevision[32], aDate[12];
        void __iomem    *mbase = musb->mregs;
        int             status = 0;
@@ -1297,20 +1301,20 @@ static int __init musb_core_init(u16 wType, struct musb *musb)
                        musb_driver_name, reg, aInfo);
 
 #ifdef MUSB_AHB_ID
-       dwData = musb_readl(mbase, 0x404);
-       sprintf(aDate, "%04d-%02x-%02x", (dwData & 0xffff),
-               (dwData >> 16) & 0xff, (dwData >> 24) & 0xff);
+       data = musb_readl(mbase, 0x404);
+       sprintf(aDate, "%04d-%02x-%02x", (data & 0xffff),
+               (data >> 16) & 0xff, (data >> 24) & 0xff);
        /* FIXME ID2 and ID3 are unused */
-       dwData = musb_readl(mbase, 0x408);
-       printk("ID2=%lx\n", (long unsigned)dwData);
-       dwData = musb_readl(mbase, 0x40c);
-       printk("ID3=%lx\n", (long unsigned)dwData);
+       data = musb_readl(mbase, 0x408);
+       printk("ID2=%lx\n", (long unsigned)data);
+       data = musb_readl(mbase, 0x40c);
+       printk("ID3=%lx\n", (long unsigned)data);
        reg = musb_readb(mbase, 0x400);
-       wType = ('M' == reg) ? MUSB_CONTROLLER_MHDRC : MUSB_CONTROLLER_HDRC;
+       musb_type = ('M' == reg) ? MUSB_CONTROLLER_MHDRC : MUSB_CONTROLLER_HDRC;
 #else
        aDate[0] = 0;
 #endif
-       if (MUSB_CONTROLLER_MHDRC == wType) {
+       if (MUSB_CONTROLLER_MHDRC == musb_type) {
                musb->is_multipoint = 1;
                type = "M";
        } else {
@@ -1327,10 +1331,10 @@ static int __init musb_core_init(u16 wType, struct musb *musb)
 
        /* log release info */
        hwvers = musb_readw(mbase, MUSB_HWVERS);
-       wRelMajor = (hwvers >> 10) & 0x1f;
-       wRelMinor = hwvers & 0x3ff;
-       snprintf(aRevision, 32, "%d.%d%s", wRelMajor,
-               wRelMinor, (hwvers & 0x8000) ? "RC" : "");
+       rev_major = (hwvers >> 10) & 0x1f;
+       rev_minor = hwvers & 0x3ff;
+       snprintf(aRevision, 32, "%d.%d%s", rev_major,
+               rev_minor, (hwvers & 0x8000) ? "RC" : "");
        printk(KERN_DEBUG "%s: %sHDRC RTL version %s %s\n",
                        musb_driver_name, type, aRevision, aDate);
 
@@ -1378,7 +1382,7 @@ static int __init musb_core_init(u16 wType, struct musb *musb)
                        hw_ep->conf = mbase + 0x400 + (((i - 1) & 0xf) << 2);
 #endif
 
-               hw_ep->regs = MGC_END_OFFSET(i, 0) + mbase;
+               hw_ep->regs = MUSB_EP_OFFSET(i, 0) + mbase;
 #ifdef CONFIG_USB_MUSB_HDRC_HCD
                hw_ep->target_regs = MUSB_BUSCTL_OFFSET(i, 0) + mbase;
                hw_ep->rx_reinit = 1;
@@ -1708,7 +1712,6 @@ musb_srp_store(struct device *dev, struct device_attribute *attr,
                const char *buf, size_t n)
 {
        struct musb     *musb=dev_to_musb(dev);
-       unsigned long   flags;
        unsigned short  srp;
 
        if (sscanf(buf, "%hu", &srp) != 1
@@ -1717,10 +1720,8 @@ musb_srp_store(struct device *dev, struct device_attribute *attr,
                return -EINVAL;
        }
 
-       spin_lock_irqsave(&musb->lock, flags);
        if (srp == 1)
                musb_g_wakeup(musb);
-       spin_unlock_irqrestore(&musb->lock, flags);
 
        return n;
 }