diff options
author | Gedare Bloom <gedare@rtems.org> | 2011-11-27 17:26:32 +0000 |
---|---|---|
committer | Gedare Bloom <gedare@rtems.org> | 2011-11-27 17:26:32 +0000 |
commit | 0f653ba9844790ead3408f588697ebd72eda0d80 (patch) | |
tree | 27c544a49e30144426d10f5750cc439f4ff7bfd3 /c/src/lib/libbsp/lm32/shared/milkymist_midi/midi.c | |
parent | 2011-11-27 Sebastien Bourdeauducq <seb@tmplab.org> (diff) | |
download | rtems-0f653ba9844790ead3408f588697ebd72eda0d80.tar.bz2 |
2011-11-27 Sebastien Bourdeauducq <seb@tmplab.org>
PR 1966/bsps
* milkymist_console/console.c, milkymist_console/uart.c,
milkymist_console/uart.h, milkymist_midi/midi.c: support for the new
UART core and interrupt map
Diffstat (limited to '')
-rw-r--r-- | c/src/lib/libbsp/lm32/shared/milkymist_midi/midi.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/c/src/lib/libbsp/lm32/shared/milkymist_midi/midi.c b/c/src/lib/libbsp/lm32/shared/milkymist_midi/midi.c index e71350bf1f..ad5c4342d8 100644 --- a/c/src/lib/libbsp/lm32/shared/milkymist_midi/midi.c +++ b/c/src/lib/libbsp/lm32/shared/milkymist_midi/midi.c @@ -31,9 +31,12 @@ static rtems_isr interrupt_handler(rtems_vector_number n) { unsigned char msg; - lm32_interrupt_ack(1 << MM_IRQ_MIDIRX); - msg = MM_READ(MM_MIDI_RXTX); - rtems_message_queue_send(midi_q, &msg, 1); + while (MM_READ(MM_MIDI_STAT) & MIDI_STAT_RX_EVT) { + msg = MM_READ(MM_MIDI_RXTX); + MM_WRITE(MM_MIDI_STAT, MIDI_STAT_RX_EVT); + rtems_message_queue_send(midi_q, &msg, 1); + } + lm32_interrupt_ack(1 << MM_IRQ_MIDI); } rtems_device_driver midi_initialize( @@ -57,11 +60,10 @@ rtems_device_driver midi_initialize( ); RTEMS_CHECK_SC(sc, "create MIDI queue"); - rtems_interrupt_catch(interrupt_handler, MM_IRQ_MIDIRX, &dummy); - bsp_interrupt_vector_enable(MM_IRQ_MIDIRX); - + rtems_interrupt_catch(interrupt_handler, MM_IRQ_MIDI, &dummy); + bsp_interrupt_vector_enable(MM_IRQ_MIDI); /* Only MIDI THRU mode is supported atm */ - MM_WRITE(MM_MIDI_THRU, 1); + MM_WRITE(MM_MIDI_CTRL, MIDI_CTRL_RX_INT|MIDI_CTRL_THRU); return RTEMS_SUCCESSFUL; } |