Lines Matching refs:midi

253 	struct emu10k1x_midi midi;  member
825 if (chip->midi.interrupt) in snd_emu10k1x_interrupt()
826 chip->midi.interrupt(chip, status); in snd_emu10k1x_interrupt()
1259 struct emu10k1x_midi *midi, unsigned int status) in do_emu10k1x_midi_interrupt() argument
1263 if (midi->rmidi == NULL) { in do_emu10k1x_midi_interrupt()
1264 snd_emu10k1x_intr_disable(emu, midi->tx_enable | midi->rx_enable); in do_emu10k1x_midi_interrupt()
1268 spin_lock(&midi->input_lock); in do_emu10k1x_midi_interrupt()
1269 if ((status & midi->ipr_rx) && mpu401_input_avail(emu, midi)) { in do_emu10k1x_midi_interrupt()
1270 if (!(midi->midi_mode & EMU10K1X_MIDI_MODE_INPUT)) { in do_emu10k1x_midi_interrupt()
1271 mpu401_clear_rx(emu, midi); in do_emu10k1x_midi_interrupt()
1273 byte = mpu401_read_data(emu, midi); in do_emu10k1x_midi_interrupt()
1274 if (midi->substream_input) in do_emu10k1x_midi_interrupt()
1275 snd_rawmidi_receive(midi->substream_input, &byte, 1); in do_emu10k1x_midi_interrupt()
1278 spin_unlock(&midi->input_lock); in do_emu10k1x_midi_interrupt()
1280 spin_lock(&midi->output_lock); in do_emu10k1x_midi_interrupt()
1281 if ((status & midi->ipr_tx) && mpu401_output_ready(emu, midi)) { in do_emu10k1x_midi_interrupt()
1282 if (midi->substream_output && in do_emu10k1x_midi_interrupt()
1283 snd_rawmidi_transmit(midi->substream_output, &byte, 1) == 1) { in do_emu10k1x_midi_interrupt()
1284 mpu401_write_data(emu, midi, byte); in do_emu10k1x_midi_interrupt()
1286 snd_emu10k1x_intr_disable(emu, midi->tx_enable); in do_emu10k1x_midi_interrupt()
1289 spin_unlock(&midi->output_lock); in do_emu10k1x_midi_interrupt()
1294 do_emu10k1x_midi_interrupt(emu, &emu->midi, status); in snd_emu10k1x_midi_interrupt()
1298 struct emu10k1x_midi *midi, unsigned char cmd, int ack) in snd_emu10k1x_midi_cmd() argument
1303 spin_lock_irqsave(&midi->input_lock, flags); in snd_emu10k1x_midi_cmd()
1304 mpu401_write_data(emu, midi, 0x00); in snd_emu10k1x_midi_cmd()
1307 mpu401_write_cmd(emu, midi, cmd); in snd_emu10k1x_midi_cmd()
1312 if (mpu401_input_avail(emu, midi)) { in snd_emu10k1x_midi_cmd()
1313 if (mpu401_read_data(emu, midi) == MPU401_ACK) in snd_emu10k1x_midi_cmd()
1317 if (!ok && mpu401_read_data(emu, midi) == MPU401_ACK) in snd_emu10k1x_midi_cmd()
1322 spin_unlock_irqrestore(&midi->input_lock, flags); in snd_emu10k1x_midi_cmd()
1327 mpu401_read_stat(emu, midi), in snd_emu10k1x_midi_cmd()
1328 mpu401_read_data(emu, midi)); in snd_emu10k1x_midi_cmd()
1337 struct emu10k1x_midi *midi = substream->rmidi->private_data; in snd_emu10k1x_midi_input_open() local
1340 emu = midi->emu; in snd_emu10k1x_midi_input_open()
1343 spin_lock_irqsave(&midi->open_lock, flags); in snd_emu10k1x_midi_input_open()
1344 midi->midi_mode |= EMU10K1X_MIDI_MODE_INPUT; in snd_emu10k1x_midi_input_open()
1345 midi->substream_input = substream; in snd_emu10k1x_midi_input_open()
1346 if (!(midi->midi_mode & EMU10K1X_MIDI_MODE_OUTPUT)) { in snd_emu10k1x_midi_input_open()
1347 spin_unlock_irqrestore(&midi->open_lock, flags); in snd_emu10k1x_midi_input_open()
1348 if (snd_emu10k1x_midi_cmd(emu, midi, MPU401_RESET, 1)) in snd_emu10k1x_midi_input_open()
1350 if (snd_emu10k1x_midi_cmd(emu, midi, MPU401_ENTER_UART, 1)) in snd_emu10k1x_midi_input_open()
1353 spin_unlock_irqrestore(&midi->open_lock, flags); in snd_emu10k1x_midi_input_open()
1364 struct emu10k1x_midi *midi = substream->rmidi->private_data; in snd_emu10k1x_midi_output_open() local
1367 emu = midi->emu; in snd_emu10k1x_midi_output_open()
1370 spin_lock_irqsave(&midi->open_lock, flags); in snd_emu10k1x_midi_output_open()
1371 midi->midi_mode |= EMU10K1X_MIDI_MODE_OUTPUT; in snd_emu10k1x_midi_output_open()
1372 midi->substream_output = substream; in snd_emu10k1x_midi_output_open()
1373 if (!(midi->midi_mode & EMU10K1X_MIDI_MODE_INPUT)) { in snd_emu10k1x_midi_output_open()
1374 spin_unlock_irqrestore(&midi->open_lock, flags); in snd_emu10k1x_midi_output_open()
1375 if (snd_emu10k1x_midi_cmd(emu, midi, MPU401_RESET, 1)) in snd_emu10k1x_midi_output_open()
1377 if (snd_emu10k1x_midi_cmd(emu, midi, MPU401_ENTER_UART, 1)) in snd_emu10k1x_midi_output_open()
1380 spin_unlock_irqrestore(&midi->open_lock, flags); in snd_emu10k1x_midi_output_open()
1391 struct emu10k1x_midi *midi = substream->rmidi->private_data; in snd_emu10k1x_midi_input_close() local
1395 emu = midi->emu; in snd_emu10k1x_midi_input_close()
1398 spin_lock_irqsave(&midi->open_lock, flags); in snd_emu10k1x_midi_input_close()
1399 snd_emu10k1x_intr_disable(emu, midi->rx_enable); in snd_emu10k1x_midi_input_close()
1400 midi->midi_mode &= ~EMU10K1X_MIDI_MODE_INPUT; in snd_emu10k1x_midi_input_close()
1401 midi->substream_input = NULL; in snd_emu10k1x_midi_input_close()
1402 if (!(midi->midi_mode & EMU10K1X_MIDI_MODE_OUTPUT)) { in snd_emu10k1x_midi_input_close()
1403 spin_unlock_irqrestore(&midi->open_lock, flags); in snd_emu10k1x_midi_input_close()
1404 err = snd_emu10k1x_midi_cmd(emu, midi, MPU401_RESET, 0); in snd_emu10k1x_midi_input_close()
1406 spin_unlock_irqrestore(&midi->open_lock, flags); in snd_emu10k1x_midi_input_close()
1414 struct emu10k1x_midi *midi = substream->rmidi->private_data; in snd_emu10k1x_midi_output_close() local
1418 emu = midi->emu; in snd_emu10k1x_midi_output_close()
1421 spin_lock_irqsave(&midi->open_lock, flags); in snd_emu10k1x_midi_output_close()
1422 snd_emu10k1x_intr_disable(emu, midi->tx_enable); in snd_emu10k1x_midi_output_close()
1423 midi->midi_mode &= ~EMU10K1X_MIDI_MODE_OUTPUT; in snd_emu10k1x_midi_output_close()
1424 midi->substream_output = NULL; in snd_emu10k1x_midi_output_close()
1425 if (!(midi->midi_mode & EMU10K1X_MIDI_MODE_INPUT)) { in snd_emu10k1x_midi_output_close()
1426 spin_unlock_irqrestore(&midi->open_lock, flags); in snd_emu10k1x_midi_output_close()
1427 err = snd_emu10k1x_midi_cmd(emu, midi, MPU401_RESET, 0); in snd_emu10k1x_midi_output_close()
1429 spin_unlock_irqrestore(&midi->open_lock, flags); in snd_emu10k1x_midi_output_close()
1437 struct emu10k1x_midi *midi = substream->rmidi->private_data; in snd_emu10k1x_midi_input_trigger() local
1438 emu = midi->emu; in snd_emu10k1x_midi_input_trigger()
1443 snd_emu10k1x_intr_enable(emu, midi->rx_enable); in snd_emu10k1x_midi_input_trigger()
1445 snd_emu10k1x_intr_disable(emu, midi->rx_enable); in snd_emu10k1x_midi_input_trigger()
1451 struct emu10k1x_midi *midi = substream->rmidi->private_data; in snd_emu10k1x_midi_output_trigger() local
1454 emu = midi->emu; in snd_emu10k1x_midi_output_trigger()
1463 spin_lock_irqsave(&midi->output_lock, flags); in snd_emu10k1x_midi_output_trigger()
1465 if (mpu401_output_ready(emu, midi)) { in snd_emu10k1x_midi_output_trigger()
1466 if (!(midi->midi_mode & EMU10K1X_MIDI_MODE_OUTPUT) || in snd_emu10k1x_midi_output_trigger()
1469 spin_unlock_irqrestore(&midi->output_lock, flags); in snd_emu10k1x_midi_output_trigger()
1472 mpu401_write_data(emu, midi, byte); in snd_emu10k1x_midi_output_trigger()
1478 spin_unlock_irqrestore(&midi->output_lock, flags); in snd_emu10k1x_midi_output_trigger()
1479 snd_emu10k1x_intr_enable(emu, midi->tx_enable); in snd_emu10k1x_midi_output_trigger()
1481 snd_emu10k1x_intr_disable(emu, midi->tx_enable); in snd_emu10k1x_midi_output_trigger()
1505 struct emu10k1x_midi *midi = rmidi->private_data; in snd_emu10k1x_midi_free() local
1506 midi->interrupt = NULL; in snd_emu10k1x_midi_free()
1507 midi->rmidi = NULL; in snd_emu10k1x_midi_free()
1511 struct emu10k1x_midi *midi, int device, in emu10k1x_midi_init() argument
1519 midi->emu = emu; in emu10k1x_midi_init()
1520 spin_lock_init(&midi->open_lock); in emu10k1x_midi_init()
1521 spin_lock_init(&midi->input_lock); in emu10k1x_midi_init()
1522 spin_lock_init(&midi->output_lock); in emu10k1x_midi_init()
1529 rmidi->private_data = midi; in emu10k1x_midi_init()
1531 midi->rmidi = rmidi; in emu10k1x_midi_init()
1537 struct emu10k1x_midi *midi = &emu->midi; in snd_emu10k1x_midi() local
1540 if ((err = emu10k1x_midi_init(emu, midi, 0, "EMU10K1X MPU-401 (UART)")) < 0) in snd_emu10k1x_midi()
1543 midi->tx_enable = INTE_MIDITXENABLE; in snd_emu10k1x_midi()
1544 midi->rx_enable = INTE_MIDIRXENABLE; in snd_emu10k1x_midi()
1545 midi->port = MUDATA; in snd_emu10k1x_midi()
1546 midi->ipr_tx = IPR_MIDITRANSBUFEMPTY; in snd_emu10k1x_midi()
1547 midi->ipr_rx = IPR_MIDIRECVBUFEMPTY; in snd_emu10k1x_midi()
1548 midi->interrupt = snd_emu10k1x_midi_interrupt; in snd_emu10k1x_midi()