On Sun, Mar 16, 2025 at 7:32 PM Dmitry Baryshkov <
dmitry.barysh...@oss.qualcomm.com> wrote:

> On Sun, Mar 16, 2025 at 02:58:22PM -0400, Anusha Srivatsa 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.
> >
> > @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;
> > }
> >
> > Cc: Maxime Ripard <mrip...@kernel.org>
> > Cc: Dmitry Baryshkov <dmitry.barysh...@linaro.org>
> > Cc: Tejas Vipin <tejasvipi...@gmail.com>
> > Cc: Doug Anderson <diand...@chromium.org>
> >
> > Signed-off-by: Anusha Srivatsa <asriv...@redhat.com>
> > ---
> >  drivers/gpu/drm/panel/panel-sharp-ls043t1le01.c | 36
> ++++++++++---------------
> >  1 file changed, 14 insertions(+), 22 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/panel/panel-sharp-ls043t1le01.c
> b/drivers/gpu/drm/panel/panel-sharp-ls043t1le01.c
> > index
> 729cbb0d8403ff7c0c4b9d21774909cc298904a2..9803eaf18e95d70742ece88e82932751476fdda8
> 100644
> > --- a/drivers/gpu/drm/panel/panel-sharp-ls043t1le01.c
> > +++ b/drivers/gpu/drm/panel/panel-sharp-ls043t1le01.c
> > @@ -36,15 +36,14 @@ 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;
> > +     struct mipi_dsi_multi_context dsi_ctx = { .dsi = dsi };
> >       int ret;
> >
> >       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);
>
> Anusha. Please. Start reviewing your patches before you send them. This
> is a MIPI DSI call. And it wasn't switched to _multi / context. You
> should have cought this. I don't know why you didn't. Please review and
> check your code before sending it upstream.
>
>
Sigh :( I actually need to give it  a day, look at the patch again next day
and catch faults before pushing to ML.

Anusha

>
> --
> With best wishes
> Dmitry
>
>

Reply via email to