Skip to contentSkip to conversation

Add support for FIMD and DP on SMDK5250

PATCH Superseded Ajay Kumar 4 participants 11 messages Dec 13, 2012 – Dec 17, 2012

Subsystems (3)

v2 of 6 Superseded Latest is v6 →

lore
Share & tools
lore

Ajay Kumar

author
#0 lore raw

v2 cover Add support for FIMD and DP on SMDK5250

Changes since V1:
-- Fix commit message in [PATCH V2 1/4].
-- Move LCD GPIO confiration from exynos common file to board file. -- Use CONFIG_CMD_BMP instead of CONFIG_TIZEN to distinguish
between Proprietary logo support and LCD console support.

[PATCH V2 1/4] EXYNOS5: Change parent clock of FIMD to MPLL
[PATCH RESEND 2/4] video: Fix compilation dependency of exynos_dp and exynos_mipi on
exynos_fb
[PATCH V2 3/4] video: Modify exynos_fimd driver to support LCD console [PATCH V2 4/4] EXYNOS5: Add support for FIMD and DP

 arch/arm/cpu/armv7/exynos/clock.c |    2 +-
 board/samsung/smdk5250/smdk5250.c |   98 +++++++++++++++++++++++++++++++++++++
 drivers/video/exynos_fb.c         |    9 +++-
 drivers/video/exynos_fimd.c       |   10 +++-
 include/configs/smdk5250.h        |    8 +++
 5 files changed, 123 insertions(+), 4 deletions(-)
author
#1 lore raw

PATCH v2 1/4 EXYNOS5: Change parent clock of FIMD to MPLL

With VPLL as source clock to FIMD,
Exynos DP Initializaton was failing sometimes with unstable clock. Changing FIMD source to MPLL resolves this issue.

---
 arch/arm/cpu/armv7/exynos/clock.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
arch/arm/cpu/armv7/exynos/clock.c +1 -1
index fe61f88..bfcd5f7 100644
@@ -603,7 +603,7 @@ void exynos5_set_lcd_clk(void)
 	 */
 	cfg = readl(&clk->src_disp1_0);
 	cfg &= ~(0xf);
-	cfg |= 0x8;
+	cfg |= 0x6;
 	writel(cfg, &clk->src_disp1_0);
 
 	/*
Signature · 1 line
1.7.1
#2 lore raw

PATCH v2 1/4 EXYNOS5: Change parent clock of FIMD to MPLL

Dear Donghwa,

Quoted 15 lines · Ajay Kumar

With VPLL as source clock to FIMD,
Exynos DP Initializaton was failing sometimes with unstable clock. Changing FIMD source to MPLL resolves this issue.

---
 arch/arm/cpu/armv7/exynos/clock.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
arch/arm/cpu/armv7/exynos/clock.c +0 -0
index fe61f88..bfcd5f7 100644

arch/arm/cpu/armv7/exynos/clock.c void exynos5_set_lcd_clk(void) · line 606

Quoted 5 lines
arch/arm/cpu/armv7/exynos/clock.c +1 -1
@@ -603,7 +603,7 @@ void exynos5_set_lcd_clk(void)
 	 */
 	cfg = readl(&clk->src_disp1_0);
 	cfg &= ~(0xf);
-	cfg |= 0x8;
+	cfg |= 0x6;

Please check it.

arch/arm/cpu/armv7/exynos/clock.c void exynos5_set_lcd_clk(void) · line 609

Quoted 4 lines
arch/arm/cpu/armv7/exynos/clock.c +0 -0
 	writel(cfg, &clk->src_disp1_0);
 
 	/*

Thanks.
Minkyu Kang.

#3 lore raw

PATCH v2 1/4 EXYNOS5: Change parent clock of FIMD to MPLL

Quoted 13 lines · Minkyu Kang

Dear Donghwa,

Quoted 10 lines · Ajay Kumar

With VPLL as source clock to FIMD,
Exynos DP Initializaton was failing sometimes with unstable clock. Changing FIMD source to MPLL resolves this issue.

---
  arch/arm/cpu/armv7/exynos/clock.c |    2 +-
  1 files changed, 1 insertions(+), 1 deletions(-)
Quoted 11 lines

arch/arm/cpu/armv7/exynos/clock.c void exynos5_set_lcd_clk(void) · line 606

Quoted 10 lines
arch/arm/cpu/armv7/exynos/clock.c +1 -1
index fe61f88..bfcd5f7 100644
@@ -603,7 +603,7 @@ void exynos5_set_lcd_clk(void)
  	 */
  	cfg = readl(&clk->src_disp1_0);
  	cfg &= ~(0xf);
