[U-Boot] [PATCH 0/6] [U-boot] SMDK5420: Add support for FIMD and DP

This patchset adds support for FIMD and DP on SMDK5420.
This patchset has dependency on Rajeshwari's base patchset: [V4] EXYNOS5420: Add SMDK5420 board support http://comments.gmane.org/gmane.comp.boot-loaders.u-boot/170582
Also, for testing we need Naveen's i2c patchset aswell: i2c: improve s3c24x0 with High-speed and new SYS_I2C framework support http://www.mail-archive.com/u-boot@lists.denx.de/msg122679.html
Ajay Kumar (6): [PATCH 1/6] exynos_fb: Remove usage of static defines [PATCH 2/6] arm: exynos: Add RPLL for Exynos5420 [PATCH 3/6] arm: exynos: Add get_lcd_clk and set_lcd_clk callbacks for Exynos5420 [PATCH 4/6] video: exynos_fimd: Add framework to disable FIMD sysmmu [PATCH 5/6] smdk5420: Implement callbacks needed by exynos_fb driver [PATCH 6/6] CONFIG: SMDK5420: Enable FIMD and DP
arch/arm/cpu/armv7/exynos/clock.c | 74 +++++++++++++++- arch/arm/cpu/armv7/exynos/clock_init.h | 3 + arch/arm/cpu/armv7/exynos/clock_init_exynos5.c | 13 +++ arch/arm/cpu/armv7/exynos/exynos5_setup.h | 2 +- arch/arm/dts/exynos5420.dtsi | 5 ++ arch/arm/include/asm/arch-exynos/clk.h | 1 + arch/arm/include/asm/arch-exynos/system.h | 1 + board/samsung/common/board.c | 15 ++++ board/samsung/smdk5420/smdk5420.c | 118 +++++++------------------ doc/device-tree-bindings/video/exynos-fb.txt | 2 + drivers/video/exynos_fb.c | 20 ++--- drivers/video/exynos_fimd.c | 12 +++ include/configs/exynos5250-dt.h | 2 - include/configs/smdk5420.h | 8 ++ 14 files changed, 172 insertions(+), 104 deletions(-)

Previously, we used to statically assign values for vl_col, vl_row and vl_bpix using #defines like LCD_XRES, LCD_YRES and LCD_COLOR16.
Introducing the function exynos_lcd_early_init() would take care of this assignment on the fly by parsing FIMD DT properties, thereby allowing us to remove LCD_XRES and LCD_YRES from the main config file.
Signed-off-by: Ajay Kumar ajaykumar.rs@samsung.com --- arch/arm/include/asm/arch-exynos/system.h | 1 + board/samsung/common/board.c | 15 +++++++++++++++ drivers/video/exynos_fb.c | 20 ++++++-------------- include/configs/exynos5250-dt.h | 2 -- 4 files changed, 22 insertions(+), 16 deletions(-)
diff --git a/arch/arm/include/asm/arch-exynos/system.h b/arch/arm/include/asm/arch-exynos/system.h index 7e2057c..4968d3d 100644 --- a/arch/arm/include/asm/arch-exynos/system.h +++ b/arch/arm/include/asm/arch-exynos/system.h @@ -39,5 +39,6 @@ struct exynos5_sysreg {
void set_usbhost_mode(unsigned int mode); void set_system_display_ctrl(void); +int exynos_lcd_early_init(const void *blob);
#endif /* _EXYNOS4_SYSTEM_H */ diff --git a/board/samsung/common/board.c b/board/samsung/common/board.c index ce85ddb..ae89c94 100644 --- a/board/samsung/common/board.c +++ b/board/samsung/common/board.c @@ -17,6 +17,7 @@ #include <asm/arch/gpio.h> #include <asm/arch/pinmux.h> #include <asm/arch/power.h> +#include <asm/arch/system.h> #include <power/pmic.h> #include <power/max77686_pmic.h>
@@ -130,6 +131,20 @@ int board_early_init_f(void) #ifdef CONFIG_SYS_I2C_INIT_BOARD board_i2c_init(gd->fdt_blob); #endif + +#if defined(CONFIG_OF_CONTROL) && defined(CONFIG_EXYNOS_FB) +/* + * board_init_f(arch/arm/lib/board.c) calls lcd_setmem() which needs + * panel_info.vl_col, panel_info.vl_row and panel_info.vl_bpix, to reserve + * FB memory at a very early stage. So, we need to fill panel_info.vl_col, + * panel_info.vl_row and panel_info.vl_bpix before lcd_setmem() is called. + */ + err = exynos_lcd_early_init(gd->fdt_blob); + if (err) { + debug("LCD early init failed\n"); + return err; + } +#endif return err; } #endif diff --git a/drivers/video/exynos_fb.c b/drivers/video/exynos_fb.c index 5c7ec91..686870f 100644 --- a/drivers/video/exynos_fb.c +++ b/drivers/video/exynos_fb.c @@ -27,17 +27,12 @@ DECLARE_GLOBAL_DATA_PTR;
static unsigned int panel_width, panel_height;
-/* - * board_init_f(arch/arm/lib/board.c) calls lcd_setmem() which needs - * panel_info.vl_col, panel_info.vl_row and panel_info.vl_bpix to reserve - * FB memory at a very early stage, i.e even before exynos_fimd_parse_dt() - * is called. So, we are forced to statically assign it. - */ #ifdef CONFIG_OF_CONTROL vidinfo_t panel_info = { - .vl_col = LCD_XRES, - .vl_row = LCD_YRES, - .vl_bpix = LCD_COLOR16, + /* Insert a value here so that we don't end up in the BSS + * Reference: drivers/video/tegra.c + */ + .vl_col = -1, }; #endif
@@ -159,7 +154,7 @@ static void lcd_panel_on(vidinfo_t *vid) }
#ifdef CONFIG_OF_CONTROL -int exynos_fimd_parse_dt(const void *blob) +int exynos_lcd_early_init(const void *blob) { unsigned int node; node = fdtdec_next_compatible(blob, 0, COMPAT_SAMSUNG_EXYNOS_FIMD); @@ -303,10 +298,7 @@ void lcd_ctrl_init(void *lcdbase) set_system_display_ctrl(); set_lcd_clk();
-#ifdef CONFIG_OF_CONTROL - if (exynos_fimd_parse_dt(gd->fdt_blob)) - debug("Can't get proper panel info\n"); -#else +#ifndef CONFIG_OF_CONTROL /* initialize parameters which is specific to panel. */ init_panel_info(&panel_info); #endif diff --git a/include/configs/exynos5250-dt.h b/include/configs/exynos5250-dt.h index 689919d..508962c 100644 --- a/include/configs/exynos5250-dt.h +++ b/include/configs/exynos5250-dt.h @@ -50,8 +50,6 @@ #ifdef CONFIG_LCD #define CONFIG_EXYNOS_FB #define CONFIG_EXYNOS_DP -#define LCD_XRES 2560 -#define LCD_YRES 1600 #define LCD_BPP LCD_COLOR16 #endif #endif /* __CONFIG_5250_H */

