From f8ba7f27740b42f17bf145d0e1e5aec66ac8dc0e Mon Sep 17 00:00:00 2001 From: Anatolij Gustschin Date: Mon, 4 Sep 2017 23:33:45 +0200 Subject: [PATCH 1/3] video: ipuv3_fb: skip IPU shutdown if IPU was not enabled before Boards can skip display interface init using board_video_skip(). If display interface was not initialized (e.g. no ipuv3 framebuffer registered or IPU clock disabled), booting Linux stops due to the crash in IPU shutdown function, when accessing IPU registers. Check IPU clock and skip shutdown if clock is not enabled. Signed-off-by: Anatolij Gustschin --- drivers/video/ipu.h | 1 + drivers/video/ipu_common.c | 5 +++++ drivers/video/mxc_ipuv3_fb.c | 3 +++ 3 files changed, 9 insertions(+) diff --git a/drivers/video/ipu.h b/drivers/video/ipu.h index 348be58bf6..ff91d18868 100644 --- a/drivers/video/ipu.h +++ b/drivers/video/ipu.h @@ -253,6 +253,7 @@ struct clk *clk_get_parent(struct clk *clk); void ipu_dump_registers(void); int ipu_probe(void); +bool ipu_clk_enabled(void); void ipu_dmfc_init(int dmfc_type, int first); void ipu_init_dc_mappings(void); diff --git a/drivers/video/ipu_common.c b/drivers/video/ipu_common.c index f8d4488fce..f259fb9633 100644 --- a/drivers/video/ipu_common.c +++ b/drivers/video/ipu_common.c @@ -1243,3 +1243,8 @@ int ipu_set_ldb_clock(int rate) return 0; } + +bool ipu_clk_enabled(void) +{ + return g_ipu_clk_enabled; +} diff --git a/drivers/video/mxc_ipuv3_fb.c b/drivers/video/mxc_ipuv3_fb.c index 0d0a0a97ff..1ab5cb7b1c 100644 --- a/drivers/video/mxc_ipuv3_fb.c +++ b/drivers/video/mxc_ipuv3_fb.c @@ -571,6 +571,9 @@ void ipuv3_fb_shutdown(void) int i; struct ipu_stat *stat = (struct ipu_stat *)IPU_STAT; + if (!ipu_clk_enabled()) + return; + for (i = 0; i < ARRAY_SIZE(mxcfb_info); i++) { struct fb_info *fbi = mxcfb_info[i]; if (fbi) { From a7126edcb321e6d02e5d83a6f4a7eeac777c1fe2 Mon Sep 17 00:00:00 2001 From: Niko Mauno Date: Thu, 3 Aug 2017 09:53:24 +0300 Subject: [PATCH 2/3] splash_source: Verify FIT magic Before reading entire FIT image, add sanity check by testing image header against FDT_MAGIC. This should help avoid problems in situations where FIT is not yet available from storage device, for example when performing initial programming of device. Cc: Anatolij Gustschin Acked-by: Tomas Melin --- common/splash_source.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/common/splash_source.c b/common/splash_source.c index a21ad62f82..e0defdebd6 100644 --- a/common/splash_source.c +++ b/common/splash_source.c @@ -317,6 +317,11 @@ static int splash_load_fit(struct splash_location *location, u32 bmp_load_addr) return res; img_header = (struct image_header *)bmp_load_addr; + if (image_get_magic(img_header) != FDT_MAGIC) { + printf("Could not find FDT magic\n"); + return -EINVAL; + } + fit_size = fdt_totalsize(img_header); /* Read in entire FIT */ From c967fb78e488c148700dc8747472d7e1d7eaec30 Mon Sep 17 00:00:00 2001 From: Anatolij Gustschin Date: Mon, 28 Aug 2017 22:39:41 +0200 Subject: [PATCH 3/3] MAINTAINERS: add lcd files to video section LCD drivers are video related, so add them to video section. Signed-off-by: Anatolij Gustschin --- MAINTAINERS | 2 ++ 1 file changed, 2 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index f7e6abd6fd..04acf2b89d 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -449,6 +449,8 @@ M: Anatolij Gustschin S: Maintained T: git git://git.denx.de/u-boot-video.git F: drivers/video/ +F: common/lcd*.c +F: include/lcd*.h X86 M: Simon Glass