diff options
Diffstat (limited to 'drivers/mtd/maps/gpio-addr-flash.c')
| -rw-r--r-- | drivers/mtd/maps/gpio-addr-flash.c | 27 | 
1 files changed, 10 insertions, 17 deletions
diff --git a/drivers/mtd/maps/gpio-addr-flash.c b/drivers/mtd/maps/gpio-addr-flash.c index af5707a8020..7568c5f8b8a 100644 --- a/drivers/mtd/maps/gpio-addr-flash.c +++ b/drivers/mtd/maps/gpio-addr-flash.c @@ -155,9 +155,7 @@ static void gf_copy_to(struct map_info *map, unsigned long to, const void *from,  	memcpy_toio(map->virt + (to % state->win_size), from, len);  } -#ifdef CONFIG_MTD_PARTITIONS  static const char *part_probe_types[] = { "cmdlinepart", "RedBoot", NULL }; -#endif  /**   * gpio_flash_probe() - setup a mapping for a GPIO assisted flash @@ -189,7 +187,7 @@ static const char *part_probe_types[] = { "cmdlinepart", "RedBoot", NULL };   */  static int __devinit gpio_flash_probe(struct platform_device *pdev)  { -	int ret; +	int nr_parts;  	size_t i, arr_size;  	struct physmap_flash_data *pdata;  	struct resource *memory; @@ -254,24 +252,21 @@ static int __devinit gpio_flash_probe(struct platform_device *pdev)  		return -ENXIO;  	} -#ifdef CONFIG_MTD_PARTITIONS -	ret = parse_mtd_partitions(state->mtd, part_probe_types, &pdata->parts, 0); -	if (ret > 0) { +	nr_parts = parse_mtd_partitions(state->mtd, part_probe_types, +					&pdata->parts, 0); +	if (nr_parts > 0) {  		pr_devinit(KERN_NOTICE PFX "Using commandline partition definition\n"); -		add_mtd_partitions(state->mtd, pdata->parts, ret);  		kfree(pdata->parts); -  	} else if (pdata->nr_parts) {  		pr_devinit(KERN_NOTICE PFX "Using board partition definition\n"); -		add_mtd_partitions(state->mtd, pdata->parts, pdata->nr_parts); - -	} else -#endif -	{ +		nr_parts = pdata->nr_parts; +	} else {  		pr_devinit(KERN_NOTICE PFX "no partition info available, registering whole flash at once\n"); -		add_mtd_device(state->mtd); +		nr_parts = 0;  	} +	mtd_device_register(state->mtd, pdata->parts, nr_parts); +  	return 0;  } @@ -282,9 +277,7 @@ static int __devexit gpio_flash_remove(struct platform_device *pdev)  	do {  		gpio_free(state->gpio_addrs[i]);  	} while (++i < state->gpio_count); -#ifdef CONFIG_MTD_PARTITIONS -	del_mtd_partitions(state->mtd); -#endif +	mtd_device_unregister(state->mtd);  	map_destroy(state->mtd);  	kfree(state);  	return 0;  |