ping.
On Mon, Sep 30, 2013 at 4:50 PM, Ajay Kumar ajaykumar.rs@samsung.comwrote:
Previously, we used to statically assign values for vl_col, vl_row and vl_bpix using #defines like LCD_XRES, LCD_YRES and LCD_COLOR16.
Introducing the function exynos_lcd_early_init() would take care of this assignment on the fly by parsing FIMD DT properties, thereby allowing us to remove LCD_XRES and LCD_YRES from the main config file.
Signed-off-by: Ajay Kumar ajaykumar.rs@samsung.com
arch/arm/include/asm/arch-exynos/system.h | 1 + board/samsung/common/board.c | 15 +++++++++++++++ drivers/video/exynos_fb.c | 20 ++++++-------------- include/configs/exynos5250-dt.h | 2 -- 4 files changed, 22 insertions(+), 16 deletions(-)
diff --git a/arch/arm/include/asm/arch-exynos/system.h b/arch/arm/include/asm/arch-exynos/system.h index 7e2057c..4968d3d 100644 --- a/arch/arm/include/asm/arch-exynos/system.h +++ b/arch/arm/include/asm/arch-exynos/system.h @@ -39,5 +39,6 @@ struct exynos5_sysreg {
void set_usbhost_mode(unsigned int mode); void set_system_display_ctrl(void); +int exynos_lcd_early_init(const void *blob);
#endif /* _EXYNOS4_SYSTEM_H */ diff --git a/board/samsung/common/board.c b/board/samsung/common/board.c index ce85ddb..ae89c94 100644 --- a/board/samsung/common/board.c +++ b/board/samsung/common/board.c @@ -17,6 +17,7 @@ #include <asm/arch/gpio.h> #include <asm/arch/pinmux.h> #include <asm/arch/power.h> +#include <asm/arch/system.h> #include <power/pmic.h> #include <power/max77686_pmic.h>
@@ -130,6 +131,20 @@ int board_early_init_f(void) #ifdef CONFIG_SYS_I2C_INIT_BOARD board_i2c_init(gd->fdt_blob); #endif
+#if defined(CONFIG_OF_CONTROL) && defined(CONFIG_EXYNOS_FB) +/*
- board_init_f(arch/arm/lib/board.c) calls lcd_setmem() which needs
- panel_info.vl_col, panel_info.vl_row and panel_info.vl_bpix, to reserve
- FB memory at a very early stage. So, we need to fill panel_info.vl_col,
- panel_info.vl_row and panel_info.vl_bpix before lcd_setmem() is called.
- */
err = exynos_lcd_early_init(gd->fdt_blob);
if (err) {
debug("LCD early init failed\n");
return err;
}
+#endif return err; } #endif diff --git a/drivers/video/exynos_fb.c b/drivers/video/exynos_fb.c index 5c7ec91..686870f 100644 --- a/drivers/video/exynos_fb.c +++ b/drivers/video/exynos_fb.c @@ -27,17 +27,12 @@ DECLARE_GLOBAL_DATA_PTR;
static unsigned int panel_width, panel_height;
-/*
- board_init_f(arch/arm/lib/board.c) calls lcd_setmem() which needs
- panel_info.vl_col, panel_info.vl_row and panel_info.vl_bpix to reserve
- FB memory at a very early stage, i.e even before exynos_fimd_parse_dt()
- is called. So, we are forced to statically assign it.
- */
#ifdef CONFIG_OF_CONTROL vidinfo_t panel_info = {
.vl_col = LCD_XRES,
.vl_row = LCD_YRES,
.vl_bpix = LCD_COLOR16,
/* Insert a value here so that we don't end up in the BSS
* Reference: drivers/video/tegra.c
*/
.vl_col = -1,
}; #endif
@@ -159,7 +154,7 @@ static void lcd_panel_on(vidinfo_t *vid) }
#ifdef CONFIG_OF_CONTROL -int exynos_fimd_parse_dt(const void *blob) +int exynos_lcd_early_init(const void *blob) { unsigned int node; node = fdtdec_next_compatible(blob, 0, COMPAT_SAMSUNG_EXYNOS_FIMD); @@ -303,10 +298,7 @@ void lcd_ctrl_init(void *lcdbase) set_system_display_ctrl(); set_lcd_clk();
-#ifdef CONFIG_OF_CONTROL
if (exynos_fimd_parse_dt(gd->fdt_blob))
debug("Can't get proper panel info\n");
-#else +#ifndef CONFIG_OF_CONTROL /* initialize parameters which is specific to panel. */ init_panel_info(&panel_info); #endif diff --git a/include/configs/exynos5250-dt.h b/include/configs/exynos5250-dt.h index 689919d..508962c 100644 --- a/include/configs/exynos5250-dt.h +++ b/include/configs/exynos5250-dt.h @@ -50,8 +50,6 @@ #ifdef CONFIG_LCD #define CONFIG_EXYNOS_FB #define CONFIG_EXYNOS_DP -#define LCD_XRES 2560 -#define LCD_YRES 1600 #define LCD_BPP LCD_COLOR16 #endif
#endif /* __CONFIG_5250_H */
1.7.12.4
U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot

Hi Ajay,
[once more from the right address]
On Mon, Sep 30, 2013 at 5:20 AM, Ajay Kumar ajaykumar.rs@samsung.comwrote:
Previously, we used to statically assign values for vl_col, vl_row and vl_bpix using #defines like LCD_XRES, LCD_YRES and LCD_COLOR16.
Introducing the function exynos_lcd_early_init() would take care of this assignment on the fly by parsing FIMD DT properties, thereby allowing us to remove LCD_XRES and LCD_YRES from the main config file.
Signed-off-by: Ajay Kumar ajaykumar.rs@samsung.com
Acked-by: Simon Glass sjg@chromium.org
I can't test this on Pit at present - any chance of a series at some point to enable that?
I pushed my branch to u-boot-x86.git branch try-5420b.
As a general comment, it would be nice to follow up with a series to fully enable device tree for the GPIOs also. At the moment these are hard-coded.
Regards, Simon

