static void unbind_all_jacks(struct umidi_softc *sc) { int i; if (sc->sc_mididevs) for (i=0; i<sc->sc_num_mididevs; i++) { unbind_jacks_from_mididev(&sc->sc_mididevs[i]); } }
static usbd_status detach_mididev(struct umidi_mididev *mididev, int flags) { if (!mididev->sc) return USBD_NO_ADDR; if (mididev->opened) umidi_close(mididev); unbind_jacks_from_mididev(mididev); if (mididev->mdev) config_detach(mididev->mdev, flags); mididev->sc = NULL; return USBD_NORMAL_COMPLETION; }
static usbd_status detach_mididev(struct umidi_mididev *mididev, int flags) { if (!mididev->sc) return USBD_NO_ADDR; if (mididev->opened) { umidi_close(mididev); } unbind_jacks_from_mididev(mididev); if (mididev->mdev != NULL) config_detach(mididev->mdev, flags); if (NULL != mididev->label) { free(mididev->label, M_USBDEV); mididev->label = NULL; } mididev->sc = NULL; return USBD_NORMAL_COMPLETION; }