android修改触摸屏添加唤醒功能参考

思路是:在tp驱动中添加,休眠后触摸模拟上报powerkey 的功能,即可实现。

add TP触摸屏唤醒
 
diff --git a/android/frameworks/base/packages/SettingsProvider/res/values/defaults.xml b/android/frameworks/base/packa
index 9829100..d8fece9 100755
--- a/android/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
+++ b/android/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
@@ -18,7 +18,7 @@
 -->
 <resources>
     <bool name="def_dim_screen">true</bool>
-    <integer name="def_screen_off_timeout">-1</integer>
+    <integer name="def_screen_off_timeout">180000</integer>
     <integer name="def_sleep_timeout">-1</integer>
     <bool name="def_airplane_mode_on">false</bool>
     <bool name="def_theater_mode_on">false</bool>
diff --git a/lichee/linux-3.10/drivers/input/touchscreen/gt9xx_new/gt9xx.c b/lichee/linux-3.10/drivers/input/touchscre
index babdd7e..96ce48b 100755
--- a/lichee/linux-3.10/drivers/input/touchscreen/gt9xx_new/gt9xx.c
+++ b/lichee/linux-3.10/drivers/input/touchscreen/gt9xx_new/gt9xx.c
@@ -463,6 +463,7 @@ static void gtp_touch_down(struct goodix_ts_data* ts,s32 id,s32 x,s32 y,s32 w)
 
 }
 
+extern int get_sleep_state(void);
 /*******************************************************
 Function:
        Touch up report function.
@@ -484,6 +485,12 @@ static void gtp_touch_up(struct goodix_ts_data* ts, s32 id)
         input_report_abs(ts->input_dev, ABS_MT_WIDTH_MAJOR, 0);
         input_mt_sync(ts->input_dev);
 #endif
+#if GTP_WAKEUP_SLEEP_ENABLE == 1
+       if(get_sleep_state()) {
+               input_report_key(ts->input_dev, KEY_POWER, 1); 
+               input_report_key(ts->input_dev, KEY_POWER, 0);          
+       }
+#endif
 }
 
 /*******************************************************
@@ -998,7 +1005,9 @@ static s8 gtp_request_input_dev(struct goodix_ts_data *ts)
                 input_set_capability(ts->input_dev,EV_KEY,touch_key_array[index]);     
         }
 #endif
-
+#if GTP_WAKEUP_SLEEP_ENABLE == 1
+                input_set_capability(ts->input_dev,EV_KEY,KEY_POWER);
+#endif          
 //#if GTP_CHANGE_X2Y
 //        GTP_SWAP(ts->abs_x_max, ts->abs_y_max);
 //#endif
@@ -1214,7 +1223,7 @@ static void goodix_ts_early_suspend(struct early_suspend *h)
         struct goodix_ts_data *ts;
         s8 ret = -1;   
         ts = container_of(h, struct goodix_ts_data, early_suspend);
-
+ printk(" goodix_ts_early_suspend\n");
 #if GTP_ESD_PROTECT
         ts->gtp_is_suspend = 1;
         cancel_delayed_work_sync(&gtp_esd_check_work);
@@ -1248,7 +1257,7 @@ static void goodix_ts_late_resume(struct early_suspend *h)
 {
         struct goodix_ts_data *ts;
         ts = container_of(h, struct goodix_ts_data, early_suspend);
-       
+        printk(" goodix_ts_late_resume\n");
         queue_work(goodix_resume_wq, &goodix_resume_work);//gandy
 
 #if GTP_ESD_PROTECT
diff --git a/lichee/linux-3.10/drivers/input/touchscreen/gt9xx_new/gt9xx_ts.h b/lichee/linux-3.10/drivers/input/touchs
index a766d62..fccb141 100755
--- a/lichee/linux-3.10/drivers/input/touchscreen/gt9xx_new/gt9xx_ts.h
+++ b/lichee/linux-3.10/drivers/input/touchscreen/gt9xx_new/gt9xx_ts.h
@@ -106,7 +106,7 @@ extern struct ctp_config_info config_info;
 #define GTP_DEBUG_ON          0
 #define GTP_DEBUG_ARRAY_ON    0
 #define GTP_DEBUG_FUNC_ON     0
-
+#define GTP_WAKEUP_SLEEP_ENABLE      1
 //***************************PART2:TODO define**********************************
 //STEP_1(REQUIRED):Change config table.
 /*TODO: puts the config info corresponded to your TP here, the following is just 
diff --git a/lichee/linux-3.10/drivers/video/sunxi/disp2/disp/dev_disp.c b/lichee/linux-3.10/drivers/video/sunxi/disp2
index 2c6fc65..b7a95bb 100755
--- a/lichee/linux-3.10/drivers/video/sunxi/disp2/disp/dev_disp.c
+++ b/lichee/linux-3.10/drivers/video/sunxi/disp2/disp/dev_disp.c
@@ -36,6 +36,14 @@ static struct device *display_dev;
 static unsigned int g_disp = 0, g_enhance_mode = 0, g_cvbs_enhance_mode = 0;
 static u32 DISP_print = 0xffff;   //print cmd which eq DISP_print
 static bool g_pm_runtime_enable = 0; //when open the CONFIG_PM_RUNTIME,this bool can also control if use the PM_RUNTI
+
+static int g_sleep_flag_for_tp = 0;
+
+int get_sleep_state(void)
+{
+       return g_sleep_flag_for_tp;
+}
+EXPORT_SYMBOL(get_sleep_state);
 #ifndef CONFIG_OF
 static struct sunxi_disp_mod disp_mod[] = {
        {DISP_MOD_DE      ,    "de"   },
@@ -1437,7 +1445,7 @@ static int disp_runtime_suspend(struct device *dev)
        struct list_head* disp_list= NULL;
 
        pr_info("%s\n", __func__);
-
+       
        if (!g_pm_runtime_enable)
                return 0;
 
@@ -1481,7 +1489,7 @@ static int disp_runtime_resume(struct device *dev)
        struct list_head* disp_list= NULL;
 
        pr_info("%s\n", __func__);
-
+       g_sleep_flag_for_tp = 0;
        if (!g_pm_runtime_enable)
                return 0;
 
@@ -1531,7 +1539,7 @@ static int disp_runtime_resume(struct device *dev)
 static int disp_runtime_idle(struct device *dev)
 {
        pr_info("%s\n", __func__);
-
+       g_sleep_flag_for_tp = 1;
        if (g_disp_drv.dev) {
                pm_runtime_mark_last_busy(g_disp_drv.dev);
                pm_request_autosuspend(g_disp_drv.dev);

原文链接:https://blog.csdn.net/SHH_1064994894/article/details/119641066

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值