[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <ecb7d7de-d674-49d2-b373-39041b363167@linaro.org>
Date: Wed, 29 Oct 2025 21:35:23 +0100
From: neil.armstrong@...aro.org
To: rtapadia730@...il.com, maarten.lankhorst@...ux.intel.com
Cc: mripard@...nel.org, tzimmermann@...e.de, airlied@...il.com,
simona@...ll.ch, jessica.zhang@....qualcomm.com,
dri-devel@...ts.freedesktop.org, linux-kernel@...r.kernel.org,
linux-doc@...r.kernel.org, corbet@....net
Subject: Re: [PATCH 1/4] drm/panel/lpm102a188a: Switch to
mipi_dsi_generic_write_seq_multi()
On 9/21/25 20:37, rtapadia730@...il.com wrote:
> From: Rajeev Tapadia <rtapadia730@...il.com>
>
> Replace deprecated mipi_dsi_generic_write_seq() calls with
> mipi_dsi_generic_write_seq_multi(). This avoids hidden early returns
> and matches the direction of other panel drivers.
>
> No functional change intended.
>
> Signed-off-by: Rajeev Tapadia <rtapadia730@...il.com>
> ---
>
> Question for reviewers:
> In this patch, I switched to using mipi_dsi_generic_write_seq_multi().
> Currently, if both link1 and link2 return errors, only one error is
> reported via accum_err. How should this ideally be handled? Should we
> report the first error, the last, or combine them somehow?
No it's fine, the first error is catched and reported.
The good way to do this is via this macro:
#define mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, cmd, seq...) \
do { \
dsi_ctx.dsi = dsi0; \
mipi_dsi_dcs_write_seq_multi(&dsi_ctx, cmd, seq); \
dsi_ctx.dsi = dsi1; \
mipi_dsi_dcs_write_seq_multi(&dsi_ctx, cmd, seq); \
} while (0)
with a single context. The mipi_dsi_dcs_write_seq_multi will print the
error from the proper DSI and the context will have the appropriate error.
Neil
>
> drivers/gpu/drm/panel/panel-jdi-lpm102a188a.c | 15 +++++++++++----
> 1 file changed, 11 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/panel/panel-jdi-lpm102a188a.c b/drivers/gpu/drm/panel/panel-jdi-lpm102a188a.c
> index 5f897e143758..982cb61849a0 100644
> --- a/drivers/gpu/drm/panel/panel-jdi-lpm102a188a.c
> +++ b/drivers/gpu/drm/panel/panel-jdi-lpm102a188a.c
> @@ -162,27 +162,34 @@ static int jdi_setup_symmetrical_split(struct mipi_dsi_device *left,
> static int jdi_write_dcdc_registers(struct jdi_panel *jdi)
> {
> /* Clear the manufacturer command access protection */
> - mipi_dsi_generic_write_seq(jdi->link1, MCS_CMD_ACS_PROT,
> + struct mipi_dsi_multi_context dsi_ctx1 = {.dsi = jdi->link1};
> + struct mipi_dsi_multi_context dsi_ctx2 = {.dsi = jdi->link2};
> +
> + mipi_dsi_generic_write_seq_multi(&dsi_ctx1, MCS_CMD_ACS_PROT,
> MCS_CMD_ACS_PROT_OFF);
> - mipi_dsi_generic_write_seq(jdi->link2, MCS_CMD_ACS_PROT,
> + mipi_dsi_generic_write_seq_multi(&dsi_ctx2, MCS_CMD_ACS_PROT,
> MCS_CMD_ACS_PROT_OFF);
> /*
> * Change the VGH/VGL divide rations to move the noise generated by the
> * TCONN. This should hopefully avoid interaction with the backlight
> * controller.
> */
> - mipi_dsi_generic_write_seq(jdi->link1, MCS_PWR_CTRL_FUNC,
> + mipi_dsi_generic_write_seq_multi(&dsi_ctx1, MCS_PWR_CTRL_FUNC,
> MCS_PWR_CTRL_PARAM1_VGH_330_DIV |
> MCS_PWR_CTRL_PARAM1_DEFAULT,
> MCS_PWR_CTRL_PARAM2_VGL_410_DIV |
> MCS_PWR_CTRL_PARAM2_DEFAULT);
>
> - mipi_dsi_generic_write_seq(jdi->link2, MCS_PWR_CTRL_FUNC,
> + mipi_dsi_generic_write_seq_multi(&dsi_ctx2, MCS_PWR_CTRL_FUNC,
> MCS_PWR_CTRL_PARAM1_VGH_330_DIV |
> MCS_PWR_CTRL_PARAM1_DEFAULT,
> MCS_PWR_CTRL_PARAM2_VGL_410_DIV |
> MCS_PWR_CTRL_PARAM2_DEFAULT);
>
> + if (dsi_ctx1.accum_err < 0)
> + return dsi_ctx1.accum_err;
> + if (dsi_ctx2.accum_err < 0)
> + return dsi_ctx2.accum_err;
> return 0;
> }
>
Powered by blists - more mailing lists