USB: straighten out port feature vs. port status usage
authorAlan Stern <stern@rowland.harvard.edu>
Thu, 4 Mar 2010 22:05:08 +0000 (17:05 -0500)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 20 May 2010 20:21:31 +0000 (13:21 -0700)
This patch (as1349b) clears up the confusion in many USB host
controller drivers between port features and port statuses.  In mosty
cases it's true that the status bit is in the position given by the
corresponding feature value, but that's not always true and it's not
guaranteed in the USB spec.

There's no functional change, just replacing expressions of the form
(1 << USB_PORT_FEAT_x) with USB_PORT_STAT_x, which has the same value.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/core/hub.c
drivers/usb/host/ehci-hub.c
drivers/usb/host/isp1362-hcd.c
drivers/usb/host/isp1760-hcd.c
drivers/usb/host/oxu210hp-hcd.c
drivers/usb/host/r8a66597-hcd.c
drivers/usb/host/sl811-hcd.c
drivers/usb/host/xhci-hub.c
drivers/usb/musb/musb_core.c
drivers/usb/musb/musb_virthub.c

index 5ac27ed0c6356e3ccdcd7717e737b92c47a3e928..497dbb29744d720eb9417bf959c8c2c1d6ec2a80 100644 (file)
@@ -3037,7 +3037,7 @@ static void hub_port_connect_change(struct usb_hub *hub, int port1,
 
                /* maybe switch power back on (e.g. root hub was reset) */
                if ((wHubCharacteristics & HUB_CHAR_LPSM) < 2
-                               && !(portstatus & (1 << USB_PORT_FEAT_POWER)))
+                               && !(portstatus & USB_PORT_STAT_POWER))
                        set_port_feature(hdev, port1, USB_PORT_FEAT_POWER);
 
                if (portstatus & USB_PORT_STAT_ENABLE)
