linux-mtd.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] mtd: fix wrong usage of ioremap_nocache() in uclinux.c map driver
@ 2012-05-10  6:55 gerg
  2012-05-10  6:55 ` [PATCH 2/2] mtd: allow uclinux map driver to be used on any ColdFire CPU platform gerg
                   ` (4 more replies)
  0 siblings, 5 replies; 14+ messages in thread
From: gerg @ 2012-05-10  6:55 UTC (permalink / raw)
  To: linux-mtd, uclinux-dev; +Cc: Greg Ungerer

From: Greg Ungerer <gerg@uclinux.org>

The uclinux.c mapping driver uses ioremap_nocache() to map its physical
mapping address to a system virtual address. Problem is that the region
it is mapping is not device memory. It is ordinary system RAM. On most
non-MMU systems this doesn't matter, and the mapping is always a 1:1
translation of the address.

But if we want to use the uclinux.c mapping driver on real MMU enabled
systems we should be using phys_to_virt() for the translation, since that
is really what we are doing. So change it to do that.

Signed-off-by: Greg Ungerer <gerg@uclinux.org>
---
 drivers/mtd/maps/uclinux.c |    9 +++------
 1 files changed, 3 insertions(+), 6 deletions(-)

diff --git a/drivers/mtd/maps/uclinux.c b/drivers/mtd/maps/uclinux.c
index cfff454..6d43c75 100644
--- a/drivers/mtd/maps/uclinux.c
+++ b/drivers/mtd/maps/uclinux.c
@@ -68,10 +68,10 @@ static int __init uclinux_mtd_init(void)
 	printk("uclinux[mtd]: RAM probe address=0x%x size=0x%x\n",
 	       	(int) mapp->phys, (int) mapp->size);
 
-	mapp->virt = ioremap_nocache(mapp->phys, mapp->size);
+	mapp->virt = phys_to_virt(mapp->phys);
 
 	if (mapp->virt == 0) {
-		printk("uclinux[mtd]: ioremap_nocache() failed\n");
+		printk("uclinux[mtd]: no virtual mapping?\n");
 		return(-EIO);
 	}
 
@@ -80,7 +80,6 @@ static int __init uclinux_mtd_init(void)
 	mtd = do_map_probe("map_ram", mapp);
 	if (!mtd) {
 		printk("uclinux[mtd]: failed to find a mapping?\n");
-		iounmap(mapp->virt);
 		return(-ENXIO);
 	}
 
@@ -103,10 +102,8 @@ static void __exit uclinux_mtd_cleanup(void)
 		map_destroy(uclinux_ram_mtdinfo);
 		uclinux_ram_mtdinfo = NULL;
 	}
-	if (uclinux_ram_map.virt) {
-		iounmap((void *) uclinux_ram_map.virt);
+	if (uclinux_ram_map.virt)
 		uclinux_ram_map.virt = 0;
-	}
 }
 
 /****************************************************************************/
-- 
1.7.0.4

^ permalink raw reply related	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2012-07-19  5:46 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-05-10  6:55 [PATCH 1/2] mtd: fix wrong usage of ioremap_nocache() in uclinux.c map driver gerg
2012-05-10  6:55 ` [PATCH 2/2] mtd: allow uclinux map driver to be used on any ColdFire CPU platform gerg
2012-05-11 16:05 ` [PATCH 1/2] mtd: fix wrong usage of ioremap_nocache() in uclinux.c map driver Artem Bityutskiy
2012-05-12 12:10   ` Greg Ungerer
2012-05-14  9:44     ` Artem Bityutskiy
2012-05-14 12:05 ` Artem Bityutskiy
2012-05-14 12:58   ` Greg Ungerer
2012-05-14 13:03     ` Artem Bityutskiy
2012-07-06 15:55 ` David Woodhouse
2012-07-09  6:08   ` Greg Ungerer
2012-07-12  7:49     ` David Woodhouse
2012-07-13  6:25       ` Greg Ungerer
2012-07-18 12:12 ` Artem Bityutskiy
2012-07-19  5:44   ` Greg Ungerer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).