-	cfg |= 0x8;
+	cfg |= 0x6;

Please check it.

In order to use the configured refresh rate as closely as possible, it is more proper value(MPLL: 0x6) than
using VPLL as source clock.

Thank you,
Donghwa Lee

author
#4 lore raw

PATCH RESEND v2 2/4 video: Fix compilation dependency of exynos_dp and exynos_mipi on exynos_fb

In reply to Ajay Kumar

When only DP is used, we need not enable CONFIG_EXYNOS_MIPI_DSIM. Similarly, when only MIPI is used, we need not enable CONFIG_EXYNOS_DP. But the current structuring of code forces us to enable both CONFIG_EXYNOS_MIPI_DSIM and CONFIG_EXYNOS_DP.
This patch adds conditional compilation check to remove the dependency.

---
 drivers/video/exynos_fb.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)
drivers/video/exynos_fb.c +4 -0
index d9a3f9a..39d3b74 100644
@@ -103,8 +103,10 @@ static void lcd_panel_on(vidinfo_t *vid)
 
 	udelay(vid->power_on_delay);
 
+#ifdef CONFIG_EXYNOS_DP
 	if (vid->dp_enabled)
 		exynos_init_dp();
+#endif
 
 	if (vid->reset_lcd) {
 		vid->reset_lcd();
@@ -120,8 +122,10 @@ static void lcd_panel_on(vidinfo_t *vid)
 	if (vid->enable_ldo)
 		vid->enable_ldo(1);
 
+#ifdef CONFIG_EXYNOS_MIPI_DSIM
 	if (vid->mipi_enabled)
 		exynos_mipi_dsi_init();
+#endif
 }
 
 void lcd_ctrl_init(void *lcdbase)
Signature · 1 line
1.7.1
#5 lore raw

PATCH RESEND 2/4 video: Fix compilation dependency of exynos_dp and exynos_mipi on exynos_fb

Dear Ajay,

Quoted 17 lines · Ajay Kumar

When only DP is used, we need not enable CONFIG_EXYNOS_MIPI_DSIM. Similarly, when only MIPI is used, we need not enable CONFIG_EXYNOS_DP. But the current structuring of code forces us to enable both CONFIG_EXYNOS_MIPI_DSIM and CONFIG_EXYNOS_DP.
This patch adds conditional compilation check to remove the dependency.

---
 drivers/video/exynos_fb.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)
drivers/video/exynos_fb.c +0 -0
index d9a3f9a..39d3b74 100644

drivers/video/exynos_fb.c static void lcd_panel_on(vidinfo_t *vid) · line 109

Quoted 7 lines
drivers/video/exynos_fb.c +2 -0
@@ -103,8 +103,10 @@ static void lcd_panel_on(vidinfo_t *vid)
 
 	udelay(vid->power_on_delay);
 
+#ifdef CONFIG_EXYNOS_DP
 	if (vid->dp_enabled)
 		exynos_init_dp();
+#endif

Unnecessary.
please see arch/arm/include/asm/arch-exynos/dp_info.h

#ifdef CONFIG_EXYNOS_DP
unsigned int exynos_init_dp(void);
#else
unsigned int exynos_init_dp(void)

{
	return 0;
}

#endif

drivers/video/exynos_fb.c static void lcd_panel_on(vidinfo_t *vid) · line 128

Quoted 11 lines
drivers/video/exynos_fb.c +2 -0
 	if (vid->reset_lcd) {
 		vid->reset_lcd();
@@ -120,8 +122,10 @@ static void lcd_panel_on(vidinfo_t *vid)
 	if (vid->enable_ldo)
 		vid->enable_ldo(1);
 
+#ifdef CONFIG_EXYNOS_MIPI_DSIM
 	if (vid->mipi_enabled)
 		exynos_mipi_dsi_init();
+#endif

This should be modified like exynos_init_dp?

Donghwa, how you think?

drivers/video/exynos_fb.c static void lcd_panel_on(vidinfo_t *vid) · line 131

Quoted 4 lines
drivers/video/exynos_fb.c +0 -0
 }
 
 void lcd_ctrl_init(void *lcdbase)

