Changes in uspace/drv/usbhub/utils.c [f9a0cef:9223dc5c] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/usbhub/utils.c
rf9a0cef r9223dc5c 506 506 int hc, uint16_t port, usb_target_t target) { 507 507 508 usb_device_request_setup_packet_t request; 508 509 int opResult; 509 510 printf("[usb_hub] finalizing add device\n"); 510 opResult = usb_hub_clear_port_feature(hc, target.address, 511 port, USB_HUB_FEATURE_C_PORT_RESET); 512 if (opResult != EOK) { 513 goto release; 514 } 515 516 /* Request address at from host controller. */ 517 usb_address_t new_device_address = usb_drv_request_address(hc); 518 if (new_device_address < 0) { 519 printf("[usb_hub] failed to get free USB address\n"); 520 opResult = new_device_address; 521 goto release; 522 } 523 printf("[usb_hub] setting new address\n"); 524 opResult = usb_drv_req_set_address(hc, USB_ADDRESS_DEFAULT, 525 new_device_address); 526 511 usb_address_t new_device_address = 512 usb_drv_request_address(hc); 513 usb_hub_set_set_address_request 514 (&request, new_device_address); 515 opResult = usb_drv_sync_control_write( 516 hc, target, 517 &request, 518 NULL, 0 519 ); 527 520 if (opResult != EOK) { 528 521 printf("[usb_hub] could not set address for new device\n"); 529 goto release; 530 } 531 532 release: 533 printf("[usb_hub] releasing default address\n"); 522 //will retry later... 523 return; 524 } 525 534 526 usb_drv_release_default_address(hc); 535 if (opResult != EOK) {536 return;537 }538 527 539 528 devman_handle_t child_handle; 540 529 opResult = usb_drv_register_child_in_devman(hc, hub->device, 541 530 new_device_address, &child_handle); 542 531 if (opResult != EOK) { 543 532 printf("[usb_hub] could not start driver for new device \n"); … … 554 543 printf("[usb_hub] new device address %d, handle %d\n", 555 544 new_device_address, child_handle); 545 sleep(60); 556 546 557 547 } … … 630 620 //something connected/disconnected 631 621 if (usb_port_connect_change(&status)) { 632 opResult = usb_hub_clear_port_feature(hc, target.address,633 port, USB_HUB_FEATURE_C_PORT_CONNECTION);634 // TODO: check opResult635 622 if (usb_port_dev_connected(&status)) { 636 623 printf("[usb_hub] some connection changed\n"); … … 642 629 //port reset 643 630 if (usb_port_reset_completed(&status)) { 644 printf("[usb_hub] port reset complete\n");631 printf("[usb_hub] finalizing add device\n"); 645 632 if (usb_port_enabled(&status)) { 646 633 usb_hub_finalize_add_device(hub, hc, port, target); … … 683 670 lst_item != &usb_hub_list; 684 671 lst_item = lst_item->next) { 672 printf("[usb_hub] checking hub changes\n"); 685 673 usb_hub_info_t * hub_info = ((usb_hub_info_t*)lst_item->data); 686 674 /* … … 691 679 target.address = hub_info->usb_device->address; 692 680 target.endpoint = 1;/// \TODO get from endpoint descriptor 693 printf("[usb_hub] checking changes for hub at addr %d\n", 694 target.address); 681 printf("checking changes for hub at addr %d \n",target.address); 695 682 696 683 size_t port_count = hub_info->port_count;
Note:
See TracChangeset
for help on using the changeset viewer.