Changes in uspace/lib/usbdev/src/devdrv.c [065064e6:fb422312] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/usbdev/src/devdrv.c
r065064e6 rfb422312 54 54 }; 55 55 56 static constusb_driver_t *driver = NULL;56 static usb_driver_t *driver = NULL; 57 57 58 58 … … 115 115 int rc = usb_device_create_pipes(dev->ddf_dev, &dev->wire, endpoints, 116 116 dev->descriptors.configuration, dev->descriptors.configuration_size, 117 dev->interface_no, alternate_setting, &pipes, &pipes_count); 117 dev->interface_no, alternate_setting, 118 &pipes, &pipes_count); 118 119 119 120 if (rc != EOK) { … … 152 153 gen_dev->driver_data = dev; 153 154 154 rc = driver->ops->device_add(dev); 155 if (rc != EOK) 156 usb_device_destroy(dev); 157 return rc; 155 return driver->ops->device_add(dev); 158 156 } 159 157 /*----------------------------------------------------------------------------*/ … … 188 186 if (driver->ops->device_gone == NULL) 189 187 return ENOTSUP; 190 usb_device_t *usb_dev = gen_dev->driver_data; 191 const int ret = driver->ops->device_gone(usb_dev); 188 const int ret = driver->ops->device_gone(gen_dev->driver_data); 192 189 if (ret == EOK) 193 usb_device_destroy( usb_dev);190 usb_device_destroy(gen_dev->driver_data); 194 191 195 192 return ret; … … 322 319 int usb_device_create_pipes(const ddf_dev_t *dev, usb_device_connection_t *wire, 323 320 usb_endpoint_description_t **endpoints, 324 constuint8_t *config_descr, size_t config_descr_size,321 uint8_t *config_descr, size_t config_descr_size, 325 322 int interface_no, int interface_setting, 326 323 usb_endpoint_mapping_t **pipes_ptr, size_t *pipes_count_ptr) … … 336 333 int rc; 337 334 338 constsize_t pipe_count = count_other_pipes(endpoints);335 size_t pipe_count = count_other_pipes(endpoints); 339 336 if (pipe_count == 0) { 340 *pipes_count_ptr = pipe_count;341 337 *pipes_ptr = NULL; 342 338 return EOK; … … 449 445 { 450 446 assert(dev != NULL); 447 assert(((pipes != NULL) && (pipes_count > 0)) 448 || ((pipes == NULL) && (pipes_count == 0))); 451 449 452 450 if (pipes_count == 0) { 453 assert(pipes == NULL);454 451 return EOK; 455 452 } 456 assert(pipes != NULL);457 453 458 454 int rc; … … 472 468 size_t i; 473 469 for (i = 0; i < pipes_count; i++) { 474 usb_log_debug2("Unregistering pipe %zu (%spresent).\n", 475 i, pipes[i].present ? "" : "not "); 476 if (pipes[i].present) 477 usb_pipe_unregister(pipes[i].pipe, &hc_conn); 470 usb_pipe_unregister(pipes[i].pipe, &hc_conn); 478 471 free(pipes[i].pipe); 479 472 } … … 599 592 600 593 /* Ignore errors and hope for the best. */ 601 destroy_current_pipes(dev); 594 usb_device_destroy_pipes(dev->ddf_dev, dev->pipes, dev->pipes_count); 595 free(dev->descriptors.configuration); 602 596 603 597 if (dev->alternate_interfaces != NULL) { … … 605 599 } 606 600 free(dev->alternate_interfaces); 607 free(dev->descriptors.configuration); 608 free(dev->driver_data); 609 } 610 611 void * usb_device_data_alloc(usb_device_t *usb_dev, size_t size) 612 { 613 assert(usb_dev); 614 assert(usb_dev->driver_data == NULL); 615 return usb_dev->driver_data = calloc(1, size); 616 601 602 free(dev); 617 603 } 618 604
Note:
See TracChangeset
for help on using the changeset viewer.