Changeset c280d7e in mainline for uspace/lib/usbdev/src/devdrv.c
- Timestamp:
- 2018-01-20T03:02:36Z (6 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 60d3f35
- Parents:
- 3cdaa7f
- git-author:
- Ondřej Hlavatý <aearsis@…> (2018-01-20 03:02:32)
- git-committer:
- Ondřej Hlavatý <aearsis@…> (2018-01-20 03:02:36)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/usbdev/src/devdrv.c
r3cdaa7f rc280d7e 73 73 /** Number of other endpoint pipes. */ 74 74 size_t pipes_count; 75 76 /** USB address of this device */ 77 usb_address_t address; 78 79 /** USB speed of this device */ 80 usb_speed_t speed; 75 81 76 82 /** Current interface. … … 414 420 */ 415 421 static int usb_device_init(usb_device_t *usb_dev, ddf_dev_t *ddf_dev, 416 const usb_endpoint_description_t **endpoints, const char **errstr_ptr, 417 devman_handle_t handle, int interface_no) 422 const usb_endpoint_description_t **endpoints, const char **errstr_ptr) 418 423 { 419 424 assert(usb_dev != NULL); … … 423 428 424 429 usb_dev->ddf_dev = ddf_dev; 425 usb_dev->handle = handle;426 usb_dev->interface_no = interface_no;427 430 usb_dev->driver_data = NULL; 428 431 usb_dev->descriptors.full_config = NULL; … … 431 434 usb_dev->pipes = NULL; 432 435 433 usb_dev->bus_session = usb_dev_connect( handle);436 usb_dev->bus_session = usb_dev_connect(usb_dev->handle); 434 437 435 438 if (!usb_dev->bus_session) { … … 476 479 } 477 480 478 static int usb_device_get_info(async_sess_t *sess, devman_handle_t *handle, 479 int *iface_no) 480 { 481 assert(handle); 482 assert(iface_no); 481 static int usb_device_get_info(async_sess_t *sess, usb_device_t *dev) 482 { 483 assert(dev); 483 484 484 485 async_exch_t *exch = async_exchange_begin(sess); … … 486 487 return EPARTY; 487 488 488 int ret = usb_get_my_device_handle(exch, handle); 489 usb_device_desc_t dev_desc; 490 const int ret = usb_get_my_description(exch, &dev_desc); 491 489 492 if (ret == EOK) { 490 ret = usb_get_my_interface(exch, iface_no); 491 if (ret == ENOTSUP) { 492 *iface_no = -1; 493 ret = EOK; 494 } 493 dev->address = dev_desc.address; 494 dev->speed = dev_desc.speed; 495 dev->handle = dev_desc.handle; 496 dev->interface_no = dev_desc.iface; 495 497 } 496 498 … … 504 506 assert(ddf_dev); 505 507 assert(err); 506 507 devman_handle_t h = 0;508 int iface_no = -1;509 508 510 509 async_sess_t *sess = ddf_dev_parent_sess_get(ddf_dev); 511 510 if (sess == NULL) 512 511 return ENOMEM; 513 const int ret = usb_device_get_info(sess, &h, &iface_no);514 if (ret != EOK)515 return ret;516 512 517 513 usb_device_t *usb_dev = … … 522 518 } 523 519 524 return usb_device_init(usb_dev, ddf_dev, desc, err, h, iface_no); 520 const int ret = usb_device_get_info(sess, usb_dev); 521 if (ret != EOK) 522 return ret; 523 524 return usb_device_init(usb_dev, ddf_dev, desc, err); 525 525 } 526 526 … … 536 536 usb_device_t * usb_device_create(devman_handle_t handle) 537 537 { 538 devman_handle_t h = 0; 539 int iface_no = -1; 538 usb_device_t *usb_dev = malloc(sizeof(usb_device_t)); 539 if (!usb_dev) 540 return NULL; 540 541 541 542 async_sess_t *sess = devman_device_connect(handle, IPC_FLAG_BLOCKING); 542 int ret = usb_device_get_info(sess, &h, &iface_no);543 int ret = usb_device_get_info(sess, usb_dev); 543 544 if (sess) 544 545 async_hangup(sess); … … 546 547 return NULL; 547 548 548 usb_device_t *usb_dev = malloc(sizeof(usb_device_t));549 if (!usb_dev)550 return NULL;551 552 549 const char* dummy = NULL; 553 ret = usb_device_init(usb_dev, NULL, NULL, &dummy , handle, iface_no);550 ret = usb_device_init(usb_dev, NULL, NULL, &dummy); 554 551 if (ret != EOK) { 555 552 free(usb_dev);
Note:
See TracChangeset
for help on using the changeset viewer.