Patchwork [U-Boot,4/5] EXYNOS5: Add support for FIMD and DP

login
register
mail settings
Submitter Ajay Kumar
Date Dec. 11, 2012, 11:01 a.m.
Message ID <1355223686-13718-4-git-send-email-ajaykumar.rs@samsung.com>
Download mbox | patch
Permalink /patch/205180/
State Changes Requested
Delegated to: Minkyu Kang
Headers show

Comments

Ajay Kumar - Dec. 11, 2012, 11:01 a.m.
Add panel_info structure required by LCD driver
and DP panel platdata for SMDK5250.
Enable FIMD and DP support on SMDK5250.
DP Panel size: 2560x1600.
We use 16BPP resolution to get LCD console.

Signed-off-by: Ajay Kumar <ajaykumar.rs@samsung.com>
---
 board/samsung/smdk5250/smdk5250.c |   82 +++++++++++++++++++++++++++++++++++++
 include/configs/smdk5250.h        |    9 ++++
 2 files changed, 91 insertions(+), 0 deletions(-)
Simon Glass - Dec. 12, 2012, 2:42 p.m.
Hi Ajay,

On Tue, Dec 11, 2012 at 3:01 AM, Ajay Kumar <ajaykumar.rs@samsung.com> wrote:
> Add panel_info structure required by LCD driver
> and DP panel platdata for SMDK5250.
> Enable FIMD and DP support on SMDK5250.
> DP Panel size: 2560x1600.
> We use 16BPP resolution to get LCD console.
>
> Signed-off-by: Ajay Kumar <ajaykumar.rs@samsung.com>

Acked-by: Simon Glass <sjg@chromium.org>

See suggestion below. I hope that this can be FDT-enabled later.

> ---
>  board/samsung/smdk5250/smdk5250.c |   82 +++++++++++++++++++++++++++++++++++++
>  include/configs/smdk5250.h        |    9 ++++
>  2 files changed, 91 insertions(+), 0 deletions(-)
>
> diff --git a/board/samsung/smdk5250/smdk5250.c b/board/samsung/smdk5250/smdk5250.c
> index 4c50342..e3d6ac1 100644
> --- a/board/samsung/smdk5250/smdk5250.c
> +++ b/board/samsung/smdk5250/smdk5250.c
> @@ -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,85 @@ 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,
> +};
> +
> +void init_panel_info(vidinfo_t *vid)
> +{
> +       vid->logo_on    = 1,
> +       vid->rgb_mode   = MODE_RGB_P,
> +
> +       exynos_set_dp_platform_data(&dp_platform_data);
> +       exynos_pinmux_config(PERIPH_ID_LCD, NULL);
> +}
> +
>  #ifdef CONFIG_SYS_I2C_INIT_BOARD
>  static int board_i2c_init(void)
>  {
> diff --git a/include/configs/smdk5250.h b/include/configs/smdk5250.h
> index e412da8..9489714 100644
> --- a/include/configs/smdk5250.h
> +++ b/include/configs/smdk5250.h
> @@ -256,6 +256,15 @@
>  #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
> +#define CONFIG_CMD_BMP

Perhaps CONFIG_LCD_BMP_RLE8 as well?

> +
>  /* Enable devicetree support */
>  #define CONFIG_OF_LIBFDT
>
> --
> 1.7.1
>

Regards,
Simon

Patch

diff --git a/board/samsung/smdk5250/smdk5250.c b/board/samsung/smdk5250/smdk5250.c
index 4c50342..e3d6ac1 100644
--- a/board/samsung/smdk5250/smdk5250.c
+++ b/board/samsung/smdk5250/smdk5250.c
@@ -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,85 @@  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,
+};
+
+void init_panel_info(vidinfo_t *vid)
+{
+	vid->logo_on    = 1,
+	vid->rgb_mode   = MODE_RGB_P,
+
+	exynos_set_dp_platform_data(&dp_platform_data);
+	exynos_pinmux_config(PERIPH_ID_LCD, NULL);
+}
+
 #ifdef CONFIG_SYS_I2C_INIT_BOARD
 static int board_i2c_init(void)
 {
diff --git a/include/configs/smdk5250.h b/include/configs/smdk5250.h
index e412da8..9489714 100644
--- a/include/configs/smdk5250.h
+++ b/include/configs/smdk5250.h
@@ -256,6 +256,15 @@ 
 #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
+#define CONFIG_CMD_BMP
+
 /* Enable devicetree support */
 #define CONFIG_OF_LIBFDT