drivers: new helper for ioremapping memory resources
Subsystems (3)
cover drivers: new helper for ioremapping memory resources
From: Bartosz Golaszewski <[email protected]>
There are currently 1200+ instances of using platform_get_resource() and devm_ioremap_resource() together in the kernel tree. It's a minor redundancy, but consolidation is always good.
The first patch in this series adds a wrapper for these two calls and the second uses it in a driver I could test.
If accepted I can prepare a script that'll apply this tree-wide.
Bartosz Golaszewski (2):
drivers: provide devm_platform_ioremap_resource()
gpio: davinci: use devm_platform_ioremap_resource()
drivers/base/platform.c | 18 ++++++++++++++++++ drivers/gpio/gpio-davinci.c | 4 +--- include/linux/platform_device.h | 3 +++ 3 files changed, 22 insertions(+), 3 deletions(-)
Signature · 1 line
2.20.1
PATCH 1/2 drivers: provide devm_platform_ioremap_resource()
From: Bartosz Golaszewski <[email protected]>
There are currently 1200+ instances of using platform_get_resource() and devm_ioremap_resource() together in the kernel tree.
This patch wraps these two calls in a single helper. Thanks to that we don't have to declare a local variable for struct resource * and can omit the redundant argument for resource type. We also have one function call less.
--- drivers/base/platform.c | 18 ++++++++++++++++++ include/linux/platform_device.h | 3 +++ 2 files changed, 21 insertions(+)
drivers/base/platform.c +18 -0
@@ -79,6 +79,24 @@ struct resource *platform_get_resource(struct platform_device *dev, }EXPORT_SYMBOL_GPL (platform_get_resource); +/** +* devm_platform_ioremap_resource - call devm_ioremap_resource() for a platform +* device +* +* @pdev: platform device to use both for memory resource lookup as well as +* resource managemend +* @index: resource index +*/ +void __iomem *devm_platform_ioremap_resource (struct platform_device *pdev, +unsigned int index) +{ +struct resource *res; + + res =platform_get_resource (pdev,IORESOURCE_MEM , index); +return devm_ioremap_resource (&pdev->dev, res); +} +EXPORT_SYMBOL (devm_platform_ioremap_resource); +/** * platform_get_irq - get an IRQ for a device * @dev: platform device
include/linux/platform_device.h +3 -0
@@ -52,6 +52,9 @@ extern struct device platform_bus;extern void arch_setup_pdev_archdata (struct platform_device *);extern struct resource *platform_get_resource (struct platform_device *,unsigned int ,unsigned int ); +extern void __iomem * +devm_platform_ioremap_resource (struct platform_device *pdev, +unsigned int index);extern int platform_get_irq (struct platform_device *,unsigned int );extern int platform_irq_count (struct platform_device *); extern struct resource *platform_get_resource_byname(struct platform_device *,
Signature · 1 line
2.20.1
Re: [PATCH 1/2] drivers: provide devm_platform_ioremap_resource()
Quoted 11 lines · Bartosz Golaszewski
From: Bartosz Golaszewski <[email protected]>
There are currently 1200+ instances of using
platform_get_resource()anddevm_ioremap_resource()together in the kernel tree.This patch wraps these two calls in a single helper. Thanks to that we don't have to declare a local variable for struct resource * and can omit the redundant argument for resource type. We also have one function call less.
Signed-off-by Bartosz Golaszewski <[email protected]>
This makes a lot of sense. I think Andy can confirm the value, he knows a lot about good helpers.
I'd need Greg's ACK on this before merging through GPIO.
Can we make a script or coccinelle thing to fix them all when this is applied?
Yours,
Linus Walleij
Re: [PATCH 1/2] drivers: provide devm_platform_ioremap_resource()
śr., 20 lut 2019 o 10:57 Linus Walleij <[email protected]> napisał(a):
Quoted 15 lines · Bartosz Golaszewski
Quoted 6 lines
From: Bartosz Golaszewski <[email protected]>
There are currently 1200+ instances of using
platform_get_resource()anddevm_ioremap_resource()together in the kernel tree.Quoted 6 lines
This patch wraps these two calls in a single helper. Thanks to that we don't have to declare a local variable for struct resource * and can omit the redundant argument for resource type. We also have one function call less.
Signed-off-by Bartosz Golaszewski <[email protected]>
Quoted 8 lines
This makes a lot of sense. I think Andy can confirm the value, he knows a lot about good helpers.
I'd need Greg's ACK on this before merging through GPIO.
Can we make a script or coccinelle thing to fix them all when this is applied?
Yes, it's on my list (and also a chance to learn first hand how to work with coccinelle), but we first need this function upstream. I'll resend a v2 with the EXPORT_SYMBOL fixed.
Bart
Greg Kroah-Hartman
maintainerRe: [PATCH 1/2] drivers: provide devm_platform_ioremap_resource()
In reply to Bartosz GolaszewskiQuoted 31 lines · Bartosz Golaszewski
From: Bartosz Golaszewski <[email protected]>
There are currently 1200+ instances of using
platform_get_resource()anddevm_ioremap_resource()together in the kernel tree.This patch wraps these two calls in a single helper. Thanks to that we don't have to declare a local variable for struct resource * and can omit the redundant argument for resource type. We also have one function call less.
Signed-off-by Bartosz Golaszewski <[email protected]>--- drivers/base/platform.c | 18 ++++++++++++++++++ include/linux/platform_device.h | 3 +++ 2 files changed, 21 insertions(+)drivers/base/platform.c +7
-0@@ -79,6 +79,24 @@ struct resource *platform_get_resource(struct platform_device *dev, }EXPORT_SYMBOL_GPL (platform_get_resource); +/** +* devm_platform_ioremap_resource - call devm_ioremap_resource() for a platform +* device +* +* @pdev: platform device to use both for memory resource lookup as well as +* resource managemend +* @index: resource index
drivers/base/platform.c struct resource *platform_get_resource(struct platform_device *dev, · line 98
Quoted 10 lines
drivers/base/platform.c +10
-0+*/ +void __iomem *devm_platform_ioremap_resource (struct platform_device *pdev, +unsigned int index) +{ +struct resource *res; + + res =platform_get_resource (pdev,IORESOURCE_MEM , index); +return devm_ioremap_resource (&pdev->dev, res); +} +EXPORT_SYMBOL (devm_platform_ioremap_resource);
functions in drivers/base/* should be EXPORT_SYMBOL_GPL() please.
thanks,
greg k-h
PATCH 2/2 gpio: davinci: use devm_platform_ioremap_resource()
In reply to Bartosz GolaszewskiFrom: Bartosz Golaszewski <[email protected]>
Use the new helper that wraps the calls to platform_get_resource() and devm_ioremap_resource() together.
--- drivers/gpio/gpio-davinci.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)
drivers/gpio/gpio-davinci.c +1 -3
@@ -198,7 +198,6 @@ static int davinci_gpio_probe(struct platform_device *pdev)struct davinci_gpio_controller *chips;struct davinci_gpio_platform_data *pdata;struct device *dev = &pdev->dev; -struct resource *res; pdata =davinci_gpio_get_pdata (pdev);if (!pdata) {
@@ -236,8 +235,7 @@ static int davinci_gpio_probe(struct platform_device *pdev)if (!chips)return -ENOMEM ; - res =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); - gpio_base =devm_ioremap_resource (dev, res); + gpio_base =devm_platform_ioremap_resource (pdev,0 );if (IS_ERR (gpio_base))return PTR_ERR (gpio_base);
Signature · 1 line
2.20.1