From 62a4e64d31cc681e891967656dc8fa22cba1eb87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sigrid=20Solveig=20Hafl=C3=ADnud=C3=B3ttir?= Date: Tue, 12 Jul 2022 16:38:41 +0000 Subject: [PATCH] imx8: fix reduced lcdif pix clk workaround by enabling underflow recovery --- sys/src/9/imx8/lcd.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/sys/src/9/imx8/lcd.c b/sys/src/9/imx8/lcd.c index e69f6ff96..fbe0d65b4 100644 --- a/sys/src/9/imx8/lcd.c +++ b/sys/src/9/imx8/lcd.c @@ -461,7 +461,10 @@ lcdifinit(struct video_mode *mode) wr(lcdif, LCDIF_CTRL1_SET, CTRL1_FIFO_CLEAR); wr(lcdif, LCDIF_AS_CTRL, 0); - wr(lcdif, LCDIF_CTRL1, sm(7, CTRL1_BYTE_PACKING_FORMAT)); + /* enable underflow recovery to fix image shift */ + wr(lcdif, LCDIF_CTRL1, + sm(7, CTRL1_BYTE_PACKING_FORMAT) | + CTRL1_RECOVER_ON_UNDERFLOW); wr(lcdif, LCDIF_CTRL, CTRL_BYPASS_COUNT | @@ -911,12 +914,8 @@ lcdinit(void) goto out; } - /* - * start the pixel clock. running at the actual pixel clock - * causes the screen to shift horizontally after a while. - * using 80% seems to fix it - for now. - */ - setclkrate("lcdif.pix_clk", "system_pll1_clk", (mode.pixclk*8)/10); + /* start the pixel clock */ + setclkrate("lcdif.pix_clk", "system_pll1_clk", mode.pixclk); dpiinit(&mode); /* release dpi reset */