summaryrefslogtreecommitdiffstats
path: root/sys/dev/usb/usb.h
diff options
context:
space:
mode:
authorhselasky <hselasky@FreeBSD.org>2010-10-04 21:38:10 +0000
committerhselasky <hselasky@FreeBSD.org>2010-10-04 21:38:10 +0000
commit980d0e9a17f44ddce2dc201516adc672b2349b14 (patch)
tree7facac7c6f35d4543ea18b2b9cb2075885fbcd13 /sys/dev/usb/usb.h
parent2c7d4eac4fcdb4d9b19b69158a43c6ad844b759b (diff)
downloadFreeBSD-src-980d0e9a17f44ddce2dc201516adc672b2349b14.zip
FreeBSD-src-980d0e9a17f44ddce2dc201516adc672b2349b14.tar.gz
Add missing USB 3.0 definitions. Correct some wrong ones.
Approved by: thompsa (mentor)
Diffstat (limited to 'sys/dev/usb/usb.h')
-rw-r--r--sys/dev/usb/usb.h34
1 files changed, 28 insertions, 6 deletions
diff --git a/sys/dev/usb/usb.h b/sys/dev/usb/usb.h
index 8ebaeec..89bc2c4 100644
--- a/sys/dev/usb/usb.h
+++ b/sys/dev/usb/usb.h
@@ -208,6 +208,7 @@ typedef struct usb_device_request usb_device_request_t;
#define UDESC_CS_INTERFACE 0x24
#define UDESC_CS_ENDPOINT 0x25
#define UDESC_HUB 0x29
+#define UDESC_SS_HUB 0x2A /* super speed */
#define UDESC_ENDPOINT_SS_COMP 0x30 /* super speed */
#define UR_SET_DESCRIPTOR 0x07
#define UR_GET_CONFIG 0x08
@@ -225,6 +226,7 @@ typedef struct usb_device_request usb_device_request_t;
#define UR_GET_TT_STATE 0x0a
#define UR_STOP_TT 0x0b
#define UR_SET_HUB_DEPTH 0x0c
+#define USB_SS_HUB_DEPTH_MAX 5
#define UR_GET_PORT_ERR_COUNT 0x0d
/* Feature numbers */
@@ -332,7 +334,7 @@ struct usb_devcap_ss_descriptor {
uByte bDevCapabilityType;
uByte bmAttributes;
uWord wSpeedsSupported;
- uByte bFunctionaltySupport;
+ uByte bFunctionalitySupport;
uByte bU1DevExitLat;
uByte bU2DevExitLat;
} __packed;
@@ -343,7 +345,7 @@ struct usb_devcap_container_id_descriptor {
uByte bDescriptorType;
uByte bDevCapabilityType;
uByte bReserved;
- uByte ContainerID;
+ uByte bContainerID;
} __packed;
typedef struct usb_devcap_container_id_descriptor
usb_devcap_container_id_descriptor_t;
@@ -356,6 +358,7 @@ typedef struct usb_devcap_container_id_descriptor
#define UDPROTO_FSHUB 0x00
#define UDPROTO_HSHUBSTT 0x01
#define UDPROTO_HSHUBMTT 0x02
+#define UDPROTO_SSHUB 0x03
#define UDCLASS_DIAGNOSTIC 0xdc
#define UDCLASS_WIRELESS 0xe0
#define UDSUBCLASS_RF 0x01
@@ -533,7 +536,7 @@ typedef struct usb_endpoint_descriptor usb_endpoint_descriptor_t;
struct usb_endpoint_ss_comp_descriptor {
uByte bLength;
uByte bDescriptorType;
- uWord bMaxBurst;
+ uByte bMaxBurst;
uByte bmAttributes;
uWord wBytesPerInterval;
} __packed;
@@ -591,15 +594,15 @@ struct usb_hub_descriptor {
typedef struct usb_hub_descriptor usb_hub_descriptor_t;
struct usb_hub_ss_descriptor {
- uByte bDescLength;
+ uByte bLength;
uByte bDescriptorType;
- uByte bNbrPorts; /* max 15 */
+ uByte bNbrPorts;
uWord wHubCharacteristics;
uByte bPwrOn2PwrGood; /* delay in 2 ms units */
uByte bHubContrCurrent;
uByte bHubHdrDecLat;
uWord wHubDelay;
- uByte DeviceRemovable[2]; /* max 15 ports */
+ uByte DeviceRemovable[32]; /* max 255 ports */
} __packed;
typedef struct usb_hub_ss_descriptor usb_hub_ss_descriptor_t;
@@ -668,9 +671,25 @@ struct usb_port_status {
#define UPS_SUSPEND 0x0004
#define UPS_OVERCURRENT_INDICATOR 0x0008
#define UPS_RESET 0x0010
+/* The link-state bits are valid for Super-Speed USB HUBs */
+#define UPS_PORT_LINK_STATE_GET(x) (((x) >> 5) & 0xF)
+#define UPS_PORT_LINK_STATE_SET(x) (((x) & 0xF) << 5)
+#define UPS_PORT_LS_U0 0x00
+#define UPS_PORT_LS_U1 0x01
+#define UPS_PORT_LS_U2 0x02
+#define UPS_PORT_LS_U3 0x03
+#define UPS_PORT_LS_SS_DIS 0x04
+#define UPS_PORT_LS_RX_DET 0x05
+#define UPS_PORT_LS_SS_INA 0x06
+#define UPS_PORT_LS_POLL 0x07
+#define UPS_PORT_LS_RECOVER 0x08
+#define UPS_PORT_LS_HOT_RST 0x09
+#define UPS_PORT_LS_COMP_MODE 0x0A
+#define UPS_PORT_LS_LOOPBACK 0x0B
#define UPS_PORT_POWER 0x0100
#define UPS_LOW_SPEED 0x0200
#define UPS_HIGH_SPEED 0x0400
+#define UPS_OTHER_SPEED 0x0600 /* currently FreeBSD specific */
#define UPS_PORT_TEST 0x0800
#define UPS_PORT_INDICATOR 0x1000
#define UPS_PORT_MODE_DEVICE 0x8000 /* currently FreeBSD specific */
@@ -680,6 +699,9 @@ struct usb_port_status {
#define UPS_C_SUSPEND 0x0004
#define UPS_C_OVERCURRENT_INDICATOR 0x0008
#define UPS_C_PORT_RESET 0x0010
+#define UPS_C_BH_PORT_RESET 0x0020
+#define UPS_C_PORT_LINK_STATE 0x0040
+#define UPS_C_PORT_CONFIG_ERROR 0x0080
} __packed;
typedef struct usb_port_status usb_port_status_t;
OpenPOWER on IntegriCloud