rk616_mipi: add mipi lcd reset pin in the board , and modify msleep err.
authorlibing <libing@rock-chips.com>
Sat, 24 Aug 2013 08:17:47 +0000 (16:17 +0800)
committerlibing <libing@rock-chips.com>
Sat, 24 Aug 2013 08:17:47 +0000 (16:17 +0800)
arch/arm/mach-rk3188/board-rk3188-jettaplus.c [changed mode: 0644->0755]
drivers/video/rockchip/screen/lcd_B080XAN02_mipi.c [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
index 45e0512..d5e079c
@@ -478,18 +478,19 @@ static struct sensor_platform_data cm3217_info = {
 #define LCD_CS_PIN         INVALID_GPIO
 #define LCD_CS_VALUE       GPIO_HIGH
 
-#define LCD_EN_PIN         RK30_PIN0_PB0
+#define LCD_EN_PIN         RK30_PIN0_PB0 
 #if defined(CONFIG_MACH_RK3188_RK618)
+#define MIPI_LCD_RST_PIN   RK30_PIN0_PC3   //mipi lcd's reset pin, if no reset pin, set's  INVALID_GPIO
 #define LCD_EN_VALUE       GPIO_LOW
 #else
-#define LCD_EN_VALUE       GPIO_HIGH
-
+#define LCD_EN_VALUE       GPIO_HIGH 
 #endif
 
 static int rk_fb_io_init(struct rk29_fb_setting_info *fb_setting)
 {
        int ret = 0;
 
+    
        if(LCD_CS_PIN !=INVALID_GPIO)
        {
                ret = gpio_request(LCD_CS_PIN, NULL);
@@ -519,6 +520,23 @@ static int rk_fb_io_init(struct rk29_fb_setting_info *fb_setting)
                        gpio_direction_output(LCD_EN_PIN, LCD_EN_VALUE);
                }
        }
+
+    if(MIPI_LCD_RST_PIN !=INVALID_GPIO)
+       {
+               ret = gpio_request(MIPI_LCD_RST_PIN, NULL);
+               if (ret != 0)
+               {
+                       gpio_free(MIPI_LCD_RST_PIN);
+                       printk(KERN_ERR "request mipi lcd rst pin fail!\n");
+                       return -1;
+               }
+        
+               else
+               {
+            gpio_set_value(MIPI_LCD_RST_PIN, !GPIO_LOW);
+            msleep(20);
+               }
+       }
        return 0;
 }
 static int rk_fb_io_disable(void)
@@ -527,10 +545,18 @@ static int rk_fb_io_disable(void)
        {
                gpio_set_value(LCD_CS_PIN, !LCD_CS_VALUE);
        }
+    
        if(LCD_EN_PIN !=INVALID_GPIO)
        {
                gpio_set_value(LCD_EN_PIN, !LCD_EN_VALUE);
        }
+
+    if(MIPI_LCD_RST_PIN !=INVALID_GPIO)
+       {
+               gpio_set_value(MIPI_LCD_RST_PIN, GPIO_LOW);
+        msleep(10);
+       }
+    
        return 0;
 }
 static int rk_fb_io_enable(void)
@@ -539,10 +565,17 @@ static int rk_fb_io_enable(void)
        {
                gpio_set_value(LCD_CS_PIN, LCD_CS_VALUE);
        }
+    
        if(LCD_EN_PIN !=INVALID_GPIO)
        {
                gpio_set_value(LCD_EN_PIN, LCD_EN_VALUE);
        }
+
+    if(MIPI_LCD_RST_PIN !=INVALID_GPIO)
+       {
+        gpio_set_value(MIPI_LCD_RST_PIN, !GPIO_LOW);
+        msleep(10);
+     }
        return 0;
 }
 
old mode 100644 (file)
new mode 100755 (executable)
index 8676b6b..c9de1f2
@@ -4,9 +4,7 @@
 #if defined(CONFIG_MIPI_DSI)
 #include "../transmitter/mipi_dsi.h"
 #endif
-#include <mach/board.h>
-#include <mach/gpio.h>
-#include <mach/io.h>
+#include <linux/delay.h>
 
 #if  defined(CONFIG_RK610_LVDS) || defined(CONFIG_RK616_LVDS)
 #define SCREEN_TYPE            SCREEN_LVDS
 /* about mipi */
 #define MIPI_DSI_LANE 4
 #define MIPI_DSI_HS_CLK 528*1000000 //1000*1000000
+#define MIPI_LCD_RST_PIN RK30_PIN0_PC3
 
 #if defined(RK_SCREEN_INIT)
 static struct rk29lcd_info *gLcd_info = NULL;
 
-int gTmp = 1;
 int rk_lcd_init(void) {
 
-       int ret = 0;
        u8 dcs[16] = {0};
        if(dsi_is_active() != 1)
                return -1;
        /*below is changeable*/
-
-       if(gTmp == 1)
-       {
-               ret = gpio_request(RK30_PIN0_PC3, "mipi rest pin");
-               if( ret != 0 )
-               {
-                       gpio_free(RK30_PIN0_PC3);
-                       printk("mipi rest pin error\n");
-                       return -EIO;
-               }
-               gTmp++;         
-       }
-
-       gpio_set_value(RK30_PIN0_PC3, !GPIO_LOW);
-       msleep(10);
-       gpio_set_value(RK30_PIN0_PC3, GPIO_LOW);
-       msleep(10);
-       gpio_set_value(RK30_PIN0_PC3, !GPIO_LOW);
-       msleep(20);
-       
        dsi_enable_hs_clk(1);
 
        dcs[0] = LPDT;
@@ -98,6 +75,7 @@ int rk_lcd_init(void) {
        dsi_enable_video_mode(1);
        
        printk("++++++++++++++++%s:%d\n", __func__, __LINE__);
+    return 0;
 }
 
 int rk_lcd_standby(u8 enable) {
@@ -124,6 +102,7 @@ int rk_lcd_standby(u8 enable) {
                rk_lcd_init();
                printk("++++++++++++++++%s:%d\n", __func__, __LINE__);  
        }
+    return 0;
 }
 #endif