vserver 1.9.5.x5
[linux-2.6.git] / arch / cris / arch-v10 / drivers / axisflashmap.c
index 3277019..fb7d485 100644 (file)
@@ -11,6 +11,9 @@
  * partition split defined below.
  *
  * $Log: axisflashmap.c,v $
+ * Revision 1.10  2004/08/16 12:37:22  starvik
+ * Merge of Linux 2.6.8
+ *
  * Revision 1.8  2004/05/14 07:58:03  starvik
  * Merge of changes from 2.4
  *
 #define FLASH_CACHED_ADDR    KSEG_F
 #endif
 
+#if CONFIG_ETRAX_FLASH_BUSWIDTH==1
+#define flash_data __u8
+#elif CONFIG_ETRAX_FLASH_BUSWIDTH==2
+#define flash_data __u16
+#elif CONFIG_ETRAX_FLASH_BUSWIDTH==4
+#define flash_data __u16
+#endif
+
 /* From head.S */
 extern unsigned long romfs_start, romfs_length, romfs_in_flash;
 
@@ -161,19 +172,11 @@ struct mtd_info* axisflash_mtd = NULL;
 
 /* Map driver functions. */
 
-static __u8 flash_read8(struct map_info *map, unsigned long ofs)
-{
-       return *(__u8 *)(map->map_priv_1 + ofs);
-}
-
-static __u16 flash_read16(struct map_info *map, unsigned long ofs)
+static map_word flash_read(struct map_info *map, unsigned long ofs)
 {
-       return *(__u16 *)(map->map_priv_1 + ofs);
-}
-
-static __u32 flash_read32(struct map_info *map, unsigned long ofs)
-{
-       return *(volatile unsigned int *)(map->map_priv_1 + ofs);
+       map_word tmp;
+       tmp.x[0] = *(flash_data *)(map->map_priv_1 + ofs);
+       return tmp;
 }
 
 static void flash_copy_from(struct map_info *map, void *to,
@@ -182,19 +185,9 @@ static void flash_copy_from(struct map_info *map, void *to,
        memcpy(to, (void *)(map->map_priv_1 + from), len);
 }
 
-static void flash_write8(struct map_info *map, __u8 d, unsigned long adr)
-{
-       *(__u8 *)(map->map_priv_1 + adr) = d;
-}
-
-static void flash_write16(struct map_info *map, __u16 d, unsigned long adr)
-{
-       *(__u16 *)(map->map_priv_1 + adr) = d;
-}
-
-static void flash_write32(struct map_info *map, __u32 d, unsigned long adr)
+static void flash_write(struct map_info *map, map_word d, unsigned long adr)
 {
-       *(__u32 *)(map->map_priv_1 + adr) = d;
+       *(flash_data *)(map->map_priv_1 + adr) = (flash_data)d.x[0];
 }
 
 /*
@@ -215,14 +208,10 @@ static void flash_write32(struct map_info *map, __u32 d, unsigned long adr)
 static struct map_info map_cse0 = {
        .name = "cse0",
        .size = MEM_CSE0_SIZE,
-       .buswidth = CONFIG_ETRAX_FLASH_BUSWIDTH,
-       .read8 = flash_read8,
-       .read16 = flash_read16,
-       .read32 = flash_read32,
+       .bankwidth = CONFIG_ETRAX_FLASH_BUSWIDTH,
+       .read = flash_read,
        .copy_from = flash_copy_from,
-       .write8 = flash_write8,
-       .write16 = flash_write16,
-       .write32 = flash_write32,
+       .write = flash_write,
        .map_priv_1 = FLASH_UNCACHED_ADDR
 };
 
@@ -235,14 +224,10 @@ static struct map_info map_cse0 = {
 static struct map_info map_cse1 = {
        .name = "cse1",
        .size = MEM_CSE1_SIZE,
-       .buswidth = CONFIG_ETRAX_FLASH_BUSWIDTH,
-       .read8 = flash_read8,
-       .read16 = flash_read16,
-       .read32 = flash_read32,
+       .bankwidth = CONFIG_ETRAX_FLASH_BUSWIDTH,
+       .read = flash_read,
        .copy_from = flash_copy_from,
-       .write8 = flash_write8,
-       .write16 = flash_write16,
-       .write32 = flash_write32,
+       .write = flash_write,
        .map_priv_1 = FLASH_UNCACHED_ADDR + MEM_CSE0_SIZE
 };