struct_nand_ecc_ctrl (9) - Linux Manuals
struct_nand_ecc_ctrl: Control structure for ECC
NAME
struct_nand_ecc_ctrl - Control structure for ECC
SYNOPSIS
struct nand_ecc_ctrl { nand_ecc_modes_t mode; enum nand_ecc_algo algo; int steps; int size; int bytes; int total; int strength; int prepad; int postpad; unsigned int options; void * priv; void (* hwctl) (struct mtd_info *mtd, int mode); int (* calculate) (struct mtd_info *mtd, const uint8_t *dat,uint8_t *ecc_code); int (* correct) (struct mtd_info *mtd, uint8_t *dat, uint8_t *read_ecc,uint8_t *calc_ecc); int (* read_page_raw) (struct mtd_info *mtd, struct nand_chip *chip,uint8_t *buf, int oob_required, int page); int (* write_page_raw) (struct mtd_info *mtd, struct nand_chip *chip,const uint8_t *buf, int oob_required, int page); int (* read_page) (struct mtd_info *mtd, struct nand_chip *chip,uint8_t *buf, int oob_required, int page); int (* read_subpage) (struct mtd_info *mtd, struct nand_chip *chip,uint32_t offs, uint32_t len, uint8_t *buf, int page); int (* write_subpage) (struct mtd_info *mtd, struct nand_chip *chip,uint32_t offset, uint32_t data_len,const uint8_t *data_buf, int oob_required, int page); int (* write_page) (struct mtd_info *mtd, struct nand_chip *chip,const uint8_t *buf, int oob_required, int page); int (* write_oob_raw) (struct mtd_info *mtd, struct nand_chip *chip,int page); int (* read_oob_raw) (struct mtd_info *mtd, struct nand_chip *chip,int page); int (* read_oob) (struct mtd_info *mtd, struct nand_chip *chip, int page); int (* write_oob) (struct mtd_info *mtd, struct nand_chip *chip,int page); };
MEMBERS
mode
- ECC mode
algo
- ECC algorithm
steps
- number of ECC steps per page
size
- data bytes per ECC step
bytes
- ECC bytes per step
total
- total number of ECC bytes per page
strength
- max number of correctible bits per ECC step
prepad
- padding information for syndrome based ECC generators
postpad
- padding information for syndrome based ECC generators
options
- ECC specific options (see NAND_ECC_XXX flags defined above)
priv
- pointer to private ECC control data
hwctl
- function to control hardware ECC generator. Must only be provided if an hardware ECC is available
calculate
- function for ECC calculation or readback from ECC hardware
correct
- function for ECC correction, matching to ECC generator (sw/hw). Should return a positive number representing the number of corrected bitflips, -EBADMSG if the number of bitflips exceed ECC strength, or any other error code if the error is not directly related to correction. If -EBADMSG is returned the input buffers should be left untouched.
read_page_raw
- function to read a raw page without ECC. This function should hide the specific layout used by the ECC controller and always return contiguous in-band and out-of-band data even if they're not stored contiguously on the NAND chip (e.g. NAND_ECC_HW_SYNDROME interleaves in-band and out-of-band data).
write_page_raw
- function to write a raw page without ECC. This function should hide the specific layout used by the ECC controller and consider the passed data as contiguous in-band and out-of-band data. ECC controller is responsible for doing the appropriate transformations to adapt to its specific layout (e.g. NAND_ECC_HW_SYNDROME interleaves in-band and out-of-band data).
read_page
- function to read a page according to the ECC generator requirements; returns maximum number of bitflips corrected in any single ECC step, 0 if bitflips uncorrectable, -EIO hw error
read_subpage
- function to read parts of the page covered by ECC; returns same as read_page
write_subpage
- function to write parts of the page covered by ECC.
write_page
- function to write a page according to the ECC generator requirements.
write_oob_raw
- function to write chip OOB data without ECC
read_oob_raw
- function to read chip OOB data without ECC
read_oob
- function to read chip OOB data
write_oob
- function to write chip OOB data
AUTHOR
Thomas Gleixner <tglx [at] linutronix.de>
- Author.
COPYRIGHT