Lines Matching refs:hmidi
1307 static int snd_hdsp_midi_output_write (struct hdsp_midi *hmidi)
1317 spin_lock_irqsave (&hmidi->lock, flags);
1318 if (hmidi->output) {
1319 if (!snd_rawmidi_transmit_empty (hmidi->output)) {
1320 n_pending = snd_hdsp_midi_output_possible(hmidi->hdsp, hmidi->id);
1325 to_write = snd_rawmidi_transmit(hmidi->output, buf, n_pending);
1328 snd_hdsp_midi_write_byte (hmidi->hdsp, hmidi->id, buf[i]);
1333 spin_unlock_irqrestore (&hmidi->lock, flags);
1337 static int snd_hdsp_midi_input_read (struct hdsp_midi *hmidi)
1344 spin_lock_irqsave (&hmidi->lock, flags);
1345 n_pending = snd_hdsp_midi_input_available(hmidi->hdsp, hmidi->id);
1347 if (hmidi->input) {
1351 buf[i] = snd_hdsp_midi_read_byte (hmidi->hdsp, hmidi->id);
1353 snd_rawmidi_receive (hmidi->input, buf, n_pending);
1357 snd_hdsp_midi_read_byte (hmidi->hdsp, hmidi->id);
1360 hmidi->pending = 0;
1361 if (hmidi->id)
1362 hmidi->hdsp->control_register |= HDSP_Midi1InterruptEnable;
1364 hmidi->hdsp->control_register |= HDSP_Midi0InterruptEnable;
1365 hdsp_write(hmidi->hdsp, HDSP_controlRegister, hmidi->hdsp->control_register);
1366 spin_unlock_irqrestore (&hmidi->lock, flags);
1367 return snd_hdsp_midi_output_write (hmidi);
1373 struct hdsp_midi *hmidi;
1377 hmidi = (struct hdsp_midi *) substream->rmidi->private_data;
1378 hdsp = hmidi->hdsp;
1379 ie = hmidi->id ? HDSP_Midi1InterruptEnable : HDSP_Midi0InterruptEnable;
1383 snd_hdsp_flush_midi_input (hdsp, hmidi->id);
1396 struct hdsp_midi *hmidi = from_timer(hmidi, t, timer);
1399 snd_hdsp_midi_output_write(hmidi);
1400 spin_lock_irqsave (&hmidi->lock, flags);
1402 /* this does not bump hmidi->istimer, because the
1408 if (hmidi->istimer)
1409 mod_timer(&hmidi->timer, 1 + jiffies);
1411 spin_unlock_irqrestore (&hmidi->lock, flags);
1416 struct hdsp_midi *hmidi;
1419 hmidi = (struct hdsp_midi *) substream->rmidi->private_data;
1420 spin_lock_irqsave (&hmidi->lock, flags);
1422 if (!hmidi->istimer) {
1423 timer_setup(&hmidi->timer, snd_hdsp_midi_output_timer,
1425 mod_timer(&hmidi->timer, 1 + jiffies);
1426 hmidi->istimer++;
1429 if (hmidi->istimer && --hmidi->istimer <= 0)
1430 del_timer (&hmidi->timer);
1432 spin_unlock_irqrestore (&hmidi->lock, flags);
1434 snd_hdsp_midi_output_write(hmidi);
1439 struct hdsp_midi *hmidi;
1441 hmidi = (struct hdsp_midi *) substream->rmidi->private_data;
1442 spin_lock_irq (&hmidi->lock);
1443 snd_hdsp_flush_midi_input (hmidi->hdsp, hmidi->id);
1444 hmidi->input = substream;
1445 spin_unlock_irq (&hmidi->lock);
1452 struct hdsp_midi *hmidi;
1454 hmidi = (struct hdsp_midi *) substream->rmidi->private_data;
1455 spin_lock_irq (&hmidi->lock);
1456 hmidi->output = substream;
1457 spin_unlock_irq (&hmidi->lock);
1464 struct hdsp_midi *hmidi;
1468 hmidi = (struct hdsp_midi *) substream->rmidi->private_data;
1469 spin_lock_irq (&hmidi->lock);
1470 hmidi->input = NULL;
1471 spin_unlock_irq (&hmidi->lock);
1478 struct hdsp_midi *hmidi;
1482 hmidi = (struct hdsp_midi *) substream->rmidi->private_data;
1483 spin_lock_irq (&hmidi->lock);
1484 hmidi->output = NULL;
1485 spin_unlock_irq (&hmidi->lock);