[PATCH 072/141] staging: unisys: Eliminate visor_memregion_create()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Jes Sorensen <Jes.Sorensen@xxxxxxxxxx>

Signed-off-by: Jes Sorensen <Jes.Sorensen@xxxxxxxxxx>
Signed-off-by: Benjamin Romer <benjamin.romer@xxxxxxxxxx>
---
 drivers/staging/unisys/visorbus/visorchannel.c     | 15 ++++++++++-----
 drivers/staging/unisys/visorutil/memregion.h       |  2 --
 .../staging/unisys/visorutil/memregion_direct.c    | 22 ----------------------
 3 files changed, 10 insertions(+), 29 deletions(-)

diff --git a/drivers/staging/unisys/visorbus/visorchannel.c b/drivers/staging/unisys/visorbus/visorchannel.c
index 150e3df..f278739 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 3826fe6..cb3dbc5 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 a575ecc..0c7bed0 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)
 {
-- 
2.1.4

_______________________________________________
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxx
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel




[Index of Archives]     [Linux Driver Backports]     [DMA Engine]     [Linux GPIO]     [Linux SPI]     [Video for Linux]     [Linux USB Devel]     [Linux Coverity]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux