[PATCH 0/2] simplify devm_request_mem_region/devm_ioremap

From: Julia Lawall
Date: Sat Aug 24 2013 - 13:13:34 EST


Convert the composition of devm_request_mem_region and devm_ioremap to a
single call to devm_ioremap_resource. The associated call to
platform_get_resource is also simplified and moved next to the new call to
devm_ioremap_resource.

The semantic patch used to perform this transformation is as follows:
(http://coccinelle.lip6.fr/)

// <smpl>
@r@
expression dev,res,size,name,base;
identifier l;
@@

-if (!devm_request_mem_region(dev, res->start, size, name))
- { ... \(goto l;\|return ...;\) }
... when != res->start
base =
(
-devm_ioremap(dev,res->start,size)
+devm_request_and_ioremap(dev,res)
|
-devm_ioremap_nocache(dev,res->start,size)
+devm_request_and_ioremap(dev,res)
)
... when any
when != res->start

@@
expression pdev,res,n,r.base,e1,e2;
identifier l,f,res1;
type T;
@@

(
(
T res1 = f(pdev, IORESOURCE_MEM, n);
|
res1 = f(pdev, IORESOURCE_MEM, n);
)
- if (res1 == NULL) { ... \(goto l;\|return ...;\) }
base = devm_request_and_ioremap(e1, res1);
|
(
- res = f(pdev, IORESOURCE_MEM, n);
|
T res1
- = f(pdev, IORESOURCE_MEM, n)
;
)
... when != res
(
- if (res == NULL) { ... \(goto l;\|return ...;\) }
|
if (
- res == NULL ||
e2
) { ... \(goto l;\|return ...;\) }
)
... when != res
+ res = f(pdev, IORESOURCE_MEM, n);
base = devm_request_and_ioremap(e1, res);
)

@@
expression r.base, dev, res;
@@

base =
- devm_request_and_ioremap
+ devm_ioremap_resource
(dev, res);
...
if (
-base == NULL
+IS_ERR(base)
|| ...) {
<...
- return ...;
+ return PTR_ERR(base);
...>
}

@@
expression r.base, dev, res;
@@

base =
- devm_request_and_ioremap
+ devm_ioremap_resource
(dev, res);

@@
expression r.base, E, ret;
identifier l;
@@

base = devm_ioremap_resource(...);
...
if (IS_ERR(base) || ...) {
... when any
- ret = E;
+ ret = PTR_ERR(base);
...
(
return ret;
|
goto l;
)
}

@@
expression r.base;
@@

base = devm_ioremap_resource(...);
...
if (IS_ERR(base) || ...) {
<...
- \(dev_dbg\|dev_warn\|dev_err\|pr_debug\|pr_err\|DRM_ERROR\)(...);
...>
}

@@
expression r.base;
identifier l;
@@

base = devm_ioremap_resource(...);
...
if (IS_ERR(base) || ...)
-{
(
return ...;
|
goto l;
)
-}
// </smpl>


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/