index c7178bcde67a99da38c2e08b1b2a8bb4481a7a14..c44018109a13fabeeed26f49c8dcb6ea5bef5109 100644 (file)
@@ -659,7 +659,7 @@ static int ehci_hub_control (
                 * Even if OWNER is set, so the port is owned by the
                 * companion controller, khubd needs to be able to clear
                 * the port-change status bits (especially
-                * USB_PORT_FEAT_C_CONNECTION).
+                * USB_PORT_STAT_C_CONNECTION).
                 */
 
                switch (wValue) {
@@ -729,12 +729,12 @@ static int ehci_hub_control (
 
                // wPortChange bits
                if (temp & PORT_CSC)
-                       status |= 1 << USB_PORT_FEAT_C_CONNECTION;
+                       status |= USB_PORT_STAT_C_CONNECTION << 16;
                if (temp & PORT_PEC)
-                       status |= 1 << USB_PORT_FEAT_C_ENABLE;
+                       status |= USB_PORT_STAT_C_ENABLE << 16;
 
                if ((temp & PORT_OCC) && !ignore_oc){
-                       status |= 1 << USB_PORT_FEAT_C_OVER_CURRENT;
+                       status |= USB_PORT_STAT_C_OVERCURRENT << 16;
 
                        /*
                         * Hubs should disable port power on over-current.
@@ -791,7 +791,7 @@ static int ehci_hub_control (
                if ((temp & PORT_RESET)
                                && time_after_eq(jiffies,
                                        ehci->reset_done[wIndex])) {
-                       status |= 1 << USB_PORT_FEAT_C_RESET;
+                       status |= USB_PORT_STAT_C_RESET << 16;
                        ehci->reset_done [wIndex] = 0;
 
                        /* force reset to complete */
@@ -833,7 +833,7 @@ static int ehci_hub_control (
                 */
 
                if (temp & PORT_CONNECT) {
-                       status |= 1 << USB_PORT_FEAT_CONNECTION;
+                       status |= USB_PORT_STAT_CONNECTION;
                        // status may be from integrated TT
                        if (ehci->has_hostpc) {
                                temp1 = ehci_readl(ehci, hostpc_reg);
@@ -842,11 +842,11 @@ static int ehci_hub_control (
                                status |= ehci_port_speed(ehci, temp);
                }
                if (temp & PORT_PE)
-                       status |= 1 << USB_PORT_FEAT_ENABLE;
+                       status |= USB_PORT_STAT_ENABLE;
 
                /* maybe the port was unsuspended without our knowledge */
                if (temp & (PORT_SUSPEND|PORT_RESUME)) {
-                       status |= 1 << USB_PORT_FEAT_SUSPEND;
+                       status |= USB_PORT_STAT_SUSPEND;
                } else if (test_bit(wIndex, &ehci->suspended_ports)) {
                        clear_bit(wIndex, &ehci->suspended_ports);
                        ehci->reset_done[wIndex] = 0;
@@ -855,13 +855,13 @@ static int ehci_hub_control (
                }
 
                if (temp & PORT_OC)
-                       status |= 1 << USB_PORT_FEAT_OVER_CURRENT;
+                       status |= USB_PORT_STAT_OVERCURRENT;
                if (temp & PORT_RESET)
-                       status |= 1 << USB_PORT_FEAT_RESET;
+                       status |= USB_PORT_STAT_RESET;
                if (temp & PORT_POWER)
-                       status |= 1 << USB_PORT_FEAT_POWER;
+                       status |= USB_PORT_STAT_POWER;
                if (test_bit(wIndex, &ehci->port_c_suspend))
-                       status |= 1 << USB_PORT_FEAT_C_SUSPEND;
+                       status |= USB_PORT_STAT_C_SUSPEND << 16;
 
 #ifndef        VERBOSE_DEBUG
        if (status & ~0xffff)   /* only if wPortChange is interesting */
index acc157da72757d89dc7fd76e394658d1a94c94ae..6a6a50849bfed0321859ba665a3bb105e068d5de 100644 (file)
@@ -1265,7 +1265,7 @@ static int isp1362_urb_enqueue(struct usb_hcd *hcd,
 
        /* don't submit to a dead or disabled port */
        if (!((isp1362_hcd->rhport[0] | isp1362_hcd->rhport[1]) &
-             (1 << USB_PORT_FEAT_ENABLE)) ||
+             USB_PORT_STAT_ENABLE) ||
            !HC_IS_RUNNING(hcd->state)) {
                kfree(ep);
                retval = -ENODEV;
index cfdac6da95560d2844d43f18aa4922b33c2a01ed..13f7d1200bc0bdccd63bcffe2463d3a78edc37f3 100644 (file)
@@ -1923,7 +1923,7 @@ static int isp1760_hub_control(struct usb_hcd *hcd, u16 typeReq,
                 * Even if OWNER is set, so the port is owned by the
                 * companion controller, khubd needs to be able to clear
                 * the port-change status bits (especially
-                * USB_PORT_FEAT_C_CONNECTION).
+                * USB_PORT_STAT_C_CONNECTION).
                 */
 
                switch (wValue) {
@@ -1987,7 +1987,7 @@ static int isp1760_hub_control(struct usb_hcd *hcd, u16 typeReq,
 
                /* wPortChange bits */
                if (temp & PORT_CSC)
-                       status |= 1 << USB_PORT_FEAT_C_CONNECTION;
+                       status |= USB_PORT_STAT_C_CONNECTION << 16;
 
 
                /* whoever resumes must GetPortStatus to complete it!! */
@@ -2007,7 +2007,7 @@ static int isp1760_hub_control(struct usb_hcd *hcd, u16 typeReq,
                        /* resume completed? */
                        else if (time_after_eq(jiffies,
                                        priv->reset_done)) {
-                               status |= 1 << USB_PORT_FEAT_C_SUSPEND;
+                               status |= USB_PORT_STAT_C_SUSPEND << 16;
                                priv->reset_done = 0;
 
                                /* stop resume signaling */
@@ -2031,7 +2031,7 @@ static int isp1760_hub_control(struct usb_hcd *hcd, u16 typeReq,
                if ((temp & PORT_RESET)
                                && time_after_eq(jiffies,
                                        priv->reset_done)) {
-                       status |= 1 << USB_PORT_FEAT_C_RESET;
+                       status |= USB_PORT_STAT_C_RESET << 16;
                        priv->reset_done = 0;
 
                        /* force reset to complete */
@@ -2062,18 +2062,18 @@ static int isp1760_hub_control(struct usb_hcd *hcd, u16 typeReq,
                        printk(KERN_ERR "Warning: PORT_OWNER is set\n");
 
                if (temp & PORT_CONNECT) {
-                       status |= 1 << USB_PORT_FEAT_CONNECTION;
+                       status |= USB_PORT_STAT_CONNECTION;
                        /* status may be from integrated TT */
                        status |= ehci_port_speed(priv, temp);
                }
                if (temp & PORT_PE)
-                       status |= 1 << USB_PORT_FEAT_ENABLE;
+                       status |= USB_PORT_STAT_ENABLE;
                if (temp & (PORT_SUSPEND|PORT_RESUME))
-                       status |= 1 << USB_PORT_FEAT_SUSPEND;
+                       status |= USB_PORT_STAT_SUSPEND;
                if (temp & PORT_RESET)
-                       status |= 1 << USB_PORT_FEAT_RESET;
+                       status |= USB_PORT_STAT_RESET;
                if (temp & PORT_POWER)
-                       status |= 1 << USB_PORT_FEAT_POWER;
+                       status |= USB_PORT_STAT_POWER;
 
                put_unaligned(cpu_to_le32(status), (__le32 *) buf);
                break;
index 8f04c0afa59ff1e2c00a6427cd20b702762487e3..f608dfd09a8aa8dccf76d71d13a6b944dbbdada1 100644 (file)
@@ -3201,7 +3201,7 @@ static int oxu_hub_control(struct usb_hcd *hcd, u16 typeReq,
                 * Even if OWNER is set, so the port is owned by the
                 * companion controller, khubd needs to be able to clear
                 * the port-change status bits (especially
-                * USB_PORT_FEAT_C_CONNECTION).
+                * USB_PORT_STAT_C_CONNECTION).
                 */
 
                switch (wValue) {
@@ -3263,11 +3263,11 @@ static int oxu_hub_control(struct usb_hcd *hcd, u16 typeReq,
 
                /* wPortChange bits */
                if (temp & PORT_CSC)
-                       status |= 1 << USB_PORT_FEAT_C_CONNECTION;
+                       status |= USB_PORT_STAT_C_CONNECTION << 16;
                if (temp & PORT_PEC)
-                       status |= 1 << USB_PORT_FEAT_C_ENABLE;
+                       status |= USB_PORT_STAT_C_ENABLE << 16;
                if ((temp & PORT_OCC) && !ignore_oc)
-                       status |= 1 << USB_PORT_FEAT_C_OVER_CURRENT;
+                       status |= USB_PORT_STAT_C_OVERCURRENT << 16;
 
                /* whoever resumes must GetPortStatus to complete it!! */
                if (temp & PORT_RESUME) {
@@ -3285,7 +3285,7 @@ static int oxu_hub_control(struct usb_hcd *hcd, u16 typeReq,
                        /* resume completed? */
                        else if (time_after_eq(jiffies,
                                        oxu->reset_done[wIndex])) {
-                               status |= 1 << USB_PORT_FEAT_C_SUSPEND;
+                               status |= USB_PORT_STAT_C_SUSPEND << 16;
                                oxu->reset_done[wIndex] = 0;
 
                                /* stop resume signaling */
@@ -3308,7 +3308,7 @@ static int oxu_hub_control(struct usb_hcd *hcd, u16 typeReq,
                if ((temp & PORT_RESET)
                                && time_after_eq(jiffies,
                                        oxu->reset_done[wIndex])) {
-                       status |= 1 << USB_PORT_FEAT_C_RESET;
+                       status |= USB_PORT_STAT_C_RESET << 16;
                        oxu->reset_done[wIndex] = 0;
 
                        /* force reset to complete */
@@ -3347,20 +3347,20 @@ static int oxu_hub_control(struct usb_hcd *hcd, u16 typeReq,
                 */
 
                if (temp & PORT_CONNECT) {
-                       status |= 1 << USB_PORT_FEAT_CONNECTION;
+                       status |= USB_PORT_STAT_CONNECTION;
                        /* status may be from integrated TT */
                        status |= oxu_port_speed(oxu, temp);
                }
                if (temp & PORT_PE)
-                       status |= 1 << USB_PORT_FEAT_ENABLE;
+                       status |= USB_PORT_STAT_ENABLE;
                if (temp & (PORT_SUSPEND|PORT_RESUME))
-                       status |= 1 << USB_PORT_FEAT_SUSPEND;
+                       status |= USB_PORT_STAT_SUSPEND;
                if (temp & PORT_OC)
-                       status |= 1 << USB_PORT_FEAT_OVER_CURRENT;
+                       status |= USB_PORT_STAT_OVERCURRENT;
                if (temp & PORT_RESET)
-                       status |= 1 << USB_PORT_FEAT_RESET;
+                       status |= USB_PORT_STAT_RESET;
                if (temp & PORT_POWER)
-                       status |= 1 << USB_PORT_FEAT_POWER;
+                       status |= USB_PORT_STAT_POWER;
 
 #ifndef        OXU_VERBOSE_DEBUG
        if (status & ~0xffff)   /* only if wPortChange is interesting */
index a004a12208481c94957a151f3d607ee8ec6defb9..6db57ab6079d31a7a6a2d107834ba42eeeec9839 100644 (file)
@@ -1018,10 +1018,10 @@ static void start_root_hub_sampling(struct r8a66597 *r8a66597, int port,
        rh->old_syssts = r8a66597_read(r8a66597, get_syssts_reg(port)) & LNST;
        rh->scount = R8A66597_MAX_SAMPLING;
        if (connect)
-               rh->port |= 1 << USB_PORT_FEAT_CONNECTION;
+               rh->port |= USB_PORT_STAT_CONNECTION;
        else
-               rh->port &= ~(1 << USB_PORT_FEAT_CONNECTION);
-       rh->port |= 1 << USB_PORT_FEAT_C_CONNECTION;
+               rh->port &= ~USB_PORT_STAT_CONNECTION;
+       rh->port |= USB_PORT_STAT_C_CONNECTION << 16;
 
        r8a66597_root_hub_start_polling(r8a66597);
 }
@@ -1065,8 +1065,8 @@ static void r8a66597_usb_connect(struct r8a66597 *r8a66597, int port)
        else if (speed == LSMODE)
                rh->port |= USB_PORT_STAT_LOW_SPEED;
 
-       rh->port &= ~(1 << USB_PORT_FEAT_RESET);
-       rh->port |= 1 << USB_PORT_FEAT_ENABLE;
+       rh->port &= USB_PORT_STAT_RESET;
+       rh->port |= USB_PORT_STAT_ENABLE;
 }
 
 /* this function must be called with interrupt disabled */
@@ -1705,7 +1705,7 @@ static void r8a66597_root_hub_control(struct r8a66597 *r8a66597, int port)
        u16 tmp;
        struct r8a66597_root_hub *rh = &r8a66597->root_hub[port];
 
-       if (rh->port & (1 << USB_PORT_FEAT_RESET)) {
+       if (rh->port & USB_PORT_STAT_RESET) {
                unsigned long dvstctr_reg = get_dvstctr_reg(port);
 
                tmp = r8a66597_read(r8a66597, dvstctr_reg);
@@ -1717,7 +1717,7 @@ static void r8a66597_root_hub_control(struct r8a66597 *r8a66597, int port)
                        r8a66597_usb_connect(r8a66597, port);
        }
 
-       if (!(rh->port & (1 << USB_PORT_FEAT_CONNECTION))) {
+       if (!(rh->port & USB_PORT_STAT_CONNECTION)) {
                r8a66597_write(r8a66597, ~ATTCH, get_intsts_reg(port));
                r8a66597_bset(r8a66597, ATTCHE, get_intenb_reg(port));
        }
@@ -2185,7 +2185,7 @@ static int r8a66597_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue,
 
                switch (wValue) {
                case USB_PORT_FEAT_ENABLE:
-                       rh->port &= ~(1 << USB_PORT_FEAT_POWER);
+                       rh->port &= ~USB_PORT_STAT_POWER;
                        break;
                case USB_PORT_FEAT_SUSPEND:
                        break;
@@ -2226,12 +2226,12 @@ static int r8a66597_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue,
                        break;
                case USB_PORT_FEAT_POWER:
                        r8a66597_port_power(r8a66597, port, 1);
-                       rh->port |= (1 << USB_PORT_FEAT_POWER);
+                       rh->port |= USB_PORT_STAT_POWER;
                        break;
                case USB_PORT_FEAT_RESET: {
                        struct r8a66597_device *dev = rh->dev;
 
-                       rh->port |= (1 << USB_PORT_FEAT_RESET);
+                       rh->port |= USB_PORT_STAT_RESET;
 
                        disable_r8a66597_pipe_all(r8a66597, dev);
                        free_usb_address(r8a66597, dev, 1);
@@ -2269,12 +2269,12 @@ static int r8a66597_bus_suspend(struct usb_hcd *hcd)
                struct r8a66597_root_hub *rh = &r8a66597->root_hub[port];
                unsigned long dvstctr_reg = get_dvstctr_reg(port);
 
-               if (!(rh->port & (1 << USB_PORT_FEAT_ENABLE)))
+               if (!(rh->port & USB_PORT_STAT_ENABLE))
                        continue;
 
                dbg("suspend port = %d", port);
                r8a66597_bclr(r8a66597, UACT, dvstctr_reg);     /* suspend */
-               rh->port |= 1 << USB_PORT_FEAT_SUSPEND;
+               rh->port |= USB_PORT_STAT_SUSPEND;
 
                if (rh->dev->udev->do_remote_wakeup) {
                        msleep(3);      /* waiting last SOF */
@@ -2300,12 +2300,12 @@ static int r8a66597_bus_resume(struct usb_hcd *hcd)
                struct r8a66597_root_hub *rh = &r8a66597->root_hub[port];
                unsigned long dvstctr_reg = get_dvstctr_reg(port);
 
-               if (!(rh->port & (1 << USB_PORT_FEAT_SUSPEND)))
+               if (!(rh->port & USB_PORT_STAT_SUSPEND))
                        continue;
 
                dbg("resume port = %d", port);
-               rh->port &= ~(1 << USB_PORT_FEAT_SUSPEND);
-               rh->port |= 1 << USB_PORT_FEAT_C_SUSPEND;
+               rh->port &= ~USB_PORT_STAT_SUSPEND;
+               rh->port |= USB_PORT_STAT_C_SUSPEND < 16;
                r8a66597_mdfy(r8a66597, RESUME, RESUME | UACT, dvstctr_reg);
                msleep(50);
                r8a66597_mdfy(r8a66597, UACT, RESUME | UACT, dvstctr_reg);
index dcd7fab7179cf3fb166f6d46b243159f9f19980a..bcf9f0e809dedbd194d34cd6e2a39639a1ff94ea 100644 (file)
@@ -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,8 +1119,8 @@ 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)
+       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,9 +1154,9 @@ 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 {
@@ -1166,7 +1166,7 @@ sl811h_timer(unsigned long _sl811)
                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;
@@ -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;
index dd69df1e4558b651f0a19c4d98e10b37e3f0f933..325b47a267b9733e07a3de0abd5e03857437594d 100644 (file)
@@ -205,27 +205,27 @@ int xhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue,
 
                /* wPortChange bits */
                if (temp & PORT_CSC)
-                       status |= 1 << USB_PORT_FEAT_C_CONNECTION;
+                       status |= USB_PORT_STAT_C_CONNECTION << 16;
                if (temp & PORT_PEC)
-                       status |= 1 << USB_PORT_FEAT_C_ENABLE;
+                       status |= USB_PORT_STAT_C_ENABLE << 16;
                if ((temp & PORT_OCC))
-                       status |= 1 << USB_PORT_FEAT_C_OVER_CURRENT;
+                       status |= USB_PORT_STAT_C_OVERCURRENT << 16;
                /*
                 * FIXME ignoring suspend, reset, and USB 2.1/3.0 specific
                 * changes
                 */
                if (temp & PORT_CONNECT) {
-                       status |= 1 << USB_PORT_FEAT_CONNECTION;
+                       status |= USB_PORT_STAT_CONNECTION;
                        status |= xhci_port_speed(temp);
                }
                if (temp & PORT_PE)
-                       status |= 1 << USB_PORT_FEAT_ENABLE;
+                       status |= USB_PORT_STAT_ENABLE;
                if (temp & PORT_OC)
-                       status |= 1 << USB_PORT_FEAT_OVER_CURRENT;
+                       status |= USB_PORT_STAT_OVERCURRENT;
                if (temp & PORT_RESET)
-                       status |= 1 << USB_PORT_FEAT_RESET;
+                       status |= USB_PORT_STAT_RESET;
                if (temp & PORT_POWER)
-                       status |= 1 << USB_PORT_FEAT_POWER;
+                       status |= USB_PORT_STAT_POWER;
                xhci_dbg(xhci, "Get port status returned 0x%x\n", status);
                put_unaligned(cpu_to_le32(status), (__le32 *) buf);
                break;
index 705cc4ad8737361400f106cc206e4e6cbc629384..ced6d9ea9af3f6f9dbb9cdf93e6a3b17793a3915 100644 (file)
@@ -353,8 +353,7 @@ void musb_hnp_stop(struct musb *musb)
         * which cause occasional OPT A "Did not receive reset after connect"
         * errors.
         */
-       musb->port1_status &=
-               ~(1 << USB_PORT_FEAT_C_CONNECTION);
+       musb->port1_status &= ~(USB_PORT_STAT_C_CONNECTION << 16);
 }
 
 #endif
@@ -530,8 +529,8 @@ static irqreturn_t musb_stage0_irq(struct musb *musb, u8 int_usb,
                                musb_writeb(mbase, MUSB_DEVCTL, devctl);
                        } else {
                                musb->port1_status |=
-                                         (1 << USB_PORT_FEAT_OVER_CURRENT)
-                                       | (1 << USB_PORT_FEAT_C_OVER_CURRENT);
+                                         USB_PORT_STAT_OVERCURRENT
+                                       | (USB_PORT_STAT_C_OVERCURRENT << 16);
                        }
                        break;
                default:
index 7775e1c0a215fd81b780bf54ba024845868f0fda..92e85e027cfb822c61b2b0a42fce9a4e0c4b61e3 100644 (file)
@@ -183,8 +183,8 @@ static void musb_port_reset(struct musb *musb, bool do_reset)
 
 void musb_root_disconnect(struct musb *musb)
 {
-       musb->port1_status = (1 << USB_PORT_FEAT_POWER)
-                       | (1 << USB_PORT_FEAT_C_CONNECTION);
+       musb->port1_status = USB_PORT_STAT_POWER
+                       | (USB_PORT_STAT_C_CONNECTION << 16);
 
        usb_hcd_poll_rh_status(musb_to_hcd(musb));
        musb->is_active = 0;