RPLL is needed to drive the LCD panel on Exynos5420 based boards.
Signed-off-by: Ajay Kumar ajaykumar.rs@samsung.com --- arch/arm/cpu/armv7/exynos/clock_init.h | 3 +++ arch/arm/cpu/armv7/exynos/clock_init_exynos5.c | 13 +++++++++++++ 2 files changed, 16 insertions(+)
diff --git a/arch/arm/cpu/armv7/exynos/clock_init.h b/arch/arm/cpu/armv7/exynos/clock_init.h index a875d0b..fce502f 100644 --- a/arch/arm/cpu/armv7/exynos/clock_init.h +++ b/arch/arm/cpu/armv7/exynos/clock_init.h @@ -75,6 +75,9 @@ struct mem_timings { unsigned spll_mdiv; unsigned spll_pdiv; unsigned spll_sdiv; + unsigned rpll_mdiv; + unsigned rpll_pdiv; + unsigned rpll_sdiv; unsigned pclk_cdrex_ratio; unsigned direct_cmd_msr[MEM_TIMINGS_MSR_COUNT];
diff --git a/arch/arm/cpu/armv7/exynos/clock_init_exynos5.c b/arch/arm/cpu/armv7/exynos/clock_init_exynos5.c index e7f1496..c91c4a1 100644 --- a/arch/arm/cpu/armv7/exynos/clock_init_exynos5.c +++ b/arch/arm/cpu/armv7/exynos/clock_init_exynos5.c @@ -179,6 +179,10 @@ struct mem_timings mem_timings[] = { .spll_mdiv = 0xc8, .spll_pdiv = 0x3, .spll_sdiv = 0x2, + /* RPLL @266MHz */ + .rpll_mdiv = 0x10A, + .rpll_pdiv = 0x3, + .rpll_sdiv = 0x3,
.direct_cmd_msr = { 0x00020018, 0x00030000, 0x00010046, 0x00000d70, @@ -800,6 +804,7 @@ static void exynos5420_system_clock_init(void) writel(mem->ipll_pdiv * PLL_LOCK_FACTOR, &clk->ipll_lock); writel(mem->spll_pdiv * PLL_LOCK_FACTOR, &clk->spll_lock); writel(mem->kpll_pdiv * PLL_LOCK_FACTOR, &clk->kpll_lock); + writel(mem->rpll_pdiv * PLL_X_LOCK_FACTOR, &clk->rpll_lock);
setbits_le32(&clk->src_cpu, MUX_HPM_SEL_MASK);
@@ -898,6 +903,14 @@ static void exynos5420_system_clock_init(void) while ((readl(&clk->spll_con0) & PLL_LOCKED) == 0) ;
+ /* Set RPLL */ + writel(RPLL_CON2_VAL, &clk->rpll_con2); + writel(RPLL_CON1_VAL, &clk->rpll_con1); + val = set_pll(mem->rpll_mdiv, mem->rpll_pdiv, mem->rpll_sdiv); + writel(val, &clk->rpll_con0); + while ((readl(&clk->rpll_con0) & PLL_LOCKED) == 0) + ; + writel(CLK_DIV_CDREX0_VAL, &clk->div_cdrex0); writel(CLK_DIV_CDREX1_VAL, &clk->div_cdrex1);

ping.
On Mon, Sep 30, 2013 at 4:50 PM, Ajay Kumar ajaykumar.rs@samsung.comwrote:
RPLL is needed to drive the LCD panel on Exynos5420 based boards.
Signed-off-by: Ajay Kumar ajaykumar.rs@samsung.com
arch/arm/cpu/armv7/exynos/clock_init.h | 3 +++ arch/arm/cpu/armv7/exynos/clock_init_exynos5.c | 13 +++++++++++++ 2 files changed, 16 insertions(+)
diff --git a/arch/arm/cpu/armv7/exynos/clock_init.h b/arch/arm/cpu/armv7/exynos/clock_init.h index a875d0b..fce502f 100644 --- a/arch/arm/cpu/armv7/exynos/clock_init.h +++ b/arch/arm/cpu/armv7/exynos/clock_init.h @@ -75,6 +75,9 @@ struct mem_timings { unsigned spll_mdiv; unsigned spll_pdiv; unsigned spll_sdiv;
unsigned rpll_mdiv;
unsigned rpll_pdiv;
unsigned rpll_sdiv; unsigned pclk_cdrex_ratio; unsigned direct_cmd_msr[MEM_TIMINGS_MSR_COUNT];
diff --git a/arch/arm/cpu/armv7/exynos/clock_init_exynos5.c b/arch/arm/cpu/armv7/exynos/clock_init_exynos5.c index e7f1496..c91c4a1 100644 --- a/arch/arm/cpu/armv7/exynos/clock_init_exynos5.c +++ b/arch/arm/cpu/armv7/exynos/clock_init_exynos5.c @@ -179,6 +179,10 @@ struct mem_timings mem_timings[] = { .spll_mdiv = 0xc8, .spll_pdiv = 0x3, .spll_sdiv = 0x2,
/* RPLL @266MHz */
.rpll_mdiv = 0x10A,
.rpll_pdiv = 0x3,
.rpll_sdiv = 0x3, .direct_cmd_msr = { 0x00020018, 0x00030000, 0x00010046, 0x00000d70,
@@ -800,6 +804,7 @@ static void exynos5420_system_clock_init(void) writel(mem->ipll_pdiv * PLL_LOCK_FACTOR, &clk->ipll_lock); writel(mem->spll_pdiv * PLL_LOCK_FACTOR, &clk->spll_lock); writel(mem->kpll_pdiv * PLL_LOCK_FACTOR, &clk->kpll_lock);
writel(mem->rpll_pdiv * PLL_X_LOCK_FACTOR, &clk->rpll_lock); setbits_le32(&clk->src_cpu, MUX_HPM_SEL_MASK);
@@ -898,6 +903,14 @@ static void exynos5420_system_clock_init(void) while ((readl(&clk->spll_con0) & PLL_LOCKED) == 0) ;
/* Set RPLL */
writel(RPLL_CON2_VAL, &clk->rpll_con2);
writel(RPLL_CON1_VAL, &clk->rpll_con1);
val = set_pll(mem->rpll_mdiv, mem->rpll_pdiv, mem->rpll_sdiv);
writel(val, &clk->rpll_con0);
while ((readl(&clk->rpll_con0) & PLL_LOCKED) == 0)
;
writel(CLK_DIV_CDREX0_VAL, &clk->div_cdrex0); writel(CLK_DIV_CDREX1_VAL, &clk->div_cdrex1);
-- 1.7.12.4
U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot

On Mon, Sep 30, 2013 at 5:20 AM, Ajay Kumar ajaykumar.rs@samsung.comwrote:
RPLL is needed to drive the LCD panel on Exynos5420 based boards.
Signed-off-by: Ajay Kumar ajaykumar.rs@samsung.com
Acked-by: Simon Glass sjg@chromium.org

Add get_lcd_clk and set_lcd_clk callbacks for Exynos5420 needed by exynos video driver. Also, configure ACLK_400_DISP1 as the parent for MUX_ACLK_400_DISP1_SUB_SEL.
Signed-off-by: Ajay Kumar ajaykumar.rs@samsung.com --- arch/arm/cpu/armv7/exynos/clock.c | 74 +++++++++++++++++++++++++++++-- arch/arm/cpu/armv7/exynos/exynos5_setup.h | 2 +- arch/arm/include/asm/arch-exynos/clk.h | 1 + 3 files changed, 73 insertions(+), 4 deletions(-)
diff --git a/arch/arm/cpu/armv7/exynos/clock.c b/arch/arm/cpu/armv7/exynos/clock.c index bc06995..e953ddc 100644 --- a/arch/arm/cpu/armv7/exynos/clock.c +++ b/arch/arm/cpu/armv7/exynos/clock.c @@ -82,7 +82,8 @@ static int exynos_get_pll_clk(int pllreg, unsigned int r, unsigned int k) * VPLL_CON: MIDV [24:16] * BPLL_CON: MIDV [25:16]: Exynos5 */ - if (pllreg == APLL || pllreg == MPLL || pllreg == BPLL) + if (pllreg == APLL || pllreg == MPLL || + pllreg == BPLL || pllreg == SPLL) mask = 0x3ff; else mask = 0x1ff; @@ -388,6 +389,9 @@ static unsigned long exynos5420_get_pll_clk(int pllreg) r = readl(&clk->rpll_con0); k = readl(&clk->rpll_con1); break; + case SPLL: + r = readl(&clk->spll_con0); + break; default: printf("Unsupported PLL (%d)\n", pllreg); return 0; @@ -1035,6 +1039,40 @@ static unsigned long exynos5_get_lcd_clk(void) return pclk; }
+static unsigned long exynos5420_get_lcd_clk(void) +{ + struct exynos5420_clock *clk = + (struct exynos5420_clock *)samsung_get_base_clock(); + unsigned long pclk, sclk; + unsigned int sel; + unsigned int ratio; + + /* + * CLK_SRC_DISP10 + * FIMD1_SEL [4] + * 0: SCLK_RPLL + * 1: SCLK_SPLL + */ + sel = readl(&clk->src_disp10); + sel &= (1 << 4); + + if (sel) + sclk = get_pll_clk(SPLL); + else + sclk = get_pll_clk(RPLL); + + /* + * CLK_DIV_DISP10 + * FIMD1_RATIO [3:0] + */ + ratio = readl(&clk->div_disp10); + ratio = ratio & 0xf; + + pclk = sclk / (ratio + 1); + + return pclk; +} + void exynos4_set_lcd_clk(void) { struct exynos4_clock *clk = @@ -1159,6 +1197,33 @@ void exynos5_set_lcd_clk(void) writel(cfg, &clk->div_disp1_0); }
+void exynos5420_set_lcd_clk(void) +{ + struct exynos5420_clock *clk = + (struct exynos5420_clock *)samsung_get_base_clock(); + unsigned int cfg; + + /* + * CLK_SRC_DISP10 + * FIMD1_SEL [4] + * 0: SCLK_RPLL + * 1: SCLK_SPLL + */ + cfg = readl(&clk->src_disp10); + cfg &= ~(0x1 << 4); + cfg |= (0 << 4); + writel(cfg, &clk->src_disp10); + + /* + * CLK_DIV_DISP10 + * FIMD1_RATIO [3:0] + */ + cfg = readl(&clk->div_disp10); + cfg &= ~(0xf << 0); + cfg |= (0 << 0); + writel(cfg, &clk->div_disp10); +} + void exynos4_set_mipi_clk(void) { struct exynos4_clock *clk = @@ -1628,14 +1693,17 @@ unsigned long get_lcd_clk(void) { if (cpu_is_exynos4()) return exynos4_get_lcd_clk(); - else - return exynos5_get_lcd_clk(); + else if (proid_is_exynos5420()) + return exynos5420_get_lcd_clk(); + return exynos5_get_lcd_clk(); }
void set_lcd_clk(void) { if (cpu_is_exynos4()) exynos4_set_lcd_clk(); + else if (proid_is_exynos5420()) + exynos5420_set_lcd_clk(); else exynos5_set_lcd_clk(); } diff --git a/arch/arm/cpu/armv7/exynos/exynos5_setup.h b/arch/arm/cpu/armv7/exynos/exynos5_setup.h index 8e05a00..70b1c04 100644 --- a/arch/arm/cpu/armv7/exynos/exynos5_setup.h +++ b/arch/arm/cpu/armv7/exynos/exynos5_setup.h @@ -780,7 +780,7 @@ #define CLK_SRC_TOP2_VAL 0x11101000 #define CLK_SRC_TOP3_VAL 0x11111111 #define CLK_SRC_TOP4_VAL 0x11110111 -#define CLK_SRC_TOP5_VAL 0x11111100 +#define CLK_SRC_TOP5_VAL 0x11111101 #define CLK_SRC_TOP6_VAL 0x11110111 #define CLK_SRC_TOP7_VAL 0x00022200
diff --git a/arch/arm/include/asm/arch-exynos/clk.h b/arch/arm/include/asm/arch-exynos/clk.h index abce246..f0b4d70 100644 --- a/arch/arm/include/asm/arch-exynos/clk.h +++ b/arch/arm/include/asm/arch-exynos/clk.h @@ -15,6 +15,7 @@ #define VPLL 4 #define BPLL 5 #define RPLL 6 +#define SPLL 7
enum pll_src_bit { EXYNOS_SRC_MPLL = 6,

ping.
On Mon, Sep 30, 2013 at 4:50 PM, Ajay Kumar ajaykumar.rs@samsung.comwrote:
Add get_lcd_clk and set_lcd_clk callbacks for Exynos5420 needed by exynos video driver. Also, configure ACLK_400_DISP1 as the parent for MUX_ACLK_400_DISP1_SUB_SEL.
Signed-off-by: Ajay Kumar ajaykumar.rs@samsung.com
arch/arm/cpu/armv7/exynos/clock.c | 74 +++++++++++++++++++++++++++++-- arch/arm/cpu/armv7/exynos/exynos5_setup.h | 2 +- arch/arm/include/asm/arch-exynos/clk.h | 1 + 3 files changed, 73 insertions(+), 4 deletions(-)
diff --git a/arch/arm/cpu/armv7/exynos/clock.c b/arch/arm/cpu/armv7/exynos/clock.c index bc06995..e953ddc 100644 --- a/arch/arm/cpu/armv7/exynos/clock.c +++ b/arch/arm/cpu/armv7/exynos/clock.c @@ -82,7 +82,8 @@ static int exynos_get_pll_clk(int pllreg, unsigned int r, unsigned int k) * VPLL_CON: MIDV [24:16] * BPLL_CON: MIDV [25:16]: Exynos5 */
if (pllreg == APLL || pllreg == MPLL || pllreg == BPLL)
if (pllreg == APLL || pllreg == MPLL ||
pllreg == BPLL || pllreg == SPLL) mask = 0x3ff; else mask = 0x1ff;
@@ -388,6 +389,9 @@ static unsigned long exynos5420_get_pll_clk(int pllreg) r = readl(&clk->rpll_con0); k = readl(&clk->rpll_con1); break;
case SPLL:
r = readl(&clk->spll_con0);
break; default: printf("Unsupported PLL (%d)\n", pllreg); return 0;
@@ -1035,6 +1039,40 @@ static unsigned long exynos5_get_lcd_clk(void) return pclk; }
+static unsigned long exynos5420_get_lcd_clk(void) +{
struct exynos5420_clock *clk =
(struct exynos5420_clock *)samsung_get_base_clock();
unsigned long pclk, sclk;
unsigned int sel;
unsigned int ratio;
/*
* CLK_SRC_DISP10
* FIMD1_SEL [4]
* 0: SCLK_RPLL
* 1: SCLK_SPLL
*/
sel = readl(&clk->src_disp10);
sel &= (1 << 4);
if (sel)
sclk = get_pll_clk(SPLL);
else
sclk = get_pll_clk(RPLL);
/*
* CLK_DIV_DISP10
* FIMD1_RATIO [3:0]
*/
ratio = readl(&clk->div_disp10);
ratio = ratio & 0xf;
pclk = sclk / (ratio + 1);
return pclk;
+}
void exynos4_set_lcd_clk(void) { struct exynos4_clock *clk = @@ -1159,6 +1197,33 @@ void exynos5_set_lcd_clk(void) writel(cfg, &clk->div_disp1_0); }
+void exynos5420_set_lcd_clk(void) +{
struct exynos5420_clock *clk =
(struct exynos5420_clock *)samsung_get_base_clock();
unsigned int cfg;
/*
* CLK_SRC_DISP10
* FIMD1_SEL [4]
* 0: SCLK_RPLL
* 1: SCLK_SPLL
*/
cfg = readl(&clk->src_disp10);
cfg &= ~(0x1 << 4);
cfg |= (0 << 4);
writel(cfg, &clk->src_disp10);
/*
* CLK_DIV_DISP10
* FIMD1_RATIO [3:0]
*/
cfg = readl(&clk->div_disp10);
cfg &= ~(0xf << 0);
cfg |= (0 << 0);
writel(cfg, &clk->div_disp10);
+}
void exynos4_set_mipi_clk(void) { struct exynos4_clock *clk = @@ -1628,14 +1693,17 @@ unsigned long get_lcd_clk(void) { if (cpu_is_exynos4()) return exynos4_get_lcd_clk();
else
return exynos5_get_lcd_clk();
else if (proid_is_exynos5420())
return exynos5420_get_lcd_clk();
return exynos5_get_lcd_clk();
}
void set_lcd_clk(void) { if (cpu_is_exynos4()) exynos4_set_lcd_clk();
else if (proid_is_exynos5420())
exynos5420_set_lcd_clk(); else exynos5_set_lcd_clk();
} diff --git a/arch/arm/cpu/armv7/exynos/exynos5_setup.h b/arch/arm/cpu/armv7/exynos/exynos5_setup.h index 8e05a00..70b1c04 100644 --- a/arch/arm/cpu/armv7/exynos/exynos5_setup.h +++ b/arch/arm/cpu/armv7/exynos/exynos5_setup.h @@ -780,7 +780,7 @@ #define CLK_SRC_TOP2_VAL 0x11101000 #define CLK_SRC_TOP3_VAL 0x11111111 #define CLK_SRC_TOP4_VAL 0x11110111 -#define CLK_SRC_TOP5_VAL 0x11111100 +#define CLK_SRC_TOP5_VAL 0x11111101 #define CLK_SRC_TOP6_VAL 0x11110111 #define CLK_SRC_TOP7_VAL 0x00022200
diff --git a/arch/arm/include/asm/arch-exynos/clk.h b/arch/arm/include/asm/arch-exynos/clk.h index abce246..f0b4d70 100644 --- a/arch/arm/include/asm/arch-exynos/clk.h +++ b/arch/arm/include/asm/arch-exynos/clk.h @@ -15,6 +15,7 @@ #define VPLL 4 #define BPLL 5 #define RPLL 6 +#define SPLL 7
enum pll_src_bit { EXYNOS_SRC_MPLL = 6, -- 1.7.12.4
U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot

On Mon, Sep 30, 2013 at 5:20 AM, Ajay Kumar ajaykumar.rs@samsung.comwrote:
Add get_lcd_clk and set_lcd_clk callbacks for Exynos5420 needed by exynos video driver. Also, configure ACLK_400_DISP1 as the parent for MUX_ACLK_400_DISP1_SUB_SEL.
Signed-off-by: Ajay Kumar ajaykumar.rs@samsung.com
Acked-by: Simon Glass sjg@chromium.org

On Exynos5420, the FIMD sysmmus are in "on state" by default. We have to disable them in order to make FIMD DMA work. This patch adds the required framework to exynos_fimd driver to disable FIMD sysmmu on Exynos5420.
Signed-off-by: Ajay Kumar ajaykumar.rs@samsung.com --- arch/arm/dts/exynos5420.dtsi | 5 +++++ doc/device-tree-bindings/video/exynos-fb.txt | 2 ++ drivers/video/exynos_fimd.c | 12 ++++++++++++ 3 files changed, 19 insertions(+)
diff --git a/arch/arm/dts/exynos5420.dtsi b/arch/arm/dts/exynos5420.dtsi index ca6c605..2d64df8 100644 --- a/arch/arm/dts/exynos5420.dtsi +++ b/arch/arm/dts/exynos5420.dtsi @@ -71,4 +71,9 @@ reg = <0x12E20000 0x100>; interrupts = <0 203 0>; }; + + fimd@14400000 { + /* sysmmu is not used in U-Boot */ + samsung,disable-sysmmu; + }; }; diff --git a/doc/device-tree-bindings/video/exynos-fb.txt b/doc/device-tree-bindings/video/exynos-fb.txt index bb7441c..cddb505 100644 --- a/doc/device-tree-bindings/video/exynos-fb.txt +++ b/doc/device-tree-bindings/video/exynos-fb.txt @@ -55,6 +55,8 @@ Board(panel specific): samsung,pclk-name: parent clock identifier: 1(MPLL), 2(EPLL), 3(VPLL) samsung,sclk-div: parent_clock/source_clock ratio samsung,dual-lcd-enabled: 1 if you support two LCD, else 0 + samsung,disable-sysmmu: present if you want to disable the sysmmu + (needed for Exynos5420)
Example: SOC specific part: diff --git a/drivers/video/exynos_fimd.c b/drivers/video/exynos_fimd.c index 8c2de4e..410fff1 100644 --- a/drivers/video/exynos_fimd.c +++ b/drivers/video/exynos_fimd.c @@ -267,6 +267,18 @@ void exynos_fimd_lcd_init(vidinfo_t *vid) node, "reg"); if (fimd_ctrl == NULL) debug("Can't get the FIMD base address\n"); + + if (fdtdec_get_bool(gd->fdt_blob, node, "samsung,disable-sysmmu")) { + /* + * The reset value for FIMD SYSMMU registers + * MMU_CTRL:0x14640000 and MMU_CTRL:0x14680000 is 3. + * This means FIMD SYSMMU is on by default on Exynos5420. + * Since in u-boot we don't use SYSMMU, we are disabling + * FIMD SYSMMU. + */ + writel(0x0, 0x14640000); + writel(0x0, 0x14680000); + } #else fimd_ctrl = (struct exynos_fb *)samsung_get_base_fimd(); #endif

ping.
On Mon, Sep 30, 2013 at 4:50 PM, Ajay Kumar ajaykumar.rs@samsung.comwrote:
On Exynos5420, the FIMD sysmmus are in "on state" by default. We have to disable them in order to make FIMD DMA work. This patch adds the required framework to exynos_fimd driver to disable FIMD sysmmu on Exynos5420.
Signed-off-by: Ajay Kumar ajaykumar.rs@samsung.com
arch/arm/dts/exynos5420.dtsi | 5 +++++ doc/device-tree-bindings/video/exynos-fb.txt | 2 ++ drivers/video/exynos_fimd.c | 12 ++++++++++++ 3 files changed, 19 insertions(+)
diff --git a/arch/arm/dts/exynos5420.dtsi b/arch/arm/dts/exynos5420.dtsi index ca6c605..2d64df8 100644 --- a/arch/arm/dts/exynos5420.dtsi +++ b/arch/arm/dts/exynos5420.dtsi @@ -71,4 +71,9 @@ reg = <0x12E20000 0x100>; interrupts = <0 203 0>; };
fimd@14400000 {
/* sysmmu is not used in U-Boot */
samsung,disable-sysmmu;
};
}; diff --git a/doc/device-tree-bindings/video/exynos-fb.txt b/doc/device-tree-bindings/video/exynos-fb.txt index bb7441c..cddb505 100644 --- a/doc/device-tree-bindings/video/exynos-fb.txt +++ b/doc/device-tree-bindings/video/exynos-fb.txt @@ -55,6 +55,8 @@ Board(panel specific): samsung,pclk-name: parent clock identifier: 1(MPLL), 2(EPLL), 3(VPLL) samsung,sclk-div: parent_clock/source_clock ratio samsung,dual-lcd-enabled: 1 if you support two LCD, else 0
samsung,disable-sysmmu: present if you want to disable the sysmmu
(needed for Exynos5420)
Example: SOC specific part: diff --git a/drivers/video/exynos_fimd.c b/drivers/video/exynos_fimd.c index 8c2de4e..410fff1 100644 --- a/drivers/video/exynos_fimd.c +++ b/drivers/video/exynos_fimd.c @@ -267,6 +267,18 @@ void exynos_fimd_lcd_init(vidinfo_t *vid) node, "reg"); if (fimd_ctrl == NULL) debug("Can't get the FIMD base address\n");
if (fdtdec_get_bool(gd->fdt_blob, node, "samsung,disable-sysmmu"))
{
/*
* The reset value for FIMD SYSMMU registers
* MMU_CTRL:0x14640000 and MMU_CTRL:0x14680000 is 3.
* This means FIMD SYSMMU is on by default on Exynos5420.
* Since in u-boot we don't use SYSMMU, we are disabling
* FIMD SYSMMU.
*/
writel(0x0, 0x14640000);
writel(0x0, 0x14680000);
}
#else fimd_ctrl = (struct exynos_fb *)samsung_get_base_fimd();
#endif
1.7.12.4
U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot

On Mon, Sep 30, 2013 at 5:20 AM, Ajay Kumar ajaykumar.rs@samsung.comwrote:
On Exynos5420, the FIMD sysmmus are in "on state" by default. We have to disable them in order to make FIMD DMA work. This patch adds the required framework to exynos_fimd driver to disable FIMD sysmmu on Exynos5420.
Signed-off-by: Ajay Kumar ajaykumar.rs@samsung.com
Acked-by: Simon Glass sjg@chromium.org

Add callbacks to set up DP-HPD, backlight and LCD power on SMDK5420.
Signed-off-by: Ajay Kumar ajaykumar.rs@samsung.com --- board/samsung/smdk5420/smdk5420.c | 118 +++++++++++--------------------------- 1 file changed, 34 insertions(+), 84 deletions(-)
diff --git a/board/samsung/smdk5420/smdk5420.c b/board/samsung/smdk5420/smdk5420.c index cf76455..3f29ce0 100644 --- a/board/samsung/smdk5420/smdk5420.c +++ b/board/samsung/smdk5420/smdk5420.c @@ -137,98 +137,48 @@ int board_mmc_init(bd_t *bis) #endif
#ifdef CONFIG_LCD -void cfg_lcd_gpio(void) +void exynos_cfg_lcd_gpio(void) { - struct exynos5_gpio_part1 *gpio1 = - (struct exynos5_gpio_part1 *)samsung_get_base_gpio_part1(); + struct exynos5420_gpio_part2 *gpio2 = + (struct exynos5420_gpio_part2 *)samsung_get_base_gpio_part2();
- /* For Backlight */ + /* Set Hotplug detect for DP */ + s5p_gpio_cfg_pin(&gpio2->x0, 7, GPIO_FUNC(0x3)); +} + +void exynos_backlight_on(unsigned int onoff) +{ + struct exynos5420_gpio_part1 *gpio1 = + (struct exynos5420_gpio_part1 *)samsung_get_base_gpio_part1(); + + struct exynos5420_gpio_part2 *gpio2 = + (struct exynos5420_gpio_part2 *)samsung_get_base_gpio_part2(); + + /* For PWM */ 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)); + /* BL_EN */ + s5p_gpio_cfg_pin(&gpio2->x1, 5, GPIO_OUTPUT); + s5p_gpio_set_value(&gpio2->x1, 5, 1); }
-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 = cfg_lcd_gpio, - .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) +void exynos_lcd_power_on(void) { - vid->rgb_mode = MODE_RGB_P, - - exynos_set_dp_platform_data(&dp_platform_data); + int pmic_bus, pmic_i2caddr, ldo38_reg, old_bus; + u8 value; + + /* enable VDD_28IO_DP: LDO38 should be at 2.8V */ + pmic_bus = 4; + pmic_i2caddr = 0x66; + ldo38_reg = 0x62; + value = 0x78; + + old_bus = i2c_get_bus_num(); + i2c_set_bus_num(pmic_bus); + if (i2c_write(pmic_i2caddr, ldo38_reg, 1, &value, 1)) + printf("i2c write fail. Failed to enable VDD_28IO_DP\n"); + i2c_set_bus_num(old_bus); } #endif

