Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/bus/usb/usbmid/main.c

    r5203e256 r065064e6  
    4949 * @return Error code.
    5050 */
    51 static int usbmid_add_device(usb_device_t *dev)
     51static int usbmid_device_add(usb_device_t *dev)
    5252{
    5353        usb_log_info("Taking care of new MID `%s'.\n", dev->ddf_dev->name);
     
    6666}
    6767
     68static int usbmid_device_gone(usb_device_t *dev)
     69{
     70        assert(dev);
     71        usb_log_info("USB MID gone: `%s'.\n", dev->ddf_dev->name);
     72
     73        /* Remove ctl function */
     74        usb_mid_t *usb_mid = dev->driver_data;
     75        int ret = ddf_fun_unbind(usb_mid->ctl_fun);
     76        if (ret != EOK) {
     77                usb_log_error("Failed to unbind USB MID ctl function: %s.\n",
     78                    str_error(ret));
     79                return ret;
     80        }
     81        ddf_fun_destroy(usb_mid->ctl_fun);
     82
     83        /* Now remove all other functions */
     84        while (!list_empty(&usb_mid->interface_list)) {
     85                link_t *item = list_first(&usb_mid->interface_list);
     86                list_remove(item);
     87
     88                usbmid_interface_t *iface = list_get_instance(item,
     89                    usbmid_interface_t, link);
     90
     91                usb_log_info("Removing child for interface %d (%s).\n",
     92                    iface->interface_no,
     93                    usb_str_class(iface->interface->interface_class));
     94
     95                const int pret = usbmid_interface_destroy(iface);
     96                if (pret != EOK) {
     97                        usb_log_error("Failed to remove child for interface "
     98                            "%d (%s): %s\n",
     99                            iface->interface_no,
     100                            usb_str_class(iface->interface->interface_class),
     101                            str_error(pret));
     102                        ret = pret;
     103                }
     104        }
     105        return ret;
     106}
     107
    68108/** USB MID driver ops. */
    69109static usb_driver_ops_t mid_driver_ops = {
    70         .add_device = usbmid_add_device,
     110        .device_add = usbmid_device_add,
     111        .device_gone = usbmid_device_gone,
    71112};
    72113
Note: See TracChangeset for help on using the changeset viewer.