Lines Matching refs:mididev
492 struct umidi_mididev *mididev = addr; in umidi_open() local
493 struct umidi_softc *sc = mididev->sc; in umidi_open()
499 if (mididev->opened) in umidi_open()
504 mididev->opened = 1; in umidi_open()
505 mididev->flags = flags; in umidi_open()
506 if ((mididev->flags & FWRITE) && mididev->out_jack) { in umidi_open()
507 err = open_out_jack(mididev->out_jack, arg, ointr); in umidi_open()
511 if ((mididev->flags & FREAD) && mididev->in_jack) { in umidi_open()
512 err = open_in_jack(mididev->in_jack, arg, iintr); in umidi_open()
513 KASSERT(mididev->opened); in umidi_open()
516 if (mididev->out_jack) in umidi_open()
517 close_out_jack(mididev->out_jack); in umidi_open()
524 mididev->opened = 0; in umidi_open()
533 struct umidi_mididev *mididev = addr; in umidi_close() local
534 struct umidi_softc *sc = mididev->sc; in umidi_close()
538 if (mididev->closing) in umidi_close()
541 mididev->closing = 1; in umidi_close()
545 if ((mididev->flags & FWRITE) && mididev->out_jack) in umidi_close()
546 close_out_jack(mididev->out_jack); in umidi_close()
547 if ((mididev->flags & FREAD) && mididev->in_jack) in umidi_close()
548 close_in_jack(mididev->in_jack); in umidi_close()
553 mididev->opened = 0; in umidi_close()
554 mididev->closing = 0; in umidi_close()
561 struct umidi_mididev *mididev = addr; in umidi_channelmsg() local
563 KASSERT(mutex_owned(&mididev->sc->sc_lock)); in umidi_channelmsg()
565 if (!mididev->out_jack || !mididev->opened || mididev->closing) in umidi_channelmsg()
568 return out_jack_output(mididev->out_jack, msg, len, (status>>4)&0xf); in umidi_channelmsg()
574 struct umidi_mididev *mididev = addr; in umidi_commonmsg() local
577 KASSERT(mutex_owned(&mididev->sc->sc_lock)); in umidi_commonmsg()
579 if (!mididev->out_jack || !mididev->opened || mididev->closing) in umidi_commonmsg()
589 return out_jack_output(mididev->out_jack, msg, len, cin); in umidi_commonmsg()
595 struct umidi_mididev *mididev = addr; in umidi_sysex() local
598 KASSERT(mutex_owned(&mididev->sc->sc_lock)); in umidi_sysex()
600 if (!mididev->out_jack || !mididev->opened || mididev->closing) in umidi_sysex()
610 return out_jack_output(mididev->out_jack, msg, len, cin); in umidi_sysex()
616 struct umidi_mididev *mididev = addr; in umidi_rtmsg() local
619 KASSERT(mutex_owned(&mididev->sc->sc_lock)); in umidi_rtmsg()
621 if (!mididev->out_jack || !mididev->opened || mididev->closing) in umidi_rtmsg()
624 return out_jack_output(mididev->out_jack, &msg, 1, 0xf); in umidi_rtmsg()
630 struct umidi_mididev *mididev = addr; in umidi_getinfo() local
631 struct umidi_softc *sc = mididev->sc; in umidi_getinfo()
636 mi->name = mididev->label; in umidi_getinfo()
638 if (mididev->in_jack) in umidi_getinfo()
646 struct umidi_mididev *mididev = addr; in umidi_get_locks() local
647 struct umidi_softc *sc = mididev->sc; in umidi_get_locks()
1197 struct umidi_mididev *mididev) in bind_jacks_to_mididev() argument
1201 if (mididev->out_jack || mididev->in_jack) in bind_jacks_to_mididev()
1208 mididev->in_jack = in_jack; in bind_jacks_to_mididev()
1209 mididev->out_jack = out_jack; in bind_jacks_to_mididev()
1211 mididev->closing = 0; in bind_jacks_to_mididev()
1217 unbind_jacks_from_mididev(struct umidi_mididev *mididev) in unbind_jacks_from_mididev() argument
1219 KASSERT(mutex_owned(&mididev->sc->sc_lock)); in unbind_jacks_from_mididev()
1221 mididev->closing = 1; in unbind_jacks_from_mididev()
1223 if ((mididev->flags & FWRITE) && mididev->out_jack) in unbind_jacks_from_mididev()
1224 close_out_jack(mididev->out_jack); in unbind_jacks_from_mididev()
1225 if ((mididev->flags & FREAD) && mididev->in_jack) in unbind_jacks_from_mididev()
1226 close_in_jack(mididev->in_jack); in unbind_jacks_from_mididev()
1228 if (mididev->out_jack) { in unbind_jacks_from_mididev()
1229 mididev->out_jack->bound = 0; in unbind_jacks_from_mididev()
1230 mididev->out_jack = NULL; in unbind_jacks_from_mididev()
1232 if (mididev->in_jack) { in unbind_jacks_from_mididev()
1233 mididev->in_jack->bound = 0; in unbind_jacks_from_mididev()
1234 mididev->in_jack = NULL; in unbind_jacks_from_mididev()
1424 attach_mididev(struct umidi_softc *sc, struct umidi_mididev *mididev) in attach_mididev() argument
1426 if (mididev->sc) in attach_mididev()
1429 mididev->sc = sc; in attach_mididev()
1431 describe_mididev(mididev); in attach_mididev()
1433 mididev->mdev = midi_attach_mi(&umidi_hw_if, mididev, sc->sc_dev); in attach_mididev()
1439 detach_mididev(struct umidi_mididev *mididev, int flags) in detach_mididev() argument
1441 struct umidi_softc *sc = mididev->sc; in detach_mididev()
1447 if (mididev->opened) { in detach_mididev()
1448 umidi_close(mididev); in detach_mididev()
1450 unbind_jacks_from_mididev(mididev); in detach_mididev()
1453 if (mididev->mdev != NULL) in detach_mididev()
1454 config_detach(mididev->mdev, flags); in detach_mididev()
1456 if (NULL != mididev->label) { in detach_mididev()
1457 kmem_free(mididev->label, mididev->label_len); in detach_mididev()
1458 mididev->label = NULL; in detach_mididev()
1461 mididev->sc = NULL; in detach_mididev()
1467 deactivate_mididev(struct umidi_mididev *mididev) in deactivate_mididev() argument
1469 if (mididev->out_jack) in deactivate_mididev()
1470 mididev->out_jack->bound = 0; in deactivate_mididev()
1471 if (mididev->in_jack) in deactivate_mididev()
1472 mididev->in_jack->bound = 0; in deactivate_mididev()