Changeset cd3fa47 in mainline
- Timestamp:
- 2018-01-21T18:35:09Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 3f02935
- Parents:
- 32b2a6f2
- Location:
- uspace
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/usb/ehci/ehci_rh.c
r32b2a6f2 rcd3fa47 247 247 248 248 #define BIT_VAL(val, bit) ((val & bit) ? 1 : 0) 249 #define EHCI2USB(val, bit, feat) (BIT_VAL(val, bit) << feat)249 #define EHCI2USB(val, bit, mask) (BIT_VAL(val, bit) ? mask : 0) 250 250 251 251 /** Port status request handler. … … 269 269 const uint32_t reg = EHCI_RD(hub->registers->portsc[port]); 270 270 const uint32_t status = uint32_host2usb( 271 EHCI2USB(reg, USB_PORTSC_CONNECT_FLAG, USB_HUB_ FEATURE_PORT_CONNECTION) |272 EHCI2USB(reg, USB_PORTSC_ENABLED_FLAG, USB_HUB_ FEATURE_PORT_ENABLE) |273 EHCI2USB(reg, USB_PORTSC_SUSPEND_FLAG, USB _HUB_FEATURE_PORT_SUSPEND) |274 EHCI2USB(reg, USB_PORTSC_OC_ACTIVE_FLAG, USB_HUB_ FEATURE_PORT_OVER_CURRENT) |275 EHCI2USB(reg, USB_PORTSC_PORT_RESET_FLAG, USB_HUB_ FEATURE_PORT_RESET) |276 EHCI2USB(reg, USB_PORTSC_PORT_POWER_FLAG, USB _HUB_FEATURE_PORT_POWER) |271 EHCI2USB(reg, USB_PORTSC_CONNECT_FLAG, USB_HUB_PORT_STATUS_CONNECTION) | 272 EHCI2USB(reg, USB_PORTSC_ENABLED_FLAG, USB_HUB_PORT_STATUS_ENABLE) | 273 EHCI2USB(reg, USB_PORTSC_SUSPEND_FLAG, USB2_HUB_PORT_STATUS_SUSPEND) | 274 EHCI2USB(reg, USB_PORTSC_OC_ACTIVE_FLAG, USB_HUB_PORT_STATUS_OC) | 275 EHCI2USB(reg, USB_PORTSC_PORT_RESET_FLAG, USB_HUB_PORT_STATUS_RESET) | 276 EHCI2USB(reg, USB_PORTSC_PORT_POWER_FLAG, USB2_HUB_PORT_STATUS_POWER) | 277 277 (((reg & USB_PORTSC_LINE_STATUS_MASK) == USB_PORTSC_LINE_STATUS_K) ? 278 ( 1 << USB_HUB_FEATURE_PORT_LOW_SPEED) : 0) |279 ((reg & USB_PORTSC_PORT_OWNER_FLAG) ? 0 : (1 << USB_HUB_FEATURE_PORT_HIGH_SPEED)) |280 EHCI2USB(reg, USB_PORTSC_PORT_TEST_MASK, 11) |281 EHCI2USB(reg, USB_PORTSC_INDICATOR_MASK, 12) |282 EHCI2USB(reg, USB_PORTSC_CONNECT_CH_FLAG, USB_HUB_ FEATURE_C_PORT_CONNECTION) |283 EHCI2USB(reg, USB_PORTSC_EN_CHANGE_FLAG, USB _HUB_FEATURE_C_PORT_ENABLE) |284 (hub->resume_flag[port] ? (1 << USB_HUB_FEATURE_C_PORT_SUSPEND): 0) |285 EHCI2USB(reg, USB_PORTSC_OC_CHANGE_FLAG, USB_HUB_ FEATURE_C_PORT_OVER_CURRENT) |286 (hub->reset_flag[port] ? (1 << USB_HUB_FEATURE_C_PORT_RESET): 0)278 (USB2_HUB_PORT_STATUS_LOW_SPEED) : 0) | 279 ((reg & USB_PORTSC_PORT_OWNER_FLAG) ? 0 : USB2_HUB_PORT_STATUS_HIGH_SPEED) | 280 EHCI2USB(reg, USB_PORTSC_PORT_TEST_MASK, USB2_HUB_PORT_STATUS_TEST) | 281 EHCI2USB(reg, USB_PORTSC_INDICATOR_MASK, USB2_HUB_PORT_STATUS_INDICATOR) | 282 EHCI2USB(reg, USB_PORTSC_CONNECT_CH_FLAG, USB_HUB_PORT_STATUS_C_CONNECTION) | 283 EHCI2USB(reg, USB_PORTSC_EN_CHANGE_FLAG, USB2_HUB_PORT_STATUS_C_ENABLE) | 284 (hub->resume_flag[port] ? USB2_HUB_PORT_STATUS_C_SUSPEND : 0) | 285 EHCI2USB(reg, USB_PORTSC_OC_CHANGE_FLAG, USB_HUB_PORT_STATUS_C_OC) | 286 (hub->reset_flag[port] ? USB_HUB_PORT_STATUS_C_RESET: 0) 287 287 ); 288 288 /* Note feature numbers for test and indicator feature do not … … 385 385 return EOK; 386 386 387 case USB _HUB_FEATURE_PORT_ENABLE: /*1*/387 case USB2_HUB_FEATURE_PORT_ENABLE: /*1*/ 388 388 usb_log_debug2("RH(%p-%u): Clear port enable.", hub, port); 389 389 EHCI_CLR(hub->registers->portsc[port], … … 391 391 return EOK; 392 392 393 case USB _HUB_FEATURE_PORT_SUSPEND: /*2*/393 case USB2_HUB_FEATURE_PORT_SUSPEND: /*2*/ 394 394 usb_log_debug2("RH(%p-%u): Clear port suspend.", hub, port); 395 395 /* If not in suspend it's noop */ … … 409 409 USB_PORTSC_CONNECT_CH_FLAG); 410 410 return EOK; 411 case USB _HUB_FEATURE_C_PORT_ENABLE: /*17*/411 case USB2_HUB_FEATURE_C_PORT_ENABLE: /*17*/ 412 412 usb_log_debug2("RH(%p-%u): Clear port enable change.", 413 413 hub, port); … … 421 421 USB_PORTSC_OC_CHANGE_FLAG); 422 422 return EOK; 423 case USB _HUB_FEATURE_C_PORT_SUSPEND: /*18*/423 case USB2_HUB_FEATURE_C_PORT_SUSPEND: /*18*/ 424 424 usb_log_debug2("RH(%p-%u): Clear port suspend change.", 425 425 hub, port); … … 456 456 const unsigned feature = uint16_usb2host(setup_packet->value); 457 457 switch (feature) { 458 case USB _HUB_FEATURE_PORT_ENABLE: /*1*/458 case USB2_HUB_FEATURE_PORT_ENABLE: /*1*/ 459 459 usb_log_debug2("RH(%p-%u): Set port enable.", hub, port); 460 460 EHCI_SET(hub->registers->portsc[port], 461 461 USB_PORTSC_ENABLED_FLAG); 462 462 return EOK; 463 case USB _HUB_FEATURE_PORT_SUSPEND: /*2*/463 case USB2_HUB_FEATURE_PORT_SUSPEND: /*2*/ 464 464 usb_log_debug2("RH(%p-%u): Set port suspend.", hub, port); 465 465 EHCI_SET(hub->registers->portsc[port], -
uspace/drv/bus/usb/ohci/ohci_rh.c
r32b2a6f2 rcd3fa47 340 340 } 341 341 342 case USB _HUB_FEATURE_PORT_ENABLE: /*1*/342 case USB2_HUB_FEATURE_PORT_ENABLE: /*1*/ 343 343 OHCI_WR(hub->registers->rh_port_status[port], 344 344 RHPS_CLEAR_PORT_ENABLE); 345 345 return EOK; 346 346 347 case USB _HUB_FEATURE_PORT_SUSPEND: /*2*/347 case USB2_HUB_FEATURE_PORT_SUSPEND: /*2*/ 348 348 OHCI_WR(hub->registers->rh_port_status[port], 349 349 RHPS_CLEAR_PORT_SUSPEND); … … 351 351 352 352 case USB_HUB_FEATURE_C_PORT_CONNECTION: /*16*/ 353 case USB _HUB_FEATURE_C_PORT_ENABLE: /*17*/354 case USB _HUB_FEATURE_C_PORT_SUSPEND: /*18*/353 case USB2_HUB_FEATURE_C_PORT_ENABLE: /*17*/ 354 case USB2_HUB_FEATURE_C_PORT_SUSPEND: /*18*/ 355 355 case USB_HUB_FEATURE_C_PORT_OVER_CURRENT: /*19*/ 356 356 case USB_HUB_FEATURE_C_PORT_RESET: /*20*/ … … 401 401 /* Fall through, for per port power */ 402 402 /* Fallthrough */ 403 case USB _HUB_FEATURE_PORT_ENABLE: /*1*/404 case USB _HUB_FEATURE_PORT_SUSPEND: /*2*/403 case USB2_HUB_FEATURE_PORT_ENABLE: /*1*/ 404 case USB2_HUB_FEATURE_PORT_SUSPEND: /*2*/ 405 405 case USB_HUB_FEATURE_PORT_RESET: /*4*/ 406 406 usb_log_debug2("Setting port POWER, ENABLE, SUSPEND or RESET " -
uspace/drv/bus/usb/uhci/uhci_rh.c
r32b2a6f2 rcd3fa47 210 210 #define BIT_VAL(val, bit) \ 211 211 ((val & bit) ? 1 : 0) 212 #define UHCI2USB(val, bit, feat) \213 (BIT_VAL(val, bit) << feat)212 #define UHCI2USB(val, bit, mask) \ 213 (BIT_VAL(val, bit) ? (mask) : 0) 214 214 215 215 /** Port status request handler. … … 236 236 const uint16_t val = pio_read_16(hub->ports[port]); 237 237 const uint32_t status = uint32_host2usb( 238 UHCI2USB(val, STATUS_CONNECTED, USB_HUB_ FEATURE_PORT_CONNECTION) |239 UHCI2USB(val, STATUS_ENABLED, USB_HUB_ FEATURE_PORT_ENABLE) |240 UHCI2USB(val, STATUS_SUSPEND, USB _HUB_FEATURE_PORT_SUSPEND) |241 UHCI2USB(val, STATUS_IN_RESET, USB_HUB_ FEATURE_PORT_RESET) |242 UHCI2USB(val, STATUS_ALWAYS_ONE, USB _HUB_FEATURE_PORT_POWER) |243 UHCI2USB(val, STATUS_LOW_SPEED, USB _HUB_FEATURE_PORT_LOW_SPEED) |244 UHCI2USB(val, STATUS_CONNECTED_CHANGED, USB_HUB_ FEATURE_C_PORT_CONNECTION) |245 UHCI2USB(val, STATUS_ENABLED_CHANGED, USB _HUB_FEATURE_C_PORT_ENABLE) |246 // UHCI2USB(val, STATUS_SUSPEND, USB _HUB_FEATURE_C_PORT_SUSPEND) |247 ( (hub->reset_changed[port] ? 1 : 0) << USB_HUB_FEATURE_C_PORT_RESET)238 UHCI2USB(val, STATUS_CONNECTED, USB_HUB_PORT_STATUS_CONNECTION) | 239 UHCI2USB(val, STATUS_ENABLED, USB_HUB_PORT_STATUS_ENABLE) | 240 UHCI2USB(val, STATUS_SUSPEND, USB2_HUB_PORT_STATUS_SUSPEND) | 241 UHCI2USB(val, STATUS_IN_RESET, USB_HUB_PORT_STATUS_RESET) | 242 UHCI2USB(val, STATUS_ALWAYS_ONE, USB2_HUB_PORT_STATUS_POWER) | 243 UHCI2USB(val, STATUS_LOW_SPEED, USB2_HUB_PORT_STATUS_LOW_SPEED) | 244 UHCI2USB(val, STATUS_CONNECTED_CHANGED, USB_HUB_PORT_STATUS_C_CONNECTION) | 245 UHCI2USB(val, STATUS_ENABLED_CHANGED, USB2_HUB_PORT_STATUS_C_ENABLE) | 246 // UHCI2USB(val, STATUS_SUSPEND, USB2_HUB_PORT_STATUS_C_SUSPEND) | 247 (hub->reset_changed[port] ? USB_HUB_PORT_STATUS_C_RESET : 0) 248 248 ); 249 249 RH_DEBUG(hub, port, "Port status %" PRIx32 " (source %" PRIx16 … … 274 274 const uint16_t val = status & (~STATUS_WC_BITS); 275 275 switch (feature) { 276 case USB _HUB_FEATURE_PORT_ENABLE:276 case USB2_HUB_FEATURE_PORT_ENABLE: 277 277 RH_DEBUG(hub, port, "Clear port enable (status %" 278 278 PRIx16 ")", status); 279 279 pio_write_16(hub->ports[port], val & ~STATUS_ENABLED); 280 280 break; 281 case USB _HUB_FEATURE_PORT_SUSPEND:281 case USB2_HUB_FEATURE_PORT_SUSPEND: 282 282 RH_DEBUG(hub, port, "Clear port suspend (status %" 283 283 PRIx16 ")", status); … … 302 302 hub->reset_changed[port] = false; 303 303 break; 304 case USB _HUB_FEATURE_C_PORT_ENABLE:304 case USB2_HUB_FEATURE_C_PORT_ENABLE: 305 305 RH_DEBUG(hub, port, "Clear port enable change (status %" 306 306 PRIx16 ")", status); 307 307 pio_write_16(hub->ports[port], status | STATUS_ENABLED_CHANGED); 308 308 break; 309 case USB _HUB_FEATURE_C_PORT_SUSPEND:309 case USB2_HUB_FEATURE_C_PORT_SUSPEND: 310 310 RH_DEBUG(hub, port, "Clear port suspend change (status %" 311 311 PRIx16 ")", status); … … 354 354 ")", pio_read_16(hub->ports[port])); 355 355 break; 356 case USB _HUB_FEATURE_PORT_SUSPEND:356 case USB2_HUB_FEATURE_PORT_SUSPEND: 357 357 RH_DEBUG(hub, port, "Set port suspend (status %" PRIx16 358 358 ")", status); … … 368 368 break; 369 369 case USB_HUB_FEATURE_C_PORT_CONNECTION: 370 case USB _HUB_FEATURE_C_PORT_ENABLE:371 case USB _HUB_FEATURE_C_PORT_SUSPEND:370 case USB2_HUB_FEATURE_C_PORT_ENABLE: 371 case USB2_HUB_FEATURE_C_PORT_SUSPEND: 372 372 case USB_HUB_FEATURE_C_PORT_OVER_CURRENT: 373 373 RH_DEBUG(hub, port, "Set port change flag (status %" PRIx16 -
uspace/drv/bus/usb/usbhub/port.c
r32b2a6f2 rcd3fa47 145 145 if ((err = usbhc_device_enumerate(exch, port->port_number, port->speed))) { 146 146 port_log(error, port, "Failed to enumerate device: %s", str_error(err)); 147 /* Disable the port */ 148 usb_hub_clear_port_feature(port->hub, port->port_number, USB_HUB_FEATURE_PORT_ENABLE); 147 /* Disable the port in USB 2 (impossible in USB3) */ 148 if (port->speed <= USB_SPEED_HIGH) 149 usb_hub_clear_port_feature(port->hub, port->port_number, USB2_HUB_FEATURE_PORT_ENABLE); 149 150 goto out_address; 150 151 } … … 173 174 static void port_changed_enabled(usb_hub_port_t *port, usb_port_status_t status) 174 175 { 175 const bool enabled = !!(status & USB_HUB_PORT_STATUS_ENABLE D);176 const bool enabled = !!(status & USB_HUB_PORT_STATUS_ENABLE); 176 177 if (enabled) { 177 178 port_log(warning, port, "Port unexpectedly changed to enabled."); … … 179 180 usb_port_disabled(&port->base, &remove_device); 180 181 } 181 }182 183 static void port_changed_suspend(usb_hub_port_t *port, usb_port_status_t status)184 {185 port_log(error, port, "Port unexpectedly suspend. Weird, we do not support suspending!");186 182 } 187 183 … … 207 203 static void port_changed_reset(usb_hub_port_t *port, usb_port_status_t status) 208 204 { 209 const bool enabled = !!(status & USB_HUB_PORT_STATUS_ENABLE D);205 const bool enabled = !!(status & USB_HUB_PORT_STATUS_ENABLE); 210 206 211 207 if (enabled) { … … 220 216 typedef void (*change_handler_t)(usb_hub_port_t *, usb_port_status_t); 221 217 222 static const change_handler_t port_change_handlers [] = { 223 [USB_HUB_FEATURE_C_PORT_CONNECTION] = &port_changed_connection, 224 [USB_HUB_FEATURE_C_PORT_ENABLE] = &port_changed_enabled, 225 [USB_HUB_FEATURE_C_PORT_SUSPEND] = &port_changed_suspend, 226 [USB_HUB_FEATURE_C_PORT_OVER_CURRENT] = &port_changed_overcurrent, 227 [USB_HUB_FEATURE_C_PORT_RESET] = &port_changed_reset, 228 [sizeof(usb_port_status_t) * 8] = NULL, 229 }; 218 static void check_port_change(usb_hub_port_t *port, usb_port_status_t *status, 219 change_handler_t handler, usb_port_status_t mask, usb_hub_class_feature_t feature) 220 { 221 if ((*status & mask) == 0) 222 return; 223 224 /* Clear the change so it won't come again */ 225 usb_hub_clear_port_feature(port->hub, port->port_number, feature); 226 227 if (handler) 228 handler(port, *status); 229 230 /* Mark the change as resolved */ 231 *status &= ~mask; 232 } 230 233 231 234 /** … … 248 251 } 249 252 250 if (port->hub->speed == USB_SPEED_SUPER) 251 /* Link state change is not a change we shall clear, nor we care about it */ 252 status &= ~(1 << USB_HUB_FEATURE_C_PORT_LINK_STATE); 253 254 for (uint32_t feature = 16; feature < sizeof(usb_port_status_t) * 8; ++feature) { 255 uint32_t mask = 1 << feature; 256 257 if ((status & mask) == 0) 258 continue; 259 260 /* Clear the change so it won't come again */ 261 usb_hub_clear_port_feature(port->hub, port->port_number, feature); 262 263 if (!port_change_handlers[feature]) 264 continue; 265 266 /* ACK this change */ 267 status &= ~mask; 268 269 port_change_handlers[feature](port, status); 253 check_port_change(port, &status, &port_changed_connection, 254 USB_HUB_PORT_STATUS_C_CONNECTION, USB_HUB_FEATURE_C_PORT_CONNECTION); 255 256 check_port_change(port, &status, &port_changed_overcurrent, 257 USB_HUB_PORT_STATUS_C_OC, USB_HUB_FEATURE_C_PORT_OVER_CURRENT); 258 259 check_port_change(port, &status, &port_changed_reset, 260 USB_HUB_PORT_STATUS_C_RESET, USB_HUB_FEATURE_C_PORT_RESET); 261 262 if (port->hub->speed <= USB_SPEED_HIGH) { 263 check_port_change(port, &status, &port_changed_enabled, 264 USB2_HUB_PORT_STATUS_C_ENABLE, USB2_HUB_FEATURE_C_PORT_ENABLE); 265 } else { 266 check_port_change(port, &status, &port_changed_reset, 267 USB3_HUB_PORT_STATUS_C_BH_RESET, USB3_HUB_FEATURE_C_BH_PORT_RESET); 268 269 check_port_change(port, &status, NULL, 270 USB3_HUB_PORT_STATUS_C_LINK_STATE, USB3_HUB_FEATURE_C_PORT_LINK_STATE); 270 271 } 271 272 -
uspace/drv/bus/usb/usbhub/status.h
r32b2a6f2 rcd3fa47 38 38 39 39 /** 40 * structure holding port status and changes flags.41 * should not be accessed directly, use supplied getter/setter methods.42 *43 * For more information refer to tables 11-15 and 11-16 in44 * "Universal Serial Bus Specification Revision 1.1" pages 274 and 27745 * (290 and 293 in pdf)46 *47 */48 typedef uint32_t usb_port_status_t;49 #define USB_HUB_PORT_STATUS_CONNECTION \50 (uint32_usb2host(1 << (USB_HUB_FEATURE_PORT_CONNECTION)))51 #define USB_HUB_PORT_STATUS_ENABLED \52 (uint32_usb2host(1 << (USB_HUB_FEATURE_PORT_ENABLE)))53 #define USB_HUB_PORT_STATUS_SUSPEND \54 (uint32_usb2host(1 << (USB_HUB_FEATURE_PORT_SUSPEND)))55 #define USB_HUB_PORT_STATUS_OC \56 (uint32_usb2host(1 << (USB_HUB_FEATURE_PORT_OVER_CURRENT)))57 #define USB_HUB_PORT_STATUS_RESET \58 (uint32_usb2host(1 << (USB_HUB_FEATURE_PORT_RESET)))59 #define USB_HUB_PORT_STATUS_POWER \60 (uint32_usb2host(1 << (USB_HUB_FEATURE_PORT_POWER)))61 #define USB_HUB_PORT_STATUS_LOW_SPEED \62 (uint32_usb2host(1 << (USB_HUB_FEATURE_PORT_LOW_SPEED)))63 #define USB_HUB_PORT_STATUS_HIGH_SPEED \64 (uint32_usb2host(1 << 10))65 #define USB_HUB_PORT_STATUS_TEST_MODE \66 (uint32_usb2host(1 << 11))67 #define USB_HUB_PORT_INDICATOR_CONTROL \68 (uint32_usb2host(1 << 12))69 70 #define USB_HUB_PORT_C_STATUS_CONNECTION \71 (uint32_usb2host(1 << (USB_HUB_FEATURE_C_PORT_CONNECTION)))72 #define USB_HUB_PORT_C_STATUS_ENABLED \73 (uint32_usb2host(1 << (USB_HUB_FEATURE_C_PORT_ENABLE)))74 #define USB_HUB_PORT_C_STATUS_SUSPEND \75 (uint32_usb2host(1 << (USB_HUB_FEATURE_C_PORT_SUSPEND)))76 #define USB_HUB_PORT_C_STATUS_OC \77 (uint32_usb2host(1 << (USB_HUB_FEATURE_C_PORT_OVER_CURRENT)))78 #define USB_HUB_PORT_C_STATUS_RESET \79 (uint32_usb2host(1 << (USB_HUB_FEATURE_C_PORT_RESET)))80 81 /**82 40 * structure holding hub status and changes flags. 83 41 * … … 101 59 if (hub_speed == USB_SPEED_SUPER) 102 60 return USB_SPEED_SUPER; 103 if (hub_speed == USB_SPEED_HIGH && (status & USB _HUB_PORT_STATUS_HIGH_SPEED))61 if (hub_speed == USB_SPEED_HIGH && (status & USB2_HUB_PORT_STATUS_HIGH_SPEED)) 104 62 return USB_SPEED_HIGH; 105 if ((status & USB _HUB_PORT_STATUS_LOW_SPEED) != 0)63 if ((status & USB2_HUB_PORT_STATUS_LOW_SPEED) != 0) 106 64 return USB_SPEED_LOW; 107 65 return USB_SPEED_FULL; -
uspace/drv/bus/usb/vhc/hub/virthubops.c
r32b2a6f2 rcd3fa47 137 137 138 138 switch (feature) { 139 case USB _HUB_FEATURE_PORT_ENABLE:139 case USB2_HUB_FEATURE_PORT_ENABLE: 140 140 if ((port_state != HUB_PORT_STATE_NOT_CONFIGURED) 141 141 && (port_state != HUB_PORT_STATE_POWERED_OFF)) { … … 145 145 break; 146 146 147 case USB _HUB_FEATURE_PORT_SUSPEND:147 case USB2_HUB_FEATURE_PORT_SUSPEND: 148 148 if (port_state != HUB_PORT_STATE_SUSPENDED) { 149 149 rc = EOK; … … 166 166 break; 167 167 168 case USB _HUB_FEATURE_C_PORT_ENABLE:168 case USB2_HUB_FEATURE_C_PORT_ENABLE: 169 169 hub_clear_port_status_change(hub, port, HUB_STATUS_C_PORT_ENABLE); 170 170 rc = EOK; 171 171 break; 172 172 173 case USB _HUB_FEATURE_C_PORT_SUSPEND:173 case USB2_HUB_FEATURE_C_PORT_SUSPEND: 174 174 hub_clear_port_status_change(hub, port, HUB_STATUS_C_PORT_SUSPEND); 175 175 rc = EOK; … … 317 317 break; 318 318 319 case USB _HUB_FEATURE_PORT_SUSPEND:319 case USB2_HUB_FEATURE_PORT_SUSPEND: 320 320 if (port_state == HUB_PORT_STATE_ENABLED) { 321 321 hub_set_port_state(hub, port, HUB_PORT_STATE_SUSPENDED); -
uspace/lib/usb/include/usb/classes/hub.h
r32b2a6f2 rcd3fa47 48 48 USB_HUB_FEATURE_HUB_OVER_CURRENT = 1, 49 49 USB_HUB_FEATURE_PORT_CONNECTION = 0, 50 USB _HUB_FEATURE_PORT_ENABLE = 1,51 USB _HUB_FEATURE_PORT_SUSPEND = 2,50 USB2_HUB_FEATURE_PORT_ENABLE = 1, 51 USB2_HUB_FEATURE_PORT_SUSPEND = 2, 52 52 USB_HUB_FEATURE_PORT_OVER_CURRENT = 3, 53 53 USB_HUB_FEATURE_PORT_RESET = 4, 54 USB3_HUB_FEATURE_PORT_LINK_STATE = 5, 54 55 USB_HUB_FEATURE_PORT_POWER = 8, 55 USB_HUB_FEATURE_PORT_LOW_SPEED = 9, 56 USB_HUB_FEATURE_PORT_HIGH_SPEED = 10, 56 USB2_HUB_FEATURE_PORT_LOW_SPEED = 9, 57 57 USB_HUB_FEATURE_C_PORT_CONNECTION = 16, 58 USB _HUB_FEATURE_C_PORT_ENABLE = 17,59 USB _HUB_FEATURE_C_PORT_SUSPEND = 18,58 USB2_HUB_FEATURE_C_PORT_ENABLE = 17, 59 USB2_HUB_FEATURE_C_PORT_SUSPEND = 18, 60 60 USB_HUB_FEATURE_C_PORT_OVER_CURRENT = 19, 61 61 USB_HUB_FEATURE_C_PORT_RESET = 20, 62 USB_HUB_FEATURE_C_PORT_LINK_STATE = 22, 63 USB_HUB_FEATURE_PORT_TEST = 21, 64 USB_HUB_FEATURE_PORT_INDICATOR = 22 62 USB2_HUB_FEATURE_PORT_TEST = 21, 63 USB2_HUB_FEATURE_PORT_INDICATOR = 22, 64 USB3_HUB_FEATURE_C_PORT_LINK_STATE = 25, 65 USB3_HUB_FEATURE_BH_PORT_RESET = 28, 66 USB3_HUB_FEATURE_C_BH_PORT_RESET = 29, 65 67 /* USB_HUB_FEATURE_ = , */ 66 68 } usb_hub_class_feature_t; 67 69 70 /** 71 * Dword holding port status and changes flags. 72 * 73 * For more information refer to tables 11-15 and 11-16 in 74 * "Universal Serial Bus Specification Revision 1.1" pages 274 and 277 75 * (290 and 293 in pdf) 76 * 77 * Beware that definition of bits changed between USB 2 and 3, 78 * so some fields are prefixed with USB2 or USB3 instead. 79 */ 80 typedef uint32_t usb_port_status_t; 81 82 #define USB_HUB_PORT_STATUS_BIT(bit) (uint32_usb2host(1 << (bit))) 83 #define USB_HUB_PORT_STATUS_CONNECTION USB_HUB_PORT_STATUS_BIT(0) 84 #define USB_HUB_PORT_STATUS_ENABLE USB_HUB_PORT_STATUS_BIT(1) 85 #define USB2_HUB_PORT_STATUS_SUSPEND USB_HUB_PORT_STATUS_BIT(2) 86 #define USB_HUB_PORT_STATUS_OC USB_HUB_PORT_STATUS_BIT(3) 87 #define USB_HUB_PORT_STATUS_RESET USB_HUB_PORT_STATUS_BIT(4) 88 89 #define USB2_HUB_PORT_STATUS_POWER USB_HUB_PORT_STATUS_BIT(8) 90 #define USB2_HUB_PORT_STATUS_LOW_SPEED USB_HUB_PORT_STATUS_BIT(9) 91 #define USB3_HUB_PORT_STATUS_POWER USB_HUB_PORT_STATUS_BIT(9) 92 #define USB2_HUB_PORT_STATUS_HIGH_SPEED USB_HUB_PORT_STATUS_BIT(10) 93 #define USB2_HUB_PORT_STATUS_TEST USB_HUB_PORT_STATUS_BIT(11) 94 #define USB2_HUB_PORT_STATUS_INDICATOR USB_HUB_PORT_STATUS_BIT(12) 95 96 #define USB_HUB_PORT_STATUS_C_CONNECTION USB_HUB_PORT_STATUS_BIT(16) 97 #define USB2_HUB_PORT_STATUS_C_ENABLE USB_HUB_PORT_STATUS_BIT(17) 98 #define USB2_HUB_PORT_STATUS_C_SUSPEND USB_HUB_PORT_STATUS_BIT(18) 99 #define USB_HUB_PORT_STATUS_C_OC USB_HUB_PORT_STATUS_BIT(19) 100 #define USB_HUB_PORT_STATUS_C_RESET USB_HUB_PORT_STATUS_BIT(20) 101 #define USB3_HUB_PORT_STATUS_C_BH_RESET USB_HUB_PORT_STATUS_BIT(21) 102 #define USB3_HUB_PORT_STATUS_C_LINK_STATE USB_HUB_PORT_STATUS_BIT(22) 103 #define USB3_HUB_PORT_STATUS_C_CONFIG_ERROR USB_HUB_PORT_STATUS_BIT(23) 68 104 69 105 /** Header of standard hub descriptor without the "variadic" part. */
Note:
See TracChangeset
for help on using the changeset viewer.