[PATCH v2] drm/panel/synaptics-r63353: Use _multi variants
Anusha Srivatsa
asrivats at redhat.com
Wed Mar 12 14:03:26 UTC 2025
On Tue, Mar 11, 2025 at 3:31 AM Maxime Ripard <mripard at 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20250312/e2830aef/attachment.htm>
More information about the dri-devel
mailing list