Changeset 039c66c in mainline
- Timestamp:
- 2011-03-16T21:00:17Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 0fd82c9, 4f66cc7b, d142e75
- Parents:
- fcf07e6 (diff), 42a3a57 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - Location:
- uspace/drv/usbhub
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/usbhub/usbhub.c
rfcf07e6 r039c66c 72 72 int usb_hub_control_loop(void * hub_info_param){ 73 73 usb_hub_info_t * hub_info = (usb_hub_info_t*)hub_info_param; 74 while(true){ 75 usb_hub_check_hub_changes(hub_info); 74 int errorCode = EOK; 75 76 while(errorCode == EOK){ 77 errorCode = usb_hub_check_hub_changes(hub_info); 76 78 async_usleep(1000 * 1000 );/// \TODO proper number once 77 79 } 80 dprintf(USB_LOG_LEVEL_ERROR, 81 "something in ctrl loop went wrong, errno %d",errorCode); 78 82 return 0; 79 83 } … … 380 384 * @param target 381 385 */ 382 static void usb_hub_init_add_device(usb_hub_info_t * hub, uint16_t port) { 386 static void usb_hub_init_add_device(usb_hub_info_t * hub, uint16_t port, 387 bool isLowSpeed) { 383 388 usb_device_request_setup_packet_t request; 384 389 int opResult; … … 386 391 assert(hub->endpoints.control.hc_phone); 387 392 //get default address 388 //opResult = usb_drv_reserve_default_address(hc);389 opResult = usb_hc_reserve_default_address(&hub->connection, USB_SPEED_LOW);393 usb_speed_t speed = isLowSpeed?USB_SPEED_LOW:USB_SPEED_FULL; 394 opResult = usb_hc_reserve_default_address(&hub->connection, speed); 390 395 391 396 if (opResult != EOK) { … … 446 451 usb_address_t new_device_address = usb_hc_request_address( 447 452 &hub->connection, 448 speed /// \TODO fullspeed??453 speed 449 454 ); 450 455 if (new_device_address < 0) { … … 510 515 static void usb_hub_removed_device( 511 516 usb_hub_info_t * hub,uint16_t port) { 512 //usb_device_request_setup_packet_t request; 513 int opResult; 514 517 515 518 /** \TODO remove device from device manager - not yet implemented in 516 519 * devide manager … … 519 522 //close address 520 523 if(hub->attached_devs[port].address!=0){ 521 / /opResult = usb_drv_release_address(hc,hub->attached_devs[port].address);524 /*uncomment this code to use it when DDF allows device removal 522 525 opResult = usb_hc_unregister_device( 523 526 &hub->connection, hub->attached_devs[port].address); … … 528 531 hub->attached_devs[port].address = 0; 529 532 hub->attached_devs[port].handle = 0; 533 */ 530 534 }else{ 531 535 dprintf(USB_LOG_LEVEL_WARNING, "this is strange, disconnected device had no address"); … … 597 601 if (usb_port_dev_connected(&status)) { 598 602 dprintf(USB_LOG_LEVEL_INFO, "some connection changed"); 599 usb_hub_init_add_device(hub, port );603 usb_hub_init_add_device(hub, port, usb_port_low_speed(&status)); 600 604 } else { 601 605 usb_hub_removed_device(hub, port); … … 635 639 /** 636 640 * Check changes on particular hub 637 * @param hub_info_param 638 */ 639 void usb_hub_check_hub_changes(usb_hub_info_t * hub_info){ 641 * @param hub_info_param pointer to usb_hub_info_t structure 642 * @return error code if there is problem when initializing communication with 643 * hub, EOK otherwise 644 */ 645 int usb_hub_check_hub_changes(usb_hub_info_t * hub_info){ 640 646 int opResult; 641 647 opResult = usb_endpoint_pipe_start_session(&hub_info->endpoints.status_change); … … 643 649 dprintf(USB_LOG_LEVEL_ERROR, 644 650 "could not initialize communication for hub; %d", opResult); 645 return ;651 return opResult; 646 652 } 647 653 … … 665 671 dprintf(USB_LOG_LEVEL_WARNING, "something went wrong while getting status of hub"); 666 672 usb_endpoint_pipe_end_session(&hub_info->endpoints.status_change); 667 return ;673 return opResult; 668 674 } 669 675 unsigned int port; … … 673 679 opResult); 674 680 usb_endpoint_pipe_end_session(&hub_info->endpoints.status_change); 675 return ;681 return opResult; 676 682 } 677 683 opResult = usb_hc_connection_open(&hub_info->connection); … … 681 687 usb_endpoint_pipe_end_session(&hub_info->endpoints.control); 682 688 usb_endpoint_pipe_end_session(&hub_info->endpoints.status_change); 683 return ;689 return opResult; 684 690 } 685 691 … … 697 703 usb_endpoint_pipe_end_session(&hub_info->endpoints.status_change); 698 704 free(change_bitmap); 705 return EOK; 699 706 } 700 707 -
uspace/drv/usbhub/usbhub.h
rfcf07e6 r039c66c 87 87 88 88 /** 89 * check changes on specified hub89 * Check changes on specified hub 90 90 * @param hub_info_param pointer to usb_hub_info_t structure 91 * @return error code if there is problem when initializing communication with 92 * hub, EOK otherwise 91 93 */ 92 voidusb_hub_check_hub_changes(usb_hub_info_t * hub_info_param);94 int usb_hub_check_hub_changes(usb_hub_info_t * hub_info_param); 93 95 94 96
Note:
See TracChangeset
for help on using the changeset viewer.