aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHauke Mehrtens <hauke@hauke-m.de>2021-10-24 14:49:55 +0200
committerHauke Mehrtens <hauke@hauke-m.de>2021-12-05 19:29:54 +0100
commit4e45bb550830e022d3fe4f1381ee688cec9e8f48 (patch)
tree88e5be90bb16361301d5613b6429b039ff4c8769
parentd44432d6c6c7560263507e9be69b69fe5311ea75 (diff)
downloadbackports-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.h45
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