ARM: 6904/1: MTD: Add integrator-flash feature to physmap
In the process of moving platforms away from integrator-flash (aka armflash), add to physmap the few features that make armflash unique: - optionnal probing for the AFS partition type - init() and exit() methods, used by Integrator to control write access to the various onboard programmable components Signed-off-by: Marc Zyngier <marc.zyngier@arm.com> Acked-by: Catalin Marinas <catalin.marinas@arm.com> Acked-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com> Acked-by: David Woodhouse <dwmw2@infradead.org> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
committed by
Russell King
parent
c1d10d18c5
commit
b7281ca2a4
@@ -67,6 +67,10 @@ static int physmap_flash_remove(struct platform_device *dev)
|
|||||||
if (info->mtd[i] != NULL)
|
if (info->mtd[i] != NULL)
|
||||||
map_destroy(info->mtd[i]);
|
map_destroy(info->mtd[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (physmap_data->exit)
|
||||||
|
physmap_data->exit(dev);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,7 +81,11 @@ static const char *rom_probe_types[] = {
|
|||||||
"map_rom",
|
"map_rom",
|
||||||
NULL };
|
NULL };
|
||||||
#ifdef CONFIG_MTD_PARTITIONS
|
#ifdef CONFIG_MTD_PARTITIONS
|
||||||
static const char *part_probe_types[] = { "cmdlinepart", "RedBoot", NULL };
|
static const char *part_probe_types[] = { "cmdlinepart", "RedBoot",
|
||||||
|
#ifdef CONFIG_MTD_AFS_PARTS
|
||||||
|
"afs",
|
||||||
|
#endif
|
||||||
|
NULL };
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static int physmap_flash_probe(struct platform_device *dev)
|
static int physmap_flash_probe(struct platform_device *dev)
|
||||||
@@ -100,6 +108,12 @@ static int physmap_flash_probe(struct platform_device *dev)
|
|||||||
goto err_out;
|
goto err_out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (physmap_data->init) {
|
||||||
|
err = physmap_data->init(dev);
|
||||||
|
if (err)
|
||||||
|
goto err_out;
|
||||||
|
}
|
||||||
|
|
||||||
platform_set_drvdata(dev, info);
|
platform_set_drvdata(dev, info);
|
||||||
|
|
||||||
for (i = 0; i < dev->num_resources; i++) {
|
for (i = 0; i < dev->num_resources; i++) {
|
||||||
|
@@ -22,6 +22,8 @@ struct map_info;
|
|||||||
|
|
||||||
struct physmap_flash_data {
|
struct physmap_flash_data {
|
||||||
unsigned int width;
|
unsigned int width;
|
||||||
|
int (*init)(struct platform_device *);
|
||||||
|
void (*exit)(struct platform_device *);
|
||||||
void (*set_vpp)(struct map_info *, int);
|
void (*set_vpp)(struct map_info *, int);
|
||||||
unsigned int nr_parts;
|
unsigned int nr_parts;
|
||||||
unsigned int pfow_base;
|
unsigned int pfow_base;
|
||||||
|
Reference in New Issue
Block a user