mtd: rawnand: Separate the ECC engine type and the ECC byte placement
The use of "syndrome" placement should not be encoded in the ECC engine mode/type. Create a "placement" field in NAND chip and change all occurrences of the NAND_ECC_HW_SYNDROME enumeration to be just NAND_ECC_HW and possibly a placement entry like NAND_ECC_PLACEMENT_INTERLEAVED. Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com> Link: https://lore.kernel.org/linux-mtd/20200827085208.16276-10-miquel.raynal@bootlin.com
This commit is contained in:
@@ -304,6 +304,7 @@ static const struct nand_ecc_caps __name = { \
|
||||
/**
|
||||
* struct nand_ecc_ctrl - Control structure for ECC
|
||||
* @mode: ECC mode
|
||||
* @placement: OOB bytes placement
|
||||
* @algo: ECC algorithm
|
||||
* @steps: number of ECC steps per page
|
||||
* @size: data bytes per ECC step
|
||||
@@ -331,7 +332,7 @@ static const struct nand_ecc_caps __name = { \
|
||||
* 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
|
||||
* NAND_ECC_PLACEMENT_INTERLEAVED 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
|
||||
@@ -339,7 +340,7 @@ static const struct nand_ecc_caps __name = { \
|
||||
* 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
|
||||
* NAND_ECC_PLACEMENT_INTERLEAVED 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
|
||||
@@ -356,6 +357,7 @@ static const struct nand_ecc_caps __name = { \
|
||||
*/
|
||||
struct nand_ecc_ctrl {
|
||||
enum nand_ecc_mode mode;
|
||||
enum nand_ecc_placement placement;
|
||||
enum nand_ecc_algo algo;
|
||||
int steps;
|
||||
int size;
|
||||
|
Reference in New Issue
Block a user