/* * arch/arm/mach-ep93xx/include/mach/ep93xx_keypad.h */ #ifndef __ASM_ARCH_EP93XX_KEYPAD_H #define __ASM_ARCH_EP93XX_KEYPAD_H #define MAX_MATRIX_KEY_ROWS (8) #define MAX_MATRIX_KEY_COLS (8) /* flags for the ep93xx_keypad driver */ #define EP93XX_KEYPAD_DISABLE_3_KEY (1<<0) /* disable 3-key reset */ #define EP93XX_KEYPAD_DIAG_MODE (1<<1) /* diagnostic mode */ #define EP93XX_KEYPAD_BACK_DRIVE (1<<2) /* back driving mode */ #define EP93XX_KEYPAD_TEST_MODE (1<<3) /* scan only column 0 */ #define EP93XX_KEYPAD_KDIV (1<<4) /* 1/4 clock or 1/16 clock */ #define EP93XX_KEYPAD_AUTOREPEAT (1<<5) /* enable key autorepeat */ /** * struct ep93xx_keypad_platform_data - platform specific device structure * @matrix_key_rows: number of rows in the keypad matrix * @matrix_key_cols: number of columns in the keypad matrix * @matrix_key_map: array of keycodes defining the keypad matrix * @matrix_key_map_size: ARRAY_SIZE(matrix_key_map) * @debounce: debounce start count; terminal count is 0xff * @prescale: row/column counter pre-scaler load value * @flags: see above */ struct ep93xx_keypad_platform_data { unsigned int matrix_key_rows; unsigned int matrix_key_cols; unsigned int *matrix_key_map; int matrix_key_map_size; unsigned int debounce; unsigned int prescale; unsigned int flags; }; /* macro for creating the matrix_key_map table */ #define KEY(row, col, val) (((row) << 28) | ((col) << 24) | (val)) #endif /* __ASM_ARCH_EP93XX_KEYPAD_H */