aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorDavid Woodhouse <dwmw2@infradead.org>2006-09-25 12:12:39 -0400
committerDavid Woodhouse <dwmw2@infradead.org>2006-09-25 12:12:39 -0400
commit956e944c7690ea994757a8cbedbb6241e1d9138f (patch)
treec2c4c3eead457d963583925bbf517f840d40db69 /include/linux
parent4bf63fcb83dc761853f69a77b15e47712689020b (diff)
[MTD NAND] Allow override of page read and write functions.
- allow high-level nand_write_page() function to be overridden - likewise low-level write_page_raw() and read_page_raw() functions - Clean up the abuse of chip->ecc.{write,read}_page() with MTD_OOB_RAW Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/mtd/nand.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h
index cd4fe9ae8622..2bcbcc896835 100644
--- a/include/linux/mtd/nand.h
+++ b/include/linux/mtd/nand.h
@@ -235,6 +235,8 @@ struct nand_hw_control {
235 * be provided if an hardware ECC is available 235 * be provided if an hardware ECC is available
236 * @calculate: function for ecc calculation or readback from ecc hardware 236 * @calculate: function for ecc calculation or readback from ecc hardware
237 * @correct: function for ecc correction, matching to ecc generator (sw/hw) 237 * @correct: function for ecc correction, matching to ecc generator (sw/hw)
238 * @read_page_raw: function to read a raw page without ECC
239 * @write_page_raw: function to write a raw page without ECC
238 * @read_page: function to read a page according to the ecc generator requirements 240 * @read_page: function to read a page according to the ecc generator requirements
239 * @write_page: function to write a page according to the ecc generator requirements 241 * @write_page: function to write a page according to the ecc generator requirements
240 * @read_oob: function to read chip OOB data 242 * @read_oob: function to read chip OOB data
@@ -256,6 +258,12 @@ struct nand_ecc_ctrl {
256 int (*correct)(struct mtd_info *mtd, uint8_t *dat, 258 int (*correct)(struct mtd_info *mtd, uint8_t *dat,
257 uint8_t *read_ecc, 259 uint8_t *read_ecc,
258 uint8_t *calc_ecc); 260 uint8_t *calc_ecc);
261 int (*read_page_raw)(struct mtd_info *mtd,
262 struct nand_chip *chip,
263 uint8_t *buf);
264 void (*write_page_raw)(struct mtd_info *mtd,
265 struct nand_chip *chip,
266 const uint8_t *buf);
259 int (*read_page)(struct mtd_info *mtd, 267 int (*read_page)(struct mtd_info *mtd,
260 struct nand_chip *chip, 268 struct nand_chip *chip,
261 uint8_t *buf); 269 uint8_t *buf);
@@ -344,6 +352,7 @@ struct nand_buffers {
344 * @priv: [OPTIONAL] pointer to private chip date 352 * @priv: [OPTIONAL] pointer to private chip date
345 * @errstat: [OPTIONAL] hardware specific function to perform additional error status checks 353 * @errstat: [OPTIONAL] hardware specific function to perform additional error status checks
346 * (determine if errors are correctable) 354 * (determine if errors are correctable)
355 * @write_page [REPLACEABLE] High-level page write function
347 */ 356 */
348 357
349struct nand_chip { 358struct nand_chip {
@@ -366,6 +375,8 @@ struct nand_chip {
366 void (*erase_cmd)(struct mtd_info *mtd, int page); 375 void (*erase_cmd)(struct mtd_info *mtd, int page);
367 int (*scan_bbt)(struct mtd_info *mtd); 376 int (*scan_bbt)(struct mtd_info *mtd);
368 int (*errstat)(struct mtd_info *mtd, struct nand_chip *this, int state, int status, int page); 377 int (*errstat)(struct mtd_info *mtd, struct nand_chip *this, int state, int status, int page);
378 int (*write_page)(struct mtd_info *mtd, struct nand_chip *chip,
379 const uint8_t *buf, int page, int cached, int raw);
369 380
370 int chip_delay; 381 int chip_delay;
371 unsigned int options; 382 unsigned int options;