diff options
Diffstat (limited to 'drivers/mtd/maps/impa7.c')
| -rw-r--r-- | drivers/mtd/maps/impa7.c | 63 | 
1 files changed, 12 insertions, 51 deletions
diff --git a/drivers/mtd/maps/impa7.c b/drivers/mtd/maps/impa7.c index 998a27da97f..15bbda03be6 100644 --- a/drivers/mtd/maps/impa7.c +++ b/drivers/mtd/maps/impa7.c @@ -15,10 +15,7 @@  #include <asm/io.h>  #include <linux/mtd/mtd.h>  #include <linux/mtd/map.h> - -#ifdef CONFIG_MTD_PARTITIONS  #include <linux/mtd/partitions.h> -#endif  #define WINDOW_ADDR0 0x00000000      /* physical properties of flash */  #define WINDOW_SIZE0 0x00800000 @@ -27,14 +24,12 @@  #define NUM_FLASHBANKS 2  #define BUSWIDTH     4 -/* can be { "cfi_probe", "jedec_probe", "map_rom", NULL } */ -#define PROBETYPES { "jedec_probe", NULL } -  #define MSG_PREFIX "impA7:"   /* prefix for our printk()'s */  #define MTDID      "impa7-%d"  /* for mtdparts= partitioning */  static struct mtd_info *impa7_mtd[NUM_FLASHBANKS]; +static const char * const rom_probe_types[] = { "jedec_probe", NULL };  static struct map_info impa7_map[NUM_FLASHBANKS] = {  	{ @@ -49,12 +44,10 @@ static struct map_info impa7_map[NUM_FLASHBANKS] = {  	},  }; -#ifdef CONFIG_MTD_PARTITIONS -  /*   * MTD partitioning stuff   */ -static struct mtd_partition static_partitions[] = +static struct mtd_partition partitions[] =  {  	{  		.name = "FileSystem", @@ -63,18 +56,9 @@ static struct mtd_partition static_partitions[] =  	},  }; -static int mtd_parts_nb[NUM_FLASHBANKS]; -static struct mtd_partition *mtd_parts[NUM_FLASHBANKS]; - -#endif - -static const char *probes[] = { "cmdlinepart", NULL }; -  static int __init init_impa7(void)  { -	static const char *rom_probe_types[] = PROBETYPES; -	const char **type; -	const char *part_type = 0; +	const char * const *type;  	int i;  	static struct { u_long addr; u_long size; } pt[NUM_FLASHBANKS] = {  	  { WINDOW_ADDR0, WINDOW_SIZE0 }, @@ -95,7 +79,7 @@ static int __init init_impa7(void)  		}  		simple_map_init(&impa7_map[i]); -		impa7_mtd[i] = 0; +		impa7_mtd[i] = NULL;  		type = rom_probe_types;  		for(; !impa7_mtd[i] && *type; type++) {  			impa7_mtd[i] = do_map_probe(*type, &impa7_map[i]); @@ -104,31 +88,12 @@ static int __init init_impa7(void)  		if (impa7_mtd[i]) {  			impa7_mtd[i]->owner = THIS_MODULE;  			devicesfound++; -#ifdef CONFIG_MTD_PARTITIONS -			mtd_parts_nb[i] = parse_mtd_partitions(impa7_mtd[i], -							       probes, -							       &mtd_parts[i], -							       0); -			if (mtd_parts_nb[i] > 0) { -				part_type = "command line"; -			} else { -				mtd_parts[i] = static_partitions; -				mtd_parts_nb[i] = ARRAY_SIZE(static_partitions); -				part_type = "static"; -			} - -			printk(KERN_NOTICE MSG_PREFIX -			       "using %s partition definition\n", -			       part_type); -			add_mtd_partitions(impa7_mtd[i], -					   mtd_parts[i], mtd_parts_nb[i]); -#else -			add_mtd_device(impa7_mtd[i]); - -#endif +			mtd_device_parse_register(impa7_mtd[i], NULL, NULL, +						  partitions, +						  ARRAY_SIZE(partitions)); +		} else { +			iounmap((void __iomem *)impa7_map[i].virt);  		} -		else -			iounmap((void *)impa7_map[i].virt);  	}  	return devicesfound == 0 ? -ENXIO : 0;  } @@ -138,14 +103,10 @@ static void __exit cleanup_impa7(void)  	int i;  	for (i=0; i<NUM_FLASHBANKS; i++) {  		if (impa7_mtd[i]) { -#ifdef CONFIG_MTD_PARTITIONS -			del_mtd_partitions(impa7_mtd[i]); -#else -			del_mtd_device(impa7_mtd[i]); -#endif +			mtd_device_unregister(impa7_mtd[i]);  			map_destroy(impa7_mtd[i]); -			iounmap((void *)impa7_map[i].virt); -			impa7_map[i].virt = 0; +			iounmap((void __iomem *)impa7_map[i].virt); +			impa7_map[i].virt = NULL;  		}  	}  }  | 
