kpd.h 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. /*
  2. * (C) Copyright 2009
  3. * MediaTek <www.MediaTek.com>
  4. *
  5. * MT6516 Sensor IOCTL & data structure
  6. *
  7. * This program is free software; you can redistribute it and/or modify
  8. * it under the terms of the GNU General Public License as published by
  9. * the Free Software Foundation; either version 2 of the License, or
  10. * (at your option) any later version.
  11. *
  12. * This program is distributed in the hope that it will be useful,
  13. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  15. * GNU General Public License for more details.
  16. *
  17. */
  18. #ifndef __KPD_H__
  19. #define __KPD_H__
  20. #include <linux/ioctl.h>
  21. #include <linux/init.h>
  22. #include <linux/module.h>
  23. #include <linux/kernel.h>
  24. #include <linux/input.h>
  25. #include <linux/workqueue.h>
  26. #include <linux/timer.h>
  27. #include <linux/interrupt.h>
  28. #include <linux/fs.h>
  29. #include <linux/miscdevice.h>
  30. #include <linux/platform_device.h>
  31. #include <linux/gpio.h>
  32. #include <mt-plat/aee.h>
  33. #ifdef CONFIG_MTK_SMARTBOOK_SUPPORT
  34. #include <linux/sbsuspend.h> /* smartbook */
  35. #endif
  36. #include <linux/atomic.h>
  37. #include <hal_kpd.h>
  38. #include <linux/kernel.h>
  39. #include <linux/delay.h>
  40. #include <mt-plat/upmu_common.h>
  41. #include <mt-plat/mt_boot_common.h>
  42. #define KEY_CALL KEY_SEND
  43. #define KEY_ENDCALL KEY_END
  44. #define KEY_FOCUS KEY_HP
  45. struct keypad_dts_data {
  46. u32 kpd_key_debounce;
  47. u32 kpd_sw_pwrkey;
  48. u32 kpd_hw_pwrkey;
  49. u32 kpd_sw_rstkey;
  50. u32 kpd_hw_rstkey;
  51. u32 kpd_use_extend_type;
  52. u32 kpd_hw_map_num;
  53. u32 kpd_hw_init_map[72];
  54. u32 kpd_pwrkey_eint_gpio;
  55. u32 kpd_pwrkey_gpio_din;
  56. u32 kpd_hw_dl_key1;
  57. u32 kpd_hw_dl_key2;
  58. u32 kpd_hw_dl_key3;
  59. u32 kpd_hw_recovery_key;
  60. u32 kpd_hw_factory_key;
  61. };
  62. extern struct keypad_dts_data kpd_dts_data;
  63. #define KPD_NO 0
  64. #define KPD_YES 1
  65. #define KPD_AUTOTEST KPD_NO
  66. #define KPD_DEBUG KPD_YES
  67. #if KPD_AUTOTEST
  68. #define PRESS_OK_KEY _IO('k', 1)
  69. #define RELEASE_OK_KEY _IO('k', 2)
  70. #define PRESS_MENU_KEY _IO('k', 3)
  71. #define RELEASE_MENU_KEY _IO('k', 4)
  72. #define PRESS_UP_KEY _IO('k', 5)
  73. #define RELEASE_UP_KEY _IO('k', 6)
  74. #define PRESS_DOWN_KEY _IO('k', 7)
  75. #define RELEASE_DOWN_KEY _IO('k', 8)
  76. #define PRESS_LEFT_KEY _IO('k', 9)
  77. #define RELEASE_LEFT_KEY _IO('k', 10)
  78. #define PRESS_RIGHT_KEY _IO('k', 11)
  79. #define RELEASE_RIGHT_KEY _IO('k', 12)
  80. #define PRESS_HOME_KEY _IO('k', 13)
  81. #define RELEASE_HOME_KEY _IO('k', 14)
  82. #define PRESS_BACK_KEY _IO('k', 15)
  83. #define RELEASE_BACK_KEY _IO('k', 16)
  84. #define PRESS_CALL_KEY _IO('k', 17)
  85. #define RELEASE_CALL_KEY _IO('k', 18)
  86. #define PRESS_ENDCALL_KEY _IO('k', 19)
  87. #define RELEASE_ENDCALL_KEY _IO('k', 20)
  88. #define PRESS_VLUP_KEY _IO('k', 21)
  89. #define RELEASE_VLUP_KEY _IO('k', 22)
  90. #define PRESS_VLDOWN_KEY _IO('k', 23)
  91. #define RELEASE_VLDOWN_KEY _IO('k', 24)
  92. #define PRESS_FOCUS_KEY _IO('k', 25)
  93. #define RELEASE_FOCUS_KEY _IO('k', 26)
  94. #define PRESS_CAMERA_KEY _IO('k', 27)
  95. #define RELEASE_CAMERA_KEY _IO('k', 28)
  96. #define PRESS_POWER_KEY _IO('k', 30)
  97. #define RELEASE_POWER_KEY _IO('k', 31)
  98. #endif
  99. #define SET_KPD_KCOL _IO('k', 29)
  100. #define KPD_SAY "kpd: "
  101. #if KPD_DEBUG
  102. #define kpd_print(fmt, arg...) pr_err(KPD_SAY fmt, ##arg)
  103. #define kpd_info(fmt, arg...) pr_warn(KPD_SAY fmt, ##arg)
  104. #else
  105. #define kpd_print(fmt, arg...) do {} while (0)
  106. #define kpd_info(fmt, arg...) do {} while (0)
  107. #endif
  108. /* the keys can wake up the system and we should enable backlight */
  109. #define KPD_BACKLIGHT_WAKE_KEY \
  110. { \
  111. KEY_ENDCALL, KEY_POWER, \
  112. }
  113. #define KPD_HAS_SLIDE_QWERTY 0
  114. #if KPD_HAS_SLIDE_QWERTY
  115. static inline bool powerOn_slidePin_interface(void)
  116. {
  117. return hwPowerOn(MT65XX_POWER_LDO_VCAM_IO, VOL_2800, "Qwerty slide");
  118. }
  119. static inline bool powerOff_slidePin_interface(void)
  120. {
  121. return hwPowerDown(MT65XX_POWER_LDO_VCAM_IO, "Qwerty slide");
  122. }
  123. #endif
  124. #ifdef CONFIG_KPD_PWRKEY_USE_PMIC
  125. void kpd_pwrkey_pmic_handler(unsigned long pressed);
  126. #else
  127. static inline void kpd_pwrkey_pmic_handler(unsigned long data);
  128. #endif
  129. void kpd_pmic_rstkey_handler(unsigned long pressed);
  130. #endif /* __KPD_H__ */