diff options
author | Hauke Mehrtens <hauke@hauke-m.de> | 2021-10-24 14:49:55 +0200 |
---|---|---|
committer | Hauke Mehrtens <hauke@hauke-m.de> | 2021-12-05 19:29:54 +0100 |
commit | 4e45bb550830e022d3fe4f1381ee688cec9e8f48 (patch) | |
tree | 88e5be90bb16361301d5613b6429b039ff4c8769 | |
parent | d44432d6c6c7560263507e9be69b69fe5311ea75 (diff) | |
download | backports-4e45bb550830e022d3fe4f1381ee688cec9e8f48.tar.gz |
headers: Add devm_platform_get_and_ioremap_resource()
This function is copied from kernel 5.7 and used by mt76, ath10k and
ath11k. devm_platform_ioremap_resource() was changed to make use of
this new function.
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
-rw-r--r-- | backport/backport-include/linux/platform_device.h | 45 |
1 files changed, 38 insertions, 7 deletions
diff --git a/backport/backport-include/linux/platform_device.h b/backport/backport-include/linux/platform_device.h index 87142d7c..f2b9cc5f 100644 --- a/backport/backport-include/linux/platform_device.h +++ b/backport/backport-include/linux/platform_device.h @@ -33,7 +33,39 @@ module_exit(__platform_driver##_exit); platform_driver_unregister) #endif +#if LINUX_VERSION_IS_LESS(5,7,0) +#ifdef CONFIG_HAS_IOMEM +#define devm_platform_get_and_ioremap_resource LINUX_BACKPORT(devm_platform_get_and_ioremap_resource) +/** + * devm_platform_get_and_ioremap_resource - call devm_ioremap_resource() for a + * platform device and get resource + * + * @pdev: platform device to use both for memory resource lookup as well as + * resource management + * @index: resource index + * @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. + */ +static inline void __iomem * +devm_platform_get_and_ioremap_resource(struct platform_device *pdev, + unsigned int index, struct resource **res) +{ + struct resource *r; + + r = platform_get_resource(pdev, IORESOURCE_MEM, index); + if (res) + *res = r; + return devm_ioremap_resource(&pdev->dev, r); +} +#endif /* CONFIG_HAS_IOMEM */ +#endif /* < 5.7 */ + #if LINUX_VERSION_IS_LESS(5,1,0) + +#ifdef CONFIG_HAS_IOMEM +#define devm_platform_ioremap_resource LINUX_BACKPORT(devm_platform_ioremap_resource) /** * devm_platform_ioremap_resource - call devm_ioremap_resource() for a platform * device @@ -41,16 +73,15 @@ module_exit(__platform_driver##_exit); * @pdev: platform device to use both for memory resource lookup as well as * resource management * @index: resource index + * + * Return: a pointer to the remapped memory or an ERR_PTR() encoded error code + * on failure. */ -#ifdef CONFIG_HAS_IOMEM -#define devm_platform_ioremap_resource LINUX_BACKPORT(devm_platform_ioremap_resource) -static inline void __iomem *devm_platform_ioremap_resource(struct platform_device *pdev, +static inline 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); + return devm_platform_get_and_ioremap_resource(pdev, index, NULL); } #endif /* CONFIG_HAS_IOMEM */ #endif |