diff options
author | Ingo Albrecht <prom@berlin.ccc.de> | 2010-02-24 02:33:14 +0100 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2010-03-07 11:47:09 +0100 |
commit | 842dbc31d1e1203a0cf133a17ceef5a89d495d69 (patch) | |
tree | 9d46333774268748aa6361a71742652ed9c08259 /src/target/firmware | |
parent | 0a8d443e82630e9f063c446f7028a7f8f076b31a (diff) |
Allow use of keypad driver without interrupts.
Diffstat (limited to 'src/target/firmware')
-rw-r--r-- | src/target/firmware/board/compal_e88/init.c | 3 | ||||
-rw-r--r-- | src/target/firmware/calypso/keypad.c | 14 | ||||
-rw-r--r-- | src/target/firmware/include/keypad.h | 4 |
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); |