From 81b6032f46ee55af6b786065faf0f35f9c756b97 Mon Sep 17 00:00:00 2001 From: Jes Sorensen Date: Tue, 5 May 2015 18:36:51 -0400 Subject: [PATCH] staging: unisys: memregion: Eliminate visor_memregion_resize() Signed-off-by: Jes Sorensen Signed-off-by: Benjamin Romer Signed-off-by: Greg Kroah-Hartman --- drivers/staging/unisys/visorbus/visorchannel.c | 17 +++++++++++++++-- drivers/staging/unisys/visorutil/memregion.h | 1 - .../staging/unisys/visorutil/memregion_direct.c | 16 ---------------- 3 files changed, 15 insertions(+), 19 deletions(-) diff --git a/drivers/staging/unisys/visorbus/visorchannel.c b/drivers/staging/unisys/visorbus/visorchannel.c index 42fabeafc01e..cfbb19f78139 100644 --- a/drivers/staging/unisys/visorbus/visorchannel.c +++ b/drivers/staging/unisys/visorbus/visorchannel.c @@ -89,9 +89,22 @@ visorchannel_create_guts(HOSTADDRESS physaddr, ulong channel_bytes, if (uuid_le_cmp(guid, NULL_UUID_LE) == 0) guid = channel->chan_hdr.chtype; - err = visor_memregion_resize(&channel->memregion, channel_bytes); - if (err) + iounmap(channel->memregion.mapped); + release_mem_region(channel->memregion.physaddr, + channel->memregion.nbytes); + channel->memregion.mapped = NULL; + if (!request_mem_region(channel->memregion.physaddr, channel_bytes, + MYDRVNAME)) + goto cleanup; + + channel->memregion.mapped = ioremap_cache(channel->memregion.physaddr, + channel_bytes); + if (!channel->memregion.mapped) { + release_mem_region(channel->memregion.physaddr, channel_bytes); goto cleanup; + } + + channel->memregion.nbytes = channel_bytes; channel->size = channel_bytes; channel->guid = guid; diff --git a/drivers/staging/unisys/visorutil/memregion.h b/drivers/staging/unisys/visorutil/memregion.h index 60d0dc9f07bc..57d617f90129 100644 --- a/drivers/staging/unisys/visorutil/memregion.h +++ b/drivers/staging/unisys/visorutil/memregion.h @@ -29,7 +29,6 @@ struct memregion { void __iomem *mapped; }; -int visor_memregion_resize(struct memregion *memregion, ulong newsize); int visor_memregion_read(struct memregion *memregion, ulong offset, void *dest, ulong nbytes); int visor_memregion_write(struct memregion *memregion, diff --git a/drivers/staging/unisys/visorutil/memregion_direct.c b/drivers/staging/unisys/visorutil/memregion_direct.c index 79ef4c5c686b..fa7a4060c20c 100644 --- a/drivers/staging/unisys/visorutil/memregion_direct.c +++ b/drivers/staging/unisys/visorutil/memregion_direct.c @@ -76,22 +76,6 @@ visor_memregion_get_pointer(struct memregion *memregion) } EXPORT_SYMBOL_GPL(visor_memregion_get_pointer); -int -visor_memregion_resize(struct memregion *memregion, ulong newsize) -{ - int rc; - - if (newsize == memregion->nbytes) - return 0; - - unmapit(memregion); - memregion->nbytes = newsize; - rc = mapit(memregion); - - return rc; -} -EXPORT_SYMBOL_GPL(visor_memregion_resize); - int visor_memregion_read(struct memregion *memregion, ulong offset, void *dest, ulong nbytes) -- 2.39.5