Re: [PATCH] drm/panel/sharp-ls043t1le01: Use _multi variants

2025-03-19 Thread Anusha Srivatsa
On Tue, 18 Mar 2025 at 12:00 PM, Dmitry Baryshkov <
dmitry.barysh...@oss.qualcomm.com> wrote:

> On Tue, 18 Mar 2025 at 18:55, Anusha Srivatsa  wrote:
> >
> > 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:
>
> >> > ---
> >> >  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.
> >
> >
> > Actually , mipi_dsi_dcs_write() doesnt have a _multi() variant. There
> are _multi() variants for other writes: mipi_dsi_dcs_write_buffer() has
> mipi_dsi_dcs_write_buffer_multi(), mipi_dsi_generic_write() has
> mipi_dsi_generic_write_multi() but not the one used above.
>
> That doesn't mean that it can be left unconverted. You can use
> mipi_dsi_dcs_write_buffer_multi().
>

Ah got it . Makes sense.

>
> P.S. Please wrap your replies ont some useful boundary (72-75 chars is
> the recommended value).
>

Sure.

Anusha

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


Re: [PATCH] drm/panel/sharp-ls043t1le01: Use _multi variants

2025-03-18 Thread Dmitry Baryshkov
On Tue, 18 Mar 2025 at 18:55, Anusha Srivatsa  wrote:
>
> On Sun, Mar 16, 2025 at 7:32 PM Dmitry Baryshkov 
>  wrote:
>>
>> On Sun, Mar 16, 2025 at 02:58:22PM -0400, Anusha Srivatsa wrote:

>> > ---
>> >  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.
>
>
> Actually , mipi_dsi_dcs_write() doesnt have a _multi() variant. There are 
> _multi() variants for other writes: mipi_dsi_dcs_write_buffer() has 
> mipi_dsi_dcs_write_buffer_multi(), mipi_dsi_generic_write() has 
> mipi_dsi_generic_write_multi() but not the one used above.

That doesn't mean that it can be left unconverted. You can use
mipi_dsi_dcs_write_buffer_multi().

P.S. Please wrap your replies ont some useful boundary (72-75 chars is
the recommended value).

-- 
With best wishes
Dmitry


Re: [PATCH] drm/panel/sharp-ls043t1le01: Use _multi variants

2025-03-18 Thread Anusha Srivatsa
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 
> > Cc: Dmitry Baryshkov 
> > Cc: Tejas Vipin 
> > Cc: Doug Anderson 
> >
> > Signed-off-by: Anusha Srivatsa 
> > ---
> >  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 

Re: [PATCH] drm/panel/sharp-ls043t1le01: Use _multi variants

2025-03-17 Thread Anusha Srivatsa
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 
> > Cc: Dmitry Baryshkov 
> > Cc: Tejas Vipin 
> > Cc: Doug Anderson 
> >
> > Signed-off-by: Anusha Srivatsa 
> > ---
> >  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 

Re: [PATCH] drm/panel/sharp-ls043t1le01: Use _multi variants

2025-03-16 Thread Dmitry Baryshkov
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 
> Cc: Dmitry Baryshkov 
> Cc: Tejas Vipin 
> Cc: Doug Anderson 
> 
> Signed-off-by: Anusha Srivatsa 
> ---
>  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.


-- 
With best wishes
Dmitry


[PATCH] drm/panel/sharp-ls043t1le01: Use _multi variants

2025-03-16 Thread Anusha Srivatsa
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 
Cc: Dmitry Baryshkov 
Cc: Tejas Vipin 
Cc: Doug Anderson 

Signed-off-by: Anusha Srivatsa 
---
 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);
@@ -52,44 +51,37 @@ static int sharp_nt_panel_init(struct sharp_nt_panel 
*sharp_nt)
return ret;
 
/* 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