aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/usb/ch11.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/usb/ch11.h')
-rw-r--r--include/linux/usb/ch11.h46
1 files changed, 39 insertions, 7 deletions
diff --git a/include/linux/usb/ch11.h b/include/linux/usb/ch11.h
index 10ec0699bea4..4ebaf0824179 100644
--- a/include/linux/usb/ch11.h
+++ b/include/linux/usb/ch11.h
@@ -26,6 +26,7 @@
26#define HUB_RESET_TT 9 26#define HUB_RESET_TT 9
27#define HUB_GET_TT_STATE 10 27#define HUB_GET_TT_STATE 10
28#define HUB_STOP_TT 11 28#define HUB_STOP_TT 11
29#define HUB_SET_DEPTH 12
29 30
30/* 31/*
31 * Hub class additional requests defined by USB 3.0 spec 32 * Hub class additional requests defined by USB 3.0 spec
@@ -61,6 +62,12 @@
61#define USB_PORT_FEAT_TEST 21 62#define USB_PORT_FEAT_TEST 21
62#define USB_PORT_FEAT_INDICATOR 22 63#define USB_PORT_FEAT_INDICATOR 22
63#define USB_PORT_FEAT_C_PORT_L1 23 64#define USB_PORT_FEAT_C_PORT_L1 23
65#define USB_PORT_FEAT_C_PORT_LINK_STATE 25
66#define USB_PORT_FEAT_C_PORT_CONFIG_ERROR 26
67#define USB_PORT_FEAT_PORT_REMOTE_WAKE_MASK 27
68#define USB_PORT_FEAT_BH_PORT_RESET 28
69#define USB_PORT_FEAT_C_BH_PORT_RESET 29
70#define USB_PORT_FEAT_FORCE_LINKPM_ACCEPT 30
64 71
65/* 72/*
66 * Port feature selectors added by USB 3.0 spec. 73 * Port feature selectors added by USB 3.0 spec.
@@ -102,7 +109,6 @@ struct usb_port_status {
102#define USB_PORT_STAT_TEST 0x0800 109#define USB_PORT_STAT_TEST 0x0800
103#define USB_PORT_STAT_INDICATOR 0x1000 110#define USB_PORT_STAT_INDICATOR 0x1000
104/* bits 13 to 15 are reserved */ 111/* bits 13 to 15 are reserved */
105#define USB_PORT_STAT_SUPER_SPEED 0x8000 /* Linux-internal */
106 112
107/* 113/*
108 * Additions to wPortStatus bit field from USB 3.0 114 * Additions to wPortStatus bit field from USB 3.0
@@ -110,8 +116,14 @@ struct usb_port_status {
110 */ 116 */
111#define USB_PORT_STAT_LINK_STATE 0x01e0 117#define USB_PORT_STAT_LINK_STATE 0x01e0
112#define USB_SS_PORT_STAT_POWER 0x0200 118#define USB_SS_PORT_STAT_POWER 0x0200
119#define USB_SS_PORT_STAT_SPEED 0x1c00
113#define USB_PORT_STAT_SPEED_5GBPS 0x0000 120#define USB_PORT_STAT_SPEED_5GBPS 0x0000
114/* Valid only if port is enabled */ 121/* Valid only if port is enabled */
122/* Bits that are the same from USB 2.0 */
123#define USB_SS_PORT_STAT_MASK (USB_PORT_STAT_CONNECTION | \
124 USB_PORT_STAT_ENABLE | \
125 USB_PORT_STAT_OVERCURRENT | \
126 USB_PORT_STAT_RESET)
115 127
116/* 128/*
117 * Definitions for PORT_LINK_STATE values 129 * Definitions for PORT_LINK_STATE values
@@ -132,8 +144,8 @@ struct usb_port_status {
132 144
133/* 145/*
134 * wPortChange bit field 146 * wPortChange bit field
135 * See USB 2.0 spec Table 11-22 147 * See USB 2.0 spec Table 11-22 and USB 2.0 LPM ECN Table-4.10
136 * Bits 0 to 4 shown, bits 5 to 15 are reserved 148 * Bits 0 to 5 shown, bits 6 to 15 are reserved
137 */ 149 */
138#define USB_PORT_STAT_C_CONNECTION 0x0001 150#define USB_PORT_STAT_C_CONNECTION 0x0001
139#define USB_PORT_STAT_C_ENABLE 0x0002 151#define USB_PORT_STAT_C_ENABLE 0x0002
@@ -141,6 +153,13 @@ struct usb_port_status {
141#define USB_PORT_STAT_C_OVERCURRENT 0x0008 153#define USB_PORT_STAT_C_OVERCURRENT 0x0008
142#define USB_PORT_STAT_C_RESET 0x0010 154#define USB_PORT_STAT_C_RESET 0x0010
143#define USB_PORT_STAT_C_L1 0x0020 155#define USB_PORT_STAT_C_L1 0x0020
156/*
157 * USB 3.0 wPortChange bit fields
158 * See USB 3.0 spec Table 10-11
159 */
160#define USB_PORT_STAT_C_BH_RESET 0x0020
161#define USB_PORT_STAT_C_LINK_STATE 0x0040
162#define USB_PORT_STAT_C_CONFIG_ERROR 0x0080
144 163
145/* 164/*
146 * wHubCharacteristics (masks) 165 * wHubCharacteristics (masks)
@@ -175,7 +194,9 @@ struct usb_hub_status {
175 */ 194 */
176 195
177#define USB_DT_HUB (USB_TYPE_CLASS | 0x09) 196#define USB_DT_HUB (USB_TYPE_CLASS | 0x09)
197#define USB_DT_SS_HUB (USB_TYPE_CLASS | 0x0a)
178#define USB_DT_HUB_NONVAR_SIZE 7 198#define USB_DT_HUB_NONVAR_SIZE 7
199#define USB_DT_SS_HUB_SIZE 12
179 200
180struct usb_hub_descriptor { 201struct usb_hub_descriptor {
181 __u8 bDescLength; 202 __u8 bDescLength;
@@ -184,11 +205,22 @@ struct usb_hub_descriptor {
184 __le16 wHubCharacteristics; 205 __le16 wHubCharacteristics;
185 __u8 bPwrOn2PwrGood; 206 __u8 bPwrOn2PwrGood;
186 __u8 bHubContrCurrent; 207 __u8 bHubContrCurrent;
187 /* add 1 bit for hub status change; round to bytes */
188 __u8 DeviceRemovable[(USB_MAXCHILDREN + 1 + 7) / 8];
189 __u8 PortPwrCtrlMask[(USB_MAXCHILDREN + 1 + 7) / 8];
190} __attribute__ ((packed));
191 208
209 /* 2.0 and 3.0 hubs differ here */
210 union {
211 struct {
212 /* add 1 bit for hub status change; round to bytes */
213 __u8 DeviceRemovable[(USB_MAXCHILDREN + 1 + 7) / 8];
214 __u8 PortPwrCtrlMask[(USB_MAXCHILDREN + 1 + 7) / 8];
215 } __attribute__ ((packed)) hs;
216
217 struct {
218 __u8 bHubHdrDecLat;
219 __u16 wHubDelay;
220 __u16 DeviceRemovable;
221 } __attribute__ ((packed)) ss;
222 } u;
223} __attribute__ ((packed));
192 224
193/* port indicator status selectors, tables 11-7 and 11-25 */ 225/* port indicator status selectors, tables 11-7 and 11-25 */
194#define HUB_LED_AUTO 0 226#define HUB_LED_AUTO 0