Message ID | 20250324-b4-panel-ls043t1le01-v2-1-e43aedc115be@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] drm/panel/sharp-ls043t1le01: Use _multi variants | expand |
Hi, On Mon, Mar 24, 2025 at 1:31 PM Anusha Srivatsa <asrivats@redhat.com> wrote: > > Move away from using deprecated API and use _multi > variants if available. Use mipi_dsi_msleep() > and mipi_dsi_usleep_range() instead of msleep() > and usleep_range() respectively. > > Used Coccinelle to find the _multi variant APIs, > replacing mpi_dsi_msleep() where necessary and for returning > dsi_ctx.accum_err in these functions. mipi_dsi_dcs_write() > does not have a corresponding _multi() variant. Replacing it with > mipi_dsi_dcs_write_buffer_multi() instead. This change is manual > > @rule_1@ > identifier dsi_var; > identifier r; > identifier func; > type t; > position p; > expression dsi_device; > expression list es; > @@ > t func(...) { > ... > struct mipi_dsi_device *dsi_var = dsi_device; > +struct mipi_dsi_multi_context dsi_ctx = { .dsi = dsi_var }; > <+... > ( > -r = mipi_dsi_dcs_nop(dsi_var)@p; > +mipi_dsi_dcs_nop_multi(&dsi_ctx); > | > -r = mipi_dsi_dcs_exit_sleep_mode(dsi_var)@p; > +mipi_dsi_dcs_exit_sleep_mode_multi(&dsi_ctx); > | > -r = mipi_dsi_dcs_enter_sleep_mode(dsi_var)@p; > +mipi_dsi_dcs_enter_sleep_mode_multi(&dsi_ctx); > | > -r = mipi_dsi_dcs_write_buffer(dsi_var,es)@p; > +mipi_dsi_dcs_write_buffer_multi(&dsi_ctx,es); > | > -r = mipi_dsi_dcs_set_display_off(dsi_var,es)@p; > +mipi_dsi_dcs_set_display_off_multi(&dsi_ctx,es); > | > -r = mipi_dsi_compression_mode_ext(dsi_var,es)@p; > +mipi_dsi_compression_mode_ext_multi(&dsi_ctx,es); > | > -r = mipi_dsi_compression_mode(dsi_var,es)@p; > +mipi_dsi_compression_mode_multi(&dsi_ctx,es); > | > -r = mipi_dsi_picture_parameter_set(dsi_var,es)@p; > +mipi_dsi_picture_parameter_set_multi(&dsi_ctx,es); > | > -r = mipi_dsi_dcs_set_display_on(dsi_var,es)@p; > +mipi_dsi_dcs_set_display_on_multi(&dsi_ctx,es); > | > -r = mipi_dsi_dcs_set_tear_on(dsi_var)@p; > +mipi_dsi_dcs_set_tear_on_multi(&dsi_ctx); > | > -r = mipi_dsi_turn_on_peripheral(dsi_var)@p; > +mipi_dsi_turn_on_peripheral_multi(&dsi_ctx); > | > -r = mipi_dsi_dcs_soft_reset(dsi_var)@p; > +mipi_dsi_dcs_soft_reset_multi(&dsi_ctx); > | > -r = mipi_dsi_dcs_set_display_brightness(dsi_var,es)@p; > +mipi_dsi_dcs_set_display_brightness_multi(&dsi_ctx,es); > | > -r = mipi_dsi_dcs_set_pixel_format(dsi_var,es)@p; > +mipi_dsi_dcs_set_pixel_format_multi(&dsi_ctx,es); > | > -r = mipi_dsi_dcs_set_column_address(dsi_var,es)@p; > +mipi_dsi_dcs_set_column_address_multi(&dsi_ctx,es); > | > -r = mipi_dsi_dcs_set_page_address(dsi_var,es)@p; > +mipi_dsi_dcs_set_page_address_multi(&dsi_ctx,es); > | > -r = mipi_dsi_dcs_set_tear_scanline(dsi_var,es)@p; > +mipi_dsi_dcs_set_tear_scanline_multi(&dsi_ctx,es); > ) > -if(r < 0) { > -... > -} > ...+> > } > > @rule_2@ > identifier dsi_var; > identifier r; > identifier func; > type t; > position p; > expression dsi_device; > expression list es; > @@ > t func(...) { > ... > struct mipi_dsi_multi_context dsi_ctx = { .dsi = dsi_var }; > <+... > ( > -r = msleep(es)@p; > +r = mipi_dsi_msleep(&dsi_ctx,es); > | > -msleep(es)@p; > +mipi_dsi_msleep(&dsi_ctx,es); > | > -r = usleep_range(es)@p; > +r = mipi_dsi_usleep_range(&dsi_ctx,es); > | > -usleep_range(es)@p; > +mipi_dsi_usleep_range(&dsi_ctx,es); > ) > ...+> > } > > @rule_3@ > identifier dsi_var; > identifier func; > type t; > position p; > expression list es; > @@ > t func(...) { > ... > struct mipi_dsi_multi_context dsi_ctx = { .dsi = dsi_var }; > ... > -return 0; > +return dsi_ctx.accum_err; > } This is the exact same script as last time, right? Rather than duplicate it, you can just reference the previous patch that already landed. You'd say something like: The Coccinelle script is the same as the one in commit c8ba07caaecc ("drm/panel/synaptics-r63353: Use _multi variants") > v2: Use mipi_dsi_dcs_write_buffer_multi() in place of > mipi_dsi_dcs_write(). (Dmitry) > > Cc: Maxime Ripard <mripard@kernel.org> > Cc: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> > Cc: Tejas Vipin <tejasvipin76@gmail.com> > Cc: Doug Anderson <dianders@chromium.org> > Signed-off-by: Anusha Srivatsa <asrivats@redhat.com> > --- > Changes in v2: > - While mipi_dsi_dcs_write() does not have a corresponding _multi() > variant replace it with mipi_dsi_dcs_write_buffer_multi() to have all > APIs following _multi() usage for easier error handling > > - Link to v1: https://lore.kernel.org/r/20250316-b4-panel-ls043t1le01-v1-1-ee38371b0ba0@redhat.com > --- > drivers/gpu/drm/panel/panel-sharp-ls043t1le01.c | 42 ++++++++++--------------- > 1 file changed, 16 insertions(+), 26 deletions(-) > > diff --git a/drivers/gpu/drm/panel/panel-sharp-ls043t1le01.c b/drivers/gpu/drm/panel/panel-sharp-ls043t1le01.c > index 729cbb0d8403ff7c0c4b9d21774909cc298904a2..e3dc99ff711e388660d6d39251876de8cec50dbc 100644 > --- a/drivers/gpu/drm/panel/panel-sharp-ls043t1le01.c > +++ b/drivers/gpu/drm/panel/panel-sharp-ls043t1le01.c > @@ -36,60 +36,50 @@ static inline struct sharp_nt_panel *to_sharp_nt_panel(struct drm_panel *panel) > static int sharp_nt_panel_init(struct sharp_nt_panel *sharp_nt) > { > struct mipi_dsi_device *dsi = sharp_nt->dsi; > - int ret; > + struct mipi_dsi_multi_context dsi_ctx = { .dsi = dsi }; > > + static const u8 d[] = { 0xae, 0x03 }; > dsi->mode_flags |= MIPI_DSI_MODE_LPM; > > - ret = mipi_dsi_dcs_exit_sleep_mode(dsi); > - if (ret < 0) > - return ret; > + mipi_dsi_dcs_exit_sleep_mode_multi(&dsi_ctx); > > - msleep(120); > + mipi_dsi_msleep(&dsi_ctx, 120); > > /* Novatek two-lane operation */ > - ret = mipi_dsi_dcs_write(dsi, 0xae, (u8[]){ 0x03 }, 1); > - if (ret < 0) > - return ret; > + mipi_dsi_dcs_write_buffer_multi(&dsi_ctx, d, ARRAY_SIZE(d)); Can't the above just be: mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xae, 0x03); ? -Doug
On Tue, Mar 25, 2025 at 11:34 AM Doug Anderson <dianders@chromium.org> wrote: > Hi, > > On Mon, Mar 24, 2025 at 1:31 PM Anusha Srivatsa <asrivats@redhat.com> > wrote: > > > > Move away from using deprecated API and use _multi > > variants if available. Use mipi_dsi_msleep() > > and mipi_dsi_usleep_range() instead of msleep() > > and usleep_range() respectively. > > > > Used Coccinelle to find the _multi variant APIs, > > replacing mpi_dsi_msleep() where necessary and for returning > > dsi_ctx.accum_err in these functions. mipi_dsi_dcs_write() > > does not have a corresponding _multi() variant. Replacing it with > > mipi_dsi_dcs_write_buffer_multi() instead. This change is manual > > > > @rule_1@ > > identifier dsi_var; > > identifier r; > > identifier func; > > type t; > > position p; > > expression dsi_device; > > expression list es; > > @@ > > t func(...) { > > ... > > struct mipi_dsi_device *dsi_var = dsi_device; > > +struct mipi_dsi_multi_context dsi_ctx = { .dsi = dsi_var }; > > <+... > > ( > > -r = mipi_dsi_dcs_nop(dsi_var)@p; > > +mipi_dsi_dcs_nop_multi(&dsi_ctx); > > | > > -r = mipi_dsi_dcs_exit_sleep_mode(dsi_var)@p; > > +mipi_dsi_dcs_exit_sleep_mode_multi(&dsi_ctx); > > | > > -r = mipi_dsi_dcs_enter_sleep_mode(dsi_var)@p; > > +mipi_dsi_dcs_enter_sleep_mode_multi(&dsi_ctx); > > | > > -r = mipi_dsi_dcs_write_buffer(dsi_var,es)@p; > > +mipi_dsi_dcs_write_buffer_multi(&dsi_ctx,es); > > | > > -r = mipi_dsi_dcs_set_display_off(dsi_var,es)@p; > > +mipi_dsi_dcs_set_display_off_multi(&dsi_ctx,es); > > | > > -r = mipi_dsi_compression_mode_ext(dsi_var,es)@p; > > +mipi_dsi_compression_mode_ext_multi(&dsi_ctx,es); > > | > > -r = mipi_dsi_compression_mode(dsi_var,es)@p; > > +mipi_dsi_compression_mode_multi(&dsi_ctx,es); > > | > > -r = mipi_dsi_picture_parameter_set(dsi_var,es)@p; > > +mipi_dsi_picture_parameter_set_multi(&dsi_ctx,es); > > | > > -r = mipi_dsi_dcs_set_display_on(dsi_var,es)@p; > > +mipi_dsi_dcs_set_display_on_multi(&dsi_ctx,es); > > | > > -r = mipi_dsi_dcs_set_tear_on(dsi_var)@p; > > +mipi_dsi_dcs_set_tear_on_multi(&dsi_ctx); > > | > > -r = mipi_dsi_turn_on_peripheral(dsi_var)@p; > > +mipi_dsi_turn_on_peripheral_multi(&dsi_ctx); > > | > > -r = mipi_dsi_dcs_soft_reset(dsi_var)@p; > > +mipi_dsi_dcs_soft_reset_multi(&dsi_ctx); > > | > > -r = mipi_dsi_dcs_set_display_brightness(dsi_var,es)@p; > > +mipi_dsi_dcs_set_display_brightness_multi(&dsi_ctx,es); > > | > > -r = mipi_dsi_dcs_set_pixel_format(dsi_var,es)@p; > > +mipi_dsi_dcs_set_pixel_format_multi(&dsi_ctx,es); > > | > > -r = mipi_dsi_dcs_set_column_address(dsi_var,es)@p; > > +mipi_dsi_dcs_set_column_address_multi(&dsi_ctx,es); > > | > > -r = mipi_dsi_dcs_set_page_address(dsi_var,es)@p; > > +mipi_dsi_dcs_set_page_address_multi(&dsi_ctx,es); > > | > > -r = mipi_dsi_dcs_set_tear_scanline(dsi_var,es)@p; > > +mipi_dsi_dcs_set_tear_scanline_multi(&dsi_ctx,es); > > ) > > -if(r < 0) { > > -... > > -} > > ...+> > > } > > > > @rule_2@ > > identifier dsi_var; > > identifier r; > > identifier func; > > type t; > > position p; > > expression dsi_device; > > expression list es; > > @@ > > t func(...) { > > ... > > struct mipi_dsi_multi_context dsi_ctx = { .dsi = dsi_var }; > > <+... > > ( > > -r = msleep(es)@p; > > +r = mipi_dsi_msleep(&dsi_ctx,es); > > | > > -msleep(es)@p; > > +mipi_dsi_msleep(&dsi_ctx,es); > > | > > -r = usleep_range(es)@p; > > +r = mipi_dsi_usleep_range(&dsi_ctx,es); > > | > > -usleep_range(es)@p; > > +mipi_dsi_usleep_range(&dsi_ctx,es); > > ) > > ...+> > > } > > > > @rule_3@ > > identifier dsi_var; > > identifier func; > > type t; > > position p; > > expression list es; > > @@ > > t func(...) { > > ... > > struct mipi_dsi_multi_context dsi_ctx = { .dsi = dsi_var }; > > ... > > -return 0; > > +return dsi_ctx.accum_err; > > } > > This is the exact same script as last time, right? Rather than > duplicate it, you can just reference the previous patch that already > landed. You'd say something like: > > The Coccinelle script is the same as the one in commit c8ba07caaecc > ("drm/panel/synaptics-r63353: Use _multi variants") > > Hey Doug - Good idea. > > > v2: Use mipi_dsi_dcs_write_buffer_multi() in place of > > mipi_dsi_dcs_write(). (Dmitry) > > > > Cc: Maxime Ripard <mripard@kernel.org> > > Cc: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> > > Cc: Tejas Vipin <tejasvipin76@gmail.com> > > Cc: Doug Anderson <dianders@chromium.org> > > Signed-off-by: Anusha Srivatsa <asrivats@redhat.com> > > --- > > Changes in v2: > > - While mipi_dsi_dcs_write() does not have a corresponding _multi() > > variant replace it with mipi_dsi_dcs_write_buffer_multi() to have all > > APIs following _multi() usage for easier error handling > > > > - Link to v1: > https://lore.kernel.org/r/20250316-b4-panel-ls043t1le01-v1-1-ee38371b0ba0@redhat.com > > --- > > drivers/gpu/drm/panel/panel-sharp-ls043t1le01.c | 42 > ++++++++++--------------- > > 1 file changed, 16 insertions(+), 26 deletions(-) > > > > diff --git a/drivers/gpu/drm/panel/panel-sharp-ls043t1le01.c > b/drivers/gpu/drm/panel/panel-sharp-ls043t1le01.c > > index > 729cbb0d8403ff7c0c4b9d21774909cc298904a2..e3dc99ff711e388660d6d39251876de8cec50dbc > 100644 > > --- a/drivers/gpu/drm/panel/panel-sharp-ls043t1le01.c > > +++ b/drivers/gpu/drm/panel/panel-sharp-ls043t1le01.c > > @@ -36,60 +36,50 @@ static inline struct sharp_nt_panel > *to_sharp_nt_panel(struct drm_panel *panel) > > static int sharp_nt_panel_init(struct sharp_nt_panel *sharp_nt) > > { > > struct mipi_dsi_device *dsi = sharp_nt->dsi; > > - int ret; > > + struct mipi_dsi_multi_context dsi_ctx = { .dsi = dsi }; > > > > + static const u8 d[] = { 0xae, 0x03 }; > > dsi->mode_flags |= MIPI_DSI_MODE_LPM; > > > > - ret = mipi_dsi_dcs_exit_sleep_mode(dsi); > > - if (ret < 0) > > - return ret; > > + mipi_dsi_dcs_exit_sleep_mode_multi(&dsi_ctx); > > > > - msleep(120); > > + mipi_dsi_msleep(&dsi_ctx, 120); > > > > /* Novatek two-lane operation */ > > - ret = mipi_dsi_dcs_write(dsi, 0xae, (u8[]){ 0x03 }, 1); > > - if (ret < 0) > > - return ret; > > + mipi_dsi_dcs_write_buffer_multi(&dsi_ctx, d, ARRAY_SIZE(d)); > > Can't the above just be: > > mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xae, 0x03); > > ? > > it can.... definitely simpler. Anusha > > -Doug > >
diff --git a/drivers/gpu/drm/panel/panel-sharp-ls043t1le01.c b/drivers/gpu/drm/panel/panel-sharp-ls043t1le01.c index 729cbb0d8403ff7c0c4b9d21774909cc298904a2..e3dc99ff711e388660d6d39251876de8cec50dbc 100644 --- a/drivers/gpu/drm/panel/panel-sharp-ls043t1le01.c +++ b/drivers/gpu/drm/panel/panel-sharp-ls043t1le01.c @@ -36,60 +36,50 @@ static inline struct sharp_nt_panel *to_sharp_nt_panel(struct drm_panel *panel) static int sharp_nt_panel_init(struct sharp_nt_panel *sharp_nt) { struct mipi_dsi_device *dsi = sharp_nt->dsi; - int ret; + struct mipi_dsi_multi_context dsi_ctx = { .dsi = dsi }; + static const u8 d[] = { 0xae, 0x03 }; dsi->mode_flags |= MIPI_DSI_MODE_LPM; - ret = mipi_dsi_dcs_exit_sleep_mode(dsi); - if (ret < 0) - return ret; + mipi_dsi_dcs_exit_sleep_mode_multi(&dsi_ctx); - msleep(120); + mipi_dsi_msleep(&dsi_ctx, 120); /* Novatek two-lane operation */ - ret = mipi_dsi_dcs_write(dsi, 0xae, (u8[]){ 0x03 }, 1); - if (ret < 0) - return ret; + mipi_dsi_dcs_write_buffer_multi(&dsi_ctx, d, ARRAY_SIZE(d)); /* Set both MCU and RGB I/F to 24bpp */ - ret = mipi_dsi_dcs_set_pixel_format(dsi, MIPI_DCS_PIXEL_FMT_24BIT | - (MIPI_DCS_PIXEL_FMT_24BIT << 4)); - if (ret < 0) - return ret; + mipi_dsi_dcs_set_pixel_format_multi(&dsi_ctx, + MIPI_DCS_PIXEL_FMT_24BIT | + (MIPI_DCS_PIXEL_FMT_24BIT << 4)); - return 0; + return dsi_ctx.accum_err; } static int sharp_nt_panel_on(struct sharp_nt_panel *sharp_nt) { struct mipi_dsi_device *dsi = sharp_nt->dsi; - int ret; + struct mipi_dsi_multi_context dsi_ctx = { .dsi = dsi }; dsi->mode_flags |= MIPI_DSI_MODE_LPM; - ret = mipi_dsi_dcs_set_display_on(dsi); - if (ret < 0) - return ret; + mipi_dsi_dcs_set_display_on_multi(&dsi_ctx); - return 0; + return dsi_ctx.accum_err; } static int sharp_nt_panel_off(struct sharp_nt_panel *sharp_nt) { struct mipi_dsi_device *dsi = sharp_nt->dsi; - int ret; + struct mipi_dsi_multi_context dsi_ctx = { .dsi = dsi }; dsi->mode_flags &= ~MIPI_DSI_MODE_LPM; - ret = mipi_dsi_dcs_set_display_off(dsi); - if (ret < 0) - return ret; + mipi_dsi_dcs_set_display_off_multi(&dsi_ctx); - ret = mipi_dsi_dcs_enter_sleep_mode(dsi); - if (ret < 0) - return ret; + mipi_dsi_dcs_enter_sleep_mode_multi(&dsi_ctx); - return 0; + return dsi_ctx.accum_err; } static int sharp_nt_panel_unprepare(struct drm_panel *panel)
Move away from using deprecated API and use _multi variants if available. Use mipi_dsi_msleep() and mipi_dsi_usleep_range() instead of msleep() and usleep_range() respectively. Used Coccinelle to find the _multi variant APIs, replacing mpi_dsi_msleep() where necessary and for returning dsi_ctx.accum_err in these functions. mipi_dsi_dcs_write() does not have a corresponding _multi() variant. Replacing it with mipi_dsi_dcs_write_buffer_multi() instead. This change is manual @rule_1@ identifier dsi_var; identifier r; identifier func; type t; position p; expression dsi_device; expression list es; @@ t func(...) { ... struct mipi_dsi_device *dsi_var = dsi_device; +struct mipi_dsi_multi_context dsi_ctx = { .dsi = dsi_var }; <+... ( -r = mipi_dsi_dcs_nop(dsi_var)@p; +mipi_dsi_dcs_nop_multi(&dsi_ctx); | -r = mipi_dsi_dcs_exit_sleep_mode(dsi_var)@p; +mipi_dsi_dcs_exit_sleep_mode_multi(&dsi_ctx); | -r = mipi_dsi_dcs_enter_sleep_mode(dsi_var)@p; +mipi_dsi_dcs_enter_sleep_mode_multi(&dsi_ctx); | -r = mipi_dsi_dcs_write_buffer(dsi_var,es)@p; +mipi_dsi_dcs_write_buffer_multi(&dsi_ctx,es); | -r = mipi_dsi_dcs_set_display_off(dsi_var,es)@p; +mipi_dsi_dcs_set_display_off_multi(&dsi_ctx,es); | -r = mipi_dsi_compression_mode_ext(dsi_var,es)@p; +mipi_dsi_compression_mode_ext_multi(&dsi_ctx,es); | -r = mipi_dsi_compression_mode(dsi_var,es)@p; +mipi_dsi_compression_mode_multi(&dsi_ctx,es); | -r = mipi_dsi_picture_parameter_set(dsi_var,es)@p; +mipi_dsi_picture_parameter_set_multi(&dsi_ctx,es); | -r = mipi_dsi_dcs_set_display_on(dsi_var,es)@p; +mipi_dsi_dcs_set_display_on_multi(&dsi_ctx,es); | -r = mipi_dsi_dcs_set_tear_on(dsi_var)@p; +mipi_dsi_dcs_set_tear_on_multi(&dsi_ctx); | -r = mipi_dsi_turn_on_peripheral(dsi_var)@p; +mipi_dsi_turn_on_peripheral_multi(&dsi_ctx); | -r = mipi_dsi_dcs_soft_reset(dsi_var)@p; +mipi_dsi_dcs_soft_reset_multi(&dsi_ctx); | -r = mipi_dsi_dcs_set_display_brightness(dsi_var,es)@p; +mipi_dsi_dcs_set_display_brightness_multi(&dsi_ctx,es); | -r = mipi_dsi_dcs_set_pixel_format(dsi_var,es)@p; +mipi_dsi_dcs_set_pixel_format_multi(&dsi_ctx,es); | -r = mipi_dsi_dcs_set_column_address(dsi_var,es)@p; +mipi_dsi_dcs_set_column_address_multi(&dsi_ctx,es); | -r = mipi_dsi_dcs_set_page_address(dsi_var,es)@p; +mipi_dsi_dcs_set_page_address_multi(&dsi_ctx,es); | -r = mipi_dsi_dcs_set_tear_scanline(dsi_var,es)@p; +mipi_dsi_dcs_set_tear_scanline_multi(&dsi_ctx,es); ) -if(r < 0) { -... -} ...+> } @rule_2@ identifier dsi_var; identifier r; identifier func; type t; position p; expression dsi_device; expression list es; @@ t func(...) { ... struct mipi_dsi_multi_context dsi_ctx = { .dsi = dsi_var }; <+... ( -r = msleep(es)@p; +r = mipi_dsi_msleep(&dsi_ctx,es); | -msleep(es)@p; +mipi_dsi_msleep(&dsi_ctx,es); | -r = usleep_range(es)@p; +r = mipi_dsi_usleep_range(&dsi_ctx,es); | -usleep_range(es)@p; +mipi_dsi_usleep_range(&dsi_ctx,es); ) ...+> } @rule_3@ identifier dsi_var; identifier func; type t; position p; expression list es; @@ t func(...) { ... struct mipi_dsi_multi_context dsi_ctx = { .dsi = dsi_var }; ... -return 0; +return dsi_ctx.accum_err; } v2: Use mipi_dsi_dcs_write_buffer_multi() in place of mipi_dsi_dcs_write(). (Dmitry) Cc: Maxime Ripard <mripard@kernel.org> Cc: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Cc: Tejas Vipin <tejasvipin76@gmail.com> Cc: Doug Anderson <dianders@chromium.org> Signed-off-by: Anusha Srivatsa <asrivats@redhat.com> --- Changes in v2: - While mipi_dsi_dcs_write() does not have a corresponding _multi() variant replace it with mipi_dsi_dcs_write_buffer_multi() to have all APIs following _multi() usage for easier error handling - Link to v1: https://lore.kernel.org/r/20250316-b4-panel-ls043t1le01-v1-1-ee38371b0ba0@redhat.com --- drivers/gpu/drm/panel/panel-sharp-ls043t1le01.c | 42 ++++++++++--------------- 1 file changed, 16 insertions(+), 26 deletions(-) --- base-commit: dbe74119ff71c00f2d863a32f72aab2d15e61c39 change-id: 20250316-b4-panel-ls043t1le01-7407b896b7a8 Best regards,