rk30_phonepad:add reset pin control
authorluowei <lw@rock-chips.com>
Fri, 28 Sep 2012 07:55:12 +0000 (15:55 +0800)
committerluowei <lw@rock-chips.com>
Fri, 28 Sep 2012 07:55:37 +0000 (15:55 +0800)
arch/arm/mach-rk30/board-rk30-phonepad.c

index 9406f968eef345388f42e2b18d58a4757b9e5cd5..a4788eaf41cba9e26290a4213b9614978654037e 100755 (executable)
@@ -1077,7 +1077,7 @@ static int rk29_backlight_pwm_suspend(void)
                printk("func %s, line %d: request gpio fail\n", __FUNCTION__, __LINE__);
                return -1;
        }
-       gpio_direction_output(PWM_GPIO, GPIO_LOW);
+       gpio_direction_output(PWM_GPIO, !PWM_EFFECT_VALUE);
 #ifdef  LCD_DISP_ON_PIN
        gpio_direction_output(BL_EN_PIN, 0);
        gpio_set_value(BL_EN_PIN, !BL_EN_VALUE);
@@ -1547,6 +1547,9 @@ static struct sensor_platform_data light_isl29023_info = {
 #define LCD_STANDBY_PIN         RK30_PIN4_PD2
 #define LCD_STANDBY_VALUE       GPIO_HIGH
 
+#define LCD_RST_MUX_NAME    GPIO4D1_SMCDATA9_TRACEDATA9_NAME
+#define LCD_RST_PIN         RK30_PIN4_PD1
+#define LCD_RST_VALUE       GPIO_HIGH
 
 #define LCD_EN_MUX_NAME    GPIO4C7_SMCDATA7_TRACEDATA7_NAME
 #define LCD_EN_PIN         RK30_PIN6_PB4
@@ -1561,19 +1564,6 @@ static int rk_fb_io_init(struct rk29_fb_setting_info *fb_setting)
 {
        int ret = 0;
 
-       rk30_mux_api_set(LCD_STANDBY_MUX_NAME, GPIO4D_GPIO4D2);
-       ret = gpio_request(LCD_STANDBY_PIN, NULL);
-       if (ret != 0)
-       {
-               gpio_free(LCD_STANDBY_PIN);
-               printk(KERN_ERR "request lcd cs pin fail!\n");
-               return -1;
-       }
-       else
-       {
-               gpio_direction_output(LCD_STANDBY_PIN, LCD_STANDBY_VALUE);
-       }
-
        rk30_mux_api_set(GPIO3A6_SDMMC0RSTNOUT_NAME, GPIO3A_GPIO3A6);
        ret = gpio_request(HDMI11_EN_PIN, NULL);
        if (ret != 0)
@@ -1610,6 +1600,33 @@ static int rk_fb_io_init(struct rk29_fb_setting_info *fb_setting)
        {
                gpio_direction_output(LCD_EN_PIN, LCD_EN_VALUE);
        }
+
+       rk30_mux_api_set(LCD_STANDBY_MUX_NAME, GPIO4D_GPIO4D2);
+       ret = gpio_request(LCD_STANDBY_PIN, NULL);
+       if (ret != 0)
+       {
+               gpio_free(LCD_STANDBY_PIN);
+               printk(KERN_ERR "request lcd cs pin fail!\n");
+               return -1;
+       }
+       else
+       {
+               gpio_direction_output(LCD_STANDBY_PIN, LCD_STANDBY_VALUE);
+       }
+
+       rk30_mux_api_set(LCD_RST_MUX_NAME, GPIO4D_GPIO4D1);
+       ret = gpio_request(LCD_RST_PIN, NULL);
+       if (ret != 0)
+       {
+               gpio_free(LCD_RST_PIN);
+               printk(KERN_ERR "request lcd cs pin fail!\n");
+               return -1;
+       }
+       else
+       {
+               gpio_direction_output(LCD_RST_PIN, LCD_RST_VALUE);
+       }
+       
        return 0;
 }
 static int rk_fb_io_disable(void)
@@ -1617,7 +1634,9 @@ static int rk_fb_io_disable(void)
        msleep(30);             //Response Time (Rising + Falling)
        gpio_set_value(HDMI11_EN_PIN, HDMI11_EN_VALUE? 0:1);
        gpio_set_value(LCD_CS_PIN, LCD_CS_VALUE? 0:1);
-       gpio_set_value(LCD_EN_PIN, LCD_EN_VALUE? 0:1);
+       gpio_set_value(LCD_EN_PIN, LCD_EN_VALUE? 0:1);  
+       gpio_set_value(LCD_RST_PIN, LCD_RST_VALUE? 0:1);
+       gpio_set_value(LCD_STANDBY_PIN, LCD_STANDBY_VALUE? 0:1);        
        return 0;
 }
 static int rk_fb_io_enable(void)
@@ -1625,6 +1644,8 @@ static int rk_fb_io_enable(void)
        gpio_set_value(LCD_EN_PIN, LCD_EN_VALUE);       
        gpio_set_value(LCD_CS_PIN, LCD_CS_VALUE);
        gpio_set_value(HDMI11_EN_PIN, HDMI11_EN_VALUE);
+       gpio_set_value(LCD_RST_PIN, LCD_RST_VALUE);             
+       gpio_set_value(LCD_STANDBY_PIN, LCD_STANDBY_VALUE);     
        msleep(150);    //wait for power stable
        return 0;
 }