ep93xx_keypad.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. /*
  2. * arch/arm/mach-ep93xx/include/mach/ep93xx_keypad.h
  3. */
  4. #ifndef __ASM_ARCH_EP93XX_KEYPAD_H
  5. #define __ASM_ARCH_EP93XX_KEYPAD_H
  6. #define MAX_MATRIX_KEY_ROWS (8)
  7. #define MAX_MATRIX_KEY_COLS (8)
  8. /* flags for the ep93xx_keypad driver */
  9. #define EP93XX_KEYPAD_DISABLE_3_KEY (1<<0) /* disable 3-key reset */
  10. #define EP93XX_KEYPAD_DIAG_MODE (1<<1) /* diagnostic mode */
  11. #define EP93XX_KEYPAD_BACK_DRIVE (1<<2) /* back driving mode */
  12. #define EP93XX_KEYPAD_TEST_MODE (1<<3) /* scan only column 0 */
  13. #define EP93XX_KEYPAD_KDIV (1<<4) /* 1/4 clock or 1/16 clock */
  14. #define EP93XX_KEYPAD_AUTOREPEAT (1<<5) /* enable key autorepeat */
  15. /**
  16. * struct ep93xx_keypad_platform_data - platform specific device structure
  17. * @matrix_key_rows: number of rows in the keypad matrix
  18. * @matrix_key_cols: number of columns in the keypad matrix
  19. * @matrix_key_map: array of keycodes defining the keypad matrix
  20. * @matrix_key_map_size: ARRAY_SIZE(matrix_key_map)
  21. * @debounce: debounce start count; terminal count is 0xff
  22. * @prescale: row/column counter pre-scaler load value
  23. * @flags: see above
  24. */
  25. struct ep93xx_keypad_platform_data {
  26. unsigned int matrix_key_rows;
  27. unsigned int matrix_key_cols;
  28. unsigned int *matrix_key_map;
  29. int matrix_key_map_size;
  30. unsigned int debounce;
  31. unsigned int prescale;
  32. unsigned int flags;
  33. };
  34. /* macro for creating the matrix_key_map table */
  35. #define KEY(row, col, val) (((row) << 28) | ((col) << 24) | (val))
  36. #endif /* __ASM_ARCH_EP93XX_KEYPAD_H */