Thanks.
Minkyu Kang.

#6 lore raw

PATCH RESEND 2/4 video: Fix compilation dependency of exynos_dp and exynos_mipi on exynos_fb

Quoted 46 lines · Minkyu Kang

Dear Ajay,

Quoted 17 lines · Ajay Kumar

When only DP is used, we need not enable CONFIG_EXYNOS_MIPI_DSIM. Similarly, when only MIPI is used, we need not enable CONFIG_EXYNOS_DP. But the current structuring of code forces us to enable both CONFIG_EXYNOS_MIPI_DSIM and CONFIG_EXYNOS_DP.
This patch adds conditional compilation check to remove the dependency.

---
  drivers/video/exynos_fb.c |    4 ++++
  1 files changed, 4 insertions(+), 0 deletions(-)
drivers/video/exynos_fb.c +0 -0
index d9a3f9a..39d3b74 100644

drivers/video/exynos_fb.c static void lcd_panel_on(vidinfo_t *vid) · line 109

Quoted 7 lines
drivers/video/exynos_fb.c +2 -0
@@ -103,8 +103,10 @@ static void lcd_panel_on(vidinfo_t *vid)
 
  	udelay(vid->power_on_delay);
 
+#ifdef CONFIG_EXYNOS_DP
  	if (vid->dp_enabled)
  		exynos_init_dp();
+#endif

Unnecessary.
please see arch/arm/include/asm/arch-exynos/dp_info.h

#ifdef CONFIG_EXYNOS_DP
unsigned int exynos_init_dp(void);
#else
unsigned int exynos_init_dp(void)

{
	return 0;
}

#endif

Quoted 7 lines
drivers/video/exynos_fb.c +0 -0
  	if (vid->reset_lcd) {
  		vid->reset_lcd();
@@ -120,8 +122,10 @@ static void lcd_panel_on(vidinfo_t *vid)
  	if (vid->enable_ldo)
  		vid->enable_ldo(1);
 
Quoted 7 lines

drivers/video/exynos_fb.c static void lcd_panel_on(vidinfo_t *vid) · line 128

Quoted 4 lines
drivers/video/exynos_fb.c +2 -0
+#ifdef CONFIG_EXYNOS_MIPI_DSIM
  	if (vid->mipi_enabled)
  		exynos_mipi_dsi_init();
+#endif

This should be modified like exynos_init_dp?

Donghwa, how you think?

I agree with you. It looks better than using #ifdef.

Thank you,
Donghwa Lee

author
#7 lore raw

PATCH v2 3/4 video: Modify exynos_fimd driver to support LCD console

In reply to Ajay Kumar

Currently, exynos FIMD driver is being used to support only TIZEN LOGOs. In order to get LCD console, we need to enable half word swap feature of FIMD and use 16 BPP.
LCD console and proprietary Logo cannot be used simultaneously. You should define CONFIG_CMD_BMP for proprietary Logo, and if CONFIG_CMD_BMP is not defined you get output console on LCD.

---
 drivers/video/exynos_fb.c   |    5 ++++-
 drivers/video/exynos_fimd.c |   10 ++++++++--
 2 files changed, 12 insertions(+), 3 deletions(-)
drivers/video/exynos_fb.c +4 -1
index 39d3b74..cb19192 100644
@@ -65,6 +65,7 @@ static void exynos_lcd_init(vidinfo_t *vid)
 	exynos_fimd_lcd_init(vid);
 }
 
+#ifdef CONFIG_CMD_BMP
 static void draw_logo(void)
 {
 	int x, y;
@@ -87,6 +88,7 @@ static void draw_logo(void)
 	addr = panel_info.logo_addr;
 	bmp_display(addr, x, y);
 }
