Commit 68640c2a authored by Richard Cochran's avatar Richard Cochran Committed by David Woodhouse

mtd: ixp4xx: add support for static flash partitions

This patch adds support for static flash partitioning from a platform
device. Also, we clean up some weirdness where statements were separated
by commas instead of semicolons. While we are at it, fix some minor bad
white space, too.
Signed-off-by: default avatarRichard Cochran <richard.cochran@omicron.at>
Signed-off-by: default avatarDavid Woodhouse <David.Woodhouse@intel.com>
parent 04dd0d3a
...@@ -118,7 +118,7 @@ static void ixp4xx_copy_from(struct map_info *map, void *to, ...@@ -118,7 +118,7 @@ static void ixp4xx_copy_from(struct map_info *map, void *to,
*dest++ = BYTE1(data); *dest++ = BYTE1(data);
src += 2; src += 2;
len -= 2; len -= 2;
} }
if (len > 0) if (len > 0)
*dest++ = BYTE0(flash_read16(src)); *dest++ = BYTE0(flash_read16(src));
...@@ -185,6 +185,8 @@ static int ixp4xx_flash_probe(struct platform_device *dev) ...@@ -185,6 +185,8 @@ static int ixp4xx_flash_probe(struct platform_device *dev)
{ {
struct flash_platform_data *plat = dev->dev.platform_data; struct flash_platform_data *plat = dev->dev.platform_data;
struct ixp4xx_flash_info *info; struct ixp4xx_flash_info *info;
const char *part_type = NULL;
int nr_parts = 0;
int err = -1; int err = -1;
if (!plat) if (!plat)
...@@ -218,9 +220,9 @@ static int ixp4xx_flash_probe(struct platform_device *dev) ...@@ -218,9 +220,9 @@ static int ixp4xx_flash_probe(struct platform_device *dev)
*/ */
info->map.bankwidth = 2; info->map.bankwidth = 2;
info->map.name = dev_name(&dev->dev); info->map.name = dev_name(&dev->dev);
info->map.read = ixp4xx_read16, info->map.read = ixp4xx_read16;
info->map.write = ixp4xx_probe_write16, info->map.write = ixp4xx_probe_write16;
info->map.copy_from = ixp4xx_copy_from, info->map.copy_from = ixp4xx_copy_from;
info->res = request_mem_region(dev->resource->start, info->res = request_mem_region(dev->resource->start,
resource_size(dev->resource), resource_size(dev->resource),
...@@ -248,11 +250,28 @@ static int ixp4xx_flash_probe(struct platform_device *dev) ...@@ -248,11 +250,28 @@ static int ixp4xx_flash_probe(struct platform_device *dev)
info->mtd->owner = THIS_MODULE; info->mtd->owner = THIS_MODULE;
/* Use the fast version */ /* Use the fast version */
info->map.write = ixp4xx_write16, info->map.write = ixp4xx_write16;
#ifdef CONFIG_MTD_PARTITIONS
nr_parts = parse_mtd_partitions(info->mtd, probes, &info->partitions,
dev->resource->start);
#endif
if (nr_parts > 0) {
part_type = "dynamic";
} else {
info->partitions = plat->parts;
nr_parts = plat->nr_parts;
part_type = "static";
}
if (nr_parts == 0) {
printk(KERN_NOTICE "IXP4xx flash: no partition info "
"available, registering whole flash\n");
err = add_mtd_device(info->mtd);
} else {
printk(KERN_NOTICE "IXP4xx flash: using %s partition "
"definition\n", part_type);
err = add_mtd_partitions(info->mtd, info->partitions, nr_parts);
err = parse_mtd_partitions(info->mtd, probes, &info->partitions, dev->resource->start);
if (err > 0) {
err = add_mtd_partitions(info->mtd, info->partitions, err);
if(err) if(err)
printk(KERN_ERR "Could not parse partitions\n"); printk(KERN_ERR "Could not parse partitions\n");
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment