diff options
Diffstat (limited to 'drivers/mtd/devices/lart.c')
| -rw-r--r-- | drivers/mtd/devices/lart.c | 44 | 
1 files changed, 10 insertions, 34 deletions
diff --git a/drivers/mtd/devices/lart.c b/drivers/mtd/devices/lart.c index caf604167f0..82bd00af5cc 100644 --- a/drivers/mtd/devices/lart.c +++ b/drivers/mtd/devices/lart.c @@ -34,9 +34,6 @@  /* debugging */  //#define LART_DEBUG -/* partition support */ -#define HAVE_PARTITIONS -  #include <linux/kernel.h>  #include <linux/module.h>  #include <linux/types.h> @@ -44,9 +41,7 @@  #include <linux/errno.h>  #include <linux/string.h>  #include <linux/mtd/mtd.h> -#ifdef HAVE_PARTITIONS  #include <linux/mtd/partitions.h> -#endif  #ifndef CONFIG_SA1100_LART  #error This is for LART architecture only @@ -353,7 +348,7 @@ static inline int erase_block (__u32 offset)     /* put the flash back into command mode */     write32 (DATA_TO_FLASH (READ_ARRAY),offset); -   /* was the erase successfull? */ +   /* was the erase successful? */     if ((status & STATUS_ERASE_ERR))  	 {  		printk (KERN_WARNING "%s: erase error at address 0x%.8x.\n",module_name,offset); @@ -372,9 +367,6 @@ static int flash_erase (struct mtd_info *mtd,struct erase_info *instr)     printk (KERN_DEBUG "%s(addr = 0x%.8x, len = %d)\n", __func__, instr->addr, instr->len);  #endif -   /* sanity checks */ -   if (instr->addr + instr->len > mtd->size) return (-EINVAL); -     /*  	* check that both start and end of the requested erase are  	* aligned with the erasesize at the appropriate addresses. @@ -445,10 +437,6 @@ static int flash_read (struct mtd_info *mtd,loff_t from,size_t len,size_t *retle     printk (KERN_DEBUG "%s(from = 0x%.8x, len = %d)\n", __func__, (__u32)from, len);  #endif -   /* sanity checks */ -   if (!len) return (0); -   if (from + len > mtd->size) return (-EINVAL); -     /* we always read len bytes */     *retlen = len; @@ -508,7 +496,7 @@ static inline int write_dword (__u32 offset,__u32 x)     /* put the flash back into command mode */     write32 (DATA_TO_FLASH (READ_ARRAY),offset); -   /* was the write successfull? */ +   /* was the write successful? */     if ((status & STATUS_PGM_ERR) || read32 (offset) != x)  	 {  		printk (KERN_WARNING "%s: write error at address 0x%.8x.\n",module_name,offset); @@ -527,11 +515,8 @@ static int flash_write (struct mtd_info *mtd,loff_t to,size_t len,size_t *retlen     printk (KERN_DEBUG "%s(to = 0x%.8x, len = %d)\n", __func__, (__u32)to, len);  #endif -   *retlen = 0; -     /* sanity checks */     if (!len) return (0); -   if (to + len > mtd->size) return (-EINVAL);     /* first, we write a 0xFF.... padded byte until we reach a dword boundary */     if (to & (BUSWIDTH - 1)) @@ -598,7 +583,6 @@ static struct mtd_erase_region_info erase_regions[] = {  	}  }; -#ifdef HAVE_PARTITIONS  static struct mtd_partition lart_partitions[] = {  	/* blob */  	{ @@ -619,7 +603,7 @@ static struct mtd_partition lart_partitions[] = {  		.size	= INITRD_LEN,		/* MTDPART_SIZ_FULL */  	}  }; -#endif +#define NUM_PARTITIONS ARRAY_SIZE(lart_partitions)  static int __init lart_flash_init (void)  { @@ -636,14 +620,15 @@ static int __init lart_flash_init (void)     mtd.name = module_name;     mtd.type = MTD_NORFLASH;     mtd.writesize = 1; +   mtd.writebufsize = 4;     mtd.flags = MTD_CAP_NORFLASH;     mtd.size = FLASH_BLOCKSIZE_PARAM * FLASH_NUMBLOCKS_16m_PARAM + FLASH_BLOCKSIZE_MAIN * FLASH_NUMBLOCKS_16m_MAIN;     mtd.erasesize = FLASH_BLOCKSIZE_MAIN;     mtd.numeraseregions = ARRAY_SIZE(erase_regions);     mtd.eraseregions = erase_regions; -   mtd.erase = flash_erase; -   mtd.read = flash_read; -   mtd.write = flash_write; +   mtd._erase = flash_erase; +   mtd._read = flash_read; +   mtd._write = flash_write;     mtd.owner = THIS_MODULE;  #ifdef LART_DEBUG @@ -668,7 +653,6 @@ static int __init lart_flash_init (void)  			   result,mtd.eraseregions[result].erasesize,mtd.eraseregions[result].erasesize / 1024,  			   result,mtd.eraseregions[result].numblocks); -#ifdef HAVE_PARTITIONS     printk ("\npartitions = %d\n", ARRAY_SIZE(lart_partitions));     for (result = 0; result < ARRAY_SIZE(lart_partitions); result++) @@ -681,24 +665,16 @@ static int __init lart_flash_init (void)  			 result,lart_partitions[result].offset,  			 result,lart_partitions[result].size,lart_partitions[result].size / 1024);  #endif -#endif -#ifndef HAVE_PARTITIONS -   result = add_mtd_device (&mtd); -#else -   result = add_mtd_partitions (&mtd,lart_partitions, ARRAY_SIZE(lart_partitions)); -#endif +   result = mtd_device_register(&mtd, lart_partitions, +                                ARRAY_SIZE(lart_partitions));     return (result);  }  static void __exit lart_flash_exit (void)  { -#ifndef HAVE_PARTITIONS -   del_mtd_device (&mtd); -#else -   del_mtd_partitions (&mtd); -#endif +   mtd_device_unregister(&mtd);  }  module_init (lart_flash_init);  | 
