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 >