summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Rini <trini@konsulko.com>2019-07-30 19:19:54 -0400
committerTom Rini <trini@konsulko.com>2019-07-30 19:19:54 -0400
commita239147fa2c0c3fe849ccaffd72c4dc4cae2be71 (patch)
tree2675e87a98bdd76e337e8cafe2b6f9e660b1f72e
parent476a3143d7c1a94b795a4804ab894893f490cf33 (diff)
parent42a7ce27d97022f4abbba142dfa00d1450512f0a (diff)
downloadu-boot-WIP/30Jul2019.tar.gz
Merge tag 'video-for-2019.10-rc1' of https://gitlab.denx.de/u-boot/custodians/u-boot-videoWIP/30Jul2019
- fix EDID mode filtering - extend mxc_ipuv3_fb to enable backlight/display - include fb_base in global_data for DM_VIDEO - show frame buffer address via board info as used to be with legacy VIDEO support
-rw-r--r--cmd/bdinfo.c2
-rw-r--r--common/edid.c4
-rw-r--r--drivers/video/imx/mxc_ipuv3_fb.c20
-rw-r--r--include/asm-generic/global_data.h2
4 files changed, 25 insertions, 3 deletions
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
/*
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)
diff --git a/drivers/video/imx/mxc_ipuv3_fb.c b/drivers/video/imx/mxc_ipuv3_fb.c
index 29ecac40a2..c64be38e49 100644
--- a/drivers/video/imx/mxc_ipuv3_fb.c
+++ b/drivers/video/imx/mxc_ipuv3_fb.c
@@ -24,6 +24,8 @@
#include "ipu.h"
#include "mxcfb.h"
#include "ipu_regs.h"
+#include "display.h"
+#include <panel.h>
#include <dm.h>
#include <video.h>
@@ -609,6 +611,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;
}
@@ -636,6 +639,10 @@ 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
+ struct udevice *panel_dev;
u32 fb_start, fb_end;
int ret;
@@ -654,6 +661,18 @@ 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
+ 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;
uc_priv->bpix = LCD_MAX_LOG2_BPP;
@@ -665,6 +684,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;
}
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)