Lines Matching refs:hmidi
1332 static int snd_hdsp_midi_output_write (struct hdsp_midi *hmidi) in snd_hdsp_midi_output_write() argument
1342 spin_lock_irqsave (&hmidi->lock, flags); in snd_hdsp_midi_output_write()
1343 if (hmidi->output) { in snd_hdsp_midi_output_write()
1344 if (!snd_rawmidi_transmit_empty (hmidi->output)) { in snd_hdsp_midi_output_write()
1345 if ((n_pending = snd_hdsp_midi_output_possible (hmidi->hdsp, hmidi->id)) > 0) { in snd_hdsp_midi_output_write()
1349 if ((to_write = snd_rawmidi_transmit (hmidi->output, buf, n_pending)) > 0) { in snd_hdsp_midi_output_write()
1351 snd_hdsp_midi_write_byte (hmidi->hdsp, hmidi->id, buf[i]); in snd_hdsp_midi_output_write()
1356 spin_unlock_irqrestore (&hmidi->lock, flags); in snd_hdsp_midi_output_write()
1360 static int snd_hdsp_midi_input_read (struct hdsp_midi *hmidi) in snd_hdsp_midi_input_read() argument
1367 spin_lock_irqsave (&hmidi->lock, flags); in snd_hdsp_midi_input_read()
1368 if ((n_pending = snd_hdsp_midi_input_available (hmidi->hdsp, hmidi->id)) > 0) { in snd_hdsp_midi_input_read()
1369 if (hmidi->input) { in snd_hdsp_midi_input_read()
1373 buf[i] = snd_hdsp_midi_read_byte (hmidi->hdsp, hmidi->id); in snd_hdsp_midi_input_read()
1375 snd_rawmidi_receive (hmidi->input, buf, n_pending); in snd_hdsp_midi_input_read()
1379 snd_hdsp_midi_read_byte (hmidi->hdsp, hmidi->id); in snd_hdsp_midi_input_read()
1382 hmidi->pending = 0; in snd_hdsp_midi_input_read()
1383 if (hmidi->id) in snd_hdsp_midi_input_read()
1384 hmidi->hdsp->control_register |= HDSP_Midi1InterruptEnable; in snd_hdsp_midi_input_read()
1386 hmidi->hdsp->control_register |= HDSP_Midi0InterruptEnable; in snd_hdsp_midi_input_read()
1387 hdsp_write(hmidi->hdsp, HDSP_controlRegister, hmidi->hdsp->control_register); in snd_hdsp_midi_input_read()
1388 spin_unlock_irqrestore (&hmidi->lock, flags); in snd_hdsp_midi_input_read()
1389 return snd_hdsp_midi_output_write (hmidi); in snd_hdsp_midi_input_read()
1395 struct hdsp_midi *hmidi; in snd_hdsp_midi_input_trigger() local
1399 hmidi = (struct hdsp_midi *) substream->rmidi->private_data; in snd_hdsp_midi_input_trigger()
1400 hdsp = hmidi->hdsp; in snd_hdsp_midi_input_trigger()
1401 ie = hmidi->id ? HDSP_Midi1InterruptEnable : HDSP_Midi0InterruptEnable; in snd_hdsp_midi_input_trigger()
1405 snd_hdsp_flush_midi_input (hdsp, hmidi->id); in snd_hdsp_midi_input_trigger()
1419 struct hdsp_midi *hmidi = (struct hdsp_midi *) data; in snd_hdsp_midi_output_timer() local
1422 snd_hdsp_midi_output_write(hmidi); in snd_hdsp_midi_output_timer()
1423 spin_lock_irqsave (&hmidi->lock, flags); in snd_hdsp_midi_output_timer()
1431 if (hmidi->istimer) in snd_hdsp_midi_output_timer()
1432 mod_timer(&hmidi->timer, 1 + jiffies); in snd_hdsp_midi_output_timer()
1434 spin_unlock_irqrestore (&hmidi->lock, flags); in snd_hdsp_midi_output_timer()
1439 struct hdsp_midi *hmidi; in snd_hdsp_midi_output_trigger() local
1442 hmidi = (struct hdsp_midi *) substream->rmidi->private_data; in snd_hdsp_midi_output_trigger()
1443 spin_lock_irqsave (&hmidi->lock, flags); in snd_hdsp_midi_output_trigger()
1445 if (!hmidi->istimer) { in snd_hdsp_midi_output_trigger()
1446 setup_timer(&hmidi->timer, snd_hdsp_midi_output_timer, in snd_hdsp_midi_output_trigger()
1447 (unsigned long) hmidi); in snd_hdsp_midi_output_trigger()
1448 mod_timer(&hmidi->timer, 1 + jiffies); in snd_hdsp_midi_output_trigger()
1449 hmidi->istimer++; in snd_hdsp_midi_output_trigger()
1452 if (hmidi->istimer && --hmidi->istimer <= 0) in snd_hdsp_midi_output_trigger()
1453 del_timer (&hmidi->timer); in snd_hdsp_midi_output_trigger()
1455 spin_unlock_irqrestore (&hmidi->lock, flags); in snd_hdsp_midi_output_trigger()
1457 snd_hdsp_midi_output_write(hmidi); in snd_hdsp_midi_output_trigger()
1462 struct hdsp_midi *hmidi; in snd_hdsp_midi_input_open() local
1464 hmidi = (struct hdsp_midi *) substream->rmidi->private_data; in snd_hdsp_midi_input_open()
1465 spin_lock_irq (&hmidi->lock); in snd_hdsp_midi_input_open()
1466 snd_hdsp_flush_midi_input (hmidi->hdsp, hmidi->id); in snd_hdsp_midi_input_open()
1467 hmidi->input = substream; in snd_hdsp_midi_input_open()
1468 spin_unlock_irq (&hmidi->lock); in snd_hdsp_midi_input_open()
1475 struct hdsp_midi *hmidi; in snd_hdsp_midi_output_open() local
1477 hmidi = (struct hdsp_midi *) substream->rmidi->private_data; in snd_hdsp_midi_output_open()
1478 spin_lock_irq (&hmidi->lock); in snd_hdsp_midi_output_open()
1479 hmidi->output = substream; in snd_hdsp_midi_output_open()
1480 spin_unlock_irq (&hmidi->lock); in snd_hdsp_midi_output_open()
1487 struct hdsp_midi *hmidi; in snd_hdsp_midi_input_close() local
1491 hmidi = (struct hdsp_midi *) substream->rmidi->private_data; in snd_hdsp_midi_input_close()
1492 spin_lock_irq (&hmidi->lock); in snd_hdsp_midi_input_close()
1493 hmidi->input = NULL; in snd_hdsp_midi_input_close()
1494 spin_unlock_irq (&hmidi->lock); in snd_hdsp_midi_input_close()
1501 struct hdsp_midi *hmidi; in snd_hdsp_midi_output_close() local
1505 hmidi = (struct hdsp_midi *) substream->rmidi->private_data; in snd_hdsp_midi_output_close()
1506 spin_lock_irq (&hmidi->lock); in snd_hdsp_midi_output_close()
1507 hmidi->output = NULL; in snd_hdsp_midi_output_close()
1508 spin_unlock_irq (&hmidi->lock); in snd_hdsp_midi_output_close()