Changeset eeca8a6 in mainline for uspace/lib/usbhost/src/bus.c
- Timestamp:
- 2018-01-16T19:22:58Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 4603b35
- Parents:
- 47e9494
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/usbhost/src/bus.c
r47e9494 reeca8a6 60 60 fibril_mutex_initialize(&bus->guard); 61 61 bus->device_size = device_size; 62 bus->default_address_speed = USB_SPEED_MAX;63 62 } 64 63 … … 495 494 * The speed is then used for devices enumerated while the address is reserved. 496 495 */ 497 int bus_reserve_default_address(bus_t *bus, usb_speed_t speed)496 int bus_reserve_default_address(bus_t *bus, device_t *dev) 498 497 { 499 498 assert(bus); 500 499 500 int err; 501 501 fibril_mutex_lock(&bus->guard); 502 if (bus->default_address_speed != USB_SPEED_MAX) { 503 fibril_mutex_unlock(&bus->guard); 504 return EAGAIN; 502 if (bus->default_address_owner != NULL) { 503 err = (bus->default_address_owner == dev) ? EINVAL : EAGAIN; 505 504 } else { 506 bus->default_address_speed = speed; 507 fibril_mutex_unlock(&bus->guard); 508 return EOK; 509 } 505 bus->default_address_owner = dev; 506 err = EOK; 507 } 508 fibril_mutex_unlock(&bus->guard); 509 return err; 510 510 } 511 511 … … 513 513 * Release the default address. 514 514 */ 515 void bus_release_default_address(bus_t *bus )515 void bus_release_default_address(bus_t *bus, device_t *dev) 516 516 { 517 517 assert(bus); 518 bus->default_address_speed = USB_SPEED_MAX; 518 519 fibril_mutex_lock(&bus->guard); 520 if (bus->default_address_owner != dev) { 521 usb_log_error("Device %d tried to release address, which is not reserved for it.", dev->address); 522 } else { 523 bus->default_address_owner = NULL; 524 } 525 fibril_mutex_unlock(&bus->guard); 519 526 } 520 527
Note:
See TracChangeset
for help on using the changeset viewer.