Add support for FIMD and DP on SMDK5250
Subsystems (3)
v3 cover Add support for FIMD and DP on SMDK5250
Changes since V2:
-- Add dummy definition to fix compilation dependency on
CONFIG_EXYNOS_MIPI_DSIM.
-- Create and use new config CONFIG_EXYNOS_LOGO instead of using
CONFIG_CMD_BMP
-- Remove explicit call for cfg_lcd_gpio and add it as callback.
[PATCH RESEND V2 1/4] EXYNOS5: Change parent clock of FIMD to MPLL [PATCH V3 2/4] EXYNOS: Add dummy definition to fix compilation dependency on
CONFIG_EXYNOS_MIPI_DSIM
[PATCH V3 3/4] video: Modify exynos_fimd driver to support LCD console [PATCH V3 4/4]EXYNOS5: Add support for FIMD and DP
arch/arm/cpu/armv7/exynos/clock.c | 2 +- arch/arm/include/asm/arch-exynos/mipi_dsim.h | 7 ++ board/samsung/smdk5250/smdk5250.c | 97 ++++++++++++++++++++++++++ drivers/video/exynos_fb.c | 5 +- drivers/video/exynos_fimd.c | 10 ++- include/configs/smdk5250.h | 8 ++ include/configs/trats.h | 1 + 7 files changed, 126 insertions(+), 4 deletions(-)
PATCH RESEND 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
@@ -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
PATCH RESEND v2 1/4 EXYNOS5: Change parent clock of FIMD to MPLL
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.Signed-off-by Ajay Kumar <[email protected]>Acked-by Simon Glass <[email protected]>--- arch/arm/cpu/armv7/exynos/clock.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)arch/arm/cpu/armv7/exynos/clock.c +0
-0
arch/arm/cpu/armv7/exynos/clock.c void exynos5_set_lcd_clk(void) · line 609
Quoted 8 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 ;writel (cfg, &clk->src_disp1_0);/*
It looks good to me.
Thank you,
Donghwa Lee
PATCH v3 2/4 EXYNOS: Add dummy definition to fix compilation dependency on CONFIG_EXYNOS_MIPI_DSIM
In reply to Ajay KumarWhen only DP is used, we need not enable CONFIG_EXYNOS_MIPI_DSIM. But if we do not select CONFIG_EXYNOS_MIPI_DSIM, exynos_fb.c throws error saying exynos_mipi_dsi_init() not defined. So, we add dummy definition for exynos_mipi_dsi_init when CONFIG_EXYNOS_MIPI_DSIM is not defined.
--- arch/arm/include/asm/arch-exynos/mipi_dsim.h | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-)
arch/arm/include/asm/arch-exynos/mipi_dsim.h +7 -0
@@ -358,7 +358,14 @@ struct mipi_dsim_lcd_driver {void (*mipi_display_on)(struct mipi_dsim_device *dsim_dev); }; +#ifdef CONFIG_EXYNOS_MIPI_DSIM int exynos_mipi_dsi_init (void ); +#else +int exynos_mipi_dsi_init (void ) +{ +return 0 ; +} +#endif /* * register mipi_dsim_lcd_driver object defined by lcd panel driver
Signature · 1 line
1.7.1
PATCH v3 2/4 EXYNOS: Add dummy definition to fix compilation dependency on CONFIG_EXYNOS_MIPI_DSIM
Hi Ajay,
Quoted 17 lines · Ajay Kumar
When only DP is used, we need not enable
CONFIG_EXYNOS_MIPI_DSIM. But if we do not selectCONFIG_EXYNOS_MIPI_DSIM,exynos_fb.cthrows error sayingexynos_mipi_dsi_init()not defined. So, we add dummy definition forexynos_mipi_dsi_initwhenCONFIG_EXYNOS_MIPI_DSIMis not defined.Signed-off-by Ajay Kumar <[email protected]>--- arch/arm/include/asm/arch-exynos/mipi_dsim.h | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-)arch/arm/include/asm/arch-exynos/mipi_dsim.h +0
-0
arch/arm/include/asm/arch-exynos/mipi_dsim.h struct mipi_dsim_lcd_driver { · line 365
Quoted 8 lines
arch/arm/include/asm/arch-exynos/mipi_dsim.h +3
-0@@ -358,7 +358,14 @@ struct mipi_dsim_lcd_driver {void (*mipi_display_on)(struct mipi_dsim_device *dsim_dev); }; +#ifdef CONFIG_EXYNOS_MIPI_DSIM int exynos_mipi_dsi_init (void ); +#else +int exynos_mipi_dsi_init (void )
Should this be static inline? I suppose it is included only once, but it might be a good idea to add this.
Quoted 11 lines
arch/arm/include/asm/arch-exynos/mipi_dsim.h +4
-0+{ +return 0 ; +} +#endif /* * register
mipi_dsim_lcd_driverobject defined by lcd panel driver
--
1.7.1
Regards,
Simon
PATCH v3 2/4 EXYNOS: Add dummy definition to fix compilation dependency on CONFIG_EXYNOS_MIPI_DSIM
In reply to Ajay KumarQuoted 20 lines · Ajay Kumar
When only DP is used, we need not enable
CONFIG_EXYNOS_MIPI_DSIM. But if we do not selectCONFIG_EXYNOS_MIPI_DSIM,exynos_fb.cthrows error sayingexynos_mipi_dsi_init()not defined. So, we add dummy definition forexynos_mipi_dsi_initwhenCONFIG_EXYNOS_MIPI_DSIMis not defined.Signed-off-by Ajay Kumar <[email protected]>--- arch/arm/include/asm/arch-exynos/mipi_dsim.h | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-)arch/arm/include/asm/arch-exynos/mipi_dsim.h +1
-0@@ -358,7 +358,14 @@ struct mipi_dsim_lcd_driver {void (*mipi_display_on)(struct mipi_dsim_device *dsim_dev); }; +#ifdef CONFIG_EXYNOS_MIPI_DSIM
arch/arm/include/asm/arch-exynos/mipi_dsim.h struct mipi_dsim_lcd_driver { · line 371
Quoted 10 lines
arch/arm/include/asm/arch-exynos/mipi_dsim.h +6
-0int exynos_mipi_dsi_init (void ); +#else +int exynos_mipi_dsi_init (void ) +{ +return 0 ; +} +#endif /* * register mipi_dsim_lcd_driver object defined by lcd panel driver
It looks good to me.
Thank you,
Donghwa Lee
PATCH v3 3/4 video: Modify exynos_fimd driver to support LCD console
In reply to Ajay KumarCurrently, 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_EXYNOS_LOGO for proprietary Logo, and if CONFIG_EXYNOS_LOGO is not defined you get output console on LCD. CONFIG_EXYNOS_LOGO is added to Trats configuration to keep existing logo feature intact in Trats.
--- drivers/video/exynos_fb.c | 5 ++++- drivers/video/exynos_fimd.c | 10 ++++++++-- include/configs/trats.h | 1 + 3 files changed, 13 insertions(+), 3 deletions(-)
drivers/video/exynos_fb.c +4 -1
@@ -65,6 +65,7 @@ static void exynos_lcd_init(vidinfo_t *vid)exynos_fimd_lcd_init (vid); } +#ifdef CONFIG_EXYNOS_LOGO 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) {
@@ -142,12 +144,13 @@ void lcd_ctrl_init(void *lcdbase)void lcd_enable (void ) { +#ifdef CONFIG_EXYNOS_LOGO 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
@@ -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_EXYNOS_LOGO /* 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_EXYNOS_LOGO /* 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));
include/configs/trats.h +1 -0
@@ -252,6 +252,7 @@#define CONFIG_EXYNOS_FB #define CONFIG_LCD #define CONFIG_CMD_BMP +#define CONFIG_EXYNOS_LOGO #define CONFIG_BMP_32BPP #define CONFIG_FB_ADDR 0x52504000#define CONFIG_S6E8AX0
Signature · 1 line
1.7.1
PATCH v3 3/4 video: Modify exynos_fimd driver to support LCD console
Hi,
Quoted 11 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 defineCONFIG_EXYNOS_LOGOfor proprietary Logo, and ifCONFIG_EXYNOS_LOGOis not defined you get output console on LCD.CONFIG_EXYNOS_LOGOis added to Trats configuration to keep existing logo feature intact in Trats.Signed-off-by Ajay Kumar <[email protected]>
There is nothing in the README, but I suppose this is a chip-specific patch, so fair enough. But see below.
Quoted 11 lines
--- drivers/video/exynos_fb.c | 5 ++++- drivers/video/exynos_fimd.c | 10 ++++++++-- include/configs/trats.h | 1 + 3 files changed, 13 insertions(+), 3 deletions(-)drivers/video/exynos_fb.c +0
-0
drivers/video/exynos_fb.c static void exynos_lcd_init(vidinfo_t *vid) · line 69
Quoted 5 lines
drivers/video/exynos_fb.c +1
-0@@ -65,6 +65,7 @@ static void exynos_lcd_init(vidinfo_t *vid)exynos_fimd_lcd_init (vid); } +#ifdef CONFIG_EXYNOS_LOGO
Do you actually need this #ifdef, and the one below it? You already have panel_info.logo_on. I suppose you could do, at the top of the file:
+#ifdef CONFIG_EXYNOS_LOGO
#define panal_exynos_logo() panel_info.logo_on
#else
#define panal_exynos_logo() 0
#endif
Quoted 12 lines
drivers/video/exynos_fb.c +0
-0static void draw_logo (void ) {int x, y;drivers/video/exynos_fb.c +1
-0@@ -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) {
drivers/video/exynos_fb.c void lcd_ctrl_init(void *lcdbase) · line 149
Quoted 6 lines
drivers/video/exynos_fb.c +1
-0@@ -142,12 +144,13 @@ void lcd_ctrl_init(void *lcdbase)void lcd_enable (void ) { +#ifdef CONFIG_EXYNOS_LOGO if (panel_info.logo_on) {
Then could do 'if (panal_exynos_logo())' here and rermove the #ifdefs. Same below. #ifdefs are considered bad because they create new code paths that might not always be compiled.
memset(lcd_base, 0, panel_width * panel_height *
Quoted 51 lines
drivers/video/exynos_fb.c +1
-1(NBITS(panel_info.vl_bpix) >> 3)); draw_logo(); } - +#endif lcd_panel_on (&panel_info); }drivers/video/exynos_fimd.c +8
-2@@ -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_EXYNOS_LOGO /* 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_EXYNOS_LOGO /* 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));include/configs/trats.h +1
-1@@ -252,6 +252,7 @@#define CONFIG_EXYNOS_FB #define CONFIG_LCD #define CONFIG_CMD_BMP +#define CONFIG_EXYNOS_LOGO #define CONFIG_BMP_32BPP #define CONFIG_FB_ADDR 0x52504000#define CONFIG_S6E8AX0 --1.7.1
PATCH v3 3/4 video: Modify exynos_fimd driver to support LCD console
In reply to Ajay KumarQuoted 83 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 defineCONFIG_EXYNOS_LOGOfor proprietary Logo, and ifCONFIG_EXYNOS_LOGOis not defined you get output console on LCD.CONFIG_EXYNOS_LOGOis added to Trats configuration to keep existing logo feature intact in Trats.Signed-off-by Ajay Kumar <[email protected]>--- drivers/video/exynos_fb.c | 5 ++++- drivers/video/exynos_fimd.c | 10 ++++++++-- include/configs/trats.h | 1 + 3 files changed, 13 insertions(+), 3 deletions(-)drivers/video/exynos_fb.c +4
-1@@ -65,6 +65,7 @@ static void exynos_lcd_init(vidinfo_t *vid)exynos_fimd_lcd_init (vid); } +#ifdef CONFIG_EXYNOS_LOGO 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) {@@ -142,12 +144,13 @@ void lcd_ctrl_init(void *lcdbase)void lcd_enable (void ) { +#ifdef CONFIG_EXYNOS_LOGO 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@@ -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_EXYNOS_LOGO /* 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_EXYNOS_LOGO /* 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));include/configs/trats.h +0
-0
include/configs/trats.h line 258
Quoted 7 lines
include/configs/trats.h +1
-0@@ -252,6 +252,7 @@#define CONFIG_EXYNOS_FB #define CONFIG_LCD #define CONFIG_CMD_BMP +#define CONFIG_EXYNOS_LOGO #define CONFIG_BMP_32BPP #define CONFIG_FB_ADDR 0x52504000#define CONFIG_S6E8AX0
Hi,
How about use 'if (vid->logo_on)' instead of #ifdef CONFIG_EXYNOS_LOGO? In the vidinfo_t structure, 'logo_on' flag already exist.
Thank you,
Donghwa Lee
PATCH v3 3/4 video: Modify exynos_fimd driver to support LCD console
Dear Ajay,
Quoted 85 lines · Donghwa Lee
Quoted 75 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 defineCONFIG_EXYNOS_LOGOfor proprietary Logo, and ifCONFIG_EXYNOS_LOGOis not defined you get output console on LCD.CONFIG_EXYNOS_LOGOis added to Trats configuration to keep existing logo feature intact in Trats.Signed-off-by Ajay Kumar <[email protected]>--- drivers/video/exynos_fb.c | 5 ++++- drivers/video/exynos_fimd.c | 10 ++++++++-- include/configs/trats.h | 1 + 3 files changed, 13 insertions(+), 3 deletions(-)drivers/video/exynos_fb.c +3
-1@@ -65,6 +65,7 @@ static void exynos_lcd_init(vidinfo_t *vid)exynos_fimd_lcd_init (vid); } +#ifdef CONFIG_EXYNOS_LOGOstatic 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) {@@ -142,12 +144,13 @@ void lcd_ctrl_init(void *lcdbase)void lcd_enable (void ) { +#ifdef CONFIG_EXYNOS_LOGO 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); } diff --git a/drivers/video/exynos_fimd.c b/drivers/video/exynos_fimd.cindex 06eae2e..f2e4c27 100644
drivers/video/exynos_fimd.c +8
-0@@ -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_EXYNOS_LOGO /* 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_EXYNOS_LOGO /* 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));include/configs/trats.h +0
-0include/configs/trats.h line 258
Quoted 7 lines
include/configs/trats.h +1
-0@@ -252,6 +252,7 @@#define CONFIG_EXYNOS_FB #define CONFIG_LCD #define CONFIG_CMD_BMP +#define CONFIG_EXYNOS_LOGO #define CONFIG_BMP_32BPP #define CONFIG_FB_ADDR 0x52504000#define CONFIG_S6E8AX0 Hi,
Quoted 2 lines
How about use 'if (
vid->logo_on)' instead of #ifdefCONFIG_EXYNOS_LOGO? In thevidinfo_tstructure, 'logo_on' flag already exist.
I agreed with Donghwa.
Ajay, please check it.
Quoted 4 lines
Thank you,
Donghwa Lee
Thanks.
Minkyu Kang.
PATCH v3 4/4 EXYNOS5: Add support for FIMD and DP
In reply to Ajay KumarAdd 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 | 97 +++++++++++++++++++++++++++++++++++++ include/configs/smdk5250.h | 8 +++ 2 files changed, 105 insertions(+), 0 deletions(-)
board/samsung/smdk5250/smdk5250.c +97 -0
@@ -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,100 @@ static int board_uart_init(void)return 0 ; } +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 )); +} + +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) +{ + vid->rgb_mode =MODE_RGB_P , + +exynos_set_dp_platform_data (&dp_platform_data); +} +#ifdef CONFIG_SYS_I2C_INIT_BOARD static int board_i2c_init (void ) {
include/configs/smdk5250.h +8 -0
@@ -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
PATCH v3 4/4 EXYNOS5: Add support for FIMD and DP
Quoted 9 lines · Ajay Kumar
Add
panel_infostructure 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.Signed-off-by Ajay Kumar <[email protected]>
Quoted 153 lines
--- board/samsung/smdk5250/smdk5250.c | 97 +++++++++++++++++++++++++++++++++++++ include/configs/smdk5250.h | 8 +++ 2 files changed, 105 insertions(+), 0 deletions(-)board/samsung/smdk5250/smdk5250.c +31
-0@@ -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,100 @@ static int board_uart_init(void)return 0 ; } +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 )); +} + +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 */
board/samsung/smdk5250/smdk5250.c +66
-0+ +/* 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) +{ + vid->rgb_mode =MODE_RGB_P , + +exynos_set_dp_platform_data (&dp_platform_data); +} +#ifdef CONFIG_SYS_I2C_INIT_BOARD static int board_i2c_init (void ) {include/configs/smdk5250.h +8
-1@@ -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 --1.7.1