USB: remove bogus USB_PORT_FEAT_*_SPEED symbols
authorAlan Stern <stern@rowland.harvard.edu>
Thu, 4 Mar 2010 16:32:30 +0000 (11:32 -0500)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 20 May 2010 20:21:31 +0000 (13:21 -0700)
This patch (as1348) removes the bogus
USB_PORT_FEAT_{HIGHSPEED,SUPERSPEED} symbols from ch11.h.  No such
features are defined by the USB spec.  (There is a PORT_LOWSPEED
feature, but the spec doesn't mention it except to say that host
software should never use it.)  The speed indicators are port
statuses, not port features.

As a temporary workaround for the xhci-hcd driver, a fictional
USB_PORT_STAT_SUPER_SPEED symbol is added.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
CC: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/core/hub.c
drivers/usb/host/ehci.h
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
include/linux/usb/ch11.h

index 1883c3c..5ac27ed 100644 (file)
@@ -153,11 +153,11 @@ static int usb_reset_and_verify_device(struct usb_device *udev);
 
 static inline char *portspeed(int portstatus)
 {
-       if (portstatus & (1 << USB_PORT_FEAT_HIGHSPEED))
+       if (portstatus & USB_PORT_STAT_HIGH_SPEED)
                return "480 Mb/s";
-       else if (portstatus & (1 << USB_PORT_FEAT_LOWSPEED))
+       else if (portstatus & USB_PORT_STAT_LOW_SPEED)
                return "1.5 Mb/s";
-       else if (portstatus & (1 << USB_PORT_FEAT_SUPERSPEED))
+       else if (portstatus & USB_PORT_STAT_SUPER_SPEED)
                return "5.0 Gb/s";
        else
                return "12 Mb/s";
@@ -3075,7 +3075,7 @@ static void hub_port_connect_change(struct usb_hub *hub, int port1,
                if (!(hcd->driver->flags & HCD_USB3))
                        udev->speed = USB_SPEED_UNKNOWN;
                else if ((hdev->parent == NULL) &&
-                               (portstatus & (1 << USB_PORT_FEAT_SUPERSPEED)))
+                               (portstatus & USB_PORT_STAT_SUPER_SPEED))
                        udev->speed = USB_SPEED_SUPER;
                else
                        udev->speed = USB_SPEED_UNKNOWN;
index 556c0b4..4ebe9ad 100644 (file)
@@ -556,20 +556,20 @@ ehci_port_speed(struct ehci_hcd *ehci, unsigned int portsc)
                case 0:
                        return 0;
                case 1:
-                       return (1<<USB_PORT_FEAT_LOWSPEED);
+                       return USB_PORT_STAT_LOW_SPEED;
                case 2:
                default:
-                       return (1<<USB_PORT_FEAT_HIGHSPEED);
+                       return USB_PORT_STAT_HIGH_SPEED;
                }
        }
-       return (1<<USB_PORT_FEAT_HIGHSPEED);
+       return USB_PORT_STAT_HIGH_SPEED;
 }
 
 #else
 
 #define        ehci_is_TDI(e)                  (0)
 
-#define        ehci_port_speed(ehci, portsc)   (1<<USB_PORT_FEAT_HIGHSPEED)
+#define        ehci_port_speed(ehci, portsc)   USB_PORT_STAT_HIGH_SPEED
 #endif
 
 /*-------------------------------------------------------------------------*/
index c7ac1d9..cfdac6d 100644 (file)
@@ -111,7 +111,7 @@ struct isp1760_qh {
        u32 ping;
 };
 
-#define ehci_port_speed(priv, portsc) (1 << USB_PORT_FEAT_HIGHSPEED)
+#define ehci_port_speed(priv, portsc) USB_PORT_STAT_HIGH_SPEED
 
 static unsigned int isp1760_readl(__u32 __iomem *regs)
 {
index 2891203..8f04c0a 100644 (file)
@@ -3153,10 +3153,10 @@ static inline unsigned int oxu_port_speed(struct oxu_hcd *oxu,
        case 0:
                return 0;
        case 1:
-               return 1 << USB_PORT_FEAT_LOWSPEED;
+               return USB_PORT_STAT_LOW_SPEED;
        case 2:
        default:
-               return 1 << USB_PORT_FEAT_HIGHSPEED;
+               return USB_PORT_STAT_HIGH_SPEED;
        }
 }
 