ping.
On Mon, Sep 30, 2013 at 4:50 PM, Ajay Kumar ajaykumar.rs@samsung.comwrote:
Add callbacks to set up DP-HPD, backlight and LCD power on SMDK5420.
Signed-off-by: Ajay Kumar ajaykumar.rs@samsung.com
board/samsung/smdk5420/smdk5420.c | 118 +++++++++++--------------------------- 1 file changed, 34 insertions(+), 84 deletions(-)
diff --git a/board/samsung/smdk5420/smdk5420.c b/board/samsung/smdk5420/smdk5420.c index cf76455..3f29ce0 100644 --- a/board/samsung/smdk5420/smdk5420.c +++ b/board/samsung/smdk5420/smdk5420.c @@ -137,98 +137,48 @@ int board_mmc_init(bd_t *bis) #endif
#ifdef CONFIG_LCD -void cfg_lcd_gpio(void) +void exynos_cfg_lcd_gpio(void) {
struct exynos5_gpio_part1 *gpio1 =
(struct exynos5_gpio_part1 *)samsung_get_base_gpio_part1();
struct exynos5420_gpio_part2 *gpio2 =
(struct exynos5420_gpio_part2
*)samsung_get_base_gpio_part2();
/* For Backlight */
/* Set Hotplug detect for DP */
s5p_gpio_cfg_pin(&gpio2->x0, 7, GPIO_FUNC(0x3));
+}
+void exynos_backlight_on(unsigned int onoff) +{
struct exynos5420_gpio_part1 *gpio1 =
(struct exynos5420_gpio_part1
*)samsung_get_base_gpio_part1();
struct exynos5420_gpio_part2 *gpio2 =
(struct exynos5420_gpio_part2
*)samsung_get_base_gpio_part2();
/* For PWM */ 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));
/* BL_EN */
s5p_gpio_cfg_pin(&gpio2->x1, 5, GPIO_OUTPUT);
s5p_gpio_set_value(&gpio2->x1, 5, 1);
}
-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 = cfg_lcd_gpio,
.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) +void exynos_lcd_power_on(void) {
vid->rgb_mode = MODE_RGB_P,
exynos_set_dp_platform_data(&dp_platform_data);
int pmic_bus, pmic_i2caddr, ldo38_reg, old_bus;
u8 value;
/* enable VDD_28IO_DP: LDO38 should be at 2.8V */
pmic_bus = 4;
pmic_i2caddr = 0x66;
ldo38_reg = 0x62;
value = 0x78;
old_bus = i2c_get_bus_num();
i2c_set_bus_num(pmic_bus);
if (i2c_write(pmic_i2caddr, ldo38_reg, 1, &value, 1))
printf("i2c write fail. Failed to enable VDD_28IO_DP\n");
i2c_set_bus_num(old_bus);
} #endif
-- 1.7.12.4
U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot

