mirror of
https://github.com/openwrt/openwrt.git
synced 2025-01-10 06:52:53 +00:00
29 lines
1.0 KiB
Diff
29 lines
1.0 KiB
Diff
|
The nand-ecc-mode DT binding is depracated but the new bindings are
|
||
|
not supported by kernel 5.4. Based on a fix in the kernel to not
|
||
|
overwrite the DT ECC settings, the DT needs to be updated and moves
|
||
|
to the new DT binding.
|
||
|
Since the DT is shared between kernel 5.4 and 5.10, this patch is
|
||
|
an interim solution to allow to use the new DT bindings in kernel 5.4.
|
||
|
It should be removed when moving away from kernel 5.4.
|
||
|
--- a/drivers/mtd/nand/raw/nand_base.c
|
||
|
+++ b/drivers/mtd/nand/raw/nand_base.c
|
||
|
@@ -4851,10 +4851,17 @@ static int of_get_nand_ecc_mode(struct d
|
||
|
{
|
||
|
const char *pm;
|
||
|
int err, i;
|
||
|
+ struct device_node *eng_np;
|
||
|
|
||
|
err = of_property_read_string(np, "nand-ecc-mode", &pm);
|
||
|
- if (err < 0)
|
||
|
+ if (err < 0) {
|
||
|
+ if (of_property_read_bool(np, "nand-use-soft-ecc-engine"))
|
||
|
+ return NAND_ECC_SOFT;
|
||
|
+ eng_np = of_parse_phandle(np, "nand-ecc-engine", 0);
|
||
|
+ if (eng_np && (eng_np == np))
|
||
|
+ return NAND_ECC_ON_DIE;
|
||
|
return err;
|
||
|
+ }
|
||
|
|
||
|
for (i = 0; i < ARRAY_SIZE(nand_ecc_modes); i++)
|
||
|
if (!strcasecmp(pm, nand_ecc_modes[i]))
|