index 1398de1..a004a12 100644 (file)
@@ -1059,12 +1059,11 @@ static void r8a66597_usb_connect(struct r8a66597 *r8a66597, int port)
        u16 speed = get_rh_usb_speed(r8a66597, port);
        struct r8a66597_root_hub *rh = &r8a66597->root_hub[port];
 
-       rh->port &= ~((1 << USB_PORT_FEAT_HIGHSPEED) |
-                     (1 << USB_PORT_FEAT_LOWSPEED));
+       rh->port &= ~(USB_PORT_STAT_HIGH_SPEED | USB_PORT_STAT_LOW_SPEED);
        if (speed == HSMODE)
-               rh->port |= (1 << USB_PORT_FEAT_HIGHSPEED);
+               rh->port |= USB_PORT_STAT_HIGH_SPEED;
        else if (speed == LSMODE)
-               rh->port |= (1 << USB_PORT_FEAT_LOWSPEED);
+               rh->port |= USB_PORT_STAT_LOW_SPEED;
 
        rh->port &= ~(1 << USB_PORT_FEAT_RESET);
        rh->port |= 1 << USB_PORT_FEAT_ENABLE;
index 8f2f477..dcd7fab 100644 (file)
@@ -1121,7 +1121,7 @@ sl811h_timer(unsigned long _sl811)
        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);
+                               | USB_PORT_STAT_LOW_SPEED;
 
        spin_lock_irqsave(&sl811->lock, flags);
 
@@ -1162,7 +1162,7 @@ sl811h_timer(unsigned long _sl811)
        } 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;
        }
 
@@ -1173,7 +1173,7 @@ sl811h_timer(unsigned long _sl811)
 #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;
                }
index 208b805..dd69df1 100644 (file)
@@ -64,15 +64,15 @@ static void xhci_hub_descriptor(struct xhci_hcd *xhci,
 static unsigned int xhci_port_speed(unsigned int port_status)
 {
        if (DEV_LOWSPEED(port_status))
-               return 1 << USB_PORT_FEAT_LOWSPEED;
+               return USB_PORT_STAT_LOW_SPEED;
        if (DEV_HIGHSPEED(port_status))
-               return 1 << USB_PORT_FEAT_HIGHSPEED;
+               return USB_PORT_STAT_HIGH_SPEED;
        if (DEV_SUPERSPEED(port_status))
-               return 1 << USB_PORT_FEAT_SUPERSPEED;
+               return USB_PORT_STAT_SUPER_SPEED;
        /*
         * FIXME: Yes, we should check for full speed, but the core uses that as
         * a default in portspeed() in usb/core/hub.c (which is the only place
-        * USB_PORT_FEAT_*SPEED is used).
+        * USB_PORT_STAT_*_SPEED is used).
         */
        return 0;
 }
index 35cb735..bd3185a 100644 (file)
 #define USB_PORT_FEAT_RESET            4
 #define USB_PORT_FEAT_L1               5       /* L1 suspend */
 #define USB_PORT_FEAT_POWER            8
-#define USB_PORT_FEAT_LOWSPEED         9
-/* This value was never in Table 11-17 */
-#define USB_PORT_FEAT_HIGHSPEED                10
-/* This value is also fake */
-#define USB_PORT_FEAT_SUPERSPEED       11
+#define USB_PORT_FEAT_LOWSPEED         9       /* Should never be used */
 #define USB_PORT_FEAT_C_CONNECTION     16
 #define USB_PORT_FEAT_C_ENABLE         17
 #define USB_PORT_FEAT_C_SUSPEND                18
@@ -87,6 +83,7 @@ struct usb_port_status {
 #define USB_PORT_STAT_TEST              0x0800
 #define USB_PORT_STAT_INDICATOR         0x1000
 /* bits 13 to 15 are reserved */
+#define USB_PORT_STAT_SUPER_SPEED      0x8000  /* Linux-internal */
 
 /*
  * wPortChange bit field