+#endif
 
 static void lcd_panel_on(vidinfo_t *vid)
 {
@@ -146,12 +148,13 @@ void lcd_ctrl_init(void *lcdbase)
 
 void lcd_enable(void)
 {
+#ifdef CONFIG_CMD_BMP
 	if (panel_info.logo_on) {
 		memset(lcd_base, 0, panel_width * panel_height *
 				(NBITS(panel_info.vl_bpix) >> 3));
 		draw_logo();
 	}
-
+#endif
 	lcd_panel_on(&panel_info);
 }
 
drivers/video/exynos_fimd.c +8 -2
index 06eae2e..0776b6d 100644
@@ -88,14 +88,20 @@ static void exynos_fimd_set_par(unsigned int win_id)
 	/* DATAPATH is DMA */
 	cfg |= EXYNOS_WINCON_DATAPATH_DMA;
 
-	/* bpp is 32 */
+#ifdef CONFIG_CMD_BMP /* To get proprietary LOGO */
 	cfg |= EXYNOS_WINCON_WSWP_ENABLE;
+#else	/* To get output console on LCD */
+	cfg |= EXYNOS_WINCON_HAWSWP_ENABLE;
+#endif
 
 	/* dma burst is 16 */
 	cfg |= EXYNOS_WINCON_BURSTLEN_16WORD;
 
-	/* pixel format is unpacked RGB888 */
+#ifdef CONFIG_CMD_BMP /* To get proprietary LOGO */
 	cfg |= EXYNOS_WINCON_BPPMODE_24BPP_888;
+#else	/* To get output console on LCD */
+	cfg |= EXYNOS_WINCON_BPPMODE_16BPP_565;
+#endif
 
 	writel(cfg, (unsigned int)&fimd_ctrl->wincon0 +
 			EXYNOS_WINCON(win_id));
Signature · 1 line
1.7.1
#8 lore raw

PATCH v2 3/4 video: Modify exynos_fimd driver to support LCD console

Hi Ajay,

Quoted 53 lines · Ajay Kumar

Currently, exynos FIMD driver is being used to support only TIZEN LOGOs. In order to get LCD console, we need to enable half word swap feature of FIMD and use 16 BPP.
LCD console and proprietary Logo cannot be used simultaneously. You should define CONFIG_CMD_BMP for proprietary Logo, and if CONFIG_CMD_BMP is not defined you get output console on LCD.

---
 drivers/video/exynos_fb.c   |    5 ++++-
 drivers/video/exynos_fimd.c |   10 ++++++++--
 2 files changed, 12 insertions(+), 3 deletions(-)
drivers/video/exynos_fb.c +4 -1
index 39d3b74..cb19192 100644
@@ -65,6 +65,7 @@ static void exynos_lcd_init(vidinfo_t *vid)
        exynos_fimd_lcd_init(vid);
 }
 
+#ifdef CONFIG_CMD_BMP
 static void draw_logo(void)
 {
        int x, y;
@@ -87,6 +88,7 @@ static void draw_logo(void)
        addr = panel_info.logo_addr;
        bmp_display(addr, x, y);
 }
