Changeset 944f8fdd in mainline for uspace/lib/usbhost/src/ddf_helpers.c
- Timestamp:
- 2018-01-19T17:38:22Z (6 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 2833bb4
- Parents:
- 861b5d6
- git-author:
- Ondřej Hlavatý <aearsis@…> (2018-01-19 17:06:40)
- git-committer:
- Ondřej Hlavatý <aearsis@…> (2018-01-19 17:38:22)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/usbhost/src/ddf_helpers.c
r861b5d6 r944f8fdd 393 393 } 394 394 395 int hcd_get_device_desc(device_t *device, usb_standard_device_descriptor_t *desc) 396 { 397 const usb_target_t control_ep = {{ 398 .address = device->address, 399 .endpoint = 0, 400 }}; 401 402 /* Get std device descriptor */ 403 const usb_device_request_setup_packet_t get_device_desc = 404 GET_DEVICE_DESC(sizeof(*desc)); 405 406 usb_log_debug("Device(%d): Requesting full device descriptor.", 407 device->address); 408 ssize_t got = bus_device_send_batch_sync(device, control_ep, USB_DIRECTION_IN, 409 (char *) desc, sizeof(*desc), *(uint64_t *)&get_device_desc, 410 "read device descriptor"); 411 412 if (got < 0) 413 return got; 414 415 return got == sizeof(*desc) ? EOK : EOVERFLOW; 416 } 417 418 int hcd_setup_match_ids(device_t *device, usb_standard_device_descriptor_t *desc) 395 int hcd_ddf_setup_match_ids(device_t *device, usb_standard_device_descriptor_t *desc) 419 396 { 420 397 int err; … … 434 411 435 412 return EOK; 436 }437 438 439 int hcd_device_explore(device_t *device)440 {441 int err;442 usb_standard_device_descriptor_t desc = { 0 };443 444 if ((err = hcd_get_device_desc(device, &desc))) {445 usb_log_error("Device(%d): Failed to get dev descriptor: %s",446 device->address, str_error(err));447 return err;448 }449 450 if ((err = hcd_setup_match_ids(device, &desc))) {451 usb_log_error("Device(%d): Failed to setup match ids: %s", device->address, str_error(err));452 return err;453 }454 455 return EOK;456 }457 458 /** Announce root hub to the DDF459 *460 * @param[in] device Host controller ddf device461 * @return Error code462 */463 int hcd_setup_virtual_root_hub(hc_device_t *hcd)464 {465 int err;466 467 assert(hcd);468 469 device_t *dev = hcd_ddf_fun_create(hcd, USB_SPEED_MAX);470 if (!dev) {471 usb_log_error("Failed to create function for the root hub.");472 return ENOMEM;473 }474 475 ddf_fun_set_name(dev->fun, "roothub");476 477 /* Assign an address to the device */478 if ((err = bus_device_enumerate(dev))) {479 usb_log_error("Failed to enumerate roothub device: %s", str_error(err));480 goto err_usb_dev;481 }482 483 if ((err = ddf_fun_bind(dev->fun))) {484 usb_log_error("Failed to register roothub: %s.", str_error(err));485 goto err_enumerated;486 }487 488 return EOK;489 490 err_enumerated:491 bus_device_gone(dev);492 err_usb_dev:493 hcd_ddf_fun_destroy(dev);494 return err;495 413 } 496 414
Note:
See TracChangeset
for help on using the changeset viewer.