midi
cdev_midi_init(NMIDI,midi), /* 41: MIDI I/O */
cdev_decl(midi);
cdev_midi_init(NMIDI,midi), /* 52: MIDI I/O */
cdev_midi_init(NMIDI,midi), /* 57: MIDI I/O */
cdev_midi_init(NMIDI,midi), /* 52: MIDI I/O */
cdev_midi_init(NMIDI,midi), /* 52: MIDI I/O */
cdev_midi_init(NMIDI,midi), /* 57: MIDI I/O */
cdev_midi_init(NMIDI,midi), /* 52: MIDI I/O */
cdev_midi_init(NMIDI,midi), /* 33: MIDI I/O */
cdev_midi_init(NMIDI,midi), /* 52: MIDI I/O */
cdev_midi_init(NMIDI,midi), /* 68: /dev/rmidi */
sc->midi = midi_attach_mi(&envy_midi_hw_if, sc, &sc->dev);
struct device *midi;
cdev_decl(midi);
midi_in(o->midi, msg, msglen);
return (s->midithru == c->u.midi.midithru);
c->u.midi.midithru - midithru_array, c->u.midi.port->num);
c->u.midi.midithru - midithru_array);
if (midithru_setport(c->u.midi.midithru, c->u.midi.port, val)) {
if (midithru_setthru(c->u.midi.midithru, val)) {
midi_abort(o->midi);
} midi;
midi_del(struct midi *ep)
struct midi *peer;
midi_link(struct midi *ep, struct midi *peer)
midi_unlink(struct midi *ep, struct midi *peer)
midi_send(struct midi *iep, unsigned char *msg, int size)
struct midi *oep;
midi_tickets(struct midi *iep)
struct midi *oep;
midi_fill(struct midi *oep)
struct midi *iep;
midi_in(struct midi *iep, unsigned char *idata, int icount)
midi_out(struct midi *oep, unsigned char *idata, int icount)
midi_abort(struct midi *p)
struct midi *ep;
midi_send(p->midi, msg, size);
midi_out(p->midi, msg, size);
logx(0, "midi%u: port exit", p->midi->num);
c->midi = midi_new(&port_midiops, c, mode);
struct midi midi_ep[MIDI_NEP];
midi_del(c->midi);
logx(3, "midi%u: port requested", c->midi->num);
logx(3, "midi%u: port released", c->midi->num);
logx(1, "midi%u: failed to open midi port", c->midi->num);
logx(0, "midi%u: can't close port (not opened)", c->midi->num);
logx(2, "midi%u: closed", c->midi->num);
struct midi *ep = c->midi;
logx(3, "midi%u: draining", c->midi->num);
midithru_rm(midithru_array + i, p->midi);
midi_abort(p->midi);
if (c->state == DEV_INIT && (t->prefportmask & c->midi->self))
name, -1, 1, !!(t->portmask & c->midi->self));
midithru_rm(t, c->midi);
midi_link(midi_ep + i, c->midi);
t->portmask |= c->midi->self;
midithru_addprog(struct midithru *t, struct midi *ep)
midithru_rm(struct midithru *t, struct midi *ep)
t->prefportmask |= c->midi->self;
midithru_rm(t, c->midi);
t->prefportmask &= ~c->midi->self;
if (!(midithru_array[i].prefportmask & p->midi->self))
struct midi *
struct midi *ep;
struct midi *midi_new(struct midiops *, void *, int);
void midi_del(struct midi *);
void midi_tickets(struct midi *);
void midi_in(struct midi *, unsigned char *, int);
void midi_out(struct midi *, unsigned char *, int);
void midi_send(struct midi *, unsigned char *, int);
void midi_fill(struct midi *);
unsigned int midi_rxmask(struct midi *);
void midi_link(struct midi *, struct midi *);
void midi_unlink(struct midi *, struct midi *);
void midi_abort(struct midi *);
void midi_migrate(struct midi *, struct midi *);
void midithru_addprog(struct midithru *, struct midi *);
void midithru_rm(struct midithru *, struct midi *);
struct midi *owner; /* current writer stream */
struct midi *midi;
struct midi *ep = p->midi;
p->mio.hdl = fdpass_mio_open(p->num, p->midi->mode);
struct midi *ep = p->midi;
struct midi *ep = p->midi;
midi_send(o->midi, msg, len);
midi_in(o->midi, msg, sizeof(msg));
midi_in(o->midi, (unsigned char *)&x, SYSEX_SIZE(slotdesc));
midi_in(o->midi, (unsigned char *)&x, SYSEX_SIZE(dumpend));
o->midi = midi_new(&opt_midiops, o, MODE_MIDIIN | MODE_MIDIOUT);
midithru_addprog(midithru_array + o->num, o->midi);
midi_del(o->midi);
struct midi *midi;
if (f->midi != NULL && f->midi->obuf.used > 0) {
size = f->midi->obuf.used;
midi_unlink(f->midi, f->port->midi);
if (f->midi) {
midi_del(f->midi);
f->midi = NULL;
midi_send(f->midi, msg, size);
midi_out(f->midi, msg, size);
f->midi = NULL;
midi_in(f->midi, midibuf, n);
else if (f->midi)
data = abuf_rgetblk(&f->midi->obuf, &count);
else if (f->midi)
abuf_rdiscard(&f->midi->obuf, n);
if (f->midi)
midi_fill(f->midi);
f->midi = midi_new(&sock_midiops, f, mode);
if (f->midi == NULL)
midithru_addprog(midithru, f->midi);
midithru_addprog(f->midithru, f->midi);
midi_link(f->midi, c->midi);
(f->midi && !(f->midi->mode & MODE_MIDIOUT))) {
struct midi;
struct midi *midi; /* midi endpoint */