#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);
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)
{
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)
{
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;
}
#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;
dsi_enable_video_mode(1);
printk("++++++++++++++++%s:%d\n", __func__, __LINE__);
+ return 0;
}
int rk_lcd_standby(u8 enable) {
rk_lcd_init();
printk("++++++++++++++++%s:%d\n", __func__, __LINE__);
}
+ return 0;
}
#endif