ipq40xx: fix apss cpu overclocking spam
[openwrt/openwrt.git] / target / linux / ipq40xx / patches-4.14 / 030-mtd-nand-Use-standard-large-page-OOB-layout-when-usi.patch
1 From 882fd1577cbe7812ae3a48988180c5f0fda475ca Mon Sep 17 00:00:00 2001
2 From: Miquel Raynal <miquel.raynal@free-electrons.com>
3 Date: Sat, 26 Aug 2017 17:19:15 +0200
4 Subject: [PATCH] mtd: nand: Use standard large page OOB layout when using
5 NAND_ECC_NONE
6
7 Use the core's large page OOB layout functions when not reserving any
8 space for ECC bytes in the OOB layout. Fix ->nand_ooblayout_ecc_lp()
9 to return -ERANGE instead of a zero length in this case.
10
11 Signed-off-by: Miquel Raynal <miquel.raynal@free-electrons.com>
12 Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
13 ---
14 drivers/mtd/nand/nand_base.c | 15 ++++++++++++++-
15 1 file changed, 14 insertions(+), 1 deletion(-)
16
17 --- a/drivers/mtd/nand/nand_base.c
18 +++ b/drivers/mtd/nand/nand_base.c
19 @@ -115,7 +115,7 @@ static int nand_ooblayout_ecc_lp(struct
20 struct nand_chip *chip = mtd_to_nand(mtd);
21 struct nand_ecc_ctrl *ecc = &chip->ecc;
22
23 - if (section)
24 + if (section || !ecc->total)
25 return -ERANGE;
26
27 oobregion->length = ecc->total;
28 @@ -4707,6 +4707,19 @@ int nand_scan_tail(struct mtd_info *mtd)
29 mtd_set_ooblayout(mtd, &nand_ooblayout_lp_hamming_ops);
30 break;
31 default:
32 + /*
33 + * Expose the whole OOB area to users if ECC_NONE
34 + * is passed. We could do that for all kind of
35 + * ->oobsize, but we must keep the old large/small
36 + * page with ECC layout when ->oobsize <= 128 for
37 + * compatibility reasons.
38 + */
39 + if (ecc->mode == NAND_ECC_NONE) {
40 + mtd_set_ooblayout(mtd,
41 + &nand_ooblayout_lp_ops);
42 + break;
43 + }
44 +
45 WARN(1, "No oob scheme defined for oobsize %d\n",
46 mtd->oobsize);
47 ret = -EINVAL;