|
@@ -628,6 +628,11 @@ struct nand_chip {
|
|
|
{ .name = (nm), {{ .dev_id = (devid) }}, .chipsize = (chipsz), \
|
|
|
.options = (opts) }
|
|
|
|
|
|
+#define NAND_ECC_INFO(_strength, _step) \
|
|
|
+ { .strength_ds = (_strength), .step_ds = (_step) }
|
|
|
+#define NAND_ECC_STRENGTH(type) ((type)->ecc.strength_ds)
|
|
|
+#define NAND_ECC_STEP(type) ((type)->ecc.step_ds)
|
|
|
+
|
|
|
/**
|
|
|
* struct nand_flash_dev - NAND Flash Device ID Structure
|
|
|
* @name: a human-readable name of the NAND chip
|
|
@@ -645,6 +650,12 @@ struct nand_chip {
|
|
|
* @options: stores various chip bit options
|
|
|
* @id_len: The valid length of the @id.
|
|
|
* @oobsize: OOB size
|
|
|
+ * @ecc.strength_ds: The ECC correctability from the datasheet, same as the
|
|
|
+ * @ecc_strength_ds in nand_chip{}.
|
|
|
+ * @ecc.step_ds: The ECC step required by the @ecc.strength_ds, same as the
|
|
|
+ * @ecc_step_ds in nand_chip{}, also from the datasheet.
|
|
|
+ * For example, the "4bit ECC for each 512Byte" can be set with
|
|
|
+ * NAND_ECC_INFO(4, 512).
|
|
|
*/
|
|
|
struct nand_flash_dev {
|
|
|
char *name;
|
|
@@ -661,6 +672,10 @@ struct nand_flash_dev {
|
|
|
unsigned int options;
|
|
|
uint16_t id_len;
|
|
|
uint16_t oobsize;
|
|
|
+ struct {
|
|
|
+ uint16_t strength_ds;
|
|
|
+ uint16_t step_ds;
|
|
|
+ } ecc;
|
|
|
};
|
|
|
|
|
|
/**
|