/* 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)
 
                 * 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) {
 
                // 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.
                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 */
                 */
 
                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);
                                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;
                }
 
                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 */
 
 
        /* 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;
 
                 * 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) {
 
                /* 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!! */
                        /* 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 */
                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 */
                        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;
 
                 * 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) {
 
                /* 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) {
                        /* 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 */
                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 */
                 */
 
                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 */
 
        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);
 }
        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 */
        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);
                        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));
        }
 
                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;
                        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);
                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 */
                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);
 
 
        /* 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;
 
 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));
                 * 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--)
        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);
        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);
        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)
                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);
 
        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->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;
 
                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;
                                                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 */
                        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");
                        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 */
                                                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;
 
 
                /* 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;
 
         * 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
                                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:
 
 
 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;