Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c8421147 authored by Aman Deep's avatar Aman Deep Committed by Greg Kroah-Hartman
Browse files

xHCI: Adding #define values used for hub descriptor



xhci-hub used some numerical values for initialisation of root hub
descriptors. #define values are addded in usb 2.0 hub specification
file and these values are used for root hub characteristics
initialisation.

Also use some #defines in places where magic numbers are being used.

Signed-off-by: default avatarAman Deep <amandeep3986@gmail.com>
Acked-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent ceb25603
Loading
Loading
Loading
Loading
+8 −10
Original line number Original line Diff line number Diff line
@@ -57,17 +57,15 @@ static void xhci_common_hub_descriptor(struct xhci_hcd *xhci,
	desc->bHubContrCurrent = 0;
	desc->bHubContrCurrent = 0;


	desc->bNbrPorts = ports;
	desc->bNbrPorts = ports;
	/* Ugh, these should be #defines, FIXME */
	/* Using table 11-13 in USB 2.0 spec. */
	temp = 0;
	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))
	if (HCC_PPC(xhci->hcc_params))
		temp |= 0x0001;
		temp |= HUB_CHAR_INDV_PORT_LPSM;
	else
	else
		temp |= 0x0002;
		temp |= HUB_CHAR_NO_LPSM;
	/* Bit  2 - root hubs are not part of a compound device */
	/* Bit  2 - root hubs are not part of a compound device */
	/* Bits 4:3 - individual port over current protection */
	/* Bits 4:3 - individual port over current protection */
	temp |= 0x0008;
	temp |= HUB_CHAR_INDV_PORT_OCPM;
	/* Bits 6:5 - no TTs in root ports */
	/* Bits 6:5 - no TTs in root ports */
	/* Bit  7 - no port indicators */
	/* Bit  7 - no port indicators */
	desc->wHubCharacteristics = cpu_to_le16(temp);
	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;
	ports = xhci->num_usb2_ports;


	xhci_common_hub_descriptor(xhci, desc, ports);
	xhci_common_hub_descriptor(xhci, desc, ports);
	desc->bDescriptorType = 0x29;
	desc->bDescriptorType = USB_DT_HUB;
	temp = 1 + (ports / 8);
	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.
	/* 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.
	 * 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;
	ports = xhci->num_usb3_ports;
	xhci_common_hub_descriptor(xhci, desc, ports);
	xhci_common_hub_descriptor(xhci, desc, ports);
	desc->bDescriptorType = 0x2a;
	desc->bDescriptorType = USB_DT_SS_HUB;
	desc->bDescLength = 12;
	desc->bDescLength = USB_DT_SS_HUB_SIZE;


	/* header decode latency should be zero for roothubs,
	/* header decode latency should be zero for roothubs,
	 * see section 4.23.5.2.
	 * see section 4.23.5.2.
+14 −5
Original line number Original line Diff line number Diff line
@@ -165,11 +165,20 @@ struct usb_port_status {
 * wHubCharacteristics (masks)
 * wHubCharacteristics (masks)
 * See USB 2.0 spec Table 11-13, offset 3
 * See USB 2.0 spec Table 11-13, offset 3
 */
 */
#define HUB_CHAR_LPSM		0x0003 /* D1 .. D0 */
#define HUB_CHAR_LPSM		0x0003 /* Logical Power Switching Mode mask */
#define HUB_CHAR_COMPOUND	0x0004 /* D2       */
#define HUB_CHAR_COMMON_LPSM	0x0000 /* All ports power control at once */
#define HUB_CHAR_OCPM		0x0018 /* D4 .. D3 */
#define HUB_CHAR_INDV_PORT_LPSM	0x0001 /* per-port power control */
#define HUB_CHAR_TTTT           0x0060 /* D6 .. D5 */
#define HUB_CHAR_NO_LPSM	0x0002 /* no power switching */
#define HUB_CHAR_PORTIND        0x0080 /* D7       */

#define HUB_CHAR_COMPOUND	0x0004 /* hub is part of a compound device */

#define HUB_CHAR_OCPM		0x0018 /* Over-Current Protection Mode mask */
#define HUB_CHAR_COMMON_OCPM	0x0000 /* All ports Over-Current reporting */
#define HUB_CHAR_INDV_PORT_OCPM	0x0008 /* per-port Over-current reporting */
#define HUB_CHAR_NO_OCPM	0x0010 /* No Over-current Protection support */

#define HUB_CHAR_TTTT		0x0060 /* TT Think Time mask */
#define HUB_CHAR_PORTIND	0x0080 /* per-port indicators (LEDs) */


struct usb_hub_status {
struct usb_hub_status {
	__le16 wHubStatus;
	__le16 wHubStatus;