[MTD] Add platform support for NAND
Linux-MTD Mailing List
linux-mtd at lists.infradead.org
Tue May 23 06:59:02 EDT 2006
Commit: 41796c2ea9b74cdf3bc2c368193d15b8ae8950ca
Parent: a36ed2995c56d4f858ecb524a78837473e7115ae
Author: Thomas Gleixner <tglx at cruncher.tec.linutronix.de>
AuthorDate: Tue May 23 11:38:59 2006 +0200
Commit: Thomas Gleixner <tglx at cruncher.tec.linutronix.de>
CommitDate: Tue May 23 11:38:59 2006 +0200
[MTD] Add platform support for NAND
Add the data structures necessary to provide platform device support
for NAND
Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
include/linux/mtd/nand.h | 47 ++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 47 insertions(+), 0 deletions(-)
diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h
index b8792be..05c6ecc 100644
--- a/include/linux/mtd/nand.h
+++ b/include/linux/mtd/nand.h
@@ -510,4 +510,51 @@ extern int nand_do_read_ecc (struct mtd_
#define NAND_SMALL_BADBLOCK_POS 5
#define NAND_LARGE_BADBLOCK_POS 0
+/**
+ * struct platform_nand_chip - chip level device structure
+ *
+ * @nr_chips: max. number of chips to scan for
+ * @chip_offs: chip number offset
+ * @nr_partitions: number of partitions pointed to be partitoons (or zero)
+ * @partitions: mtd partition list
+ * @chip_delay: R/B delay value in us
+ * @options: Option flags, e.g. 16bit buswidth
+ * @priv: hardware controller specific settings
+ */
+struct platform_nand_chip {
+ int nr_chips;
+ int chip_offset;
+ int nr_partitions;
+ struct mtd_partition *partitions;
+ int chip_delay;
+ unsigned int options;
+ void *priv;
+};
+
+/**
+ * struct platform_nand_ctrl - controller level device structure
+ *
+ * @hwcontrol: platform specific hardware control structure
+ * @dev_ready: platform specific function to read ready/busy pin
+ * @select_chip: platform specific chip select function
+ * @priv_data: private data to transport driver specific settings
+ *
+ * All fields are optional and depend on the hardware driver requirements
+ */
+struct platform_nand_ctrl {
+ void (*hwcontrol)(struct mtd_info *mtd, int cmd);
+ int (*dev_ready)(struct mtd_info *mtd);
+ void (*select_chip)(struct mtd_info *mtd, int chip);
+ void *priv;
+};
+
+/* Some helpers to access the data structures */
+static inline
+struct platform_nand_chip *get_platform_nandchip(struct mtd_info *mtd)
+{
+ struct nand_chip *chip = mtd->priv;
+
+ return chip->priv;
+}
+
#endif /* __LINUX_MTD_NAND_H */
More information about the linux-mtd-cvs
mailing list