+#endif
 
 static void lcd_panel_on(vidinfo_t *vid)
 {
@@ -146,12 +148,13 @@ void lcd_ctrl_init(void *lcdbase)
 
 void lcd_enable(void)
 {
+#ifdef CONFIG_CMD_BMP
        if (panel_info.logo_on) {
                memset(lcd_base, 0, panel_width * panel_height *
                                (NBITS(panel_info.vl_bpix) >> 3));
                draw_logo();
        }
-
+#endif
        lcd_panel_on(&panel_info);
 }
 
drivers/video/exynos_fimd.c +0 -0
index 06eae2e..0776b6d 100644

drivers/video/exynos_fimd.c static void exynos_fimd_set_par(unsigned int win_id) · line 95

Quoted 9 lines
drivers/video/exynos_fimd.c +4 -1
@@ -88,14 +88,20 @@ static void exynos_fimd_set_par(unsigned int win_id)
        /* DATAPATH is DMA */
        cfg |= EXYNOS_WINCON_DATAPATH_DMA;
 
-       /* bpp is 32 */
+#ifdef CONFIG_CMD_BMP /* To get proprietary LOGO */
        cfg |= EXYNOS_WINCON_WSWP_ENABLE;
+#else  /* To get output console on LCD */
+       cfg |= EXYNOS_WINCON_HAWSWP_ENABLE;
+#endif

It seems like you should use CONFIG_LCD_LOGO instead of CONFIG_CMD_BMP, since people might want that command for other reasons. Or do want a specific CONFIG for this feature?

Quoted 14 lines
drivers/video/exynos_fimd.c +4 -2
        /* dma burst is 16 */
        cfg |= EXYNOS_WINCON_BURSTLEN_16WORD;
 
-       /* pixel format is unpacked RGB888 */
+#ifdef CONFIG_CMD_BMP /* To get proprietary LOGO */
        cfg |= EXYNOS_WINCON_BPPMODE_24BPP_888;
+#else  /* To get output console on LCD */
+       cfg |= EXYNOS_WINCON_BPPMODE_16BPP_565;
+#endif
 
        writel(cfg, (unsigned int)&fimd_ctrl->wincon0 +
                        EXYNOS_WINCON(win_id));
--
Quoted 2 lines

1.7.1

Regards,
Simon

author
#9 lore raw

PATCH v2 4/4 EXYNOS5: Add support for FIMD and DP

In reply to Ajay Kumar

Add panel_info structure required by LCD driver and DP panel platdata for SMDK5250.
Add GPIO configuration for LCD.
Enable FIMD and DP support on SMDK5250. DP Panel size: 2560x1600.
We use 16BPP resolution to get LCD console.

---
 board/samsung/smdk5250/smdk5250.c |   98 +++++++++++++++++++++++++++++++++++++
 include/configs/smdk5250.h        |    8 +++
 2 files changed, 106 insertions(+), 0 deletions(-)
board/samsung/smdk5250/smdk5250.c +98 -0
index 4c50342..4c21742 100644
@@ -24,12 +24,15 @@
 #include <asm/io.h>
 #include <i2c.h>
 #include <netdev.h>
+#include <lcd.h>
 #include <spi.h>
 #include <asm/arch/cpu.h>
 #include <asm/arch/gpio.h>
 #include <asm/arch/mmc.h>
+#include <asm/arch/power.h>
 #include <asm/arch/pinmux.h>
 #include <asm/arch/sromc.h>
+#include <asm/arch/dp_info.h>
 #include <pmic.h>
 
 DECLARE_GLOBAL_DATA_PTR;
@@ -181,6 +184,101 @@ static int board_uart_init(void)
 	return 0;
 }
 
