aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-arm/arch-pxa/pxa27x_keypad.h
diff options
context:
space:
mode:
authorEric Miao <eric.y.miao@gmail.com>2008-01-31 00:59:03 -0500
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2008-01-31 00:59:03 -0500
commit62059d9e912717abbfb875440621d935d091f289 (patch)
tree574d242a19fd54c5af19faea473448cb4efcf0ec /include/asm-arm/arch-pxa/pxa27x_keypad.h
parentd7416f9eaa5427f47648973aac3a65e7a0eeda04 (diff)
Input: pxa27x_keypad - enable rotary encoders and direct keys
1. Rotary encoder events can be configured either as relative events as the legacy code does or as any specified key code, this is useful on some platform which uses the rotary keys as KEY_{UP/DOWN/LEFT/RIGHT} 2. Add support for direct keys, the corresponding keycodes for each direct key can now be specified within the platform data 3. Remove the direct/rotary key detection code from the IRQ handler to dedicated functions to improve readability Signed-off-by: Eric Miao <eric.miao@marvell.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Diffstat (limited to 'include/asm-arm/arch-pxa/pxa27x_keypad.h')
-rw-r--r--include/asm-arm/arch-pxa/pxa27x_keypad.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/include/asm-arm/arch-pxa/pxa27x_keypad.h b/include/asm-arm/arch-pxa/pxa27x_keypad.h
index 23f4ebc4102..6b832329ebc 100644
--- a/include/asm-arm/arch-pxa/pxa27x_keypad.h
+++ b/include/asm-arm/arch-pxa/pxa27x_keypad.h
@@ -6,6 +6,20 @@
6#define MAX_MATRIX_KEY_ROWS (8) 6#define MAX_MATRIX_KEY_ROWS (8)
7#define MAX_MATRIX_KEY_COLS (8) 7#define MAX_MATRIX_KEY_COLS (8)
8 8
9/* pxa3xx keypad platform specific parameters
10 *
11 * NOTE:
12 * 1. direct_key_num indicates the number of keys in the direct keypad
13 * _plus_ the number of rotary-encoder sensor inputs, this can be
14 * left as 0 if only rotary encoders are enabled, the driver will
15 * automatically calculate this
16 *
17 * 2. direct_key_map is the key code map for the direct keys, if rotary
18 * encoder(s) are enabled, direct key 0/1(2/3) will be ignored
19 *
20 * 3. rotary can be either interpreted as a relative input event (e.g.
21 * REL_WHEEL/REL_HWHEEL) or specific keys (e.g. UP/DOWN/LEFT/RIGHT)
22 */
9struct pxa27x_keypad_platform_data { 23struct pxa27x_keypad_platform_data {
10 24
11 /* code map for the matrix keys */ 25 /* code map for the matrix keys */
@@ -13,6 +27,22 @@ struct pxa27x_keypad_platform_data {
13 unsigned int matrix_key_cols; 27 unsigned int matrix_key_cols;
14 unsigned int *matrix_key_map; 28 unsigned int *matrix_key_map;
15 int matrix_key_map_size; 29 int matrix_key_map_size;
30
31 /* direct keys */
32 int direct_key_num;
33 unsigned int direct_key_map[8];
34
35 /* rotary encoders 0 */
36 int enable_rotary0;
37 int rotary0_rel_code;
38 int rotary0_up_key;
39 int rotary0_down_key;
40
41 /* rotary encoders 1 */
42 int enable_rotary1;
43 int rotary1_rel_code;
44 int rotary1_up_key;
45 int rotary1_down_key;
16}; 46};
17 47
18#define KEY(row, col, val) (((row) << 28) | ((col) << 24) | (val)) 48#define KEY(row, col, val) (((row) << 28) | ((col) << 24) | (val))