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 */