Changes in uspace/drv/usbhub/port_status.h [d7f3040:8123695a] in mainline
- File:
-
- 1 edited
-
uspace/drv/usbhub/port_status.h (modified) (16 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/usbhub/port_status.h
rd7f3040 r8123695a 49 49 50 50 /** 51 * structure holding hub status and changes flags.52 * should not be accessed directly, use supplied getter/setter methods.53 *54 * For more information refer to table 11.16.2.5 in55 * "Universal Serial Bus Specification Revision 1.1"56 *57 */58 typedef uint32_t usb_hub_status_t;59 60 /**61 51 * set values in request to be it a port status request 62 52 * @param request … … 64 54 */ 65 55 static inline void usb_hub_set_port_status_request( 66 usb_device_request_setup_packet_t * request, uint16_t port67 ){56 usb_device_request_setup_packet_t * request, uint16_t port 57 ){ 68 58 request->index = port; 69 59 request->request_type = USB_HUB_REQ_TYPE_GET_PORT_STATUS; … … 73 63 } 74 64 75 /**76 * set values in request to be it a port status request77 * @param request78 * @param port79 */80 static inline void usb_hub_set_hub_status_request(81 usb_device_request_setup_packet_t * request82 ) {83 request->index = 0;84 request->request_type = USB_HUB_REQ_TYPE_GET_HUB_STATUS;85 request->request = USB_HUB_REQUEST_GET_STATUS;86 request->value = 0;87 request->length = 4;88 }89 65 90 66 /** … … 94 70 */ 95 71 static inline usb_device_request_setup_packet_t * 96 usb_hub_create_port_status_request(uint16_t port) {72 usb_hub_create_port_status_request(uint16_t port){ 97 73 usb_device_request_setup_packet_t * result = 98 74 usb_new(usb_device_request_setup_packet_t); 99 usb_hub_set_port_status_request(result, port);75 usb_hub_set_port_status_request(result,port); 100 76 return result; 101 77 } 102 78 79 103 80 /** 104 81 * set the device request to be a port feature enable request … … 108 85 */ 109 86 static inline void usb_hub_set_enable_port_feature_request( 110 usb_device_request_setup_packet_t * request, uint16_t port,111 uint16_t feature_selector112 ){87 usb_device_request_setup_packet_t * request, uint16_t port, 88 uint16_t feature_selector 89 ){ 113 90 request->index = port; 114 91 request->request_type = USB_HUB_REQ_TYPE_SET_PORT_FEATURE; … … 125 102 */ 126 103 static inline void usb_hub_set_disable_port_feature_request( 127 usb_device_request_setup_packet_t * request, uint16_t port,128 uint16_t feature_selector129 ){104 usb_device_request_setup_packet_t * request, uint16_t port, 105 uint16_t feature_selector 106 ){ 130 107 request->index = port; 131 108 request->request_type = USB_HUB_REQ_TYPE_SET_PORT_FEATURE; … … 141 118 */ 142 119 static inline void usb_hub_set_enable_port_request( 143 usb_device_request_setup_packet_t * request, uint16_t port144 ){120 usb_device_request_setup_packet_t * request, uint16_t port 121 ){ 145 122 request->index = port; 146 123 request->request_type = USB_HUB_REQ_TYPE_SET_PORT_FEATURE; … … 156 133 */ 157 134 static inline usb_device_request_setup_packet_t * 158 usb_hub_create_enable_port_request(uint16_t port) {135 usb_hub_create_enable_port_request(uint16_t port){ 159 136 usb_device_request_setup_packet_t * result = 160 137 usb_new(usb_device_request_setup_packet_t); 161 usb_hub_set_enable_port_request(result, port);138 usb_hub_set_enable_port_request(result,port); 162 139 return result; 163 140 } … … 169 146 */ 170 147 static inline void usb_hub_set_disable_port_request( 171 usb_device_request_setup_packet_t * request, uint16_t port172 ){148 usb_device_request_setup_packet_t * request, uint16_t port 149 ){ 173 150 request->index = port; 174 151 request->request_type = USB_HUB_REQ_TYPE_SET_PORT_FEATURE; … … 184 161 */ 185 162 static inline usb_device_request_setup_packet_t * 186 usb_hub_create_disable_port_request(uint16_t port) {163 usb_hub_create_disable_port_request(uint16_t port){ 187 164 usb_device_request_setup_packet_t * result = 188 165 usb_new(usb_device_request_setup_packet_t); 189 usb_hub_set_disable_port_request(result, port);166 usb_hub_set_disable_port_request(result,port); 190 167 return result; 191 168 } … … 197 174 */ 198 175 static inline void usb_hub_set_reset_port_request( 199 usb_device_request_setup_packet_t * request, uint16_t port200 ){176 usb_device_request_setup_packet_t * request, uint16_t port 177 ){ 201 178 request->index = port; 202 179 request->request_type = USB_HUB_REQ_TYPE_SET_PORT_FEATURE; … … 212 189 */ 213 190 static inline usb_device_request_setup_packet_t * 214 usb_hub_create_reset_port_request(uint16_t port) {191 usb_hub_create_reset_port_request(uint16_t port){ 215 192 usb_device_request_setup_packet_t * result = 216 193 usb_new(usb_device_request_setup_packet_t); 217 usb_hub_set_reset_port_request(result, port);194 usb_hub_set_reset_port_request(result,port); 218 195 return result; 219 196 } … … 225 202 */ 226 203 static inline void usb_hub_set_power_port_request( 227 usb_device_request_setup_packet_t * request, uint16_t port228 ){204 usb_device_request_setup_packet_t * request, uint16_t port 205 ){ 229 206 request->index = port; 230 207 request->request_type = USB_HUB_REQ_TYPE_SET_PORT_FEATURE; … … 240 217 */ 241 218 static inline void usb_hub_unset_power_port_request( 242 usb_device_request_setup_packet_t * request, uint16_t port243 ){219 usb_device_request_setup_packet_t * request, uint16_t port 220 ){ 244 221 request->index = port; 245 222 request->request_type = USB_HUB_REQ_TYPE_SET_PORT_FEATURE; … … 249 226 } 250 227 251 /** 252 * get i`th bit of port status 253 * 254 * @param status 255 * @param idx 256 * @return 257 */ 258 static inline bool usb_port_get_bit(usb_port_status_t * status, int idx) { 259 return ((*status)&(1 << idx))!=0; 260 } 261 262 /** 263 * set i`th bit of port status 264 * 265 * @param status 266 * @param idx 267 * @param value 268 */ 228 229 /** get i`th bit of port status */ 230 static inline bool usb_port_get_bit(usb_port_status_t * status, int idx) 231 { 232 return (((*status)>>(idx))%2); 233 } 234 235 /** set i`th bit of port status */ 269 236 static inline void usb_port_set_bit( 270 usb_port_status_t * status, int idx, bool value) { 271 (*status) = value ? 272 ((*status) | (1 << (idx))) : 273 ((*status)&(~(1 << (idx)))); 274 } 275 276 /** 277 * get i`th bit of hub status 278 * 279 * @param status 280 * @param idx 281 * @return 282 */ 283 static inline bool usb_hub_get_bit(usb_hub_status_t * status, int idx) { 284 return (*status)&(1 << idx); 285 } 286 287 /** 288 * set i`th bit of hub status 289 * 290 * @param status 291 * @param idx 292 * @param value 293 */ 294 static inline void usb_hub_set_bit( 295 usb_hub_status_t * status, int idx, bool value) { 296 (*status) = value ? 297 ((*status) | (1 << (idx))) : 298 ((*status)&(~(1 << (idx)))); 299 } 300 301 /** 302 * connection status geter for port status 303 * 304 * @param status 305 * @return true if there is something connected 306 */ 307 static inline bool usb_port_dev_connected(usb_port_status_t * status) { 308 return usb_port_get_bit(status, 0); 309 } 310 311 static inline void usb_port_set_dev_connected(usb_port_status_t * status, bool connected) { 312 usb_port_set_bit(status, 0, connected); 237 usb_port_status_t * status, int idx, bool value) 238 { 239 (*status) = value? 240 ((*status)|(1<<(idx))): 241 ((*status)&(~(1<<(idx)))); 242 } 243 244 //device connnected on port 245 static inline bool usb_port_dev_connected(usb_port_status_t * status){ 246 return usb_port_get_bit(status,0); 247 } 248 249 static inline void usb_port_set_dev_connected(usb_port_status_t * status,bool connected){ 250 usb_port_set_bit(status,0,connected); 313 251 } 314 252 315 253 //port enabled 316 317 /** 318 * port enabled getter for port status 319 * 320 * @param status 321 * @return true if the port is enabled 322 */ 323 static inline bool usb_port_enabled(usb_port_status_t * status) { 324 return usb_port_get_bit(status, 1); 325 } 326 327 static inline void usb_port_set_enabled(usb_port_status_t * status, bool enabled) { 328 usb_port_set_bit(status, 1, enabled); 254 static inline bool usb_port_enabled(usb_port_status_t * status){ 255 return usb_port_get_bit(status,1); 256 } 257 258 static inline void usb_port_set_enabled(usb_port_status_t * status,bool enabled){ 259 usb_port_set_bit(status,1,enabled); 329 260 } 330 261 331 262 //port suspended 332 /** 333 * port suspended getter for port status 334 * 335 * @param status 336 * @return true if port is suspended 337 */ 338 static inline bool usb_port_suspended(usb_port_status_t * status) { 339 return usb_port_get_bit(status, 2); 340 } 341 342 static inline void usb_port_set_suspended(usb_port_status_t * status, bool suspended) { 343 usb_port_set_bit(status, 2, suspended); 263 static inline bool usb_port_suspended(usb_port_status_t * status){ 264 return usb_port_get_bit(status,2); 265 } 266 267 static inline void usb_port_set_suspended(usb_port_status_t * status,bool suspended){ 268 usb_port_set_bit(status,2,suspended); 344 269 } 345 270 346 271 //over currect 347 /** 348 * over current condition indicator getter for port status 349 * 350 * @param status 351 * @return true if there is opver-current condition on the hub 352 */ 353 static inline bool usb_port_over_current(usb_port_status_t * status) { 354 return usb_port_get_bit(status, 3); 355 } 356 357 static inline void usb_port_set_over_current(usb_port_status_t * status, bool value) { 358 usb_port_set_bit(status, 3, value); 272 static inline bool usb_port_over_current(usb_port_status_t * status){ 273 return usb_port_get_bit(status,3); 274 } 275 276 static inline void usb_port_set_over_current(usb_port_status_t * status,bool value){ 277 usb_port_set_bit(status,3,value); 359 278 } 360 279 361 280 //port reset 362 /** 363 * port reset indicator getter for port status 364 * 365 * @param status 366 * @return true if port is reset 367 */ 368 static inline bool usb_port_reset(usb_port_status_t * status) { 369 return usb_port_get_bit(status, 4); 370 } 371 372 static inline void usb_port_set_reset(usb_port_status_t * status, bool value) { 373 usb_port_set_bit(status, 4, value); 281 static inline bool usb_port_reset(usb_port_status_t * status){ 282 return usb_port_get_bit(status,4); 283 } 284 285 static inline void usb_port_set_reset(usb_port_status_t * status,bool value){ 286 usb_port_set_bit(status,4,value); 374 287 } 375 288 376 289 //powered 377 /** 378 * power state getter for port status 379 * 380 * @param status 381 * @return true if port is powered 382 */ 383 static inline bool usb_port_powered(usb_port_status_t * status) { 384 return usb_port_get_bit(status, 8); 385 } 386 387 static inline void usb_port_set_powered(usb_port_status_t * status, bool powered) { 388 usb_port_set_bit(status, 8, powered); 290 static inline bool usb_port_powered(usb_port_status_t * status){ 291 return usb_port_get_bit(status,8); 292 } 293 294 static inline void usb_port_set_powered(usb_port_status_t * status,bool powered){ 295 usb_port_set_bit(status,8,powered); 389 296 } 390 297 391 298 //low speed device attached 392 /** 393 * low speed device on the port indicator 394 * 395 * @param status 396 * @return true if low speed device is attached 397 */ 398 static inline bool usb_port_low_speed(usb_port_status_t * status) { 399 return usb_port_get_bit(status, 9); 400 } 401 402 static inline void usb_port_set_low_speed(usb_port_status_t * status, bool low_speed) { 403 usb_port_set_bit(status, 9, low_speed); 404 } 405 406 //high speed device attached 407 /** 408 * high speed device on the port indicator 409 * 410 * @param status 411 * @return true if high speed device is on port 412 */ 413 static inline bool usb_port_high_speed(usb_port_status_t * status) { 414 return usb_port_get_bit(status, 10); 415 } 416 417 static inline void usb_port_set_high_speed(usb_port_status_t * status, bool high_speed) { 418 usb_port_set_bit(status, 10, high_speed); 419 } 420 421 /** 422 * speed getter for port status 423 * 424 * @param status 425 * @return speed of usb device (for more see usb specification) 426 */ 427 static inline usb_speed_t usb_port_speed(usb_port_status_t * status) { 428 if (usb_port_low_speed(status)) 299 static inline bool usb_port_low_speed(usb_port_status_t * status){ 300 return usb_port_get_bit(status,9); 301 } 302 303 static inline void usb_port_set_low_speed(usb_port_status_t * status,bool low_speed){ 304 usb_port_set_bit(status,9,low_speed); 305 } 306 307 //low speed device attached 308 static inline bool usb_port_high_speed(usb_port_status_t * status){ 309 return usb_port_get_bit(status,10); 310 } 311 312 static inline void usb_port_set_high_speed(usb_port_status_t * status,bool high_speed){ 313 usb_port_set_bit(status,10,high_speed); 314 } 315 316 static inline usb_speed_t usb_port_speed(usb_port_status_t * status){ 317 if(usb_port_low_speed(status)) 429 318 return USB_SPEED_LOW; 430 if (usb_port_high_speed(status))319 if(usb_port_high_speed(status)) 431 320 return USB_SPEED_HIGH; 432 321 return USB_SPEED_FULL; … … 435 324 436 325 //connect change 437 /** 438 * port connect change indicator 439 * 440 * @param status 441 * @return true if connection has changed 442 */ 443 static inline bool usb_port_connect_change(usb_port_status_t * status) { 444 return usb_port_get_bit(status, 16); 445 } 446 447 static inline void usb_port_set_connect_change(usb_port_status_t * status, bool change) { 448 usb_port_set_bit(status, 16, change); 326 static inline bool usb_port_connect_change(usb_port_status_t * status){ 327 return usb_port_get_bit(status,16); 328 } 329 330 static inline void usb_port_set_connect_change(usb_port_status_t * status,bool change){ 331 usb_port_set_bit(status,16,change); 449 332 } 450 333 451 334 //port enable change 452 /** 453 * port enable change for port status 454 * 455 * @param status 456 * @return true if the port has been enabled/disabled 457 */ 458 static inline bool usb_port_enabled_change(usb_port_status_t * status) { 459 return usb_port_get_bit(status, 17); 460 } 461 462 static inline void usb_port_set_enabled_change(usb_port_status_t * status, bool change) { 463 usb_port_set_bit(status, 17, change); 335 static inline bool usb_port_enabled_change(usb_port_status_t * status){ 336 return usb_port_get_bit(status,17); 337 } 338 339 static inline void usb_port_set_enabled_change(usb_port_status_t * status,bool change){ 340 usb_port_set_bit(status,17,change); 464 341 } 465 342 466 343 //suspend change 467 /** 468 * port suspend change for port status 469 * 470 * @param status 471 * @return ture if suspend status has changed 472 */ 473 static inline bool usb_port_suspend_change(usb_port_status_t * status) { 474 return usb_port_get_bit(status, 18); 475 } 476 477 static inline void usb_port_set_suspend_change(usb_port_status_t * status, bool change) { 478 usb_port_set_bit(status, 18, change); 344 static inline bool usb_port_suspend_change(usb_port_status_t * status){ 345 return usb_port_get_bit(status,18); 346 } 347 348 static inline void usb_port_set_suspend_change(usb_port_status_t * status,bool change){ 349 usb_port_set_bit(status,18,change); 479 350 } 480 351 481 352 //over current change 482 /** 483 * over current change indicator 484 * 485 * @param status 486 * @return true if over-current condition on port has changed 487 */ 488 static inline bool usb_port_overcurrent_change(usb_port_status_t * status) { 489 return usb_port_get_bit(status, 19); 490 } 491 492 static inline void usb_port_set_overcurrent_change(usb_port_status_t * status, bool change) { 493 usb_port_set_bit(status, 19, change); 353 static inline bool usb_port_overcurrent_change(usb_port_status_t * status){ 354 return usb_port_get_bit(status,19); 355 } 356 357 static inline void usb_port_set_overcurrent_change(usb_port_status_t * status,bool change){ 358 usb_port_set_bit(status,19,change); 494 359 } 495 360 496 361 //reset change 497 /** 498 * port reset change indicator 499 * @param status 500 * @return true if port has been reset 501 */ 502 static inline bool usb_port_reset_completed(usb_port_status_t * status) { 503 return usb_port_get_bit(status, 20); 504 } 505 506 static inline void usb_port_set_reset_completed(usb_port_status_t * status, bool completed) { 507 usb_port_set_bit(status, 20, completed); 508 } 509 510 //local power status 511 /** 512 * local power lost indicator for hub status 513 * 514 * @param status 515 * @return true if hub is not powered 516 */ 517 static inline bool usb_hub_local_power_lost(usb_hub_status_t * status) { 518 return usb_hub_get_bit(status, 0); 519 } 520 521 static inline void usb_hub_set_local_power_lost(usb_port_status_t * status, 522 bool power_lost) { 523 usb_hub_set_bit(status, 0, power_lost); 524 } 525 526 //over current ocndition 527 /** 528 * hub over-current indicator 529 * 530 * @param status 531 * @return true if over-current condition occurred on hub 532 */ 533 static inline bool usb_hub_over_current(usb_hub_status_t * status) { 534 return usb_hub_get_bit(status, 1); 535 } 536 537 static inline void usb_hub_set_over_current(usb_port_status_t * status, 538 bool over_current) { 539 usb_hub_set_bit(status, 1, over_current); 540 } 541 542 //local power change 543 /** 544 * hub power change indicator 545 * 546 * @param status 547 * @return true if local power status has been changed - power has been 548 * dropped or re-established 549 */ 550 static inline bool usb_hub_local_power_change(usb_hub_status_t * status) { 551 return usb_hub_get_bit(status, 16); 552 } 553 554 static inline void usb_hub_set_local_power_change(usb_port_status_t * status, 555 bool change) { 556 usb_hub_set_bit(status, 16, change); 557 } 558 559 //local power status 560 /** 561 * hub over-current condition change indicator 562 * 563 * @param status 564 * @return true if over-current condition has changed 565 */ 566 static inline bool usb_hub_over_current_change(usb_hub_status_t * status) { 567 return usb_hub_get_bit(status, 17); 568 } 569 570 static inline void usb_hub_set_over_current_change(usb_port_status_t * status, 571 bool change) { 572 usb_hub_set_bit(status, 17, change); 573 } 362 static inline bool usb_port_reset_completed(usb_port_status_t * status){ 363 return usb_port_get_bit(status,20); 364 } 365 366 static inline void usb_port_set_reset_completed(usb_port_status_t * status,bool completed){ 367 usb_port_set_bit(status,20,completed); 368 } 369 574 370 575 371
Note:
See TracChangeset
for help on using the changeset viewer.
