平台:MTK6592,KK
修改文件路径:
alps\bird\custom\1481G\kernel\touchpanel\GT9158\gt9xx_driver.c
代码分析:
kpd.c: flip代码分析
1.
#if KPD_HAS_FLIP_FUN
#define GET_KPD_FLIP_KEY _IOR('k', 35, int)
#endif
2.
#if KPD_HAS_FLIP_FUN
static void kpd_flip_handler(unsigned long data);
static DECLARE_TASKLET(kpd_flip_tasklet, kpd_flip_handler, 0);
static bool kpd_flip_state = true;
#endif
3.
#if KPD_HAS_FLIP_FUN
#ifdef BIRD_HALL_CHANGE_TP_PARAM
extern void gtp_change_param(int Mhall_key_level);
#endif
4.
在probe函数里加入
#if KPD_HAS_FLIP_FUN
__set_bit(KEY_FLIP_OPEN, kpd_input_dev->keybit);
__set_bit(KEY_FLIP_CLOSE, kpd_input_dev->keybit);
#endif
#if KPD_HAS_FLIP_FUN
mt_set_gpio_mode(GPIO_MHALL_EINT_PIN, GPIO_MHALL_EINT_PIN_M_EINT);
mt_set_gpio_dir(GPIO_MHALL_EINT_PIN, GPIO_DIR_IN);
mt_set_gpio_pull_enable(GPIO_MHALL_EINT_PIN, GPIO_PULL_ENABLE);
mt_set_gpio_pull_select(GPIO_MHALL_EINT_PIN, GPIO_PULL_UP);
mt_eint_set_hw_debounce(CUST_EINT_MHALL_NUM, CUST_EINT_MHALL_DEBOUNCE_CN);
mt_eint_registration(CUST_EINT_MHALL_NUM, CUST_EINT_MHALL_TYPE, kpd_flip_eint_handler, false);
mt_eint_unmask(CUST_EINT_MHALL_NUM);
#endif
5.
static void kpd_flip_handler(unsigned long data)
{
bool old_state = kpd_flip_state;
int Mhall_key_level;
kpd_fl