• Home
  • Raw
  • Download

Lines Matching refs:midi

58 wf_mpu_status (snd_wavefront_midi_t *midi)  in wf_mpu_status()  argument
61 return inb (midi->mpu_status_port); in wf_mpu_status()
65 input_avail (snd_wavefront_midi_t *midi) in input_avail() argument
68 return !(wf_mpu_status(midi) & INPUT_AVAIL); in input_avail()
72 output_ready (snd_wavefront_midi_t *midi) in output_ready() argument
75 return !(wf_mpu_status(midi) & OUTPUT_READY); in output_ready()
79 read_data (snd_wavefront_midi_t *midi) in read_data() argument
82 return inb (midi->mpu_data_port); in read_data()
86 write_data (snd_wavefront_midi_t *midi, unsigned char byte) in write_data() argument
89 outb (byte, midi->mpu_data_port); in write_data()
112 return &acard->wavefront.midi; in get_wavefront_midi()
117 snd_wavefront_midi_t *midi = &card->wavefront.midi; in snd_wavefront_midi_output_write() local
135 if (midi->substream_output[midi->output_mpu] == NULL) { in snd_wavefront_midi_output_write()
144 if (output_ready (midi)) in snd_wavefront_midi_output_write()
148 spin_lock_irqsave (&midi->virtual, flags); in snd_wavefront_midi_output_write()
149 if ((midi->mode[midi->output_mpu] & MPU401_MODE_OUTPUT) == 0) { in snd_wavefront_midi_output_write()
150 spin_unlock_irqrestore (&midi->virtual, flags); in snd_wavefront_midi_output_write()
153 if (output_ready (midi)) { in snd_wavefront_midi_output_write()
154 if (snd_rawmidi_transmit(midi->substream_output[midi->output_mpu], &midi_byte, 1) == 1) { in snd_wavefront_midi_output_write()
155 if (!midi->isvirtual || in snd_wavefront_midi_output_write()
158 write_data(midi, midi_byte); in snd_wavefront_midi_output_write()
161 if (midi->istimer) { in snd_wavefront_midi_output_write()
162 if (--midi->istimer <= 0) in snd_wavefront_midi_output_write()
163 del_timer(&midi->timer); in snd_wavefront_midi_output_write()
165 midi->mode[midi->output_mpu] &= ~MPU401_MODE_OUTPUT_TRIGGER; in snd_wavefront_midi_output_write()
166 spin_unlock_irqrestore (&midi->virtual, flags); in snd_wavefront_midi_output_write()
170 spin_unlock_irqrestore (&midi->virtual, flags); in snd_wavefront_midi_output_write()
173 spin_unlock_irqrestore (&midi->virtual, flags); in snd_wavefront_midi_output_write()
178 if (midi->substream_output[!midi->output_mpu] == NULL) { in snd_wavefront_midi_output_write()
187 if (output_ready (midi)) in snd_wavefront_midi_output_write()
191 spin_lock_irqsave (&midi->virtual, flags); in snd_wavefront_midi_output_write()
192 if (!midi->isvirtual) in snd_wavefront_midi_output_write()
194 mpu = midi->output_mpu ^ mask; in snd_wavefront_midi_output_write()
196 if ((midi->mode[mpu] & MPU401_MODE_OUTPUT) == 0) { in snd_wavefront_midi_output_write()
197 spin_unlock_irqrestore (&midi->virtual, flags); in snd_wavefront_midi_output_write()
200 if (snd_rawmidi_transmit_empty(midi->substream_output[mpu])) in snd_wavefront_midi_output_write()
202 if (output_ready (midi)) { in snd_wavefront_midi_output_write()
203 if (mpu != midi->output_mpu) { in snd_wavefront_midi_output_write()
204 write_data(midi, mpu == internal_mpu ? in snd_wavefront_midi_output_write()
207 midi->output_mpu = mpu; in snd_wavefront_midi_output_write()
208 } else if (snd_rawmidi_transmit(midi->substream_output[mpu], &midi_byte, 1) == 1) { in snd_wavefront_midi_output_write()
209 if (!midi->isvirtual || in snd_wavefront_midi_output_write()
212 write_data(midi, midi_byte); in snd_wavefront_midi_output_write()
216 if (midi->istimer) { in snd_wavefront_midi_output_write()
217 if (--midi->istimer <= 0) in snd_wavefront_midi_output_write()
218 del_timer(&midi->timer); in snd_wavefront_midi_output_write()
220 midi->mode[mpu] &= ~MPU401_MODE_OUTPUT_TRIGGER; in snd_wavefront_midi_output_write()
221 spin_unlock_irqrestore (&midi->virtual, flags); in snd_wavefront_midi_output_write()
225 spin_unlock_irqrestore (&midi->virtual, flags); in snd_wavefront_midi_output_write()
228 spin_unlock_irqrestore (&midi->virtual, flags); in snd_wavefront_midi_output_write()
235 snd_wavefront_midi_t *midi; in snd_wavefront_midi_input_open() local
245 if ((midi = get_wavefront_midi (substream)) == NULL) in snd_wavefront_midi_input_open()
248 spin_lock_irqsave (&midi->open, flags); in snd_wavefront_midi_input_open()
249 midi->mode[mpu] |= MPU401_MODE_INPUT; in snd_wavefront_midi_input_open()
250 midi->substream_input[mpu] = substream; in snd_wavefront_midi_input_open()
251 spin_unlock_irqrestore (&midi->open, flags); in snd_wavefront_midi_input_open()
259 snd_wavefront_midi_t *midi; in snd_wavefront_midi_output_open() local
269 if ((midi = get_wavefront_midi (substream)) == NULL) in snd_wavefront_midi_output_open()
272 spin_lock_irqsave (&midi->open, flags); in snd_wavefront_midi_output_open()
273 midi->mode[mpu] |= MPU401_MODE_OUTPUT; in snd_wavefront_midi_output_open()
274 midi->substream_output[mpu] = substream; in snd_wavefront_midi_output_open()
275 spin_unlock_irqrestore (&midi->open, flags); in snd_wavefront_midi_output_open()
283 snd_wavefront_midi_t *midi; in snd_wavefront_midi_input_close() local
293 if ((midi = get_wavefront_midi (substream)) == NULL) in snd_wavefront_midi_input_close()
296 spin_lock_irqsave (&midi->open, flags); in snd_wavefront_midi_input_close()
297 midi->mode[mpu] &= ~MPU401_MODE_INPUT; in snd_wavefront_midi_input_close()
298 spin_unlock_irqrestore (&midi->open, flags); in snd_wavefront_midi_input_close()
306 snd_wavefront_midi_t *midi; in snd_wavefront_midi_output_close() local
316 if ((midi = get_wavefront_midi (substream)) == NULL) in snd_wavefront_midi_output_close()
319 spin_lock_irqsave (&midi->open, flags); in snd_wavefront_midi_output_close()
320 midi->mode[mpu] &= ~MPU401_MODE_OUTPUT; in snd_wavefront_midi_output_close()
321 spin_unlock_irqrestore (&midi->open, flags); in snd_wavefront_midi_output_close()
328 snd_wavefront_midi_t *midi; in snd_wavefront_midi_input_trigger() local
339 if ((midi = get_wavefront_midi (substream)) == NULL) { in snd_wavefront_midi_input_trigger()
343 spin_lock_irqsave (&midi->virtual, flags); in snd_wavefront_midi_input_trigger()
345 midi->mode[mpu] |= MPU401_MODE_INPUT_TRIGGER; in snd_wavefront_midi_input_trigger()
347 midi->mode[mpu] &= ~MPU401_MODE_INPUT_TRIGGER; in snd_wavefront_midi_input_trigger()
349 spin_unlock_irqrestore (&midi->virtual, flags); in snd_wavefront_midi_input_trigger()
355 snd_wavefront_midi_t *midi = &card->wavefront.midi; in snd_wavefront_midi_output_timer() local
358 spin_lock_irqsave (&midi->virtual, flags); in snd_wavefront_midi_output_timer()
359 midi->timer.expires = 1 + jiffies; in snd_wavefront_midi_output_timer()
360 add_timer(&midi->timer); in snd_wavefront_midi_output_timer()
361 spin_unlock_irqrestore (&midi->virtual, flags); in snd_wavefront_midi_output_timer()
368 snd_wavefront_midi_t *midi; in snd_wavefront_midi_output_trigger() local
379 if ((midi = get_wavefront_midi (substream)) == NULL) { in snd_wavefront_midi_output_trigger()
383 spin_lock_irqsave (&midi->virtual, flags); in snd_wavefront_midi_output_trigger()
385 if ((midi->mode[mpu] & MPU401_MODE_OUTPUT_TRIGGER) == 0) { in snd_wavefront_midi_output_trigger()
386 if (!midi->istimer) { in snd_wavefront_midi_output_trigger()
387 init_timer(&midi->timer); in snd_wavefront_midi_output_trigger()
388 midi->timer.function = snd_wavefront_midi_output_timer; in snd_wavefront_midi_output_trigger()
389 midi->timer.data = (unsigned long) substream->rmidi->card->private_data; in snd_wavefront_midi_output_trigger()
390 midi->timer.expires = 1 + jiffies; in snd_wavefront_midi_output_trigger()
391 add_timer(&midi->timer); in snd_wavefront_midi_output_trigger()
393 midi->istimer++; in snd_wavefront_midi_output_trigger()
394 midi->mode[mpu] |= MPU401_MODE_OUTPUT_TRIGGER; in snd_wavefront_midi_output_trigger()
397 midi->mode[mpu] &= ~MPU401_MODE_OUTPUT_TRIGGER; in snd_wavefront_midi_output_trigger()
399 spin_unlock_irqrestore (&midi->virtual, flags); in snd_wavefront_midi_output_trigger()
410 snd_wavefront_midi_t *midi; in snd_wavefront_midi_interrupt() local
416 midi = &card->wavefront.midi; in snd_wavefront_midi_interrupt()
418 if (!input_avail (midi)) { /* not for us */ in snd_wavefront_midi_interrupt()
423 spin_lock_irqsave (&midi->virtual, flags); in snd_wavefront_midi_interrupt()
426 if (input_avail (midi)) { in snd_wavefront_midi_interrupt()
427 byte = read_data (midi); in snd_wavefront_midi_interrupt()
429 if (midi->isvirtual) { in snd_wavefront_midi_interrupt()
431 substream = midi->substream_input[external_mpu]; in snd_wavefront_midi_interrupt()
434 substream = midi->substream_output[internal_mpu]; in snd_wavefront_midi_interrupt()
438 substream = midi->substream_input[internal_mpu]; in snd_wavefront_midi_interrupt()
446 if (midi->mode[mpu] & MPU401_MODE_INPUT_TRIGGER) { in snd_wavefront_midi_interrupt()
453 spin_unlock_irqrestore (&midi->virtual, flags); in snd_wavefront_midi_interrupt()
464 spin_lock_irqsave (&card->wavefront.midi.virtual, flags); in snd_wavefront_midi_enable_virtual()
465 card->wavefront.midi.isvirtual = 1; in snd_wavefront_midi_enable_virtual()
466 card->wavefront.midi.output_mpu = internal_mpu; in snd_wavefront_midi_enable_virtual()
467 card->wavefront.midi.input_mpu = internal_mpu; in snd_wavefront_midi_enable_virtual()
468 spin_unlock_irqrestore (&card->wavefront.midi.virtual, flags); in snd_wavefront_midi_enable_virtual()
477 spin_lock_irqsave (&card->wavefront.midi.virtual, flags); in snd_wavefront_midi_disable_virtual()
480 card->wavefront.midi.isvirtual = 0; in snd_wavefront_midi_disable_virtual()
481 spin_unlock_irqrestore (&card->wavefront.midi.virtual, flags); in snd_wavefront_midi_disable_virtual()
491 snd_wavefront_midi_t *midi; in snd_wavefront_midi_start() local
494 midi = &dev->midi; in snd_wavefront_midi_start()
502 for (i = 0; i < 30000 && !output_ready (midi); i++); in snd_wavefront_midi_start()
504 if (!output_ready (midi)) { in snd_wavefront_midi_start()
515 outb (UART_MODE_ON, midi->mpu_command_port); in snd_wavefront_midi_start()
518 if (input_avail (midi)) { in snd_wavefront_midi_start()
519 if (read_data (midi) == MPU_ACK) { in snd_wavefront_midi_start()