+vidinfo_t panel_info = {
+	.vl_freq	= 60,
+	.vl_col		= 2560,
+	.vl_row		= 1600,
+	.vl_width	= 2560,
+	.vl_height	= 1600,
+	.vl_clkp	= CONFIG_SYS_LOW,
+	.vl_hsp		= CONFIG_SYS_LOW,
+	.vl_vsp		= CONFIG_SYS_LOW,
+	.vl_dp		= CONFIG_SYS_LOW,
+	.vl_bpix	= 4,	/* LCD_BPP = 2^4, for output conosle on LCD */
+
+	/* wDP panel timing infomation */
+	.vl_hspw	= 32,
+	.vl_hbpd	= 80,
+	.vl_hfpd	= 48,
+
+	.vl_vspw	= 6,
+	.vl_vbpd	= 37,
+	.vl_vfpd	= 3,
+	.vl_cmd_allow_len = 0xf,
+
+	.win_id		= 3,
+	.cfg_gpio	= NULL,
+	.backlight_on	= NULL,
+	.lcd_power_on	= NULL,
+	.reset_lcd	= NULL,
+	.dual_lcd_enabled = 0,
+
+	.init_delay	= 0,
+	.power_on_delay = 0,
+	.reset_delay	= 0,
+	.interface_mode = FIMD_RGB_INTERFACE,
+	.dp_enabled	= 1,
+};
+
+static struct edp_device_info edp_info = {
+	.disp_info = {
+		.h_res = 2560,
+		.h_sync_width = 32,
+		.h_back_porch = 80,
+		.h_front_porch = 48,
+		.v_res = 1600,
+		.v_sync_width  = 6,
+		.v_back_porch = 37,
+		.v_front_porch = 3,
+		.v_sync_rate = 60,
+	},
+	.lt_info = {
+		.lt_status = DP_LT_NONE,
+	},
+	.video_info = {
+		.master_mode = 0,
+		.bist_mode = DP_DISABLE,
+		.bist_pattern = NO_PATTERN,
+		.h_sync_polarity = 0,
+		.v_sync_polarity = 0,
+		.interlaced = 0,
+		.color_space = COLOR_RGB,
+		.dynamic_range = VESA,
+		.ycbcr_coeff = COLOR_YCBCR601,
+		.color_depth = COLOR_8,
+	},
+};
+
+static struct exynos_dp_platform_data dp_platform_data = {
+	.phy_enable	= set_dp_phy_ctrl,
+	.edp_dev_info	= &edp_info,
+};
+
+static void cfg_lcd_gpio(void)
+{
+	struct exynos5_gpio_part1 *gpio1 =
+		(struct exynos5_gpio_part1 *) samsung_get_base_gpio_part1();
+
+	/* For Backlight */
+	s5p_gpio_cfg_pin(&gpio1->b2, 0, GPIO_OUTPUT);
+	s5p_gpio_set_value(&gpio1->b2, 0, 1);
+
+	/* LCD power on */
+	s5p_gpio_cfg_pin(&gpio1->x1, 5, GPIO_OUTPUT);
+	s5p_gpio_set_value(&gpio1->x1, 5, 1);
+
+	/* Set Hotplug detect for DP */
+	s5p_gpio_cfg_pin(&gpio1->x0, 7, GPIO_FUNC(0x3));
+}
+
+void init_panel_info(vidinfo_t *vid)
+{
+	vid->rgb_mode   = MODE_RGB_P,
+
+	exynos_set_dp_platform_data(&dp_platform_data);
+	cfg_lcd_gpio();
+}
+
 #ifdef CONFIG_SYS_I2C_INIT_BOARD
 static int board_i2c_init(void)
 {
include/configs/smdk5250.h +8 -0
index e412da8..a9b3b8b 100644
@@ -256,6 +256,14 @@
 #define CONFIG_SOUND_WM8994
 #endif
 
+/* Display */
+#define CONFIG_LCD
+#define CONFIG_EXYNOS_FB
+#define CONFIG_EXYNOS_DP
+#define LCD_XRES			2560
+#define LCD_YRES			1600
+#define LCD_BPP			LCD_COLOR16
+
 /* Enable devicetree support */
 #define CONFIG_OF_LIBFDT
 
Signature · 1 line
1.7.1
#10 lore raw

PATCH v2 4/4 EXYNOS5: Add support for FIMD and DP

Dear Ajay,

Quoted 120 lines · Ajay Kumar

Add panel_info structure required by LCD driver and DP panel platdata for SMDK5250.
Add GPIO configuration for LCD.
Enable FIMD and DP support on SMDK5250. DP Panel size: 2560x1600.
We use 16BPP resolution to get LCD console.

---
 board/samsung/smdk5250/smdk5250.c |   98 +++++++++++++++++++++++++++++++++++++
 include/configs/smdk5250.h        |    8 +++
 2 files changed, 106 insertions(+), 0 deletions(-)
board/samsung/smdk5250/smdk5250.c +86 -0
index 4c50342..4c21742 100644
@@ -24,12 +24,15 @@
 #include <asm/io.h>
 #include <i2c.h>
 #include <netdev.h>
+#include <lcd.h>
 #include <spi.h>
 #include <asm/arch/cpu.h>
 #include <asm/arch/gpio.h>
 #include <asm/arch/mmc.h>
+#include <asm/arch/power.h>
 #include <asm/arch/pinmux.h>
 #include <asm/arch/sromc.h>
+#include <asm/arch/dp_info.h>
 #include <pmic.h>
 
 DECLARE_GLOBAL_DATA_PTR;
@@ -181,6 +184,101 @@ static int board_uart_init(void)
 	return 0;
 }
 
