The RTNI field is multiplied by 16 and incremented by 512 before being
used as the minimum number of pixel clock per horizontal line, hence
it is necessary to subtract those 512 bytes from htotal and then divide
the result by 16 before writing the value into the RTNI field. Fix the
calculation.

Fixes: de2b4917843c ("drm/panel/panel-sitronix-st7701: Infer horizontal pixel 
count from TFT mode")
Signed-off-by: Marek Vasut <ma...@denx.de>
---
Cc: Guido Günther <a...@sigxcpu.org>
Cc: Jagan Teki <ja...@amarulasolutions.com>
Cc: Laurent Pinchart <laurent.pinch...@ideasonboard.com>
Cc: Linus Walleij <linus.wall...@linaro.org>
Cc: Sam Ravnborg <s...@ravnborg.org>
Cc: Thierry Reding <thierry.red...@gmail.com>
---
 drivers/gpu/drm/panel/panel-sitronix-st7701.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/panel/panel-sitronix-st7701.c 
b/drivers/gpu/drm/panel/panel-sitronix-st7701.c
index c481daa4bbceb..5af600b0742ce 100644
--- a/drivers/gpu/drm/panel/panel-sitronix-st7701.c
+++ b/drivers/gpu/drm/panel/panel-sitronix-st7701.c
@@ -244,7 +244,7 @@ static void st7701_init_sequence(struct st7701 *st7701)
                   DSI_CMD2_BK0_INVSEL_ONES_MASK |
                   FIELD_PREP(DSI_CMD2_BK0_INVSEL_NLINV_MASK, desc->nlinv),
                   FIELD_PREP(DSI_CMD2_BK0_INVSEL_RTNI_MASK,
-                             DIV_ROUND_UP(mode->htotal, 16)));
+                             (mode->htotal - 512) / 16));
 
        /* Command2, BK1 */
        ST7701_DSI(st7701, DSI_CMD2BKX_SEL,
-- 
2.35.1

Reply via email to