最近要实现双击唤醒屏幕
第一个方案:勉强实现,但是功耗大,还没进行消抖处理
实现步骤如下:
1.找到tp实现的代码kernel/drivers/input/touchscreen/gsl/gslX68X.c
2.找到tp休眠挂起的代码,开启中断,去掉拉低电源引脚
在static struct i2c_driver gsl_ts_driver结构体中有 .pm = &gsl2680_ts_pm_ops,此结构体进行电源管理,唤醒和休眠,如下:
static const struct dev_pm_ops gsl2680_ts_pm_ops = {
.suspend = gsl_ts_suspend, //休眠函数,拉低shutdown的引脚,供给低电压
.resume = gsl_ts_resume, //唤醒函数
};
下面是休眠函数
static int gsl_ts_suspend(struct device *dev)
{
...
struct gsl_ts *ts = dev_get_drvdata(dev);
...
gsl_halt_flag = 1;
enable_irq(ts->irq); //当进入休眠的时候,为了获取双击坐标,要先打开中断
//disable_irq_nosync(ts->irq); 去掉关中断
//gslX680_shutdown_low(); 去掉拉低电源,其函数如下
return 0;
}
/************************************************
Description : Put the shutdown(Reset) on Lower Voltage;
Input : None