keypad-omap.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * Copyright (C) 2006 Komal Shah <[email protected]>
  4. */
  5. #ifndef __KEYPAD_OMAP_H
  6. #define __KEYPAD_OMAP_H
  7. #ifndef CONFIG_ARCH_OMAP1
  8. #warning Please update the board to use matrix-keypad driver
  9. #define omap_readw(reg) 0
  10. #define omap_writew(val, reg) do {} while (0)
  11. #endif
  12. #include <linux/input/matrix_keypad.h>
  13. struct omap_kp_platform_data {
  14. int rows;
  15. int cols;
  16. const struct matrix_keymap_data *keymap_data;
  17. bool rep;
  18. unsigned long delay;
  19. bool dbounce;
  20. /* specific to OMAP242x*/
  21. unsigned int *row_gpios;
  22. unsigned int *col_gpios;
  23. };
  24. /* Group (0..3) -- when multiple keys are pressed, only the
  25. * keys pressed in the same group are considered as pressed. This is
  26. * in order to workaround certain crappy HW designs that produce ghost
  27. * keypresses. Two free bits, not used by neither row/col nor keynum,
  28. * must be available for use as group bits. The below GROUP_SHIFT
  29. * macro definition is based on some prior knowledge of the
  30. * matrix_keypad defined KEY() macro internals.
  31. */
  32. #define GROUP_SHIFT 14
  33. #define GROUP_0 (0 << GROUP_SHIFT)
  34. #define GROUP_1 (1 << GROUP_SHIFT)
  35. #define GROUP_2 (2 << GROUP_SHIFT)
  36. #define GROUP_3 (3 << GROUP_SHIFT)
  37. #define GROUP_MASK GROUP_3
  38. #if KEY_MAX & GROUP_MASK
  39. #error Group bits in conflict with keynum bits
  40. #endif
  41. #endif