diff mbox

[U-Boot,v3] video: mxsfb: Fix reset hang when videomode variable is not present

Message ID 1487770822-6581-1-git-send-email-fabio.estevam@nxp.com
State Accepted
Commit b24cf8540a85a9bf97975aadd6a7542f166c78a3
Delegated to: Anatolij Gustschin
Headers show

Commit Message

Fabio Estevam Feb. 22, 2017, 1:40 p.m. UTC
Currently the system hangs when the 'videomode' variable is not present
and a reset command is issued:

=> setenv videomode
=> saveenv
=> reset

(Board hangs)

lcdif_power_down() assumes that the LCDIF controller has been properly
configured and enabled, which may not be true.

To fix this issue check whether panel.frameAdrs has been initialized and
in case it has not been initialized, do not continue with the LCDIF
powerdown sequence.

Tested on a imx7dsabresd board.

Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com>
---
Changes since v2:
- Check panel.frameAdrs instead

 drivers/video/mxsfb.c | 3 +++
 1 file changed, 3 insertions(+)
diff mbox

Patch

diff --git a/drivers/video/mxsfb.c b/drivers/video/mxsfb.c
index 3cc03ca..32ecbe2 100644
--- a/drivers/video/mxsfb.c
+++ b/drivers/video/mxsfb.c
@@ -136,6 +136,9 @@  void lcdif_power_down(void)
 	struct mxs_lcdif_regs *regs = (struct mxs_lcdif_regs *)MXS_LCDIF_BASE;
 	int timeout = 1000000;
 
+	if (!panel.frameAdrs)
+		return;
+
 	writel(panel.frameAdrs, &regs->hw_lcdif_cur_buf_reg);
 	writel(panel.frameAdrs, &regs->hw_lcdif_next_buf_reg);
 	writel(LCDIF_CTRL1_VSYNC_EDGE_IRQ, &regs->hw_lcdif_ctrl1_clr);