Lines Matching refs:midi
239 struct emu10k1x_midi midi;
807 if (chip->midi.interrupt)
808 chip->midi.interrupt(chip, status);
1234 struct emu10k1x_midi *midi, unsigned int status)
1238 if (midi->rmidi == NULL) {
1239 snd_emu10k1x_intr_disable(emu, midi->tx_enable | midi->rx_enable);
1243 spin_lock(&midi->input_lock);
1244 if ((status & midi->ipr_rx) && mpu401_input_avail(emu, midi)) {
1245 if (!(midi->midi_mode & EMU10K1X_MIDI_MODE_INPUT)) {
1246 mpu401_clear_rx(emu, midi);
1248 byte = mpu401_read_data(emu, midi);
1249 if (midi->substream_input)
1250 snd_rawmidi_receive(midi->substream_input, &byte, 1);
1253 spin_unlock(&midi->input_lock);
1255 spin_lock(&midi->output_lock);
1256 if ((status & midi->ipr_tx) && mpu401_output_ready(emu, midi)) {
1257 if (midi->substream_output &&
1258 snd_rawmidi_transmit(midi->substream_output, &byte, 1) == 1) {
1259 mpu401_write_data(emu, midi, byte);
1261 snd_emu10k1x_intr_disable(emu, midi->tx_enable);
1264 spin_unlock(&midi->output_lock);
1269 do_emu10k1x_midi_interrupt(emu, &emu->midi, status);
1273 struct emu10k1x_midi *midi, unsigned char cmd, int ack)
1278 spin_lock_irqsave(&midi->input_lock, flags);
1279 mpu401_write_data(emu, midi, 0x00);
1280 /* mpu401_clear_rx(emu, midi); */
1282 mpu401_write_cmd(emu, midi, cmd);
1287 if (mpu401_input_avail(emu, midi)) {
1288 if (mpu401_read_data(emu, midi) == MPU401_ACK)
1292 if (!ok && mpu401_read_data(emu, midi) == MPU401_ACK)
1297 spin_unlock_irqrestore(&midi->input_lock, flags);
1302 mpu401_read_stat(emu, midi),
1303 mpu401_read_data(emu, midi));
1312 struct emu10k1x_midi *midi = substream->rmidi->private_data;
1315 emu = midi->emu;
1318 spin_lock_irqsave(&midi->open_lock, flags);
1319 midi->midi_mode |= EMU10K1X_MIDI_MODE_INPUT;
1320 midi->substream_input = substream;
1321 if (!(midi->midi_mode & EMU10K1X_MIDI_MODE_OUTPUT)) {
1322 spin_unlock_irqrestore(&midi->open_lock, flags);
1323 if (snd_emu10k1x_midi_cmd(emu, midi, MPU401_RESET, 1))
1325 if (snd_emu10k1x_midi_cmd(emu, midi, MPU401_ENTER_UART, 1))
1328 spin_unlock_irqrestore(&midi->open_lock, flags);
1339 struct emu10k1x_midi *midi = substream->rmidi->private_data;
1342 emu = midi->emu;
1345 spin_lock_irqsave(&midi->open_lock, flags);
1346 midi->midi_mode |= EMU10K1X_MIDI_MODE_OUTPUT;
1347 midi->substream_output = substream;
1348 if (!(midi->midi_mode & EMU10K1X_MIDI_MODE_INPUT)) {
1349 spin_unlock_irqrestore(&midi->open_lock, flags);
1350 if (snd_emu10k1x_midi_cmd(emu, midi, MPU401_RESET, 1))
1352 if (snd_emu10k1x_midi_cmd(emu, midi, MPU401_ENTER_UART, 1))
1355 spin_unlock_irqrestore(&midi->open_lock, flags);
1366 struct emu10k1x_midi *midi = substream->rmidi->private_data;
1370 emu = midi->emu;
1373 spin_lock_irqsave(&midi->open_lock, flags);
1374 snd_emu10k1x_intr_disable(emu, midi->rx_enable);
1375 midi->midi_mode &= ~EMU10K1X_MIDI_MODE_INPUT;
1376 midi->substream_input = NULL;
1377 if (!(midi->midi_mode & EMU10K1X_MIDI_MODE_OUTPUT)) {
1378 spin_unlock_irqrestore(&midi->open_lock, flags);
1379 err = snd_emu10k1x_midi_cmd(emu, midi, MPU401_RESET, 0);
1381 spin_unlock_irqrestore(&midi->open_lock, flags);
1389 struct emu10k1x_midi *midi = substream->rmidi->private_data;
1393 emu = midi->emu;
1396 spin_lock_irqsave(&midi->open_lock, flags);
1397 snd_emu10k1x_intr_disable(emu, midi->tx_enable);
1398 midi->midi_mode &= ~EMU10K1X_MIDI_MODE_OUTPUT;
1399 midi->substream_output = NULL;
1400 if (!(midi->midi_mode & EMU10K1X_MIDI_MODE_INPUT)) {
1401 spin_unlock_irqrestore(&midi->open_lock, flags);
1402 err = snd_emu10k1x_midi_cmd(emu, midi, MPU401_RESET, 0);
1404 spin_unlock_irqrestore(&midi->open_lock, flags);
1412 struct emu10k1x_midi *midi = substream->rmidi->private_data;
1413 emu = midi->emu;
1418 snd_emu10k1x_intr_enable(emu, midi->rx_enable);
1420 snd_emu10k1x_intr_disable(emu, midi->rx_enable);
1426 struct emu10k1x_midi *midi = substream->rmidi->private_data;
1429 emu = midi->emu;
1438 spin_lock_irqsave(&midi->output_lock, flags);
1440 if (mpu401_output_ready(emu, midi)) {
1441 if (!(midi->midi_mode & EMU10K1X_MIDI_MODE_OUTPUT) ||
1444 spin_unlock_irqrestore(&midi->output_lock, flags);
1447 mpu401_write_data(emu, midi, byte);
1453 spin_unlock_irqrestore(&midi->output_lock, flags);
1454 snd_emu10k1x_intr_enable(emu, midi->tx_enable);
1456 snd_emu10k1x_intr_disable(emu, midi->tx_enable);
1480 struct emu10k1x_midi *midi = rmidi->private_data;
1481 midi->interrupt = NULL;
1482 midi->rmidi = NULL;
1486 struct emu10k1x_midi *midi, int device,
1494 midi->emu = emu;
1495 spin_lock_init(&midi->open_lock);
1496 spin_lock_init(&midi->input_lock);
1497 spin_lock_init(&midi->output_lock);
1504 rmidi->private_data = midi;
1506 midi->rmidi = rmidi;
1512 struct emu10k1x_midi *midi = &emu->midi;
1515 if ((err = emu10k1x_midi_init(emu, midi, 0, "EMU10K1X MPU-401 (UART)")) < 0)
1518 midi->tx_enable = INTE_MIDITXENABLE;
1519 midi->rx_enable = INTE_MIDIRXENABLE;
1520 midi->port = MUDATA;
1521 midi->ipr_tx = IPR_MIDITRANSBUFEMPTY;
1522 midi->ipr_rx = IPR_MIDIRECVBUFEMPTY;
1523 midi->interrupt = snd_emu10k1x_midi_interrupt;