On Mon, Sep 30, 2013 at 5:20 AM, Ajay Kumar ajaykumar.rs@samsung.comwrote:
Add callbacks to set up DP-HPD, backlight and LCD power on SMDK5420.
Signed-off-by: Ajay Kumar ajaykumar.rs@samsung.com
Acked-by: Simon Glass sjg@chromium.org

Enable FIMD and DP drivers on SMDK5420 so that we get to see the LCD console on eDP panel.
Signed-off-by: Ajay Kumar ajaykumar.rs@samsung.com --- include/configs/smdk5420.h | 8 ++++++++ 1 file changed, 8 insertions(+)
diff --git a/include/configs/smdk5420.h b/include/configs/smdk5420.h index 447f8e5..cc9c424 100644 --- a/include/configs/smdk5420.h +++ b/include/configs/smdk5420.h @@ -53,4 +53,12 @@
#define CONFIG_MAX_I2C_NUM 11
+/* Display */ +#define CONFIG_LCD +#ifdef CONFIG_LCD +#define CONFIG_EXYNOS_FB +#define CONFIG_EXYNOS_DP +#define LCD_BPP LCD_COLOR16 +#endif + #endif /* __CONFIG_5420_H */

ping.
On Mon, Sep 30, 2013 at 4:50 PM, Ajay Kumar ajaykumar.rs@samsung.comwrote:
Enable FIMD and DP drivers on SMDK5420 so that we get to see the LCD console on eDP panel.
Signed-off-by: Ajay Kumar ajaykumar.rs@samsung.com
include/configs/smdk5420.h | 8 ++++++++ 1 file changed, 8 insertions(+)
diff --git a/include/configs/smdk5420.h b/include/configs/smdk5420.h index 447f8e5..cc9c424 100644 --- a/include/configs/smdk5420.h +++ b/include/configs/smdk5420.h @@ -53,4 +53,12 @@
#define CONFIG_MAX_I2C_NUM 11
+/* Display */ +#define CONFIG_LCD +#ifdef CONFIG_LCD +#define CONFIG_EXYNOS_FB +#define CONFIG_EXYNOS_DP +#define LCD_BPP LCD_COLOR16 +#endif
#endif /* __CONFIG_5420_H */
1.7.12.4
U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot

