[PATCH v2 1/4] drivers: provide devm_platform_get_and_ioremap_resource_byname()
Matthias Brugger
mbrugger at suse.com
Wed Sep 18 00:52:01 PDT 2024
On 13/09/2024 10:29, Andrei Stefanescu wrote:
> Similar to commit 890cc39a879906b63912482dfc41944579df2dc6
> ("drivers: provide devm_platform_get_and_ioremap_resource()")
> add a wrapper for "platform_get_resource_byname" and
> "devm_ioremap_resource". This new wrapper also returns the resource, if
> any, via a pointer.
>
> Suggested-by: Krzysztof Kozlowski <krzk at kernel.org>
> Signed-off-by: Andrei Stefanescu <andrei.stefanescu at oss.nxp.com> > ---
> drivers/base/platform.c | 28 ++++++++++++++++++++++++++++
> include/linux/platform_device.h | 13 +++++++++++++
> 2 files changed, 41 insertions(+)
>
> diff --git a/drivers/base/platform.c b/drivers/base/platform.c
> index 4c3ee6521ba5..ab48c02fcb2c 100644
> --- a/drivers/base/platform.c
> +++ b/drivers/base/platform.c
> @@ -108,6 +108,34 @@ devm_platform_get_and_ioremap_resource(struct platform_device *pdev,
> }
> EXPORT_SYMBOL_GPL(devm_platform_get_and_ioremap_resource);
>
> +/**
> + * devm_platform_get_and_ioremap_resource_byname - call devm_ioremap_resource()
> + * for a platform device and get
> + * a resource by its name instead
> + * of the index
I think we don't need to describe what the function does not do.
With that:
Reviewed-by: Matthias Brugger <mbrugger at suse.com>
> + *
> + * @pdev: platform device to use both for memory resource lookup as well as
> + * resource management
> + * @name: resource name
> + * @res: optional output parameter to store a pointer to the obtained resource.
> + *
> + * Return: a pointer to the remapped memory or an ERR_PTR() encoded error code
> + * on failure.
> + */
> +void __iomem *
> +devm_platform_get_and_ioremap_resource_byname(struct platform_device *pdev,
> + const char *name,
> + struct resource **res)
> +{
> + struct resource *r;
> +
> + r = platform_get_resource_byname(pdev, IORESOURCE_MEM, name);
> + if (res)
> + *res = r;
> + return devm_ioremap_resource(&pdev->dev, r);
> +}
> +EXPORT_SYMBOL_GPL(devm_platform_get_and_ioremap_resource_byname);
> +
> /**
> * devm_platform_ioremap_resource - call devm_ioremap_resource() for a platform
> * device
> diff --git a/include/linux/platform_device.h b/include/linux/platform_device.h
> index d422db6eec63..ab7f33f3c426 100644
> --- a/include/linux/platform_device.h
> +++ b/include/linux/platform_device.h
> @@ -68,6 +68,12 @@ platform_find_device_by_driver(struct device *start,
> extern void __iomem *
> devm_platform_get_and_ioremap_resource(struct platform_device *pdev,
> unsigned int index, struct resource **res);
> +
> +extern void __iomem *
> +devm_platform_get_and_ioremap_resource_byname(struct platform_device *pdev,
> + const char *name,
> + struct resource **res);
> +
> extern void __iomem *
> devm_platform_ioremap_resource(struct platform_device *pdev,
> unsigned int index);
> @@ -83,6 +89,13 @@ devm_platform_get_and_ioremap_resource(struct platform_device *pdev,
> return ERR_PTR(-EINVAL);
> }
>
> +static inline void __iomem *
> +devm_platform_get_and_ioremap_resource_byname(struct platform_device *pdev,
> + const char *name,
> + struct resource **res)
> +{
> + return ERR_PTR(-EINVAL);
> +}
>
> static inline void __iomem *
> devm_platform_ioremap_resource(struct platform_device *pdev,
More information about the linux-arm-kernel
mailing list