int usbhs_mod_probe(struct usbhs_priv *priv) { struct device *dev = usbhs_priv_to_dev(priv); int ret; /* * install host/gadget driver */ ret = usbhs_mod_host_probe(priv); if (ret < 0) return ret; ret = usbhs_mod_gadget_probe(priv); if (ret < 0) goto mod_init_host_err; /* irq settings */ ret = request_irq(priv->irq, usbhs_interrupt, 0, dev_name(dev), priv); if (ret) { dev_err(dev, "irq request err\n"); goto mod_init_gadget_err; } return ret; mod_init_gadget_err: usbhs_mod_gadget_remove(priv); mod_init_host_err: usbhs_mod_host_remove(priv); return ret; }
int usbhs_mod_probe(struct usbhs_priv *priv) { struct device *dev = usbhs_priv_to_dev(priv); int ret; ret = usbhs_mod_host_probe(priv); if (ret < 0) return ret; ret = usbhs_mod_gadget_probe(priv); if (ret < 0) goto mod_init_host_err; ret = request_irq(priv->irq, usbhs_interrupt, priv->irqflags, dev_name(dev), priv); if (ret) { dev_err(dev, "irq request err\n"); goto mod_init_gadget_err; } return ret; mod_init_gadget_err: usbhs_mod_gadget_remove(priv); mod_init_host_err: usbhs_mod_host_remove(priv); return ret; }
void usbhs_mod_remove(struct usbhs_priv *priv) { usbhs_mod_host_remove(priv); usbhs_mod_gadget_remove(priv); free_irq(priv->irq, priv); }
void usbhs_mod_remove(struct usbhs_priv *priv) { usbhs_mod_host_remove(priv); usbhs_mod_gadget_remove(priv); }