From 15720a9798b6ee6b032feb6a0968c7c54c955852 Mon Sep 17 00:00:00 2001 From: libing Date: Sat, 24 Aug 2013 16:17:47 +0800 Subject: [PATCH] rk616_mipi: add mipi lcd reset pin in the board , and modify msleep err. --- arch/arm/mach-rk3188/board-rk3188-jettaplus.c | 39 +++++++++++++++++-- .../rockchip/screen/lcd_B080XAN02_mipi.c | 29 ++------------ 2 files changed, 40 insertions(+), 28 deletions(-) mode change 100644 => 100755 arch/arm/mach-rk3188/board-rk3188-jettaplus.c mode change 100644 => 100755 drivers/video/rockchip/screen/lcd_B080XAN02_mipi.c diff --git a/arch/arm/mach-rk3188/board-rk3188-jettaplus.c b/arch/arm/mach-rk3188/board-rk3188-jettaplus.c old mode 100644 new mode 100755 index 45e051204d77..d5e079c46b4b --- a/arch/arm/mach-rk3188/board-rk3188-jettaplus.c +++ b/arch/arm/mach-rk3188/board-rk3188-jettaplus.c @@ -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; } diff --git a/drivers/video/rockchip/screen/lcd_B080XAN02_mipi.c b/drivers/video/rockchip/screen/lcd_B080XAN02_mipi.c old mode 100644 new mode 100755 index 8676b6b98b8f..c9de1f21769c --- a/drivers/video/rockchip/screen/lcd_B080XAN02_mipi.c +++ b/drivers/video/rockchip/screen/lcd_B080XAN02_mipi.c @@ -4,9 +4,7 @@ #if defined(CONFIG_MIPI_DSI) #include "../transmitter/mipi_dsi.h" #endif -#include -#include -#include +#include #if defined(CONFIG_RK610_LVDS) || defined(CONFIG_RK616_LVDS) #define SCREEN_TYPE SCREEN_LVDS @@ -52,38 +50,17 @@ /* 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 -- 2.34.1