summaryrefslogtreecommitdiff
path: root/firmware/drivers/button.c
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2003-12-12 13:23:33 +0000
committerDaniel Stenberg <daniel@haxx.se>2003-12-12 13:23:33 +0000
commit006b2c1c25607d7643bb6cd59052b74197000d06 (patch)
tree7f733d0fbcccea34e9a0d6ed237af8f24836b794 /firmware/drivers/button.c
parent503ce1bc0426fc7987371268db88dfc29dcf3fee (diff)
adjustments for Neo
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@4130 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/drivers/button.c')
-rw-r--r--firmware/drivers/button.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/firmware/drivers/button.c b/firmware/drivers/button.c
index 847a0ba82d..c0cd046db6 100644
--- a/firmware/drivers/button.c
+++ b/firmware/drivers/button.c
@@ -328,4 +328,38 @@ static int button_read(void)
return btn;
}
+#elif HAVE_NEO_KEYPAD
+static bool mStation = false;
+void button_init(void)
+{
+ /* set port pins as input */
+ PAIOR &= ~0x4000; //PA14 for stop button
+
+ queue_init(&button_queue);
+ tick_add_task(button_tick);
+
+ last_keypress = current_tick;
+}
+int button_read(void)
+{
+ int btn=BUTTON_NONE;
+
+ btn|=((~PCDR)&0xFF);
+
+ /* mStation does not have a stop button and this floods the button queue
+ with stops if used on a mStation */
+ if (!mStation)
+ btn|=((~(PADR>>6))&0x100);
+
+ return btn;
+}
+
+/* This function adds a button press event to the button queue, and this
+ really isn't anything Neo-specific but might be subject for adding to
+ the generic button driver */
+int button_add(unsigned int button)
+{
+ queue_post(&button_queue,button,NULL);
+ return 1;
+}
#endif