summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/lm32/shared/milkymist_midi/midi.c
diff options
context:
space:
mode:
authorGedare Bloom <gedare@rtems.org>2011-11-27 17:26:32 +0000
committerGedare Bloom <gedare@rtems.org>2011-11-27 17:26:32 +0000
commit0f653ba9844790ead3408f588697ebd72eda0d80 (patch)
tree27c544a49e30144426d10f5750cc439f4ff7bfd3 /c/src/lib/libbsp/lm32/shared/milkymist_midi/midi.c
parent2011-11-27 Sebastien Bourdeauducq <seb@tmplab.org> (diff)
downloadrtems-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.c16
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;
}