On Tue, Mar 11, 2025 at 3:31 AM Maxime Ripard <mrip...@kernel.org> wrote:

> On Mon, Mar 10, 2025 at 04: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 multiple occurences.
> > SmPl patch:
> > @rule@
> > 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 };
> > <+...
> > (
> > -mipi_dsi_dcs_write_seq(dsi_var,es)@p;
> > +mipi_dsi_dcs_write_seq_multi(&dsi_ctx,es);
> > |
> > -mipi_dsi_generic_write_seq(dsi_var,es)@p;
> > +mipi_dsi_generic_write_seq_multi(&dsi_ctx,es);
> > |
> > -mipi_dsi_generic_write(dsi_var,es)@p;
> > +mipi_dsi_generic_write_multi(&dsi_ctx,es);
> > |
> > -r = mipi_dsi_dcs_nop(dsi_var)@p;
> > +mipi_dsi_dcs_nop_multi(&dsi_ctx);
> > |
> > ....rest of API
> > ..
> > )
> > -if(r < 0) {
> > -...
> > -}
> > ...+>
>
> Again, you need to provide the full coccinelle script here otherwise
> it's useless. And I have serious doubts that it's actually the script
> you used, because ...
>
>
I had another rule just for msleeps and usleep(). The commit msg is getting
too big with just the script. But yes, here you go:
@rule_4@
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 = 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);
)
...+>
}


> > @@ -106,53 +107,46 @@ static int r63353_panel_power_off(struct
> r63353_panel *rpanel)
> >  static int r63353_panel_activate(struct r63353_panel *rpanel)
> >  {
> >       struct mipi_dsi_device *dsi = rpanel->dsi;
> > -     struct device *dev = &dsi->dev;
> > -     int i, ret;
> > +     struct mipi_dsi_multi_context dsi_ctx = { .dsi = dsi };
> > +     int i;
> >
> > -     ret = mipi_dsi_dcs_soft_reset(dsi);
> > -     if (ret < 0) {
> > -             dev_err(dev, "Failed to do Software Reset (%d)\n", ret);
> > +     mipi_dsi_dcs_soft_reset_multi(&dsi_ctx);
> > +     if (dsi_ctx.accum_err)
> >               goto fail;
> > -     }
>
> This changes was definitely not what the script is doing.
>

It isnt. Using coccinelle for the major part of pattern matching and
replacing the newer _multi variant API. Some handling (including a newline
that it introduces) and  the returns depend on a case by case basis, which
had to be done manually.

Anusha

>
> Maxime
>

Reply via email to