|
@@ -57,17 +57,15 @@ static void xhci_common_hub_descriptor(struct xhci_hcd *xhci,
|
|
|
desc->bHubContrCurrent = 0;
|
|
|
|
|
|
desc->bNbrPorts = ports;
|
|
|
- /* Ugh, these should be #defines, FIXME */
|
|
|
- /* Using table 11-13 in USB 2.0 spec. */
|
|
|
temp = 0;
|
|
|
- /* Bits 1:0 - support port power switching, or power always on */
|
|
|
+ /* Bits 1:0 - support per-port power switching, or power always on */
|
|
|
if (HCC_PPC(xhci->hcc_params))
|
|
|
- temp |= 0x0001;
|
|
|
+ temp |= HUB_CHAR_INDV_PORT_LPSM;
|
|
|
else
|
|
|
- temp |= 0x0002;
|
|
|
+ temp |= HUB_CHAR_NO_LPSM;
|
|
|
/* Bit 2 - root hubs are not part of a compound device */
|
|
|
/* Bits 4:3 - individual port over current protection */
|
|
|
- temp |= 0x0008;
|
|
|
+ temp |= HUB_CHAR_INDV_PORT_OCPM;
|
|
|
/* Bits 6:5 - no TTs in root ports */
|
|
|
/* Bit 7 - no port indicators */
|
|
|
desc->wHubCharacteristics = cpu_to_le16(temp);
|
|
@@ -86,9 +84,9 @@ static void xhci_usb2_hub_descriptor(struct usb_hcd *hcd, struct xhci_hcd *xhci,
|
|
|
ports = xhci->num_usb2_ports;
|
|
|
|
|
|
xhci_common_hub_descriptor(xhci, desc, ports);
|
|
|
- desc->bDescriptorType = 0x29;
|
|
|
+ desc->bDescriptorType = USB_DT_HUB;
|
|
|
temp = 1 + (ports / 8);
|
|
|
- desc->bDescLength = 7 + 2 * temp;
|
|
|
+ desc->bDescLength = USB_DT_HUB_NONVAR_SIZE + 2 * temp;
|
|
|
|
|
|
/* The Device Removable bits are reported on a byte granularity.
|
|
|
* If the port doesn't exist within that byte, the bit is set to 0.
|
|
@@ -137,8 +135,8 @@ static void xhci_usb3_hub_descriptor(struct usb_hcd *hcd, struct xhci_hcd *xhci,
|
|
|
|
|
|
ports = xhci->num_usb3_ports;
|
|
|
xhci_common_hub_descriptor(xhci, desc, ports);
|
|
|
- desc->bDescriptorType = 0x2a;
|
|
|
- desc->bDescLength = 12;
|
|
|
+ desc->bDescriptorType = USB_DT_SS_HUB;
|
|
|
+ desc->bDescLength = USB_DT_SS_HUB_SIZE;
|
|
|
|
|
|
/* header decode latency should be zero for roothubs,
|
|
|
* see section 4.23.5.2.
|