On Sun, Sep 08, 2024 at 11:50:30PM GMT, Linus Walleij wrote: > 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@xxxxxxxxxxxxxxxx> > Fixes: 219a1f49094f ("drm/panel: nt35510: support FRIDA FRD400B25025-A-CTK") > Acked-by: Jessica Zhang <quic_jesszhan@xxxxxxxxxxx> > Signed-off-by: Linus Walleij <linus.walleij@xxxxxxxxxx> > --- > Changes in v2: > - After Stefan's testing conclude that we only need to make > SETVCMOFF optional. > - Link to v1: https://lore.kernel.org/r/20240906-fix-nt35510-v1-1-1971f3af7dda@xxxxxxxxxx > --- > drivers/gpu/drm/panel/panel-novatek-nt35510.c | 18 ++++++++++++------ > 1 file changed, 12 insertions(+), 6 deletions(-) > > diff --git a/drivers/gpu/drm/panel/panel-novatek-nt35510.c b/drivers/gpu/drm/panel/panel-novatek-nt35510.c > index d3bfdfc9cff6..a3460ed38cc4 100644 > --- a/drivers/gpu/drm/panel/panel-novatek-nt35510.c > +++ b/drivers/gpu/drm/panel/panel-novatek-nt35510.c > @@ -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 > @@ -675,16 +676,19 @@ static int nt35510_setup_power(struct nt35510 *nt) > nt->conf->bt2ctr); > if (ret) > return ret; > + > ret = nt35510_send_long(nt, dsi, NT35510_P1_SETVCL, > NT35510_P1_VCL_LEN, > nt->conf->vcl); > if (ret) > return ret; > + > ret = nt35510_send_long(nt, dsi, NT35510_P1_BT3CTR, > NT35510_P1_BT3CTR_LEN, > nt->conf->bt3ctr); > if (ret) > return ret; > + > ret = nt35510_send_long(nt, dsi, NT35510_P1_SETVGH, > NT35510_P1_VGH_LEN, > nt->conf->vgh); I think this part is unrelted and should go in as a separate commit. Other than that LGTM. > @@ -721,11 +725,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 +1325,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 */ > > --- > base-commit: 8400291e289ee6b2bf9779ff1c83a291501f017b > change-id: 20240906-fix-nt35510-a8ec6e47e036 > > Best regards, > -- > Linus Walleij <linus.walleij@xxxxxxxxxx> > -- With best wishes Dmitry