modify touch screen standby
author蔡枫 <cf@rock-chips.com>
Sat, 23 Apr 2011 04:48:37 +0000 (12:48 +0800)
committer蔡枫 <cf@rock-chips.com>
Sat, 23 Apr 2011 04:48:37 +0000 (12:48 +0800)
arch/arm/mach-rk29/board-rk29-ddr3sdk.c
arch/arm/mach-rk29/board-rk29sdk.c
arch/arm/mach-rk29/include/mach/board.h
drivers/input/touchscreen/eeti_egalax_i2c.c [changed mode: 0644->0755]

index 18ae868fd967cda783067825db603155b2061953..5d761b05ab1b7595e57315713111a5d115d3926a 100755 (executable)
@@ -130,7 +130,7 @@ struct rk29_nand_platform_data rk29_nand_data = {
 * author: zyw@rock-chips.com
 *****************************************************************************************/
 #define FB_ID                       0
-#define FB_DISPLAY_ON_PIN           RK29_PIN6_PD0
+#define FB_DISPLAY_ON_PIN           INVALID_GPIO
 #define FB_LCD_STANDBY_PIN          INVALID_GPIO
 #define FB_LCD_CABC_EN_PIN          RK29_PIN6_PD2
 #define FB_MCU_FMK_PIN              INVALID_GPIO
@@ -145,6 +145,8 @@ struct rk29_nand_platform_data rk29_nand_data = {
 *****************************************************************************************/
 #define TOUCH_SCREEN_STANDBY_PIN          RK29_PIN6_PD1
 #define TOUCH_SCREEN_STANDBY_VALUE        GPIO_HIGH
+#define TOUCH_SCREEN_DISPLAY_PIN          RK29_PIN6_PD0
+#define TOUCH_SCREEN_DISPLAY_VALUE        GPIO_HIGH
 
 static int rk29_lcd_io_init(void)
 {
@@ -180,13 +182,27 @@ static int rk29_fb_io_init(struct rk29_fb_setting_info *fb_setting)
         }
         gpio_direction_input(FB_MCU_FMK_PIN);
     }
-    if(fb_setting->disp_on_en && (FB_DISPLAY_ON_PIN != INVALID_GPIO))
+    if(fb_setting->disp_on_en)
     {
-        ret = gpio_request(FB_DISPLAY_ON_PIN, NULL);
-        if(ret != 0)
+        if(FB_DISPLAY_ON_PIN != INVALID_GPIO)
+        {
+            ret = gpio_request(FB_DISPLAY_ON_PIN, NULL);
+            if(ret != 0)
+            {
+                gpio_free(FB_DISPLAY_ON_PIN);
+                printk(">>>>>> FB_DISPLAY_ON_PIN gpio_request err \n ");
+            }
+        }
+        else
         {
-            gpio_free(FB_DISPLAY_ON_PIN);
-            printk(">>>>>> FB_DISPLAY_ON_PIN gpio_request err \n ");
+             ret = gpio_request(TOUCH_SCREEN_DISPLAY_PIN, NULL);
+             if(ret != 0)
+             {
+                 gpio_free(TOUCH_SCREEN_DISPLAY_PIN);
+                 printk(">>>>>> TOUCH_SCREEN_DISPLAY_PIN gpio_request err \n ");
+             }
+             gpio_direction_output(TOUCH_SCREEN_DISPLAY_PIN, 0);
+             gpio_set_value(TOUCH_SCREEN_DISPLAY_PIN, TOUCH_SCREEN_DISPLAY_VALUE);
         }
     }
 
@@ -410,6 +426,8 @@ static struct eeti_egalax_platform_data eeti_egalax_info = {
   .init_platform_hw= EETI_EGALAX_init_platform_hw,
   .standby_pin = TOUCH_SCREEN_STANDBY_PIN,
   .standby_value = TOUCH_SCREEN_STANDBY_VALUE,
+  .disp_on_pin = TOUCH_SCREEN_DISPLAY_PIN,
+  .disp_on_value = TOUCH_SCREEN_DISPLAY_VALUE,
 };
 #endif
 /*MMA8452 gsensor*/
index 8e7a98fdc67f2683303e25def8768782bc172fa2..74f7b2e562df9d91121d9eac13780b07d9c9dfe2 100755 (executable)
@@ -145,6 +145,8 @@ struct rk29_nand_platform_data rk29_nand_data = {
 *****************************************************************************************/
 #define TOUCH_SCREEN_STANDBY_PIN          INVALID_GPIO
 #define TOUCH_SCREEN_STANDBY_VALUE        GPIO_HIGH
+#define TOUCH_SCREEN_DISPLAY_PIN          INVALID_GPIO
+#define TOUCH_SCREEN_DISPLAY_VALUE        GPIO_HIGH
 
 static int rk29_lcd_io_init(void)
 {
@@ -180,13 +182,27 @@ static int rk29_fb_io_init(struct rk29_fb_setting_info *fb_setting)
         }
         gpio_direction_input(FB_MCU_FMK_PIN);
     }
-    if(fb_setting->disp_on_en && (FB_DISPLAY_ON_PIN != INVALID_GPIO))
+    if(fb_setting->disp_on_en)
     {
-        ret = gpio_request(FB_DISPLAY_ON_PIN, NULL);
-        if(ret != 0)
+        if(FB_DISPLAY_ON_PIN != INVALID_GPIO)
+        {
+            ret = gpio_request(FB_DISPLAY_ON_PIN, NULL);
+            if(ret != 0)
+            {
+                gpio_free(FB_DISPLAY_ON_PIN);
+                printk(">>>>>> FB_DISPLAY_ON_PIN gpio_request err \n ");
+            }
+        }
+        else
         {
-            gpio_free(FB_DISPLAY_ON_PIN);
-            printk(">>>>>> FB_DISPLAY_ON_PIN gpio_request err \n ");
+             ret = gpio_request(TOUCH_SCREEN_DISPLAY_PIN, NULL);
+             if(ret != 0)
+             {
+                 gpio_free(TOUCH_SCREEN_DISPLAY_PIN);
+                 printk(">>>>>> TOUCH_SCREEN_DISPLAY_PIN gpio_request err \n ");
+             }
+             gpio_direction_output(TOUCH_SCREEN_DISPLAY_PIN, 0);
+             gpio_set_value(TOUCH_SCREEN_DISPLAY_PIN, TOUCH_SCREEN_DISPLAY_VALUE);
         }
     }
 
@@ -410,6 +426,8 @@ static struct eeti_egalax_platform_data eeti_egalax_info = {
   .init_platform_hw= EETI_EGALAX_init_platform_hw,
   .standby_pin = TOUCH_SCREEN_STANDBY_PIN,
   .standby_value = TOUCH_SCREEN_STANDBY_VALUE,
+  .disp_on_pin = TOUCH_SCREEN_DISPLAY_PIN,
+  .disp_on_value = TOUCH_SCREEN_DISPLAY_VALUE,
 };
 #endif
 /*MMA8452 gsensor*/
index 441572df85a174a09fc6a1798a39016736ee9af6..01c62dc0eb53964a7c42aa6ade669c259f49d683 100755 (executable)
@@ -154,6 +154,8 @@ struct eeti_egalax_platform_data{
     void    (*exit_platform_hw)(void);
     int     standby_pin;
     int     standby_value;
+    int     disp_on_pin;
+    int     disp_on_value;
  
 };
 
old mode 100644 (file)
new mode 100755 (executable)
index 4d68f26..3325f1c
@@ -499,16 +499,24 @@ static irqreturn_t egalax_i2c_interrupt(int irq, void *dev_id)
 
 void egalax_i2c_set_standby(struct i2c_client *client, int enable)
 {
-        struct eeti_egalax_platform_data *pdata = pdata = client->dev.platform_data;
-        unsigned lcd_standby = pdata->standby_pin;
-        int lcd_standby_pol = pdata->standby_value;
+        struct eeti_egalax_platform_data *mach_info = client->dev.platform_data;
+       unsigned display_on = mach_info->disp_on_pin;
+       unsigned lcd_standby = mach_info->standby_pin;
+
+       int display_on_pol = mach_info->disp_on_value;
+       int lcd_standby_pol = mach_info->standby_value;
+
         printk("%s : %s, enable = %d", __FILE__, __FUNCTION__,enable);
-        // set display_on
-        if(lcd_standby != INVALID_GPIO)
-        {
-            gpio_direction_output(lcd_standby, 0);
-            gpio_set_value(lcd_standby, enable ? lcd_standby_pol : !lcd_standby_pol);
-        }
+    if(display_on != INVALID_GPIO)
+    {
+        gpio_direction_output(display_on, 0);
+        gpio_set_value(display_on, enable ? display_on_pol : !display_on_pol);                         
+    }
+    if(lcd_standby != INVALID_GPIO)
+    {
+        gpio_direction_output(lcd_standby, 0);
+       gpio_set_value(lcd_standby, enable ? lcd_standby_pol : !lcd_standby_pol);                         
+    }
 }
 
 #ifdef CONFIG_PM
@@ -533,14 +541,14 @@ static int egalax_i2c_suspend(struct i2c_client *client, pm_message_t mesg)
        {
                printk(KERN_DEBUG "[egalax_i2c]: device_may_wakeup false\n");
        }
-        egalax_i2c_set_standby(client, 1);
+       egalax_i2c_set_standby(client, 0);
        return 0;
 }
 
 static int egalax_i2c_resume(struct i2c_client *client)
 {
        struct _egalax_i2c *egalax_i2c = i2c_get_clientdata(client);
-        egalax_i2c_set_standby(client, 0);     
+       egalax_i2c_set_standby(client, 1);      
        if(device_may_wakeup(&client->dev)) 
        {
                disable_irq_wake(p_egalax_i2c_dev->irq);