Ignore:
File:
1 edited

Legend:

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

    rfb422312 r70452dd4  
    4141#include <assert.h>
    4242
    43 static int generic_device_add(ddf_dev_t *);
    44 static int generic_device_remove(ddf_dev_t *);
    45 static int generic_device_gone(ddf_dev_t *);
     43static int generic_add_device(ddf_dev_t *);
    4644
    4745static driver_ops_t generic_driver_ops = {
    48         .add_device = generic_device_add,
    49         .dev_remove = generic_device_remove,
    50         .dev_gone = generic_device_gone,
     46        .add_device = generic_add_device
    5147};
    5248static driver_t generic_driver = {
     
    127123        return EOK;
    128124}
    129 /*----------------------------------------------------------------------------*/
    130 /** Callback when a new device is supposed to be controlled by this driver.
    131  *
    132  * This callback is a wrapper for USB specific version of @c device_add.
     125
     126/** Callback when new device is supposed to be controlled by this driver.
     127 *
     128 * This callback is a wrapper for USB specific version of @c add_device.
    133129 *
    134130 * @param gen_dev Device structure as prepared by DDF.
    135131 * @return Error code.
    136132 */
    137 int generic_device_add(ddf_dev_t *gen_dev)
     133int generic_add_device(ddf_dev_t *gen_dev)
    138134{
    139135        assert(driver);
    140136        assert(driver->ops);
    141         assert(driver->ops->device_add);
     137        assert(driver->ops->add_device);
    142138
    143139        int rc;
     
    151147                return rc;
    152148        }
    153         gen_dev->driver_data = dev;
    154 
    155         return driver->ops->device_add(dev);
    156 }
    157 /*----------------------------------------------------------------------------*/
    158 /** Callback when a device is supposed to be removed from the system.
    159  *
    160  * This callback is a wrapper for USB specific version of @c device_remove.
    161  *
    162  * @param gen_dev Device structure as prepared by DDF.
    163  * @return Error code.
    164  */
    165 int generic_device_remove(ddf_dev_t *gen_dev)
    166 {
    167         assert(driver);
    168         assert(driver->ops);
    169         if (driver->ops->device_rem == NULL)
    170                 return ENOTSUP;
    171         /* Just tell the driver to stop whatever it is doing, keep structures */
    172         return driver->ops->device_rem(gen_dev->driver_data);
    173 }
    174 /*----------------------------------------------------------------------------*/
    175 /** Callback when a device was removed from the system.
    176  *
    177  * This callback is a wrapper for USB specific version of @c device_gone.
    178  *
    179  * @param gen_dev Device structure as prepared by DDF.
    180  * @return Error code.
    181  */
    182 int generic_device_gone(ddf_dev_t *gen_dev)
    183 {
    184         assert(driver);
    185         assert(driver->ops);
    186         if (driver->ops->device_gone == NULL)
    187                 return ENOTSUP;
    188         const int ret = driver->ops->device_gone(gen_dev->driver_data);
    189         if (ret == EOK)
    190                 usb_device_destroy(gen_dev->driver_data);
    191 
    192         return ret;
    193 }
    194 /*----------------------------------------------------------------------------*/
     149
     150        return driver->ops->add_device(dev);
     151}
     152
    195153/** Destroy existing pipes of a USB device.
    196154 *
     
    317275 * @return Error code.
    318276 */
    319 int usb_device_create_pipes(const ddf_dev_t *dev, usb_device_connection_t *wire,
     277int usb_device_create_pipes(ddf_dev_t *dev, usb_device_connection_t *wire,
    320278    usb_endpoint_description_t **endpoints,
    321279    uint8_t *config_descr, size_t config_descr_size,
     
    391349        }
    392350
    393         if (usb_hc_connection_close(&hc_conn) != EOK)
    394                 usb_log_warning("usb_device_create_pipes(): "
    395                     "Failed to close connection.\n");
     351        usb_hc_connection_close(&hc_conn);
    396352
    397353        *pipes_ptr = pipes;
     
    415371        }
    416372
    417         if (usb_hc_connection_close(&hc_conn) != EOK)
    418                 usb_log_warning("usb_device_create_pipes(): "
    419                     "Failed to close connection.\n");
     373        usb_hc_connection_close(&hc_conn);
    420374
    421375        /*
     
    441395 * @param[in] pipes_count Number of endpoints.
    442396 */
    443 int usb_device_destroy_pipes(const ddf_dev_t *dev,
     397int usb_device_destroy_pipes(ddf_dev_t *dev,
    444398    usb_endpoint_mapping_t *pipes, size_t pipes_count)
    445399{
     
    472426        }
    473427
    474         if (usb_hc_connection_close(&hc_conn) != EOK)
    475                 usb_log_warning("usb_device_destroy_pipes(): "
    476                     "Failed to close connection.\n");
     428        usb_hc_connection_close(&hc_conn);
    477429
    478430        free(pipes);
     
    593545        /* Ignore errors and hope for the best. */
    594546        usb_device_destroy_pipes(dev->ddf_dev, dev->pipes, dev->pipes_count);
    595         free(dev->descriptors.configuration);
     547        if (dev->descriptors.configuration != NULL) {
     548                free(dev->descriptors.configuration);
     549        }
    596550
    597551        if (dev->alternate_interfaces != NULL) {
    598                 free(dev->alternate_interfaces->alternatives);
    599         }
    600         free(dev->alternate_interfaces);
     552                if (dev->alternate_interfaces->alternatives != NULL) {
     553                        free(dev->alternate_interfaces->alternatives);
     554                }
     555                free(dev->alternate_interfaces);
     556        }
    601557
    602558        free(dev);
Note: See TracChangeset for help on using the changeset viewer.