Changeset 0fe2ff1 in mainline
- Timestamp:
- 2011-10-16T17:02:02Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 19746a96
- Parents:
- dab3112
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/usb/ohci/root_hub.c
rdab3112 r0fe2ff1 108 108 static void create_serialized_hub_descriptor(rh_t *instance); 109 109 static void rh_init_descriptors(rh_t *instance); 110 static uint16_t create_interrupt_mask(rh_t *instance); 111 static int get_status(rh_t *instance, usb_transfer_batch_t *request); 112 static int get_descriptor(rh_t *instance, usb_transfer_batch_t *request); 113 static int set_feature(rh_t *instance, usb_transfer_batch_t *request); 114 static int clear_feature(rh_t *instance, usb_transfer_batch_t *request); 115 static int set_feature_port(rh_t *instance, uint16_t feature, uint16_t port); 116 static int clear_feature_port(rh_t *instance, uint16_t feature, uint16_t port); 110 static uint16_t create_interrupt_mask(const rh_t *instance); 111 static int get_status(const rh_t *instance, usb_transfer_batch_t *request); 112 static int get_descriptor(const rh_t *instance, usb_transfer_batch_t *request); 113 static int set_feature(const rh_t *instance, usb_transfer_batch_t *request); 114 static int clear_feature(const rh_t *instance, usb_transfer_batch_t *request); 115 static int set_feature_port( 116 const rh_t *instance, uint16_t feature, uint16_t port); 117 static int clear_feature_port( 118 const rh_t *instance, uint16_t feature, uint16_t port); 117 119 static int control_request(rh_t *instance, usb_transfer_batch_t *request); 118 120 static inline void interrupt_request( … … 153 155 instance->unfinished_interrupt_transfer = NULL; 154 156 155 #if defOHCI_POWER_SWITCH_no157 #if defined OHCI_POWER_SWITCH_no 156 158 /* Set port power mode to no power-switching. (always on) */ 157 159 instance->registers->rh_desc_a |= RHDA_NPS_FLAG; 160 158 161 /* Set to no over-current reporting */ 159 162 instance->registers->rh_desc_a |= RHDA_NOCP_FLAG; 163 160 164 #elif defined OHCI_POWER_SWITCH_ganged 161 165 /* Set port power mode to no ganged power-switching. */ … … 163 167 instance->registers->rh_desc_a &= ~RHDA_PSM_FLAG; 164 168 instance->registers->rh_status = RHS_CLEAR_GLOBAL_POWER; 169 165 170 /* Set to global over-current */ 166 171 instance->registers->rh_desc_a &= ~RHDA_NOCP_FLAG; … … 174 179 instance->registers->rh_desc_b &= (RHDB_PCC_MASK << RHDB_PCC_SHIFT); 175 180 instance->registers->rh_status = RHS_CLEAR_GLOBAL_POWER; 181 176 182 /* Return control to per port state */ 177 183 instance->registers->rh_desc_b |= 178 184 ((1 << (instance->port_count + 1)) - 1) << RHDB_PCC_SHIFT; 185 179 186 /* Set per port over-current */ 180 187 instance->registers->rh_desc_a &= ~RHDA_NOCP_FLAG; … … 342 349 * @return Mask of changes. 343 350 */ 344 uint16_t create_interrupt_mask( rh_t *instance)351 uint16_t create_interrupt_mask(const rh_t *instance) 345 352 { 346 353 assert(instance); … … 372 379 * @return error code 373 380 */ 374 int get_status( rh_t *instance, usb_transfer_batch_t *request)381 int get_status(const rh_t *instance, usb_transfer_batch_t *request) 375 382 { 376 383 assert(instance); … … 418 425 * @return Error code 419 426 */ 420 int get_descriptor( rh_t *instance, usb_transfer_batch_t *request)427 int get_descriptor(const rh_t *instance, usb_transfer_batch_t *request) 421 428 { 422 429 assert(instance); … … 496 503 * @return error code 497 504 */ 498 int set_feature_port( rh_t *instance, uint16_t feature, uint16_t port)505 int set_feature_port(const rh_t *instance, uint16_t feature, uint16_t port) 499 506 { 500 507 assert(instance); … … 535 542 * @return error code 536 543 */ 537 int clear_feature_port( rh_t *instance, uint16_t feature, uint16_t port)544 int clear_feature_port(const rh_t *instance, uint16_t feature, uint16_t port) 538 545 { 539 546 assert(instance); … … 592 599 * @return error code 593 600 */ 594 int set_feature( rh_t *instance, usb_transfer_batch_t *request)601 int set_feature(const rh_t *instance, usb_transfer_batch_t *request) 595 602 { 596 603 assert(instance); … … 628 635 * @return error code 629 636 */ 630 int clear_feature( rh_t *instance, usb_transfer_batch_t *request)637 int clear_feature(const rh_t *instance, usb_transfer_batch_t *request) 631 638 { 632 639 assert(instance); … … 635 642 const usb_device_request_setup_packet_t *setup_request = 636 643 (usb_device_request_setup_packet_t *) request->setup_buffer; 644 637 645 request->transfered_size = 0; 646 638 647 switch (setup_request->request_type) 639 648 { … … 647 656 /* 648 657 * Chapter 11.16.2 specifies that only C_HUB_LOCAL_POWER and 649 * C_HUB_OVER_CURRENT are supported. C_HUB_OVER_CURRENT is represented 650 * by OHCI RHS_OCIC_FLAG. C_HUB_LOCAL_POWER is not supported 658 * C_HUB_OVER_CURRENT are supported. 659 * C_HUB_OVER_CURRENT is represented by OHCI RHS_OCIC_FLAG. 660 * C_HUB_LOCAL_POWER is not supported 651 661 * as root hubs do not support local power status feature. 652 662 * (OHCI pg. 127) */ … … 720 730 "additional data\n"); 721 731 return clear_feature(instance, request); 732 722 733 case USB_DEVREQ_SET_FEATURE: 723 734 usb_log_debug2("Processing request without "
Note:
See TracChangeset
for help on using the changeset viewer.