On Mon, Sep 30, 2013 at 5:20 AM, Ajay Kumar ajaykumar.rs@samsung.comwrote:
Enable FIMD and DP drivers on SMDK5420 so that we get to see the LCD console on eDP panel.
Signed-off-by: Ajay Kumar ajaykumar.rs@samsung.com
This all seems good to me, builds without errors.
Acked-by: Simon Glass sjg@chromium.org

+Simon
On Mon, Sep 30, 2013 at 4:50 PM, Ajay Kumar ajaykumar.rs@samsung.comwrote:
This patchset adds support for FIMD and DP on SMDK5420.
This patchset has dependency on Rajeshwari's base patchset: [V4] EXYNOS5420: Add SMDK5420 board support http://comments.gmane.org/gmane.comp.boot-loaders.u-boot/170582
Also, for testing we need Naveen's i2c patchset aswell: i2c: improve s3c24x0 with High-speed and new SYS_I2C framework support http://www.mail-archive.com/u-boot@lists.denx.de/msg122679.html
Ajay Kumar (6): [PATCH 1/6] exynos_fb: Remove usage of static defines [PATCH 2/6] arm: exynos: Add RPLL for Exynos5420 [PATCH 3/6] arm: exynos: Add get_lcd_clk and set_lcd_clk callbacks for Exynos5420 [PATCH 4/6] video: exynos_fimd: Add framework to disable FIMD sysmmu [PATCH 5/6] smdk5420: Implement callbacks needed by exynos_fb driver [PATCH 6/6] CONFIG: SMDK5420: Enable FIMD and DP
arch/arm/cpu/armv7/exynos/clock.c | 74 +++++++++++++++- arch/arm/cpu/armv7/exynos/clock_init.h | 3 + arch/arm/cpu/armv7/exynos/clock_init_exynos5.c | 13 +++ arch/arm/cpu/armv7/exynos/exynos5_setup.h | 2 +- arch/arm/dts/exynos5420.dtsi | 5 ++ arch/arm/include/asm/arch-exynos/clk.h | 1 + arch/arm/include/asm/arch-exynos/system.h | 1 + board/samsung/common/board.c | 15 ++++ board/samsung/smdk5420/smdk5420.c | 118 +++++++------------------ doc/device-tree-bindings/video/exynos-fb.txt | 2 + drivers/video/exynos_fb.c | 20 ++--- drivers/video/exynos_fimd.c | 12 +++ include/configs/exynos5250-dt.h | 2 - include/configs/smdk5420.h | 8 ++ 14 files changed, 172 insertions(+), 104 deletions(-)
-- 1.7.12.4
U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot

