Changeset 55e388a1 in mainline for uspace/lib/usb/src/host/device_keeper.c
- Timestamp:
- 2011-03-24T14:57:53Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- b53d3b7
- Parents:
- 361e61b (diff), e18e0d6 (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. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/usb/src/host/device_keeper.c
r361e61b r55e388a1 31 31 */ 32 32 /** @file 33 * @brief UHCI driver33 * Device keeper structure and functions (implementation). 34 34 */ 35 35 #include <assert.h> … … 45 45 * Set all values to false/0. 46 46 */ 47 void device_keeper_init(device_keeper_t *instance)47 void usb_device_keeper_init(usb_device_keeper_t *instance) 48 48 { 49 49 assert(instance); … … 65 65 * @param[in] speed Speed of the device requesting default address. 66 66 */ 67 void device_keeper_reserve_default(device_keeper_t *instance, usb_speed_t speed) 67 void usb_device_keeper_reserve_default_address(usb_device_keeper_t *instance, 68 usb_speed_t speed) 68 69 { 69 70 assert(instance); … … 83 84 * @param[in] speed Speed of the device requesting default address. 84 85 */ 85 void device_keeper_release_default(device_keeper_t *instance)86 void usb_device_keeper_release_default_address(usb_device_keeper_t *instance) 86 87 { 87 88 assert(instance); … … 100 101 * Really ugly one. 101 102 */ 102 void device_keeper_reset_if_need(103 device_keeper_t *instance, usb_target_t target, const unsigned char*data)103 void usb_device_keeper_reset_if_need(usb_device_keeper_t *instance, 104 usb_target_t target, const uint8_t *data) 104 105 { 105 106 assert(instance); … … 144 145 * @return Error code 145 146 */ 146 int device_keeper_get_toggle(147 device_keeper_t *instance,usb_target_t target, usb_direction_t direction)147 int usb_device_keeper_get_toggle(usb_device_keeper_t *instance, 148 usb_target_t target, usb_direction_t direction) 148 149 { 149 150 assert(instance); … … 173 174 * @return Error code. 174 175 */ 175 int device_keeper_set_toggle(device_keeper_t *instance,176 int usb_device_keeper_set_toggle(usb_device_keeper_t *instance, 176 177 usb_target_t target, usb_direction_t direction, bool toggle) 177 178 { … … 207 208 * @return Free address, or error code. 208 209 */ 209 usb_address_t device_keeper_request( 210 device_keeper_t *instance, usb_speed_t speed) 211 { 212 assert(instance); 213 fibril_mutex_lock(&instance->guard); 214 215 usb_address_t new_address = instance->last_address + 1; 216 while (instance->devices[new_address].occupied) { 210 usb_address_t device_keeper_get_free_address(usb_device_keeper_t *instance, 211 usb_speed_t speed) 212 { 213 assert(instance); 214 fibril_mutex_lock(&instance->guard); 215 216 usb_address_t new_address = instance->last_address; 217 do { 218 ++new_address; 219 if (new_address > USB11_ADDRESS_MAX) 220 new_address = 1; 217 221 if (new_address == instance->last_address) { 218 222 fibril_mutex_unlock(&instance->guard); 219 223 return ENOSPC; 220 224 } 221 if (new_address == USB11_ADDRESS_MAX) 222 new_address = 1; 223 ++new_address; 224 } 225 } while (instance->devices[new_address].occupied); 225 226 226 227 assert(new_address != USB_ADDRESS_DEFAULT); … … 241 242 * @param[in] handle Devman handle of the device. 242 243 */ 243 void device_keeper_bind(244 device_keeper_t *instance,usb_address_t address, devman_handle_t handle)244 void usb_device_keeper_bind(usb_device_keeper_t *instance, 245 usb_address_t address, devman_handle_t handle) 245 246 { 246 247 assert(instance); … … 258 259 * @param[in] address Device address 259 260 */ 260 void device_keeper_release(device_keeper_t *instance, usb_address_t address) 261 void usb_device_keeper_release(usb_device_keeper_t *instance, 262 usb_address_t address) 261 263 { 262 264 assert(instance); … … 276 278 * @return USB Address, or error code. 277 279 */ 278 usb_address_t device_keeper_find(279 dev ice_keeper_t *instance, devman_handle_t handle)280 usb_address_t usb_device_keeper_find(usb_device_keeper_t *instance, 281 devman_handle_t handle) 280 282 { 281 283 assert(instance); … … 299 301 * @return USB speed. 300 302 */ 301 usb_speed_t device_keeper_speed(302 device_keeper_t *instance,usb_address_t address)303 usb_speed_t usb_device_keeper_get_speed(usb_device_keeper_t *instance, 304 usb_address_t address) 303 305 { 304 306 assert(instance); … … 307 309 return instance->devices[address].speed; 308 310 } 311 309 312 /** 310 313 * @}
Note:
See TracChangeset
for help on using the changeset viewer.