a06c619471baf48b82c3351ebe019f36c951749d
[openwrt/staging/mkresin.git] / package / kernel / mac80211 / patches / build / 010-headers-Add-devm_platform_get_and_ioremap_resource.patch
1 From d49395058c6bd4fb7b8bcc5ff7b4d7fbd9b6f97b Mon Sep 17 00:00:00 2001
2 From: Hauke Mehrtens <hauke@hauke-m.de>
3 Date: Sun, 24 Oct 2021 14:49:55 +0200
4 Subject: [PATCH] headers: Add devm_platform_get_and_ioremap_resource()
5
6 This function is copied from kernel 5.7 and used by mt76, ath10k and
7 ath11k. devm_platform_ioremap_resource() was changed to make sue of
8 this new function.
9
10 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
11 ---
12 .../backport-include/linux/platform_device.h | 45 ++++++++++++++++---
13 1 file changed, 38 insertions(+), 7 deletions(-)
14
15 --- a/backport-include/linux/platform_device.h
16 +++ b/backport-include/linux/platform_device.h
17 @@ -33,7 +33,39 @@ module_exit(__platform_driver##_exit);
18 platform_driver_unregister)
19 #endif
20
21 +#if LINUX_VERSION_IS_LESS(5,7,0)
22 +#ifdef CONFIG_HAS_IOMEM
23 +#define devm_platform_get_and_ioremap_resource LINUX_BACKPORT(devm_platform_get_and_ioremap_resource)
24 +/**
25 + * devm_platform_get_and_ioremap_resource - call devm_ioremap_resource() for a
26 + * platform device and get resource
27 + *
28 + * @pdev: platform device to use both for memory resource lookup as well as
29 + * resource management
30 + * @index: resource index
31 + * @res: optional output parameter to store a pointer to the obtained resource.
32 + *
33 + * Return: a pointer to the remapped memory or an ERR_PTR() encoded error code
34 + * on failure.
35 + */
36 +static inline void __iomem *
37 +devm_platform_get_and_ioremap_resource(struct platform_device *pdev,
38 + unsigned int index, struct resource **res)
39 +{
40 + struct resource *r;
41 +
42 + r = platform_get_resource(pdev, IORESOURCE_MEM, index);
43 + if (res)
44 + *res = r;
45 + return devm_ioremap_resource(&pdev->dev, r);
46 +}
47 +#endif /* CONFIG_HAS_IOMEM */
48 +#endif /* < 5.7 */
49 +
50 #if LINUX_VERSION_IS_LESS(5,1,0)
51 +
52 +#ifdef CONFIG_HAS_IOMEM
53 +#define devm_platform_ioremap_resource LINUX_BACKPORT(devm_platform_ioremap_resource)
54 /**
55 * devm_platform_ioremap_resource - call devm_ioremap_resource() for a platform
56 * device
57 @@ -41,16 +73,15 @@ module_exit(__platform_driver##_exit);
58 * @pdev: platform device to use both for memory resource lookup as well as
59 * resource management
60 * @index: resource index
61 + *
62 + * Return: a pointer to the remapped memory or an ERR_PTR() encoded error code
63 + * on failure.
64 */
65 -#ifdef CONFIG_HAS_IOMEM
66 -#define devm_platform_ioremap_resource LINUX_BACKPORT(devm_platform_ioremap_resource)
67 -static inline void __iomem *devm_platform_ioremap_resource(struct platform_device *pdev,
68 +static inline void __iomem *
69 +devm_platform_ioremap_resource(struct platform_device *pdev,
70 unsigned int index)
71 {
72 - struct resource *res;
73 -
74 - res = platform_get_resource(pdev, IORESOURCE_MEM, index);
75 - return devm_ioremap_resource(&pdev->dev, res);
76 + return devm_platform_get_and_ioremap_resource(pdev, index, NULL);
77 }
78 #endif /* CONFIG_HAS_IOMEM */
79 #endif