1 #ifndef __ASM_ARCH_PXA27x_KEYPAD_H 2 #define __ASM_ARCH_PXA27x_KEYPAD_H 3 4 #include <linux/input.h> 5 6 #define MAX_MATRIX_KEY_ROWS (8) 7 #define MAX_MATRIX_KEY_COLS (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 * 23 * 4. matrix key and direct key will use the same debounce_interval by 24 * default, which should be sufficient in most cases 25 */ 26 struct pxa27x_keypad_platform_data { 27 28 /* code map for the matrix keys */ 29 unsigned int matrix_key_rows; 30 unsigned int matrix_key_cols; 31 unsigned int *matrix_key_map; 32 int matrix_key_map_size; 33 34 /* direct keys */ 35 int direct_key_num; 36 unsigned int direct_key_map[8]; 37 38 /* rotary encoders 0 */ 39 int enable_rotary0; 40 int rotary0_rel_code; 41 int rotary0_up_key; 42 int rotary0_down_key; 43 44 /* rotary encoders 1 */ 45 int enable_rotary1; 46 int rotary1_rel_code; 47 int rotary1_up_key; 48 int rotary1_down_key; 49 50 /* key debounce interval */ 51 unsigned int debounce_interval; 52 }; 53 54 #define KEY(row, col, val) (((row) << 28) | ((col) << 24) | (val)) 55 56 extern void pxa_set_keypad_info(struct pxa27x_keypad_platform_data *info); 57 58 #endif /* __ASM_ARCH_PXA27x_KEYPAD_H */ 59