Changeset eb1a2f4 in mainline for uspace/lib/usb/src/recognise.c
- Timestamp:
- 2011-02-22T23:30:56Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 3b5d1535, a9c674e0
- Parents:
- dbe25f1 (diff), 664af708 (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/recognise.c
rdbe25f1 reb1a2f4 34 34 */ 35 35 #include <sys/types.h> 36 #include <fibril_synch.h> 36 37 #include <usb/pipes.h> 37 38 #include <usb/recognise.h> … … 41 42 #include <stdio.h> 42 43 #include <errno.h> 44 #include <assert.h> 43 45 44 46 static size_t device_name_index = 0; 45 47 static FIBRIL_MUTEX_INITIALIZE(device_name_index_mutex); 46 48 47 d evice_ops_t child_ops = {49 ddf_dev_ops_t child_ops = { 48 50 .interfaces[USB_DEV_IFACE] = &usb_iface_hub_child_impl 49 51 }; … … 326 328 int usb_device_register_child_in_devman(usb_address_t address, 327 329 devman_handle_t hc_handle, 328 device_t *parent, devman_handle_t *child_handle) 330 ddf_dev_t *parent, devman_handle_t *child_handle, 331 ddf_dev_ops_t *dev_ops, void *dev_data, ddf_fun_t **child_fun) 329 332 { 330 333 size_t this_device_name_index; … … 335 338 fibril_mutex_unlock(&device_name_index_mutex); 336 339 337 d evice_t *child = NULL;340 ddf_fun_t *child = NULL; 338 341 char *child_name = NULL; 339 342 int rc; … … 352 355 } 353 356 354 child = create_device(); 357 /* 358 * TODO: Once the device driver framework support persistent 359 * naming etc., something more descriptive could be created. 360 */ 361 rc = asprintf(&child_name, "usbdev%02zu", this_device_name_index); 362 if (rc < 0) { 363 goto failure; 364 } 365 366 child = ddf_fun_create(parent, fun_inner, child_name); 355 367 if (child == NULL) { 356 368 rc = ENOMEM; … … 358 370 } 359 371 360 /* 361 * TODO: Once the device driver framework support persistent 362 * naming etc., something more descriptive could be created. 363 */ 364 rc = asprintf(&child_name, "usbdev%02zu", this_device_name_index); 365 if (rc < 0) { 366 goto failure; 367 } 368 child->parent = parent; 369 child->name = child_name; 370 child->ops = &child_ops; 372 if (dev_ops != NULL) { 373 child->ops = dev_ops; 374 } else { 375 child->ops = &child_ops; 376 } 377 378 child->driver_data = dev_data; 371 379 372 380 rc = usb_endpoint_pipe_start_session(&ctrl_pipe); … … 385 393 } 386 394 387 rc = child_device_register(child, parent);395 rc = ddf_fun_bind(child); 388 396 if (rc != EOK) { 389 397 goto failure; … … 392 400 if (child_handle != NULL) { 393 401 *child_handle = child->handle; 402 } 403 404 if (child_fun != NULL) { 405 *child_fun = child; 394 406 } 395 407 … … 400 412 child->name = NULL; 401 413 /* This takes care of match_id deallocation as well. */ 402 d elete_device(child);414 ddf_fun_destroy(child); 403 415 } 404 416 if (child_name != NULL) {
Note:
See TracChangeset
for help on using the changeset viewer.