mirror of https://gitee.com/openkylin/linux.git
mtd: nand: allow to set only one of ECC size and ECC strength from DT
Currently, it is valid to specify both "nand-ecc-step-size" and "nand-ecc-strength", but not allowed to set only one of them. This requirement has a conflict with "nand-ecc-maximize"; this flag is used when you want the driver to choose the best ECC strength. If "nand-ecc-maximize" is set, "nand-ecc-strength" is very likely to be unset. It would be possible to make the if-conditional more complex by adding the check for the NAND_ECC_MAXIMIZE flag, but I chose to drop the check entirely. I thought of the situation where the hardware has a fixed ECC step size (so it can be hard-coded in the driver), whereas the ECC strength is configurable by software. In that case, we may want to only set "nand-ecc-strength" (or "nand-ecc-maximize") in DT. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
This commit is contained in:
parent
33575b25ff
commit
9fe4b66efb
|
@ -4225,12 +4225,6 @@ static int nand_dt_init(struct nand_chip *chip)
|
||||||
ecc_strength = of_get_nand_ecc_strength(dn);
|
ecc_strength = of_get_nand_ecc_strength(dn);
|
||||||
ecc_step = of_get_nand_ecc_step_size(dn);
|
ecc_step = of_get_nand_ecc_step_size(dn);
|
||||||
|
|
||||||
if ((ecc_step >= 0 && !(ecc_strength >= 0)) ||
|
|
||||||
(!(ecc_step >= 0) && ecc_strength >= 0)) {
|
|
||||||
pr_err("must set both strength and step size in DT\n");
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ecc_mode >= 0)
|
if (ecc_mode >= 0)
|
||||||
chip->ecc.mode = ecc_mode;
|
chip->ecc.mode = ecc_mode;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue