rk3066b m701:fix ft5306 sometimes do not work when resume
authoryzq <yzq@rock-chips.com>
Sat, 29 Sep 2012 06:43:02 +0000 (14:43 +0800)
committeryzq <yzq@rock-chips.com>
Sat, 29 Sep 2012 06:43:02 +0000 (14:43 +0800)
drivers/input/touchscreen/ft5306_ts_av.c

index e2da4b3edff513d883054ce6b61ce4b3ca69936c..a6b1522c4ab4ed1dbc17238ee2b3c1e3646b9468 100644 (file)
@@ -721,11 +721,25 @@ static int ft5306_suspend(struct early_suspend *h)
 static int ft5306_resume(struct early_suspend *h)\r
 {\r
        struct ft5x0x_ts_data *ft5x0x_ts;       \r
+       int trytimes;\r
+       u8 val = 0;\r
        ft5x0x_ts = container_of(h, struct ft5x0x_ts_data, ft5306_early_suspend);\r
        FTprintk("TSP ft5306_resume\n");\r
        enable_irq(ft5x0x_ts->irq);\r
        if (ft5x0x_ts->platform_wakeup)                              \r
                ft5x0x_ts->platform_wakeup();\r
+\r
+       for(trytimes = 0 ;trytimes < 5; trytimes++){\r
+               if(ft5306_read_regs(this_client, 0x00,  &val,1)<0){\r
+                       if (ft5x0x_ts->platform_sleep) \r
+                               ft5x0x_ts->platform_sleep();\r
+                       if (ft5x0x_ts->platform_wakeup)                              \r
+                               ft5x0x_ts->platform_wakeup();\r
+               }else{\r
+                       break;\r
+               }\r
+       }\r
+\r
        //gpio_set_value(TOUCH_RESET_PIN,GPIO_LOW);\r
        //mdelay(100);\r
        //gpio_set_value(TOUCH_RESET_PIN,GPIO_HIGH);\r