On Mon, 7 Sep 2020, Markus Elfring wrote: > From: Markus Elfring <elfring@xxxxxxxxxxxxxxxxxxxxx> > Date: Mon, 7 Sep 2020 13:14:44 +0200 > > Another wrapper function is available since the commit 890cc39a879906b63912482dfc41944579df2dc6 > ("drivers: provide devm_platform_get_and_ioremap_resource()"). > Provide design options for the adjustment of affected source code > by the means of the semantic patch language (Coccinelle software). > > Signed-off-by: Markus Elfring <elfring@xxxxxxxxxxxxxxxxxxxxx> > --- > ...vm_platform_get_and_ioremap_resource.cocci | 71 +++++++++++++++++++ > 1 file changed, 71 insertions(+) > create mode 100644 scripts/coccinelle/api/use_devm_platform_get_and_ioremap_resource.cocci > > diff --git a/scripts/coccinelle/api/use_devm_platform_get_and_ioremap_resource.cocci b/scripts/coccinelle/api/use_devm_platform_get_and_ioremap_resource.cocci > new file mode 100644 > index 000000000000..8e67359f6b76 > --- /dev/null > +++ b/scripts/coccinelle/api/use_devm_platform_get_and_ioremap_resource.cocci > @@ -0,0 +1,71 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/// Simplify a function call combination by using a known wrapper function. > +// > +// Keywords: wrapper function conversion ioremap resources > +// Confidence: High > + > +virtual context, patch, report, org > + > +@display depends on context@ > +expression base, device1, device2, index, private, resource; > +@@ > +( > +*resource = platform_get_resource(device1, IORESOURCE_MEM, index); > + base = > +* devm_ioremap_resource > + (&device1->dev, resource); Why do you require these statements to be next to each other? > +| > +*private->res = platform_get_resource(device1, IORESOURCE_MEM, index); > + base = > +* devm_ioremap_resource > + (device2, private->res); Why do you have this special case? > +) > + > +@replacement depends on patch@ > +expression base, device1, device2, index, private, resource; > +@@ > +( > +-resource = platform_get_resource(device1, IORESOURCE_MEM, index); > + base = > +- devm_ioremap_resource > ++ devm_platform_get_and_ioremap_resource > + ( > +- & > + device1 > +- ->dev > + , > +- resource > ++ index, &resource > + ); > +| > +-private->res = platform_get_resource(device1, IORESOURCE_MEM, index); > + base = > +- devm_ioremap_resource > ++ devm_platform_get_and_ioremap_resource > + (device2, It is very suspicious that in one case you change the first argument of devm_platform_get_and_ioremap_resource and in one case you don't. If you don't know how to make the change in some cases, it would be better to do nothing at all. julia > +- private->res > ++ index, &private->res > + ); > +) > + > +@or depends on org || report@ > +expression base, device1, device2, index, private, resource; > +position p; > +@@ > +( > + resource = platform_get_resource(device1, IORESOURCE_MEM, index); > + base = devm_ioremap_resource@p(&device1->dev, resource); > +| > + private->res = platform_get_resource(device1, IORESOURCE_MEM, index); > + base = devm_ioremap_resource@p(device2, private->res); > +) > + > +@script:python to_do depends on org@ > +p << or.p; > +@@ > +coccilib.org.print_todo(p[0], "WARNING: opportunity for devm_platform_get_and_ioremap_resource()") > + > +@script:python reporting depends on report@ > +p << or.p; > +@@ > +coccilib.report.print_report(p[0], "WARNING: opportunity for devm_platform_get_and_ioremap_resource()") > -- > 2.28.0 > > _______________________________________________ > Cocci mailing list > Cocci@xxxxxxxxxxxxxxx > https://systeme.lip6.fr/mailman/listinfo/cocci >