Changes in uspace/drv/usbhub/port_status.h [8123695a:d7f3040] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/usbhub/port_status.h
r8123695a rd7f3040 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 in 55 * "Universal Serial Bus Specification Revision 1.1" 56 * 57 */ 58 typedef uint32_t usb_hub_status_t; 59 60 /** 51 61 * set values in request to be it a port status request 52 62 * @param request … … 54 64 */ 55 65 static inline void usb_hub_set_port_status_request( 56 usb_device_request_setup_packet_t * request, uint16_t port57 ){66 usb_device_request_setup_packet_t * request, uint16_t port 67 ) { 58 68 request->index = port; 59 69 request->request_type = USB_HUB_REQ_TYPE_GET_PORT_STATUS; … … 63 73 } 64 74 75 /** 76 * set values in request to be it a port status request 77 * @param request 78 * @param port 79 */ 80 static inline void usb_hub_set_hub_status_request( 81 usb_device_request_setup_packet_t * request 82 ) { 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 } 65 89 66 90 /** … … 70 94 */ 71 95 static inline usb_device_request_setup_packet_t * 72 usb_hub_create_port_status_request(uint16_t port) {96 usb_hub_create_port_status_request(uint16_t port) { 73 97 usb_device_request_setup_packet_t * result = 74 98 usb_new(usb_device_request_setup_packet_t); 75 usb_hub_set_port_status_request(result, port);99 usb_hub_set_port_status_request(result, port); 76 100 return result; 77 101 } 78 102 79 80 103 /** 81 104 * set the device request to be a port feature enable request … … 85 108 */ 86 109 static inline void usb_hub_set_enable_port_feature_request( 87 usb_device_request_setup_packet_t * request, uint16_t port,88 89 ){110 usb_device_request_setup_packet_t * request, uint16_t port, 111 uint16_t feature_selector 112 ) { 90 113 request->index = port; 91 114 request->request_type = USB_HUB_REQ_TYPE_SET_PORT_FEATURE; … … 102 125 */ 103 126 static inline void usb_hub_set_disable_port_feature_request( 104 usb_device_request_setup_packet_t * request, uint16_t port,105 106 ){127 usb_device_request_setup_packet_t * request, uint16_t port, 128 uint16_t feature_selector 129 ) { 107 130 request->index = port; 108 131 request->request_type = USB_HUB_REQ_TYPE_SET_PORT_FEATURE; … … 118 141 */ 119 142 static inline void usb_hub_set_enable_port_request( 120 usb_device_request_setup_packet_t * request, uint16_t port121 ){143 usb_device_request_setup_packet_t * request, uint16_t port 144 ) { 122 145 request->index = port; 123 146 request->request_type = USB_HUB_REQ_TYPE_SET_PORT_FEATURE; … … 133 156 */ 134 157 static inline usb_device_request_setup_packet_t * 135 usb_hub_create_enable_port_request(uint16_t port) {158 usb_hub_create_enable_port_request(uint16_t port) { 136 159 usb_device_request_setup_packet_t * result = 137 160 usb_new(usb_device_request_setup_packet_t); 138 usb_hub_set_enable_port_request(result, port);161 usb_hub_set_enable_port_request(result, port); 139 162 return result; 140 163 } … … 146 169 */ 147 170 static inline void usb_hub_set_disable_port_request( 148 usb_device_request_setup_packet_t * request, uint16_t port149 ){171 usb_device_request_setup_packet_t * request, uint16_t port 172 ) { 150 173 request->index = port; 151 174 request->request_type = USB_HUB_REQ_TYPE_SET_PORT_FEATURE; … … 161 184 */ 162 185 static inline usb_device_request_setup_packet_t * 163 usb_hub_create_disable_port_request(uint16_t port) {186 usb_hub_create_disable_port_request(uint16_t port) { 164 187 usb_device_request_setup_packet_t * result = 165 188 usb_new(usb_device_request_setup_packet_t); 166 usb_hub_set_disable_port_request(result, port);189 usb_hub_set_disable_port_request(result, port); 167 190 return result; 168 191 } … … 174 197 */ 175 198 static inline void usb_hub_set_reset_port_request( 176 usb_device_request_setup_packet_t * request, uint16_t port177 ){199 usb_device_request_setup_packet_t * request, uint16_t port 200 ) { 178 201 request->index = port; 179 202 request->request_type = USB_HUB_REQ_TYPE_SET_PORT_FEATURE; … … 189 212 */ 190 213 static inline usb_device_request_setup_packet_t * 191 usb_hub_create_reset_port_request(uint16_t port) {214 usb_hub_create_reset_port_request(uint16_t port) { 192 215 usb_device_request_setup_packet_t * result = 193 216 usb_new(usb_device_request_setup_packet_t); 194 usb_hub_set_reset_port_request(result, port);217 usb_hub_set_reset_port_request(result, port); 195 218 return result; 196 219 } … … 202 225 */ 203 226 static inline void usb_hub_set_power_port_request( 204 usb_device_request_setup_packet_t * request, uint16_t port205 ){227 usb_device_request_setup_packet_t * request, uint16_t port 228 ) { 206 229 request->index = port; 207 230 request->request_type = USB_HUB_REQ_TYPE_SET_PORT_FEATURE; … … 217 240 */ 218 241 static inline void usb_hub_unset_power_port_request( 219 usb_device_request_setup_packet_t * request, uint16_t port220 ){242 usb_device_request_setup_packet_t * request, uint16_t port 243 ) { 221 244 request->index = port; 222 245 request->request_type = USB_HUB_REQ_TYPE_SET_PORT_FEATURE; … … 226 249 } 227 250 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 */ 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 */ 236 269 static inline void usb_port_set_bit( 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); 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); 251 313 } 252 314 253 315 //port 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); 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); 260 329 } 261 330 262 331 //port 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); 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); 269 344 } 270 345 271 346 //over currect 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); 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); 278 359 } 279 360 280 361 //port reset 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); 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); 287 374 } 288 375 289 376 //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); 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); 296 389 } 297 390 298 391 //low speed device attached 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)) 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)) 318 429 return USB_SPEED_LOW; 319 if (usb_port_high_speed(status))430 if (usb_port_high_speed(status)) 320 431 return USB_SPEED_HIGH; 321 432 return USB_SPEED_FULL; … … 324 435 325 436 //connect 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); 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); 332 449 } 333 450 334 451 //port enable 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); 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); 341 464 } 342 465 343 466 //suspend 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); 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); 350 479 } 351 480 352 481 //over current 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); 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); 359 494 } 360 495 361 496 //reset change 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 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 } 370 574 371 575
Note:
See TracChangeset
for help on using the changeset viewer.