diff options
| author | Thomas Gleixner <tglx@cruncher.tec.linutronix.de> | 2006-05-25 04:04:31 -0400 |
|---|---|---|
| committer | David Woodhouse <dwmw2@infradead.org> | 2006-05-25 07:45:27 -0400 |
| commit | 9577f44a899cf4acb9e381c8946307b72153cd15 (patch) | |
| tree | 0e3ef3fd6a094da30584c8fc06483f0fff3cda4f /include/linux/mtd | |
| parent | 7fac464868ec5d80019fa549b8b4516dd1dc9d5c (diff) | |
[MTD] NAND Add read/write function pointers to struct nand_ecc_ctrl
Add read/write function pointers to struct nand_ecc_ctrl to
prepare the modulaization of nand_read/write functions. The
current implementation handles every type of ecc mode
software/hardware and all kinds of strange ecc placement
schemes in one switch/if construct. Thats too complex to
maintain and too inflexible to expand. Modularization will
also shorten the code pathes of the read/write functions.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'include/linux/mtd')
| -rw-r--r-- | include/linux/mtd/nand.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h index 2fd85d55803d..daacde5132fe 100644 --- a/include/linux/mtd/nand.h +++ b/include/linux/mtd/nand.h | |||
| @@ -233,16 +233,23 @@ struct nand_hw_control { | |||
| 233 | * @steps: number of ecc steps per page | 233 | * @steps: number of ecc steps per page |
| 234 | * @size: data bytes per ecc step | 234 | * @size: data bytes per ecc step |
| 235 | * @bytes: ecc bytes per step | 235 | * @bytes: ecc bytes per step |
| 236 | * @total: total number of ecc bytes per page | ||
| 237 | * @prepad: padding information for syndrome based ecc generators | ||
| 238 | * @postpad: padding information for syndrome based ecc generators | ||
| 236 | * @hwctl: function to control hardware ecc generator. Must only | 239 | * @hwctl: function to control hardware ecc generator. Must only |
| 237 | * be provided if an hardware ECC is available | 240 | * be provided if an hardware ECC is available |
| 238 | * @calculate: function for ecc calculation or readback from ecc hardware | 241 | * @calculate: function for ecc calculation or readback from ecc hardware |
| 239 | * @correct: function for ecc correction, matching to ecc generator (sw/hw) | 242 | * @correct: function for ecc correction, matching to ecc generator (sw/hw) |
| 243 | * @write_page: function to write a page according to the ecc generator requirements | ||
| 240 | */ | 244 | */ |
| 241 | struct nand_ecc_ctrl { | 245 | struct nand_ecc_ctrl { |
| 242 | nand_ecc_modes_t mode; | 246 | nand_ecc_modes_t mode; |
| 243 | int steps; | 247 | int steps; |
| 244 | int size; | 248 | int size; |
| 245 | int bytes; | 249 | int bytes; |
| 250 | int total; | ||
| 251 | int prepad; | ||
| 252 | int postpad; | ||
| 246 | void (*hwctl)(struct mtd_info *mtd, int mode); | 253 | void (*hwctl)(struct mtd_info *mtd, int mode); |
| 247 | int (*calculate)(struct mtd_info *mtd, | 254 | int (*calculate)(struct mtd_info *mtd, |
| 248 | const uint8_t *dat, | 255 | const uint8_t *dat, |
| @@ -250,6 +257,12 @@ struct nand_ecc_ctrl { | |||
| 250 | int (*correct)(struct mtd_info *mtd, uint8_t *dat, | 257 | int (*correct)(struct mtd_info *mtd, uint8_t *dat, |
| 251 | uint8_t *read_ecc, | 258 | uint8_t *read_ecc, |
| 252 | uint8_t *calc_ecc); | 259 | uint8_t *calc_ecc); |
| 260 | int (*read_page)(struct mtd_info *mtd, | ||
| 261 | struct nand_chip *chip, | ||
| 262 | uint8_t *buf); | ||
| 263 | int (*write_page)(struct mtd_info *mtd, | ||
| 264 | struct nand_chip *chip, | ||
| 265 | uint8_t *buf, int cached); | ||
| 253 | }; | 266 | }; |
| 254 | 267 | ||
| 255 | /** | 268 | /** |
