aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJes Sorensen2015-05-05 18:36:49 -0400
committerGreg Kroah-Hartman2015-05-08 15:27:28 +0200
commitaefebaa5bc6a22674adda07e001c5c8204ee608f (patch)
treeea4403af4b69aa028dfdd190ce203589264b0d02
parent330782577e8c5c977aab1173088a59d3b19c4fce (diff)
staging: unisys: Eliminate visor_memregion_create()
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>
-rw-r--r--drivers/staging/unisys/visorbus/visorchannel.c15
-rw-r--r--drivers/staging/unisys/visorutil/memregion.h2
-rw-r--r--drivers/staging/unisys/visorutil/memregion_direct.c22
3 files changed, 10 insertions, 29 deletions
diff --git a/drivers/staging/unisys/visorbus/visorchannel.c b/drivers/staging/unisys/visorbus/visorchannel.c
index 150e3df89001..f278739514f7 100644
--- a/drivers/staging/unisys/visorbus/visorchannel.c
+++ b/drivers/staging/unisys/visorbus/visorchannel.c
@@ -57,9 +57,8 @@ visorchannel_create_guts(HOSTADDRESS physaddr, ulong channel_bytes,
struct visorchannel *channel;
int err;
size_t size = sizeof(struct channel_header);
- struct memregion *memregion;
- channel = kmalloc(sizeof(*channel), GFP_KERNEL|__GFP_NORETRY);
+ channel = kzalloc(sizeof(*channel), GFP_KERNEL|__GFP_NORETRY);
if (!channel)
goto cleanup;
@@ -67,11 +66,17 @@ visorchannel_create_guts(HOSTADDRESS physaddr, ulong channel_bytes,
spin_lock_init(&channel->insert_lock);
spin_lock_init(&channel->remove_lock);
- /* prepare chan_hdr (abstraction to read/write channel memory) */
- memregion = visor_memregion_create(&channel->memregion, physaddr, size);
+ if (!request_mem_region(physaddr, size, MYDRVNAME))
+ goto cleanup;
- if (!memregion)
+ channel->memregion.mapped = ioremap_cache(physaddr, size);
+ if (!channel->memregion.mapped) {
+ release_mem_region(physaddr, size);
goto cleanup;
+ }
+
+ channel->memregion.physaddr = physaddr;
+ channel->memregion.nbytes = size;
err = visor_memregion_read(&channel->memregion, 0, &channel->chan_hdr,
sizeof(struct channel_header));
diff --git a/drivers/staging/unisys/visorutil/memregion.h b/drivers/staging/unisys/visorutil/memregion.h
index 3826fe6c2446..cb3dbc50cd8e 100644
--- a/drivers/staging/unisys/visorutil/memregion.h
+++ b/drivers/staging/unisys/visorutil/memregion.h
@@ -29,8 +29,6 @@ struct memregion {
void __iomem *mapped;
};
-struct memregion *visor_memregion_create(struct memregion *memregion,
- HOSTADDRESS physaddr, ulong nbytes);
int visor_memregion_resize(struct memregion *memregion, ulong newsize);
int visor_memregion_read(struct memregion *memregion,
ulong offset, void *dest, ulong nbytes);
diff --git a/drivers/staging/unisys/visorutil/memregion_direct.c b/drivers/staging/unisys/visorutil/memregion_direct.c
index a575ecc5c3d7..0c7bed010c84 100644
--- a/drivers/staging/unisys/visorutil/memregion_direct.c
+++ b/drivers/staging/unisys/visorutil/memregion_direct.c
@@ -28,28 +28,6 @@
static int mapit(struct memregion *memregion);
static void unmapit(struct memregion *memregion);
-struct memregion *
-visor_memregion_create(struct memregion *memregion,
- HOSTADDRESS physaddr, ulong nbytes)
-{
- struct memregion *rc = NULL;
-
- memregion->physaddr = physaddr;
- memregion->nbytes = nbytes;
- if (mapit(memregion)) {
- rc = NULL;
- goto cleanup;
- }
- rc = memregion;
-cleanup:
- if (rc == NULL) {
- visor_memregion_destroy(memregion);
- memregion = NULL;
- }
- return rc;
-}
-EXPORT_SYMBOL_GPL(visor_memregion_create);
-
static int
mapit(struct memregion *memregion)
{