X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fcris%2Farch-v10%2Fdrivers%2Faxisflashmap.c;h=fb7d4855ea626bcc912784aed706d9ac81fadc78;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=3277019e352f83a6f3a1b6a3a90347cd5a9ac570;hpb=87fc8d1bb10cd459024a742c6a10961fefcef18f;p=linux-2.6.git diff --git a/arch/cris/arch-v10/drivers/axisflashmap.c b/arch/cris/arch-v10/drivers/axisflashmap.c index 3277019e3..fb7d4855e 100644 --- a/arch/cris/arch-v10/drivers/axisflashmap.c +++ b/arch/cris/arch-v10/drivers/axisflashmap.c @@ -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 * @@ -153,6 +156,14 @@ #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 };