summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Almesberger <werner@almesberger.net>2012-02-29 16:08:44 (UTC)
committerGedare Bloom <gedare@rtems.org>2012-02-29 16:08:44 (UTC)
commitf7bb9f922dcebeca62fd13e4e7256f0de5296e23 (patch)
treeac14ef6eca71d403082c8b619056a34596a1266d
parent19d18f235084cbd361e068811a11f46d99918950 (diff)
downloadrtems-f7bb9f922dcebeca62fd13e4e7256f0de5296e23.tar.bz2
PR2028: Milkymist USB: forward MIDI messages.
Forward MIDI messages from the softusb controller to the application. Signed-off-by: Gedare Bloom <gedare@rtems.org>
-rw-r--r--c/src/lib/libbsp/lm32/shared/milkymist_usbinput/comloc.h2
-rw-r--r--c/src/lib/libbsp/lm32/shared/milkymist_usbinput/usbinput.c10
2 files changed, 12 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/lm32/shared/milkymist_usbinput/comloc.h b/c/src/lib/libbsp/lm32/shared/milkymist_usbinput/comloc.h
index 538022b..40362b3 100644
--- a/c/src/lib/libbsp/lm32/shared/milkymist_usbinput/comloc.h
+++ b/c/src/lib/libbsp/lm32/shared/milkymist_usbinput/comloc.h
@@ -22,5 +22,7 @@
#define COMLOC_MEVT(offset) COMLOCV(MM_SOFTUSB_DMEM_BASE+0x1102+offset)
#define COMLOC_KEVT_PRODUCE COMLOCV(MM_SOFTUSB_DMEM_BASE+0x1142)
#define COMLOC_KEVT(offset) COMLOCV(MM_SOFTUSB_DMEM_BASE+0x1143+offset)
+#define COMLOC_MIDI_PRODUCE COMLOCV(MM_SOFTUSB_DMEM_BASE+0x1183)
+#define COMLOC_MIDI(offset) COMLOCV(MM_SOFTUSB_DMEM_BASE+0x1184+offset)
#endif /* __COMLOC_H_ */
diff --git a/c/src/lib/libbsp/lm32/shared/milkymist_usbinput/usbinput.c b/c/src/lib/libbsp/lm32/shared/milkymist_usbinput/usbinput.c
index 022d730..6931748 100644
--- a/c/src/lib/libbsp/lm32/shared/milkymist_usbinput/usbinput.c
+++ b/c/src/lib/libbsp/lm32/shared/milkymist_usbinput/usbinput.c
@@ -35,6 +35,7 @@ static const unsigned char input_firmware[] = {
static int mouse_consume;
static int keyboard_consume;
+static int midi_consume;
static rtems_id event_q;
@@ -58,6 +59,14 @@ static rtems_isr interrupt_handler(rtems_vector_number n)
rtems_message_queue_send(event_q, msg, 8);
keyboard_consume = (keyboard_consume + 1) & 0x07;
}
+
+ while(midi_consume != COMLOC_MIDI_PRODUCE) {
+ for(i=0;i<3;i++)
+ msg[i] = COMLOC_MIDI(4*midi_consume+i+1);
+ rtems_message_queue_send(event_q, msg, 3);
+ midi_consume = (midi_consume + 1) & 0x0f;
+ }
+
}
rtems_device_driver usbinput_initialize(
@@ -87,6 +96,7 @@ rtems_device_driver usbinput_initialize(
mouse_consume = 0;
keyboard_consume = 0;
+ midi_consume = 0;
sc = rtems_io_register_name(DEVICE_NAME, major, 0);
RTEMS_CHECK_SC(sc, "create USB input device");