diff options
author | Abhilash Kesavan <a.kesavan@samsung.com> | 2015-02-06 08:45:27 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-03-16 16:11:32 -0400 |
commit | 34644524bce91883d5051a7eaf3ec5464ed149bf (patch) | |
tree | 17b63c826d7ce18d388250788df674b9bed995ec /lib | |
parent | 71a49d16f06de2ccdf52ca247d496a2bb1ca36fe (diff) |
lib: devres: add a helper function for ioremap_wc
Implement a resource managed writecombine ioremap function.
Signed-off-by: Abhilash Kesavan <a.kesavan@samsung.com>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/devres.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/lib/devres.c b/lib/devres.c index 0f1dd2e9d2c1..fbe2aac522e6 100644 --- a/lib/devres.c +++ b/lib/devres.c | |||
@@ -72,6 +72,34 @@ void __iomem *devm_ioremap_nocache(struct device *dev, resource_size_t offset, | |||
72 | EXPORT_SYMBOL(devm_ioremap_nocache); | 72 | EXPORT_SYMBOL(devm_ioremap_nocache); |
73 | 73 | ||
74 | /** | 74 | /** |
75 | * devm_ioremap_wc - Managed ioremap_wc() | ||
76 | * @dev: Generic device to remap IO address for | ||
77 | * @offset: BUS offset to map | ||
78 | * @size: Size of map | ||
79 | * | ||
80 | * Managed ioremap_wc(). Map is automatically unmapped on driver detach. | ||
81 | */ | ||
82 | void __iomem *devm_ioremap_wc(struct device *dev, resource_size_t offset, | ||
83 | resource_size_t size) | ||
84 | { | ||
85 | void __iomem **ptr, *addr; | ||
86 | |||
87 | ptr = devres_alloc(devm_ioremap_release, sizeof(*ptr), GFP_KERNEL); | ||
88 | if (!ptr) | ||
89 | return NULL; | ||
90 | |||
91 | addr = ioremap_wc(offset, size); | ||
92 | if (addr) { | ||
93 | *ptr = addr; | ||
94 | devres_add(dev, ptr); | ||
95 | } else | ||
96 | devres_free(ptr); | ||
97 | |||
98 | return addr; | ||
99 | } | ||
100 | EXPORT_SYMBOL(devm_ioremap_wc); | ||
101 | |||
102 | /** | ||
75 | * devm_iounmap - Managed iounmap() | 103 | * devm_iounmap - Managed iounmap() |
76 | * @dev: Generic device to unmap for | 104 | * @dev: Generic device to unmap for |
77 | * @addr: Address to unmap | 105 | * @addr: Address to unmap |