From 06ef911447fce6c3321e303e968dbb1945b23d38 Mon Sep 17 00:00:00 2001
From: =?utf8?q?Pali=20Roh=C3=A1r?= <pali@kernel.org>
Date: Mon, 4 Apr 2022 18:17:21 +0200
Subject: [PATCH] mtd: nand: raw: Add support for DT property nand-ecc-algo=bch
MIME-Version: 1.0
Content-Type: text/plain; charset=utf8
Content-Transfer-Encoding: 8bit

According to Linux kernel DT schema nand-controller.yaml, using DT property
nand-ecc-algo=bch is the correct way for specifying BCH as ECC algorithm.

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Priyanka Jain <priyanka.jain@nxp.com>
---
 drivers/mtd/nand/raw/nand_base.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/mtd/nand/raw/nand_base.c b/drivers/mtd/nand/raw/nand_base.c
index a007603df1..6f81257cf1 100644
--- a/drivers/mtd/nand/raw/nand_base.c
+++ b/drivers/mtd/nand/raw/nand_base.c
@@ -4598,6 +4598,12 @@ static int nand_dt_init(struct mtd_info *mtd, struct nand_chip *chip, ofnode nod
 			ecc_mode = NAND_ECC_SOFT_BCH;
 	}
 
+	if (ecc_mode == NAND_ECC_SOFT) {
+		str = ofnode_read_string(node, "nand-ecc-algo");
+		if (str && !strcmp(str, "bch"))
+			ecc_mode = NAND_ECC_SOFT_BCH;
+	}
+
 	ecc_strength = ofnode_read_s32_default(node,
 					       "nand-ecc-strength", -1);
 	ecc_step = ofnode_read_s32_default(node,
-- 
2.39.5