+vidinfo_t panel_info = {
+	.vl_freq	= 60,
+	.vl_col		= 2560,
+	.vl_row		= 1600,
+	.vl_width	= 2560,
+	.vl_height	= 1600,
+	.vl_clkp	= CONFIG_SYS_LOW,
+	.vl_hsp		= CONFIG_SYS_LOW,
+	.vl_vsp		= CONFIG_SYS_LOW,
+	.vl_dp		= CONFIG_SYS_LOW,
+	.vl_bpix	= 4,	/* LCD_BPP = 2^4, for output conosle on LCD */
+
+	/* wDP panel timing infomation */
+	.vl_hspw	= 32,
+	.vl_hbpd	= 80,
+	.vl_hfpd	= 48,
+
+	.vl_vspw	= 6,
+	.vl_vbpd	= 37,
+	.vl_vfpd	= 3,
+	.vl_cmd_allow_len = 0xf,
+
+	.win_id		= 3,
+	.cfg_gpio	= NULL,
+	.backlight_on	= NULL,
+	.lcd_power_on	= NULL,
+	.reset_lcd	= NULL,
+	.dual_lcd_enabled = 0,
+
+	.init_delay	= 0,
+	.power_on_delay = 0,
+	.reset_delay	= 0,
+	.interface_mode = FIMD_RGB_INTERFACE,
+	.dp_enabled	= 1,
+};
+
+static struct edp_device_info edp_info = {
+	.disp_info = {
+		.h_res = 2560,
+		.h_sync_width = 32,
+		.h_back_porch = 80,
+		.h_front_porch = 48,
+		.v_res = 1600,
+		.v_sync_width  = 6,
+		.v_back_porch = 37,
+		.v_front_porch = 3,
+		.v_sync_rate = 60,
+	},
+	.lt_info = {
+		.lt_status = DP_LT_NONE,
+	},
+	.video_info = {
+		.master_mode = 0,
+		.bist_mode = DP_DISABLE,
+		.bist_pattern = NO_PATTERN,
+		.h_sync_polarity = 0,
+		.v_sync_polarity = 0,
+		.interlaced = 0,
+		.color_space = COLOR_RGB,
+		.dynamic_range = VESA,
+		.ycbcr_coeff = COLOR_YCBCR601,
+		.color_depth = COLOR_8,
+	},
+};
+
+static struct exynos_dp_platform_data dp_platform_data = {
+	.phy_enable	= set_dp_phy_ctrl,
+	.edp_dev_info	= &edp_info,
+};
+
+static void cfg_lcd_gpio(void)
+{
+	struct exynos5_gpio_part1 *gpio1 =
+		(struct exynos5_gpio_part1 *) samsung_get_base_gpio_part1();
+
+	/* For Backlight */
+	s5p_gpio_cfg_pin(&gpio1->b2, 0, GPIO_OUTPUT);
+	s5p_gpio_set_value(&gpio1->b2, 0, 1);
+
+	/* LCD power on */
+	s5p_gpio_cfg_pin(&gpio1->x1, 5, GPIO_OUTPUT);
+	s5p_gpio_set_value(&gpio1->x1, 5, 1);
+

board/samsung/smdk5250/smdk5250.c static int board_uart_init(void) · line 279

Quoted 10 lines
board/samsung/smdk5250/smdk5250.c +10 -0
+	/* Set Hotplug detect for DP */
+	s5p_gpio_cfg_pin(&gpio1->x0, 7, GPIO_FUNC(0x3));
+}
+
+void init_panel_info(vidinfo_t *vid)
+{
+	vid->rgb_mode   = MODE_RGB_P,
+
+	exynos_set_dp_platform_data(&dp_platform_data);
+	cfg_lcd_gpio();

why don't you use cfg_gpio in panel_info structure?

Quoted 15 lines
board/samsung/smdk5250/smdk5250.c +2 -0
+}
+
 #ifdef CONFIG_SYS_I2C_INIT_BOARD
 static int board_i2c_init(void)
 {
include/configs/smdk5250.h +1 -0
index e412da8..a9b3b8b 100644
@@ -256,6 +256,14 @@
 #define CONFIG_SOUND_WM8994
 #endif
 
+/* Display */

include/configs/smdk5250.h line 269

Quoted 10 lines
include/configs/smdk5250.h +7 -0
+#define CONFIG_LCD
+#define CONFIG_EXYNOS_FB
+#define CONFIG_EXYNOS_DP
+#define LCD_XRES			2560
+#define LCD_YRES			1600
+#define LCD_BPP			LCD_COLOR16
+
 /* Enable devicetree support */
 #define CONFIG_OF_LIBFDT
 

Thanks.
Minkyu Kang.