/** * @brief free resource and cleanup * @param intf USB interface structure * @return N/A */ static void if_usb_disconnect(struct usb_interface *intf) { struct if_usb_card *cardp = usb_get_intfdata(intf); struct lbs_private *priv = (struct lbs_private *) cardp->priv; lbs_deb_enter(LBS_DEB_MAIN); device_remove_file(&priv->dev->dev, &dev_attr_lbs_flash_boot2); device_remove_file(&priv->dev->dev, &dev_attr_lbs_flash_fw); cardp->surprise_removed = 1; if (priv) { priv->surpriseremoved = 1; lbs_stop_card(priv); lbs_remove_card(priv); } /* Unlink and free urb */ if_usb_free(cardp); usb_set_intfdata(intf, NULL); usb_put_dev(interface_to_usbdev(intf)); lbs_deb_leave(LBS_DEB_MAIN); }
/** * if_usb_disconnect - free resource and cleanup * @intf: USB interface structure * returns: N/A */ static void if_usb_disconnect(struct usb_interface *intf) { struct if_usb_card *cardp = usb_get_intfdata(intf); struct lbs_private *priv = cardp->priv; lbs_deb_enter(LBS_DEB_MAIN); cardp->surprise_removed = 1; if (priv) { lbs_stop_card(priv); lbs_remove_card(priv); } /* Unlink and free urb */ if_usb_free(cardp); usb_set_intfdata(intf, NULL); usb_put_dev(interface_to_usbdev(intf)); lbs_deb_leave(LBS_DEB_MAIN); }