Explorar o código

kernel: nmbm: add mediatek,bmt-mtd-overridden-oobsize property

This commit adds new "mediatek,bmt-mtd-overridden-oobsize" property. The
property helps avoid "NMBM configuration mismatch" error if mtd "OOB size"
is not equal to the "spare size" which is stored in the nmbm signature.

Signed-off-by: Mikhail Zhilkin <[email protected]>
Link: https://github.com/openwrt/openwrt/pull/17549
Signed-off-by: Robert Marko <[email protected]>
(cherry picked from commit e585ae70d4f2a563b3b0e430e15ee19ad25caeb5)
Signed-off-by: Mikhail Zhilkin <[email protected]>
Link: https://github.com/openwrt/openwrt/pull/17898
Signed-off-by: Hauke Mehrtens <[email protected]>
Mikhail Zhilkin hai 10 meses
pai
achega
37cc725b1a
Modificáronse 1 ficheiros con 9 adicións e 0 borrados
  1. 9 0
      target/linux/generic/files/drivers/mtd/nand/mtk_bmt.c

+ 9 - 0
target/linux/generic/files/drivers/mtd/nand/mtk_bmt.c

@@ -407,6 +407,7 @@ int mtk_bmt_attach(struct mtd_info *mtd)
 {
 	struct device_node *np;
 	int ret = 0;
+	u32 overridden_oobsize = 0;
 
 	if (bmtd.mtd)
 		return -ENOSPC;
@@ -431,6 +432,14 @@ int mtk_bmt_attach(struct mtd_info *mtd)
 	bmtd.mtd = mtd;
 	mtk_bmt_replace_ops(mtd);
 
+	if (!of_property_read_u32(np, "mediatek,bmt-mtd-overridden-oobsize",
+				  &overridden_oobsize))
+		if (overridden_oobsize < bmtd.mtd->oobsize) {
+			bmtd.mtd->oobsize = overridden_oobsize;
+			pr_info("NMBM: mtd OOB size has been overridden to %luB\n",
+				(long unsigned int)bmtd.mtd->oobsize);
+		}
+
 	bmtd.blk_size = mtd->erasesize;
 	bmtd.blk_shift = ffs(bmtd.blk_size) - 1;
 	bmtd.pg_size = mtd->writesize;