- patches.arch/x86_mce_intel_decode_physical_address.patch:
[linux-flexiantxendom0-3.2.10.git] / drivers / usb / host / sl811-hcd.c
index 3b867a8..bcf9f0e 100644 (file)
@@ -45,6 +45,7 @@
 #include <linux/interrupt.h>
 #include <linux/usb.h>
 #include <linux/usb/sl811.h>
+#include <linux/usb/hcd.h>
 #include <linux/platform_device.h>
 
 #include <asm/io.h>
@@ -53,7 +54,6 @@
 #include <asm/byteorder.h>
 #include <asm/unaligned.h>
 
-#include "../core/hcd.h"
 #include "sl811.h"
 
 
@@ -90,10 +90,10 @@ static void port_power(struct sl811 *sl811, int is_on)
 
        /* hub is inactive unless the port is powered */
        if (is_on) {
-               if (sl811->port1 & (1 << USB_PORT_FEAT_POWER))
+               if (sl811->port1 & USB_PORT_STAT_POWER)
                        return;
 
-               sl811->port1 = (1 << USB_PORT_FEAT_POWER);
+               sl811->port1 = USB_PORT_STAT_POWER;
                sl811->irq_enable = SL11H_INTMASK_INSRMV;
        } else {
                sl811->port1 = 0;
@@ -407,7 +407,7 @@ static struct sl811h_ep     *start(struct sl811 *sl811, u8 bank)
 
 static inline void start_transfer(struct sl811 *sl811)
 {
-       if (sl811->port1 & (1 << USB_PORT_FEAT_SUSPEND))
+       if (sl811->port1 & USB_PORT_STAT_SUSPEND)
                return;
        if (sl811->active_a == NULL) {
                sl811->active_a = start(sl811, SL811_EP_A(SL811_HOST_BUF));
@@ -721,23 +721,23 @@ retry:
                 * force the reset and make khubd clean up later.
                 */
                if (irqstat & SL11H_INTMASK_RD)
-                       sl811->port1 &= ~(1 << USB_PORT_FEAT_CONNECTION);
+                       sl811->port1 &= ~USB_PORT_STAT_CONNECTION;
                else
-                       sl811->port1 |= 1 << USB_PORT_FEAT_CONNECTION;
+                       sl811->port1 |= USB_PORT_STAT_CONNECTION;
 
-               sl811->port1 |= 1 << USB_PORT_FEAT_C_CONNECTION;
+               sl811->port1 |= USB_PORT_STAT_C_CONNECTION << 16;
 
        } else if (irqstat & SL11H_INTMASK_RD) {
-               if (sl811->port1 & (1 << USB_PORT_FEAT_SUSPEND)) {
+               if (sl811->port1 & USB_PORT_STAT_SUSPEND) {
                        DBG("wakeup\n");
-                       sl811->port1 |= 1 << USB_PORT_FEAT_C_SUSPEND;
+                       sl811->port1 |= USB_PORT_STAT_C_SUSPEND << 16;
                        sl811->stat_wake++;
                } else
                        irqstat &= ~SL11H_INTMASK_RD;
        }
 
        if (irqstat) {
-               if (sl811->port1 & (1 << USB_PORT_FEAT_ENABLE))
+               if (sl811->port1 & USB_PORT_STAT_ENABLE)
                        start_transfer(sl811);
                ret = IRQ_HANDLED;
                if (retries--)
@@ -819,7 +819,7 @@ static int sl811h_urb_enqueue(
        spin_lock_irqsave(&sl811->lock, flags);
 
        /* don't submit to a dead or disabled port */
-       if (!(sl811->port1 & (1 << USB_PORT_FEAT_ENABLE))
+       if (!(sl811->port1 & USB_PORT_STAT_ENABLE)
                        || !HC_IS_RUNNING(hcd->state)) {
                retval = -ENODEV;
                kfree(ep);
@@ -1119,9 +1119,9 @@ sl811h_timer(unsigned long _sl811)
        unsigned long   flags;
        u8              irqstat;
        u8              signaling = sl811->ctrl1 & SL11H_CTL1MASK_FORCE;
-       const u32       mask = (1 << USB_PORT_FEAT_CONNECTION)
-                               | (1 << USB_PORT_FEAT_ENABLE)
-                               | (1 << USB_PORT_FEAT_LOWSPEED);
+       const u32       mask = USB_PORT_STAT_CONNECTION
+                               | USB_PORT_STAT_ENABLE
+                               | USB_PORT_STAT_LOW_SPEED;
 
        spin_lock_irqsave(&sl811->lock, flags);
 
@@ -1135,8 +1135,8 @@ sl811h_timer(unsigned long _sl811)
        switch (signaling) {
        case SL11H_CTL1MASK_SE0:
                DBG("end reset\n");
-               sl811->port1 = (1 << USB_PORT_FEAT_C_RESET)
-                               | (1 << USB_PORT_FEAT_POWER);
+               sl811->port1 = (USB_PORT_STAT_C_RESET << 16)
+                                | USB_PORT_STAT_POWER;
                sl811->ctrl1 = 0;
                /* don't wrongly ack RD */
                if (irqstat & SL11H_INTMASK_INSRMV)
@@ -1144,7 +1144,7 @@ sl811h_timer(unsigned long _sl811)
                break;
        case SL11H_CTL1MASK_K:
                DBG("end resume\n");
-               sl811->port1 &= ~(1 << USB_PORT_FEAT_SUSPEND);
+               sl811->port1 &= ~USB_PORT_STAT_SUSPEND;
                break;
        default:
                DBG("odd timer signaling: %02x\n", signaling);
@@ -1154,26 +1154,26 @@ sl811h_timer(unsigned long _sl811)
 
        if (irqstat & SL11H_INTMASK_RD) {
                /* usbcore nukes all pending transactions on disconnect */
-               if (sl811->port1 & (1 << USB_PORT_FEAT_CONNECTION))
-                       sl811->port1 |= (1 << USB_PORT_FEAT_C_CONNECTION)
-                                       | (1 << USB_PORT_FEAT_C_ENABLE);
+               if (sl811->port1 & USB_PORT_STAT_CONNECTION)
+                       sl811->port1 |= (USB_PORT_STAT_C_CONNECTION << 16)
+                                       | (USB_PORT_STAT_C_ENABLE << 16);
                sl811->port1 &= ~mask;
                sl811->irq_enable = SL11H_INTMASK_INSRMV;
        } else {
                sl811->port1 |= mask;
                if (irqstat & SL11H_INTMASK_DP)
-                       sl811->port1 &= ~(1 << USB_PORT_FEAT_LOWSPEED);
+                       sl811->port1 &= ~USB_PORT_STAT_LOW_SPEED;
                sl811->irq_enable = SL11H_INTMASK_INSRMV | SL11H_INTMASK_RD;
        }
 
-       if (sl811->port1 & (1 << USB_PORT_FEAT_CONNECTION)) {
+       if (sl811->port1 & USB_PORT_STAT_CONNECTION) {
                u8      ctrl2 = SL811HS_CTL2_INIT;
 
                sl811->irq_enable |= SL11H_INTMASK_DONE_A;
 #ifdef USE_B
                sl811->irq_enable |= SL11H_INTMASK_DONE_B;
 #endif
-               if (sl811->port1 & (1 << USB_PORT_FEAT_LOWSPEED)) {
+               if (sl811->port1 & USB_PORT_STAT_LOW_SPEED) {
                        sl811->ctrl1 |= SL11H_CTL1MASK_LSPD;
                        ctrl2 |= SL811HS_CTL2MASK_DSWAP;
                }
@@ -1233,7 +1233,7 @@ sl811h_hub_control(
 
                switch (wValue) {
                case USB_PORT_FEAT_ENABLE:
-                       sl811->port1 &= (1 << USB_PORT_FEAT_POWER);
+                       sl811->port1 &= USB_PORT_STAT_POWER;
                        sl811->ctrl1 = 0;
                        sl811_write(sl811, SL11H_CTLREG1, sl811->ctrl1);
                        sl811->irq_enable = SL11H_INTMASK_INSRMV;
@@ -1241,7 +1241,7 @@ sl811h_hub_control(
                                                sl811->irq_enable);
                        break;
                case USB_PORT_FEAT_SUSPEND:
-                       if (!(sl811->port1 & (1 << USB_PORT_FEAT_SUSPEND)))
+                       if (!(sl811->port1 & USB_PORT_STAT_SUSPEND))
                                break;
 
                        /* 20 msec of resume/K signaling, other irqs blocked */
@@ -1290,9 +1290,9 @@ sl811h_hub_control(
                        goto error;
                switch (wValue) {
                case USB_PORT_FEAT_SUSPEND:
-                       if (sl811->port1 & (1 << USB_PORT_FEAT_RESET))
+                       if (sl811->port1 & USB_PORT_STAT_RESET)
                                goto error;
-                       if (!(sl811->port1 & (1 << USB_PORT_FEAT_ENABLE)))
+                       if (!(sl811->port1 & USB_PORT_STAT_ENABLE))
                                goto error;
 
                        DBG("suspend...\n");
@@ -1303,9 +1303,9 @@ sl811h_hub_control(
                        port_power(sl811, 1);
                        break;
                case USB_PORT_FEAT_RESET:
-                       if (sl811->port1 & (1 << USB_PORT_FEAT_SUSPEND))
+                       if (sl811->port1 & USB_PORT_STAT_SUSPEND)
                                goto error;
-                       if (!(sl811->port1 & (1 << USB_PORT_FEAT_POWER)))
+                       if (!(sl811->port1 & USB_PORT_STAT_POWER))
                                break;
 
                        /* 50 msec of reset/SE0 signaling, irqs blocked */
@@ -1314,7 +1314,7 @@ sl811h_hub_control(
                                                sl811->irq_enable);
                        sl811->ctrl1 = SL11H_CTL1MASK_SE0;
                        sl811_write(sl811, SL11H_CTLREG1, sl811->ctrl1);
-                       sl811->port1 |= (1 << USB_PORT_FEAT_RESET);
+                       sl811->port1 |= USB_PORT_STAT_RESET;
                        mod_timer(&sl811->timer, jiffies
                                        + msecs_to_jiffies(50));
                        break;