Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/usbdev/src/devdrv.c

    r065064e6 rfb422312  
    5454};
    5555
    56 static const usb_driver_t *driver = NULL;
     56static usb_driver_t *driver = NULL;
    5757
    5858
     
    115115        int rc = usb_device_create_pipes(dev->ddf_dev, &dev->wire, endpoints,
    116116            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);
    118119
    119120        if (rc != EOK) {
     
    152153        gen_dev->driver_data = dev;
    153154
    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);
    158156}
    159157/*----------------------------------------------------------------------------*/
     
    188186        if (driver->ops->device_gone == NULL)
    189187                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);
    192189        if (ret == EOK)
    193                 usb_device_destroy(usb_dev);
     190                usb_device_destroy(gen_dev->driver_data);
    194191
    195192        return ret;
     
    322319int usb_device_create_pipes(const ddf_dev_t *dev, usb_device_connection_t *wire,
    323320    usb_endpoint_description_t **endpoints,
    324     const uint8_t *config_descr, size_t config_descr_size,
     321    uint8_t *config_descr, size_t config_descr_size,
    325322    int interface_no, int interface_setting,
    326323    usb_endpoint_mapping_t **pipes_ptr, size_t *pipes_count_ptr)
     
    336333        int rc;
    337334
    338         const size_t pipe_count = count_other_pipes(endpoints);
     335        size_t pipe_count = count_other_pipes(endpoints);
    339336        if (pipe_count == 0) {
    340                 *pipes_count_ptr = pipe_count;
    341337                *pipes_ptr = NULL;
    342338                return EOK;
     
    449445{
    450446        assert(dev != NULL);
     447        assert(((pipes != NULL) && (pipes_count > 0))
     448            || ((pipes == NULL) && (pipes_count == 0)));
    451449
    452450        if (pipes_count == 0) {
    453                 assert(pipes == NULL);
    454451                return EOK;
    455452        }
    456         assert(pipes != NULL);
    457453
    458454        int rc;
     
    472468        size_t i;
    473469        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);
    478471                free(pipes[i].pipe);
    479472        }
     
    599592
    600593        /* 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);
    602596
    603597        if (dev->alternate_interfaces != NULL) {
     
    605599        }
    606600        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);
    617603}
    618604
Note: See TracChangeset for help on using the changeset viewer.