Changes in uspace/drv/usbhub/usbhub.c [ffca03c:7d521e24] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/usbhub/usbhub.c
rffca03c r7d521e24 67 67 usb_hub_status_t status); 68 68 69 static int usb_process_hub_ local_power_change(usb_hub_info_t * hub_info,69 static int usb_process_hub_power_change(usb_hub_info_t * hub_info, 70 70 usb_hub_status_t status); 71 71 … … 386 386 int opResult; 387 387 if (usb_hub_is_status(status,USB_HUB_FEATURE_HUB_OVER_CURRENT)){ 388 //poweroff all ports 389 unsigned int port; 390 for(port = 1;port <= hub_info->port_count;++port){ 391 opResult = usb_hub_clear_port_feature( 392 hub_info->control_pipe,port, 393 USB_HUB_FEATURE_PORT_POWER); 394 if (opResult != EOK) { 395 usb_log_warning( 396 "cannot power off port %d; %d\n", 397 port, opResult); 398 } 388 opResult = usb_hub_clear_feature(hub_info->control_pipe, 389 USB_HUB_FEATURE_HUB_LOCAL_POWER); 390 if (opResult != EOK) { 391 usb_log_error("cannot power off hub: %d\n", 392 opResult); 399 393 } 400 394 } else { 401 //power all ports 402 unsigned int port; 403 for(port = 1;port <= hub_info->port_count;++port){ 404 opResult = usb_hub_set_port_feature( 405 hub_info->control_pipe,port, 406 USB_HUB_FEATURE_PORT_POWER); 407 if (opResult != EOK) { 408 usb_log_warning( 409 "cannot power off port %d; %d\n", 410 port, opResult); 411 } 395 opResult = usb_hub_set_feature(hub_info->control_pipe, 396 USB_HUB_FEATURE_HUB_LOCAL_POWER); 397 if (opResult != EOK) { 398 usb_log_error("cannot power on hub: %d\n", 399 opResult); 412 400 } 413 401 } … … 416 404 417 405 /** 418 * process hub local power change 419 * 420 * This change is ignored. 406 * process hub power change 407 * 408 * If the power has been lost, reestablish it. 409 * If it was reestablished, re-power all ports. 421 410 * @param hub_info hub instance 422 411 * @param status hub status bitmask 423 412 * @return error code 424 413 */ 425 static int usb_process_hub_ local_power_change(usb_hub_info_t * hub_info,414 static int usb_process_hub_power_change(usb_hub_info_t * hub_info, 426 415 usb_hub_status_t status) { 427 416 int opResult = EOK; 417 if (!usb_hub_is_status(status,USB_HUB_FEATURE_HUB_LOCAL_POWER)) { 418 //restart power on hub 419 opResult = usb_hub_set_feature(hub_info->control_pipe, 420 USB_HUB_FEATURE_HUB_LOCAL_POWER); 421 if (opResult != EOK) { 422 usb_log_error("cannot power on hub: %d\n", 423 opResult); 424 } 425 } else {//power reestablished on hub- restart ports 426 size_t port; 427 for (port = 1; port <= hub_info->port_count; ++port) { 428 opResult = usb_hub_set_port_feature( 429 hub_info->control_pipe, 430 port, USB_HUB_FEATURE_PORT_POWER); 431 if (opResult != EOK) { 432 usb_log_error("Cannot power on port %zu: %s.\n", 433 port, str_error(opResult)); 434 } 435 } 436 } 437 if(opResult!=EOK){ 438 return opResult;//no feature clearing 439 } 428 440 opResult = usb_hub_clear_feature(hub_info->control_pipe, 429 441 USB_HUB_FEATURE_C_HUB_LOCAL_POWER); … … 475 487 if ( 476 488 usb_hub_is_status(status,16+USB_HUB_FEATURE_C_HUB_LOCAL_POWER)) { 477 usb_process_hub_ local_power_change(hub_info, status);489 usb_process_hub_power_change(hub_info, status); 478 490 } 479 491 }
Note:
See TracChangeset
for help on using the changeset viewer.