From 2f6dc79a4ff1a35331d85566a426120801c1f20a Mon Sep 17 00:00:00 2001 From: Neil Armstrong Date: Mon, 29 Jul 2019 15:35:18 +0200 Subject: [PATCH 1/6] edid: fix edid_get_timing_validate() mode_valid lookup Add a condition to the break in the modes lookup, without this when the first mode is not valid, then edid_get_timing_validate() return an error instead of checking the next modes. Fixes: 1c1ed441b0d1 ("edid: add edid_get_timing_validate() variant to filter out edid modes") Signed-off-by: Neil Armstrong --- common/edid.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/common/edid.c b/common/edid.c index f244d26e04..f99f42dc40 100644 --- a/common/edid.c +++ b/common/edid.c @@ -202,7 +202,9 @@ int edid_get_timing_validate(u8 *buf, int buf_size, timing); else timing_done = true; - break; + + if (timing_done) + break; } } if (!timing_done) From 98a82798068331d1b3a137d21f96af169aecc7cf Mon Sep 17 00:00:00 2001 From: Heiko Schocher Date: Mon, 22 Jul 2019 06:49:04 +0200 Subject: [PATCH 2/6] global_data: enable fb_base for DM_VIDEO with CONFIG_VIDEO we store fb base address in global data fb_base variable. Do this also in DM_VIDEO case. Signed-off-by: Heiko Schocher --- include/asm-generic/global_data.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/asm-generic/global_data.h b/include/asm-generic/global_data.h index 7c2220643b..5372d5d8cd 100644 --- a/include/asm-generic/global_data.h +++ b/include/asm-generic/global_data.h @@ -33,7 +33,7 @@ typedef struct global_data { /* We cannot bracket this with CONFIG_PCI due to mpc5xxx */ unsigned long pci_clk; unsigned long mem_clk; -#if defined(CONFIG_LCD) || defined(CONFIG_VIDEO) +#if defined(CONFIG_LCD) || defined(CONFIG_VIDEO) || defined(CONFIG_DM_VIDEO) unsigned long fb_base; /* Base address of framebuffer mem */ #endif #if defined(CONFIG_POST) From f03e56adada60a1b8ddcd4eca324878efbc540cb Mon Sep 17 00:00:00 2001 From: Heiko Schocher Date: Mon, 22 Jul 2019 06:49:05 +0200 Subject: [PATCH 3/6] mxc_ipuv3_fb.c: set gd->fb_base set gd->fb_base so it can be shown with bdinfo command. Signed-off-by: Heiko Schocher --- drivers/video/imx/mxc_ipuv3_fb.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/video/imx/mxc_ipuv3_fb.c b/drivers/video/imx/mxc_ipuv3_fb.c index 29ecac40a2..cf672156cd 100644 --- a/drivers/video/imx/mxc_ipuv3_fb.c +++ b/drivers/video/imx/mxc_ipuv3_fb.c @@ -609,6 +609,7 @@ void *video_hw_init(void) ret = mxcfb_probe(gpixfmt, gdisp, gmode); debug("Framebuffer at 0x%x\n", (unsigned int)panel.frameAdrs); + gd->fb_base = panel.frameAdrs; return (void *)&panel; } @@ -665,6 +666,7 @@ static int ipuv3_video_probe(struct udevice *dev) mmu_set_region_dcache_behaviour(fb_start, fb_end - fb_start, DCACHE_WRITEBACK); video_set_flush_dcache(dev, true); + gd->fb_base = fb_start; return 0; } From 5a760f61c5345295d499ec9590b3b1c2f6a46b9d Mon Sep 17 00:00:00 2001 From: Heiko Schocher Date: Mon, 22 Jul 2019 06:49:06 +0200 Subject: [PATCH 4/6] bdinfo: show fb base with DM_VIDEO show Framebuffer base with CONFIG_DM_VIDEO enabled. Signed-off-by: Heiko Schocher --- cmd/bdinfo.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c index f576e226ee..86c17dc427 100644 --- a/cmd/bdinfo.c +++ b/cmd/bdinfo.c @@ -328,7 +328,7 @@ static int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, print_num("reloc off", gd->reloc_off); print_num("irq_sp", gd->irq_sp); /* irq stack pointer */ print_num("sp start ", gd->start_addr_sp); -#if defined(CONFIG_LCD) || defined(CONFIG_VIDEO) +#if defined(CONFIG_LCD) || defined(CONFIG_VIDEO) || defined(CONFIG_DM_VIDEO) print_num("FB base ", gd->fb_base); #endif /* From f4ec1ae08ea9a4ed51ea0bf0583c416be7ec7eb8 Mon Sep 17 00:00:00 2001 From: Heiko Schocher Date: Mon, 22 Jul 2019 06:49:07 +0200 Subject: [PATCH 5/6] mxc_ipuv3_fb.c: call display_enable call display_enable, so a display gets enabled. Signed-off-by: Heiko Schocher --- drivers/video/imx/mxc_ipuv3_fb.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/drivers/video/imx/mxc_ipuv3_fb.c b/drivers/video/imx/mxc_ipuv3_fb.c index cf672156cd..aca76bd9cc 100644 --- a/drivers/video/imx/mxc_ipuv3_fb.c +++ b/drivers/video/imx/mxc_ipuv3_fb.c @@ -24,6 +24,7 @@ #include "ipu.h" #include "mxcfb.h" #include "ipu_regs.h" +#include "display.h" #include #include @@ -637,6 +638,9 @@ static int ipuv3_video_probe(struct udevice *dev) { struct video_uc_platdata *plat = dev_get_uclass_platdata(dev); struct video_priv *uc_priv = dev_get_uclass_priv(dev); +#if defined(CONFIG_DISPLAY) + struct udevice *disp_dev; +#endif u32 fb_start, fb_end; int ret; @@ -655,6 +659,15 @@ static int ipuv3_video_probe(struct udevice *dev) if (ret < 0) return ret; +#if defined(CONFIG_DISPLAY) + ret = uclass_first_device(UCLASS_DISPLAY, &disp_dev); + if (disp_dev) { + ret = display_enable(disp_dev, 16, NULL); + if (ret < 0) + return ret; + } +#endif + uc_priv->xsize = gmode->xres; uc_priv->ysize = gmode->yres; uc_priv->bpix = LCD_MAX_LOG2_BPP; From 42a7ce27d97022f4abbba142dfa00d1450512f0a Mon Sep 17 00:00:00 2001 From: Heiko Schocher Date: Mon, 22 Jul 2019 06:49:08 +0200 Subject: [PATCH 6/6] mxc_ipuv3_fb.c: enable a backlight on a panel check if we get a panel device, if so, enable the backlight on it. Signed-off-by: Heiko Schocher --- drivers/video/imx/mxc_ipuv3_fb.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/video/imx/mxc_ipuv3_fb.c b/drivers/video/imx/mxc_ipuv3_fb.c index aca76bd9cc..c64be38e49 100644 --- a/drivers/video/imx/mxc_ipuv3_fb.c +++ b/drivers/video/imx/mxc_ipuv3_fb.c @@ -25,6 +25,7 @@ #include "mxcfb.h" #include "ipu_regs.h" #include "display.h" +#include #include #include @@ -641,6 +642,7 @@ static int ipuv3_video_probe(struct udevice *dev) #if defined(CONFIG_DISPLAY) struct udevice *disp_dev; #endif + struct udevice *panel_dev; u32 fb_start, fb_end; int ret; @@ -667,6 +669,9 @@ static int ipuv3_video_probe(struct udevice *dev) return ret; } #endif + ret = uclass_get_device(UCLASS_PANEL, 0, &panel_dev); + if (panel_dev) + panel_enable_backlight(panel_dev); uc_priv->xsize = gmode->xres; uc_priv->ysize = gmode->yres;