Messages in this thread Patch in this message |  | | From | Yisheng Xie <> | Subject | [PATCH v2] devres: use MACRO instead of function for devm_ioremap | Date | Sat, 25 Nov 2017 17:23:33 +0800 |
| |
Default ioremap is ioremap_nocache, so devm_ioremap has the same function with devm_ioremap_nocache, which may just be killed. However, there are many places which use devm_ioremap_nocache, while many use devm_ioremap.
This patch is to use MACRO for devm_ioremap, which will reduce the size of devres.o from 206824 Bytes to 203768 Bytes.
Signed-off-by: Yisheng Xie <xieyisheng1@huawei.com> --- v2: * MACRO devm_ioremap instead of devm_ioremap_nocache
include/linux/io.h | 4 ++-- lib/devres.c | 30 +----------------------------- 2 files changed, 3 insertions(+), 31 deletions(-)
diff --git a/include/linux/io.h b/include/linux/io.h index 32e30e8..3759882 100644 --- a/include/linux/io.h +++ b/include/linux/io.h @@ -73,8 +73,6 @@ static inline void devm_ioport_unmap(struct device *dev, void __iomem *addr) #define IOMEM_ERR_PTR(err) (__force void __iomem *)ERR_PTR(err) -void __iomem *devm_ioremap(struct device *dev, resource_size_t offset, - resource_size_t size); void __iomem *devm_ioremap_nocache(struct device *dev, resource_size_t offset, resource_size_t size); void __iomem *devm_ioremap_wc(struct device *dev, resource_size_t offset, @@ -84,6 +82,8 @@ int check_signature(const volatile void __iomem *io_addr, const unsigned char *signature, int length); void devm_ioremap_release(struct device *dev, void *res); +#define devm_ioremap devm_ioremap_nocache + void *devm_memremap(struct device *dev, resource_size_t offset, size_t size, unsigned long flags); void devm_memunmap(struct device *dev, void *addr); diff --git a/lib/devres.c b/lib/devres.c index 5f2aedd..ebfaab1 100644 --- a/lib/devres.c +++ b/lib/devres.c @@ -16,34 +16,6 @@ static int devm_ioremap_match(struct device *dev, void *res, void *match_data) } /** - * devm_ioremap - Managed ioremap() - * @dev: Generic device to remap IO address for - * @offset: Resource address to map - * @size: Size of map - * - * Managed ioremap(). Map is automatically unmapped on driver detach. - */ -void __iomem *devm_ioremap(struct device *dev, resource_size_t offset, - resource_size_t size) -{ - void __iomem **ptr, *addr; - - ptr = devres_alloc(devm_ioremap_release, sizeof(*ptr), GFP_KERNEL); - if (!ptr) - return NULL; - - addr = ioremap(offset, size); - if (addr) { - *ptr = addr; - devres_add(dev, ptr); - } else - devres_free(ptr); - - return addr; -} -EXPORT_SYMBOL(devm_ioremap); - -/** * devm_ioremap_nocache - Managed ioremap_nocache() * @dev: Generic device to remap IO address for * @offset: Resource address to map @@ -153,7 +125,7 @@ void __iomem *devm_ioremap_resource(struct device *dev, struct resource *res) return IOMEM_ERR_PTR(-EBUSY); } - dest_ptr = devm_ioremap(dev, res->start, size); + dest_ptr = devm_ioremap_nocache(dev, res->start, size); if (!dest_ptr) { dev_err(dev, "ioremap failed for resource %pR\n", res); devm_release_mem_region(dev, res->start, size); -- 1.7.12.4
|  |