summaryrefslogtreecommitdiffstats
path: root/src/target/firmware
diff options
context:
space:
mode:
authorIngo Albrecht <prom@berlin.ccc.de>2010-02-24 02:33:14 +0100
committerHarald Welte <laforge@gnumonks.org>2010-03-07 11:47:09 +0100
commit842dbc31d1e1203a0cf133a17ceef5a89d495d69 (patch)
tree9d46333774268748aa6361a71742652ed9c08259 /src/target/firmware
parent0a8d443e82630e9f063c446f7028a7f8f076b31a (diff)
Allow use of keypad driver without interrupts.
Diffstat (limited to 'src/target/firmware')
-rw-r--r--src/target/firmware/board/compal_e88/init.c3
-rw-r--r--src/target/firmware/calypso/keypad.c14
-rw-r--r--src/target/firmware/include/keypad.h4
3 files changed, 12 insertions, 9 deletions
diff --git a/src/target/firmware/board/compal_e88/init.c b/src/target/firmware/board/compal_e88/init.c
index 84ae2159..38045682 100644
--- a/src/target/firmware/board/compal_e88/init.c
+++ b/src/target/firmware/board/compal_e88/init.c
@@ -122,7 +122,8 @@ void board_init(void)
/* Initialize LCD driver (uses I2C) */
st7558_init();
- keypad_init();
+ /* Initialize keypad driver */
+ keypad_init(1);
/* Initialize ABB driver (uses SPI) */
twl3025_init();
diff --git a/src/target/firmware/calypso/keypad.c b/src/target/firmware/calypso/keypad.c
index 27f48c0b..4afd51b8 100644
--- a/src/target/firmware/calypso/keypad.c
+++ b/src/target/firmware/calypso/keypad.c
@@ -113,18 +113,20 @@ void dispatch_buttons(uint32_t buttons)
static void keypad_irq(enum irq_nr nr)
{
- keypad_scan();
+ keypad_poll();
}
-void keypad_init()
+void keypad_init(uint8_t interrupts)
{
lastbuttons = 0;
writew(0, KBD_GPIO_MASKIT);
writew(0, KBC_REG);
- irq_register_handler(IRQ_KEYPAD_GPIO, &keypad_irq);
- irq_config(IRQ_KEYPAD_GPIO, 0, 0, 0);
- irq_enable(IRQ_KEYPAD_GPIO);
+ if(interrupts) {
+ irq_register_handler(IRQ_KEYPAD_GPIO, &keypad_irq);
+ irq_config(IRQ_KEYPAD_GPIO, 0, 0, 0);
+ irq_enable(IRQ_KEYPAD_GPIO);
+ }
}
void keypad_set_handler(key_handler_t handler)
@@ -132,7 +134,7 @@ void keypad_set_handler(key_handler_t handler)
key_handler = handler;
}
-void keypad_scan()
+void keypad_poll()
{
uint16_t reg;
uint16_t col;
diff --git a/src/target/firmware/include/keypad.h b/src/target/firmware/include/keypad.h
index dd89734c..e2e6519f 100644
--- a/src/target/firmware/include/keypad.h
+++ b/src/target/firmware/include/keypad.h
@@ -55,9 +55,9 @@ enum key_states {
RELEASED,
};
-void keypad_init();
+void keypad_init(uint8_t interrupts);
-void keypad_scan();
+void keypad_poll();
typedef void (*key_handler_t)(enum key_codes code, enum key_states state);