Commit f36e20c01ad0104688f2eaebdf2213e749929c97

Authored by H Hartley Sweeten
Committed by David Woodhouse
1 parent bf95efd41b

mtd: plat_nand: allow platform to set partitions

Add optional callback to allow platform to initialize partitions.

Static partitions on a nand device could vary depending on the size of the
device.  This patch allows an optional platform callback to be used to
setup this partition information at runtime.

Scan order is:
	1) chip.part_probe_types
	2) chip.set_parts
	3) chip.partitions
	4) full mtd device (fallback for no partitions)

Some of the existing nand drivers could possibly be replaced by the
plat_nand driver by using this patch.  These include autcpu12.c and
ts7250.c drivers.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>

Showing 2 changed files with 5 additions and 0 deletions Side-by-side Diff

drivers/mtd/nand/plat_nand.c
... ... @@ -95,6 +95,8 @@
95 95 return 0;
96 96 }
97 97 }
  98 + if (pdata->chip.set_parts)
  99 + pdata->chip.set_parts(data->mtd.size, &pdata->chip);
98 100 if (pdata->chip.partitions) {
99 101 data->parts = pdata->chip.partitions;
100 102 res = add_mtd_partitions(&data->mtd, data->parts,
include/linux/mtd/nand.h
... ... @@ -563,6 +563,7 @@
563 563 * @options: Option flags, e.g. 16bit buswidth
564 564 * @ecclayout: ecc layout info structure
565 565 * @part_probe_types: NULL-terminated array of probe types
  566 + * @set_parts: platform specific function to set partitions
566 567 * @priv: hardware controller specific settings
567 568 */
568 569 struct platform_nand_chip {
... ... @@ -574,6 +575,8 @@
574 575 int chip_delay;
575 576 unsigned int options;
576 577 const char **part_probe_types;
  578 + void (*set_parts)(uint64_t size,
  579 + struct platform_nand_chip *chip);
577 580 void *priv;
578 581 };
579 582