Hi,

On 7/7/25 1:26 PM, Brigham Campbell wrote:
> Replace all usages of the deprecated mipi_dsi_generic_write_seq() with
> mipi_dsi_generic_write_seq_multi().
> 
> This patch's usage of the mipi_dsi_multi_context struct is not
> idiomatic. Rightfully, the struct wasn't designed to cater to the needs
> of panels with multiple MIPI DSI interfaces. This panel is an oddity
> which requires swapping the dsi pointer between calls to
> mipi_dsi_generic_write_seq_multi() in order to preserve the exact
> behavior implemented using the non-multi variant of the macro.
> 
> Signed-off-by: Brigham Campbell <m...@brighamcampbell.com>
> ---
>  drivers/gpu/drm/panel/panel-jdi-lpm102a188a.c | 18 ++++++++++++------
>  1 file changed, 12 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/gpu/drm/panel/panel-jdi-lpm102a188a.c 
> b/drivers/gpu/drm/panel/panel-jdi-lpm102a188a.c
> index 5b5082efb282..777a8ab3a397 100644
> --- a/drivers/gpu/drm/panel/panel-jdi-lpm102a188a.c
> +++ b/drivers/gpu/drm/panel/panel-jdi-lpm102a188a.c
> @@ -161,29 +161,35 @@ static int jdi_setup_symmetrical_split(struct 
> mipi_dsi_device *left,
>  
>  static int jdi_write_dcdc_registers(struct jdi_panel *jdi)
>  {
> +     struct mipi_dsi_multi_context dsi_ctx;
> +
>       /* Clear the manufacturer command access protection */
> -     mipi_dsi_generic_write_seq(jdi->link1, MCS_CMD_ACS_PROT,
> +     dsi_ctx.dsi = jdi->link1;
> +     mipi_dsi_generic_write_seq_multi(&dsi_ctx, MCS_CMD_ACS_PROT,
>                                  MCS_CMD_ACS_PROT_OFF);
> -     mipi_dsi_generic_write_seq(jdi->link2, MCS_CMD_ACS_PROT,
> +     dsi_ctx.dsi = jdi->link2;
> +     mipi_dsi_generic_write_seq_multi(&dsi_ctx, MCS_CMD_ACS_PROT,
>                                  MCS_CMD_ACS_PROT_OFF);
>       /*
> -      * Change the VGH/VGL divide rations to move the noise generated by the
> +      * Change the VGH/VGL divide ratios 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,
> +     dsi_ctx.dsi = jdi->link1;
> +     mipi_dsi_generic_write_seq_multi(&dsi_ctx, 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,
> +     dsi_ctx.dsi = jdi->link2;
> +     mipi_dsi_generic_write_seq_multi(&dsi_ctx, 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);
>  
> -     return 0;
> +     return dsi_ctx.accum_err;
>  }
>  
>  static int jdi_panel_prepare(struct drm_panel *panel)

There's a lot more functions that should be replaced in this panel. You
can get a good idea of which ones by looking for the keyword
"deprecated" in drm_mipi_dsi.c . Here's a good reference for what a
conversion patch usually looks like:
https://lore.kernel.org/all/20250319183106.12613-1-tejasvipi...@gmail.com/

-- 
Tejas Vipin

Reply via email to