Changes in uspace/lib/usbhost/src/usb_bus.c [b7fd2a0:f527f58] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/usbhost/src/usb_bus.c
rb7fd2a0 rf527f58 102 102 * 103 103 * @param[in] instance Device manager structure to use. 104 * @param[out] address Free address. 105 * @return Error code. 106 */ 107 static errno_t usb_bus_get_free_address(usb_bus_t *instance, usb_address_t *address) 104 * @return Free address, or error code. 105 */ 106 static usb_address_t usb_bus_get_free_address(usb_bus_t *instance) 108 107 { 109 108 … … 120 119 instance->last_address = new_address; 121 120 122 *address = new_address; 123 return EOK; 121 return new_address; 124 122 } 125 123 … … 200 198 * @return Error code. 201 199 */ 202 errno_t usb_bus_init(usb_bus_t *instance,200 int usb_bus_init(usb_bus_t *instance, 203 201 size_t available_bandwidth, bw_count_func_t bw_count, usb_speed_t max_speed) 204 202 { … … 224 222 * @return Error code. 225 223 */ 226 errno_t usb_bus_register_ep(usb_bus_t *instance, endpoint_t *ep, size_t data_size)224 int usb_bus_register_ep(usb_bus_t *instance, endpoint_t *ep, size_t data_size) 227 225 { 228 226 assert(instance); … … 262 260 * @return Error code. 263 261 */ 264 errno_t usb_bus_unregister_ep(usb_bus_t *instance, endpoint_t *ep)262 int usb_bus_unregister_ep(usb_bus_t *instance, endpoint_t *ep) 265 263 { 266 264 assert(instance); … … 316 314 * @return Error code. 317 315 */ 318 errno_t usb_bus_add_ep(usb_bus_t *instance,316 int usb_bus_add_ep(usb_bus_t *instance, 319 317 usb_address_t address, usb_endpoint_t endpoint, usb_direction_t direction, 320 318 usb_transfer_type_t type, size_t max_packet_size, unsigned packets, … … 364 362 365 363 if (callback) { 366 const errno_t ret = callback(ep, arg);364 const int ret = callback(ep, arg); 367 365 if (ret != EOK) { 368 366 fibril_mutex_unlock(&instance->guard); … … 394 392 * @return Error code. 395 393 */ 396 errno_t usb_bus_remove_ep(usb_bus_t *instance,394 int usb_bus_remove_ep(usb_bus_t *instance, 397 395 usb_address_t address, usb_endpoint_t endpoint, usb_direction_t direction, 398 396 ep_remove_callback_t callback, void *arg) … … 417 415 } 418 416 419 errno_t usb_bus_reset_toggle(usb_bus_t *instance, usb_target_t target, bool all)417 int usb_bus_reset_toggle(usb_bus_t *instance, usb_target_t target, bool all) 420 418 { 421 419 assert(instance); … … 423 421 return EINVAL; 424 422 425 errno_t ret = ENOENT;423 int ret = ENOENT; 426 424 427 425 fibril_mutex_lock(&instance->guard); … … 446 444 * @return Error code. 447 445 */ 448 errno_t usb_bus_remove_address(usb_bus_t *instance,446 int usb_bus_remove_address(usb_bus_t *instance, 449 447 usb_address_t address, ep_remove_callback_t callback, void *arg) 450 448 { … … 455 453 fibril_mutex_lock(&instance->guard); 456 454 457 const errno_t ret = instance->devices[address].occupied ? EOK : ENOENT;455 const int ret = instance->devices[address].occupied ? EOK : ENOENT; 458 456 instance->devices[address].occupied = false; 459 457 … … 476 474 /** Request USB address. 477 475 * @param instance usb_device_manager 478 * @param [inout]address Pointer to requested address value, place to store new address476 * @param address Pointer to requested address value, place to store new address 479 477 * @parma strict Fail if the requested address is not available. 480 478 * @return Error code. 481 479 * @note Default address is only available in strict mode. 482 480 */ 483 errno_t usb_bus_request_address(usb_bus_t *instance,481 int usb_bus_request_address(usb_bus_t *instance, 484 482 usb_address_t *address, bool strict, usb_speed_t speed) 485 483 { … … 493 491 494 492 usb_address_t addr = *address; 495 errno_t rc;496 493 497 494 fibril_mutex_lock(&instance->guard); 498 495 /* Only grant default address to strict requests */ 499 496 if ((addr == USB_ADDRESS_DEFAULT) && !strict) { 500 rc = usb_bus_get_free_address(instance, &addr); 501 if (rc != EOK) { 502 fibril_mutex_unlock(&instance->guard); 503 return rc; 504 } 497 addr = usb_bus_get_free_address(instance); 505 498 } 506 499 … … 510 503 return ENOENT; 511 504 } 512 rc = usb_bus_get_free_address(instance, &addr); 513 if (rc != EOK) { 514 fibril_mutex_unlock(&instance->guard); 515 return rc; 516 } 505 addr = usb_bus_get_free_address(instance); 517 506 } 518 507 if (usb_address_is_valid(addr)) { … … 527 516 528 517 fibril_mutex_unlock(&instance->guard); 529 530 *address = addr; 531 return EOK; 518 return addr; 532 519 } 533 520 … … 539 526 * @return Error code. 540 527 */ 541 errno_t usb_bus_get_speed(usb_bus_t *instance, usb_address_t address,528 int usb_bus_get_speed(usb_bus_t *instance, usb_address_t address, 542 529 usb_speed_t *speed) 543 530 { … … 549 536 fibril_mutex_lock(&instance->guard); 550 537 551 const errno_t ret = instance->devices[address].occupied ? EOK : ENOENT;538 const int ret = instance->devices[address].occupied ? EOK : ENOENT; 552 539 if (speed && instance->devices[address].occupied) { 553 540 *speed = instance->devices[address].speed;
Note:
See TracChangeset
for help on using the changeset viewer.