public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH] video: ipuv3_fb: skip IPU shutdown if IPU was not enabled before
@ 2017-08-25 13:10 Anatolij Gustschin
  2017-08-28 16:22 ` Fabio Estevam
  2017-08-28 16:54 ` Stefano Babic
  0 siblings, 2 replies; 5+ messages in thread
From: Anatolij Gustschin @ 2017-08-25 13:10 UTC (permalink / raw)
  To: u-boot

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 <agust@denx.de>
---
 drivers/video/mxc_ipuv3_fb.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/drivers/video/mxc_ipuv3_fb.c b/drivers/video/mxc_ipuv3_fb.c
index 0d0a0a9..8836229 100644
--- a/drivers/video/mxc_ipuv3_fb.c
+++ b/drivers/video/mxc_ipuv3_fb.c
@@ -13,6 +13,7 @@
 
 #include <common.h>
 #include <linux/errno.h>
+#include <asm/arch/crm_regs.h>
 #include <asm/global_data.h>
 #include <linux/string.h>
 #include <linux/list.h>
@@ -568,8 +569,18 @@ err0:
 
 void ipuv3_fb_shutdown(void)
 {
-	int i;
+	struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
 	struct ipu_stat *stat = (struct ipu_stat *)IPU_STAT;
+	u32 reg;
+	int i;
+
+	/*
+	 * Check if IPU clock was enabled before. Won't access
+	 * IPU registers if clock is not enabled.
+	 */
+	reg = readl(&mxc_ccm->CCGR3);
+	if ((reg & MXC_CCM_CCGR3_IPU1_IPU_MASK) == 0)
+		return;
 
 	for (i = 0; i < ARRAY_SIZE(mxcfb_info); i++) {
 		struct fb_info *fbi = mxcfb_info[i];
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2017-08-28 18:23 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-08-25 13:10 [U-Boot] [PATCH] video: ipuv3_fb: skip IPU shutdown if IPU was not enabled before Anatolij Gustschin
2017-08-28 16:22 ` Fabio Estevam
2017-08-28 18:08   ` Anatolij Gustschin
2017-08-28 16:54 ` Stefano Babic
2017-08-28 18:23   ` Anatolij Gustschin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox