s3c-keypad.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /*
  2. *
  3. * $Id: s3c-keypad.h,v 1.5 2008/05/23 06:22:53 dark0351 Exp $
  4. */
  5. #ifndef _S3C_KEYPAD_H_
  6. #define _S3C_KEYPAD_H_
  7. static void __iomem *key_base;
  8. #if defined(CONFIG_CPU_S3C6400) || defined (CONFIG_CPU_S3C6410)
  9. #define KEYPAD_COLUMNS 8
  10. #define KEYPAD_ROWS 8
  11. #define MAX_KEYPAD_NR 64 /* 8*8 */
  12. #define MAX_KEYMASK_NR 32
  13. int keypad_keycode[] = {
  14. 1, 2, KEY_1, KEY_Q, KEY_A, 6, 7, KEY_LEFT,
  15. 9, 10, KEY_2, KEY_W, KEY_S, KEY_Z, KEY_RIGHT, 16,
  16. 17, 18, KEY_3, KEY_E, KEY_D, KEY_X, 23, KEY_UP,
  17. 25, 26, KEY_4, KEY_R, KEY_F, KEY_C, 31, 32,
  18. 33, KEY_O, KEY_5, KEY_T, KEY_G, KEY_V, KEY_DOWN, KEY_BACKSPACE,
  19. KEY_P, KEY_0, KEY_6, KEY_Y, KEY_H, KEY_SPACE, 47, 48,
  20. KEY_M, KEY_L, KEY_7, KEY_U, KEY_J, KEY_N, 55, KEY_ENTER,
  21. KEY_LEFTSHIFT, KEY_9, KEY_8, KEY_I, KEY_K, KEY_B, 63, KEY_COMMA
  22. };
  23. #define KEYPAD_DELAY (50)
  24. #define KEYPAD_ROW_GPIOCON S3C_GPK1CON
  25. #define KEYPAD_ROW_GPIOPUD S3C_GPKPU
  26. #define KEYPAD_COL_GPIOCON S3C_GPL0CON
  27. #define KEYPAD_COL_GPIOPUD S3C_GPLPU
  28. #define KEYPAD_ROW_GPIO_SET \
  29. ((readl(KEYPAD_ROW_GPIOCON) & ~(0xfffffff)) | 0x33333333)
  30. #define KEYPAD_COL_GPIO_SET \
  31. ((readl(KEYPAD_COL_GPIOCON) & ~(0xfffffff)) | 0x33333333)
  32. #define KEYPAD_ROW_GPIOPUD_DIS (readl(KEYPAD_ROW_GPIOPUD) & ~(0xffff<<16))
  33. #define KEYPAD_COL_GPIOPUD_DIS (readl(KEYPAD_COL_GPIOPUD) & ~0xffff)
  34. #define KEYIFCOL_CLEAR (readl(key_base+S3C_KEYIFCOL) & ~0xffff)
  35. #define KEYIFCON_CLEAR (readl(key_base+S3C_KEYIFCON) & ~0x1f)
  36. #define KEYIFFC_DIV (readl(key_base+S3C_KEYIFFC) | 0x1)
  37. #else
  38. #error "Not supported S3C Configuration!!"
  39. #endif
  40. struct s3c_keypad {
  41. struct input_dev *dev;
  42. int nr_rows;
  43. int no_cols;
  44. int total_keys;
  45. int keycodes[MAX_KEYPAD_NR];
  46. };
  47. #endif /* _S3C_KEYIF_H_ */