1 #ifndef __ASM_ARCH_PXA27x_KEYPAD_H 2 #define __ASM_ARCH_PXA27x_KEYPAD_H 3 4 #include <linux/input.h> 5 #include <linux/input/matrix_keypad.h> 6 7 #define MAX_MATRIX_KEY_ROWS (8) 8 #define MAX_MATRIX_KEY_COLS (8) 9 #define MATRIX_ROW_SHIFT (3) 10 #define MAX_DIRECT_KEY_NUM (8) 11 12 /* pxa3xx keypad platform specific parameters 13 * 14 * NOTE: 15 * 1. direct_key_num indicates the number of keys in the direct keypad 16 * _plus_ the number of rotary-encoder sensor inputs, this can be 17 * left as 0 if only rotary encoders are enabled, the driver will 18 * automatically calculate this 19 * 20 * 2. direct_key_map is the key code map for the direct keys, if rotary 21 * encoder(s) are enabled, direct key 0/1(2/3) will be ignored 22 * 23 * 3. rotary can be either interpreted as a relative input event (e.g. 24 * REL_WHEEL/REL_HWHEEL) or specific keys (e.g. UP/DOWN/LEFT/RIGHT) 25 * 26 * 4. matrix key and direct key will use the same debounce_interval by 27 * default, which should be sufficient in most cases 28 * 29 * pxa168 keypad platform specific parameter 30 * 31 * NOTE: 32 * clear_wakeup_event callback is a workaround required to clear the 33 * keypad interrupt. The keypad wake must be cleared in addition to 34 * reading the MI/DI bits in the KPC register. 35 */ 36 struct pxa27x_keypad_platform_data { 37 38 /* code map for the matrix keys */ 39 unsigned int matrix_key_rows; 40 unsigned int matrix_key_cols; 41 unsigned int *matrix_key_map; 42 int matrix_key_map_size; 43 44 /* direct keys */ 45 int direct_key_num; 46 unsigned int direct_key_map[MAX_DIRECT_KEY_NUM]; 47 48 /* rotary encoders 0 */ 49 int enable_rotary0; 50 int rotary0_rel_code; 51 int rotary0_up_key; 52 int rotary0_down_key; 53 54 /* rotary encoders 1 */ 55 int enable_rotary1; 56 int rotary1_rel_code; 57 int rotary1_up_key; 58 int rotary1_down_key; 59 60 /* key debounce interval */ 61 unsigned int debounce_interval; 62 63 /* clear wakeup event requirement for pxa168 */ 64 void (*clear_wakeup_event)(void); 65 }; 66 67 extern void pxa_set_keypad_info(struct pxa27x_keypad_platform_data *info); 68 69 #endif /* __ASM_ARCH_PXA27x_KEYPAD_H */ 70