Skip to content

Commit 890cc39

Browse files
Dejin Zhenggregkh
authored andcommitted
drivers: provide devm_platform_get_and_ioremap_resource()
Since commit "drivers: provide devm_platform_ioremap_resource()", it was wrap platform_get_resource() and devm_ioremap_resource() as single helper devm_platform_ioremap_resource(). but now, many drivers still used platform_get_resource() and devm_ioremap_resource() together in the kernel tree. The reason can not be replaced is they still need use the resource variables obtained by platform_get_resource(). so provide this helper. Suggested-by: Geert Uytterhoeven <[email protected]> Suggested-by: Sergei Shtylyov <[email protected]> Reviewed-by: Geert Uytterhoeven <[email protected]> Signed-off-by: Dejin Zheng <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent d2e971d commit 890cc39

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

drivers/base/platform.c

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,28 @@ struct resource *platform_get_resource(struct platform_device *dev,
6262
EXPORT_SYMBOL_GPL(platform_get_resource);
6363

6464
#ifdef CONFIG_HAS_IOMEM
65+
/**
66+
* devm_platform_get_and_ioremap_resource - call devm_ioremap_resource() for a
67+
* platform device and get resource
68+
*
69+
* @pdev: platform device to use both for memory resource lookup as well as
70+
* resource management
71+
* @index: resource index
72+
* @res: optional output parameter to store a pointer to the obtained resource.
73+
*/
74+
void __iomem *
75+
devm_platform_get_and_ioremap_resource(struct platform_device *pdev,
76+
unsigned int index, struct resource **res)
77+
{
78+
struct resource *r;
79+
80+
r = platform_get_resource(pdev, IORESOURCE_MEM, index);
81+
if (res)
82+
*res = r;
83+
return devm_ioremap_resource(&pdev->dev, r);
84+
}
85+
EXPORT_SYMBOL_GPL(devm_platform_get_and_ioremap_resource);
86+
6587
/**
6688
* devm_platform_ioremap_resource - call devm_ioremap_resource() for a platform
6789
* device

include/linux/platform_device.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@ extern struct device *
5555
platform_find_device_by_driver(struct device *start,
5656
const struct device_driver *drv);
5757
extern void __iomem *
58+
devm_platform_get_and_ioremap_resource(struct platform_device *pdev,
59+
unsigned int index, struct resource **res);
60+
extern void __iomem *
5861
devm_platform_ioremap_resource(struct platform_device *pdev,
5962
unsigned int index);
6063
extern void __iomem *

0 commit comments

Comments
 (0)