diff options
author | Janusz Krzysztofik <jkrzyszt@tis.icnet.pl> | 2010-12-20 16:09:22 -0500 |
---|---|---|
committer | Tony Lindgren <tony@atomide.com> | 2010-12-22 14:11:47 -0500 |
commit | da1f026b532ce944d74461497dc6d8c16456466e (patch) | |
tree | 227cd89307e0094d02e944a29225b19c2fca286b /arch/arm/plat-omap/include/plat/keypad.h | |
parent | 4e012e5f246d4da924b14d453452fd0838d4e03b (diff) |
Keyboard: omap-keypad: use matrix_keypad.h
Most keypad drivers make use of the <linux/input/matrix_keypad.h>
defined macros, structures and inline functions.
Convert omap-keypad driver to use those as well, as suggested by a
compile time warning, hardcoded into the OMAP <palt/keypad.h>.
Created against linux-2.6.37-rc5.
Tested on Amstrad Delta.
Compile tested with omap1_defconfig and omap2plus_defconfig shrinked to
board-h4.
Signed-off-by: Janusz Krzysztofik <jkrzyszt@tis.icnet.pl>
Reviewed-by: Aaro Koskinen <aaro.koskinen@nokia.com>
Acked-by: Dmitry Torokhov <dtor@mail.ru>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'arch/arm/plat-omap/include/plat/keypad.h')
-rw-r--r-- | arch/arm/plat-omap/include/plat/keypad.h | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/arch/arm/plat-omap/include/plat/keypad.h b/arch/arm/plat-omap/include/plat/keypad.h index 3ae52ccc793c..793ce9d53294 100644 --- a/arch/arm/plat-omap/include/plat/keypad.h +++ b/arch/arm/plat-omap/include/plat/keypad.h | |||
@@ -10,16 +10,18 @@ | |||
10 | #ifndef ASMARM_ARCH_KEYPAD_H | 10 | #ifndef ASMARM_ARCH_KEYPAD_H |
11 | #define ASMARM_ARCH_KEYPAD_H | 11 | #define ASMARM_ARCH_KEYPAD_H |
12 | 12 | ||
13 | #warning: Please update the board to use matrix_keypad.h instead | 13 | #ifndef CONFIG_ARCH_OMAP1 |
14 | #warning Please update the board to use matrix-keypad driver | ||
15 | #endif | ||
16 | #include <linux/input/matrix_keypad.h> | ||
14 | 17 | ||
15 | struct omap_kp_platform_data { | 18 | struct omap_kp_platform_data { |
16 | int rows; | 19 | int rows; |
17 | int cols; | 20 | int cols; |
18 | int *keymap; | 21 | const struct matrix_keymap_data *keymap_data; |
19 | unsigned int keymapsize; | 22 | bool rep; |
20 | unsigned int rep:1; | ||
21 | unsigned long delay; | 23 | unsigned long delay; |
22 | unsigned int dbounce:1; | 24 | bool dbounce; |
23 | /* specific to OMAP242x*/ | 25 | /* specific to OMAP242x*/ |
24 | unsigned int *row_gpios; | 26 | unsigned int *row_gpios; |
25 | unsigned int *col_gpios; | 27 | unsigned int *col_gpios; |
@@ -28,18 +30,21 @@ struct omap_kp_platform_data { | |||
28 | /* Group (0..3) -- when multiple keys are pressed, only the | 30 | /* Group (0..3) -- when multiple keys are pressed, only the |
29 | * keys pressed in the same group are considered as pressed. This is | 31 | * keys pressed in the same group are considered as pressed. This is |
30 | * in order to workaround certain crappy HW designs that produce ghost | 32 | * in order to workaround certain crappy HW designs that produce ghost |
31 | * keypresses. */ | 33 | * keypresses. Two free bits, not used by neither row/col nor keynum, |
32 | #define GROUP_0 (0 << 16) | 34 | * must be available for use as group bits. The below GROUP_SHIFT |
33 | #define GROUP_1 (1 << 16) | 35 | * macro definition is based on some prior knowledge of the |
34 | #define GROUP_2 (2 << 16) | 36 | * matrix_keypad defined KEY() macro internals. |
35 | #define GROUP_3 (3 << 16) | 37 | */ |
38 | #define GROUP_SHIFT 14 | ||
39 | #define GROUP_0 (0 << GROUP_SHIFT) | ||
40 | #define GROUP_1 (1 << GROUP_SHIFT) | ||
41 | #define GROUP_2 (2 << GROUP_SHIFT) | ||
42 | #define GROUP_3 (3 << GROUP_SHIFT) | ||
36 | #define GROUP_MASK GROUP_3 | 43 | #define GROUP_MASK GROUP_3 |
44 | #if KEY_MAX & GROUP_MASK | ||
45 | #error Group bits in conflict with keynum bits | ||
46 | #endif | ||
37 | 47 | ||
38 | #define KEY_PERSISTENT 0x00800000 | ||
39 | #define KEYNUM_MASK 0x00EFFFFF | ||
40 | #define KEY(col, row, val) (((col) << 28) | ((row) << 24) | (val)) | ||
41 | #define PERSISTENT_KEY(col, row) (((col) << 28) | ((row) << 24) | \ | ||
42 | KEY_PERSISTENT) | ||
43 | 48 | ||
44 | #endif | 49 | #endif |
45 | 50 | ||