code: plan9front

Download patch

ref: 62a4e64d31cc681e891967656dc8fa22cba1eb87
parent: 76f8d642eeb77fd9fbfcf98189bcdbffb229d3d1
author: Sigrid Solveig Haflínudóttir <sigrid@ftrv.se>
date: Tue Jul 12 12:38:41 EDT 2022

imx8: fix reduced lcdif pix clk workaround by enabling underflow recovery

--- a/sys/src/9/imx8/lcd.c
+++ b/sys/src/9/imx8/lcd.c
@@ -461,7 +461,10 @@
 	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 @@
 		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 */