diff --git a/drivers/mtd/maps/ixp4xx.c b/drivers/mtd/maps/ixp4xx.c
index 58b4770..c510c73 100644
--- a/drivers/mtd/maps/ixp4xx.c
+++ b/drivers/mtd/maps/ixp4xx.c
@@ -1,5 +1,5 @@
 /*
- * $Id: ixp4xx.c,v 1.8 2005/09/08 10:32:20 dvrabel Exp $
+ * $Id: ixp4xx.c,v 1.11 2005/11/06 11:15:51 gleixner Exp $
  *
  * drivers/mtd/maps/ixp4xx.c
  *
@@ -45,7 +45,7 @@
 static map_word ixp4xx_read16(struct map_info *map, unsigned long ofs)
 {
 	map_word val;
-	val.x[0] = *(__u16 *) (map->map_priv_1 + ofs);
+	val.x[0] = le16_to_cpu(readw(map->virt + ofs));
 	return val;
 }
 
@@ -59,17 +59,17 @@
 {
 	int i;
 	u8 *dest = (u8 *) to;
-	u16 *src = (u16 *) (map->map_priv_1 + from);
+	void __iomem *src = map->virt + from;
 	u16 data;
 
 	for (i = 0; i < (len / 2); i++) {
-		data = src[i];
+		data = le16_to_cpu(readw(src + 2*i));
 		dest[i * 2] = BYTE0(data);
 		dest[i * 2 + 1] = BYTE1(data);
 	}
 
 	if (len & 1)
-		dest[len - 1] = BYTE0(src[i]);
+		dest[len - 1] = BYTE0(le16_to_cpu(readw(src + 2*i)));
 }
 
 /* 
@@ -79,7 +79,7 @@
 static void ixp4xx_probe_write16(struct map_info *map, map_word d, unsigned long adr)
 {
 	if (!(adr & 1))
-	       *(__u16 *) (map->map_priv_1 + adr) = d.x[0];
+		writew(cpu_to_le16(d.x[0]), map->virt + adr);
 }
 
 /* 
@@ -87,7 +87,7 @@
  */
 static void ixp4xx_write16(struct map_info *map, map_word d, unsigned long adr)
 {
-       *(__u16 *) (map->map_priv_1 + adr) = d.x[0];
+	writew(cpu_to_le16(d.x[0]), map->virt + adr);
 }
 
 struct ixp4xx_flash_info {
@@ -104,7 +104,6 @@
 	struct platform_device *dev = to_platform_device(_dev);
 	struct flash_platform_data *plat = dev->dev.platform_data;
 	struct ixp4xx_flash_info *info = dev_get_drvdata(&dev->dev);
-	map_word d;
 
 	dev_set_drvdata(&dev->dev, NULL);
 
@@ -115,8 +114,8 @@
 		del_mtd_partitions(info->mtd);
 		map_destroy(info->mtd);
 	}
-	if (info->map.map_priv_1)
-		iounmap((void *) info->map.map_priv_1);
+	if (info->map.virt)
+		iounmap(info->map.virt);
 
 	if (info->partitions)
 		kfree(info->partitions);
@@ -184,9 +183,9 @@
 		goto Error;
 	}
 
-	info->map.map_priv_1 = ioremap(dev->resource->start,
-			    dev->resource->end - dev->resource->start + 1);
-	if (!info->map.map_priv_1) {
+	info->map.virt = ioremap(dev->resource->start,
+				 dev->resource->end - dev->resource->start + 1);
+	if (!info->map.virt) {
 		printk(KERN_ERR "IXP4XXFlash: Failed to ioremap region\n");
 		err = -EIO;
 		goto Error;
@@ -244,4 +243,3 @@
 MODULE_LICENSE("GPL");
 MODULE_DESCRIPTION("MTD map driver for Intel IXP4xx systems");
 MODULE_AUTHOR("Deepak Saxena");
-
