]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/panel: nt35510: Make new commands optional
authorLinus Walleij <linus.walleij@linaro.org>
Sun, 8 Sep 2024 21:50:30 +0000 (23:50 +0200)
committerLinus Walleij <linus.walleij@linaro.org>
Sun, 22 Sep 2024 20:16:22 +0000 (22:16 +0200)
The commit introducing the Frida display started to write the
SETVCMOFF registers unconditionally, and some (not all!) Hydis
display seem to be affected by ghosting after the commit.

Make SETVCMOFF optional and only send these commands on the
Frida display for now.

Reported-by: Stefan Hansson <newbyte@postmarketos.org>
Fixes: 219a1f49094f ("drm/panel: nt35510: support FRIDA FRD400B25025-A-CTK")
Acked-by: Jessica Zhang <quic_jesszhan@quicinc.com>
Tested-by: Stefan Hansson <newbyte@postmarketos.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20240908-fix-nt35510-v2-1-d4834b9cdb9b@linaro.org
drivers/gpu/drm/panel/panel-novatek-nt35510.c

index 57686340de49fcbb0abe18dc1cfa978d624d5769..549b86f2cc288741897992ce5cad6325f4289dba 100644 (file)
@@ -38,6 +38,7 @@
 
 #define NT35510_CMD_CORRECT_GAMMA BIT(0)
 #define NT35510_CMD_CONTROL_DISPLAY BIT(1)
+#define NT35510_CMD_SETVCMOFF BIT(2)
 
 #define MCS_CMD_MAUCCTR                0xF0 /* Manufacturer command enable */
 #define MCS_CMD_READ_ID1       0xDA
@@ -721,11 +722,13 @@ static int nt35510_setup_power(struct nt35510 *nt)
        if (ret)
                return ret;
 
-       ret = nt35510_send_long(nt, dsi, NT35510_P1_SETVCMOFF,
-                               NT35510_P1_VCMOFF_LEN,
-                               nt->conf->vcmoff);
-       if (ret)
-               return ret;
+       if (nt->conf->cmds & NT35510_CMD_SETVCMOFF) {
+               ret = nt35510_send_long(nt, dsi, NT35510_P1_SETVCMOFF,
+                                       NT35510_P1_VCMOFF_LEN,
+                                       nt->conf->vcmoff);
+               if (ret)
+                       return ret;
+       }
 
        /* Typically 10 ms */
        usleep_range(10000, 20000);
@@ -1319,7 +1322,7 @@ static const struct nt35510_config nt35510_frida_frd400b25025 = {
        },
        .mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST |
                        MIPI_DSI_MODE_LPM,
-       .cmds = NT35510_CMD_CONTROL_DISPLAY,
+       .cmds = NT35510_CMD_CONTROL_DISPLAY | NT35510_CMD_SETVCMOFF,
        /* 0x03: AVDD = 6.2V */
        .avdd = { 0x03, 0x03, 0x03 },
        /* 0x46: PCK = 2 x Hsync, BTP = 2.5 x VDDB */