summaryrefslogtreecommitdiffstats
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 @@
#define MAX_MATRIX_KEY_ROWS (8)
#define MAX_MATRIX_KEY_COLS (8)
+/* pxa3xx keypad platform specific parameters
+ *
+ * NOTE:
+ * 1. direct_key_num indicates the number of keys in the direct keypad
+ * _plus_ the number of rotary-encoder sensor inputs, this can be
+ * left as 0 if only rotary encoders are enabled, the driver will
+ * automatically calculate this
+ *
+ * 2. direct_key_map is the key code map for the direct keys, if rotary
+ * encoder(s) are enabled, direct key 0/1(2/3) will be ignored
+ *
+ * 3. rotary can be either interpreted as a relative input event (e.g.
+ * REL_WHEEL/REL_HWHEEL) or specific keys (e.g. UP/DOWN/LEFT/RIGHT)
+ */
struct pxa27x_keypad_platform_data {
/* code map for the matrix keys */
@@ -13,6 +27,22 @@ struct pxa27x_keypad_platform_data {
unsigned int matrix_key_cols;
unsigned int *matrix_key_map;
int matrix_key_map_size;
+
+ /* direct keys */
+ int direct_key_num;
+ unsigned int direct_key_map[8];
+
+ /* rotary encoders 0 */
+ int enable_rotary0;
+ int rotary0_rel_code;
+ int rotary0_up_key;
+ int rotary0_down_key;
+
+ /* rotary encoders 1 */
+ int enable_rotary1;
+ int rotary1_rel_code;
+ int rotary1_up_key;
+ int rotary1_down_key;
};
#define KEY(row, col, val) (((row) << 28) | ((col) << 24) | (val))