diff options
author | Jes Sorensen <Jes.Sorensen@redhat.com> | 2015-05-05 18:36:51 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-05-08 15:27:29 +0200 |
commit | 81b6032f46ee55af6b786065faf0f35f9c756b97 (patch) | |
tree | 33bbc03a92ff6cd1246e4d6c6995fe14e996eeaa /drivers/staging/unisys | |
parent | 0dbb3fb66b9e9c81866e89961fa418d6ae135ea6 (diff) |
staging: unisys: memregion: Eliminate visor_memregion_resize()
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: Benjamin Romer <benjamin.romer@unisys.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/unisys')
-rw-r--r-- | drivers/staging/unisys/visorbus/visorchannel.c | 17 | ||||
-rw-r--r-- | drivers/staging/unisys/visorutil/memregion.h | 1 | ||||
-rw-r--r-- | drivers/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 @@ -77,22 +77,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) { |