ping.
On Fri, Oct 11, 2013 at 9:57 AM, Ajay kumar ajaynumb@gmail.com wrote:
+Simon
On Mon, Sep 30, 2013 at 4:50 PM, Ajay Kumar ajaykumar.rs@samsung.comwrote:
This patchset adds support for FIMD and DP on SMDK5420.
This patchset has dependency on Rajeshwari's base patchset: [V4] EXYNOS5420: Add SMDK5420 board support http://comments.gmane.org/gmane.comp.boot-loaders.u-boot/170582
Also, for testing we need Naveen's i2c patchset aswell: i2c: improve s3c24x0 with High-speed and new SYS_I2C framework support http://www.mail-archive.com/u-boot@lists.denx.de/msg122679.html
Ajay Kumar (6): [PATCH 1/6] exynos_fb: Remove usage of static defines [PATCH 2/6] arm: exynos: Add RPLL for Exynos5420 [PATCH 3/6] arm: exynos: Add get_lcd_clk and set_lcd_clk callbacks for Exynos5420 [PATCH 4/6] video: exynos_fimd: Add framework to disable FIMD sysmmu [PATCH 5/6] smdk5420: Implement callbacks needed by exynos_fb driver [PATCH 6/6] CONFIG: SMDK5420: Enable FIMD and DP
arch/arm/cpu/armv7/exynos/clock.c | 74 +++++++++++++++- arch/arm/cpu/armv7/exynos/clock_init.h | 3 + arch/arm/cpu/armv7/exynos/clock_init_exynos5.c | 13 +++ arch/arm/cpu/armv7/exynos/exynos5_setup.h | 2 +- arch/arm/dts/exynos5420.dtsi | 5 ++ arch/arm/include/asm/arch-exynos/clk.h | 1 + arch/arm/include/asm/arch-exynos/system.h | 1 + board/samsung/common/board.c | 15 ++++ board/samsung/smdk5420/smdk5420.c | 118 +++++++------------------ doc/device-tree-bindings/video/exynos-fb.txt | 2 + drivers/video/exynos_fb.c | 20 ++--- drivers/video/exynos_fimd.c | 12 +++ include/configs/exynos5250-dt.h | 2 - include/configs/smdk5420.h | 8 ++ 14 files changed, 172 insertions(+), 104 deletions(-)
-- 1.7.12.4
U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
participants (3)
-
Ajay Kumar
-
Ajay kumar
-
Simon Glass