From 716ca530e1c4515d8683c9d5be3d56b301758b66 Mon Sep 17 00:00:00 2001 From: James <> Date: Wed, 4 Nov 2015 11:49:21 +0000 Subject: trunk-47381 --- ...24-mtd-nand-sunxi-fallback-to-chip-config.patch | 65 ++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 target/linux/sunxi/patches-4.1/124-mtd-nand-sunxi-fallback-to-chip-config.patch (limited to 'target/linux/sunxi/patches-4.1/124-mtd-nand-sunxi-fallback-to-chip-config.patch') diff --git a/target/linux/sunxi/patches-4.1/124-mtd-nand-sunxi-fallback-to-chip-config.patch b/target/linux/sunxi/patches-4.1/124-mtd-nand-sunxi-fallback-to-chip-config.patch new file mode 100644 index 0000000..cba30d2 --- /dev/null +++ b/target/linux/sunxi/patches-4.1/124-mtd-nand-sunxi-fallback-to-chip-config.patch @@ -0,0 +1,65 @@ +From de994d9c849ca0ca020fccfa1916afcde7f313f2 Mon Sep 17 00:00:00 2001 +From: Boris BREZILLON +Date: Sun, 24 Aug 2014 10:40:44 +0200 +Subject: [PATCH] mtd: nand: sunxi: Fallback to chip config when partition + config is not available + +Fallback to chip config for partitions where ecc/rnd config are not +specified in the device tree. + +Signed-off-by: Boris BREZILLON +Signed-off-by: Hans de Goede +--- + drivers/mtd/nand/sunxi_nand.c | 27 ++++++++++++++++++--------- + 1 file changed, 18 insertions(+), 9 deletions(-) + +--- a/drivers/mtd/nand/sunxi_nand.c ++++ b/drivers/mtd/nand/sunxi_nand.c +@@ -1709,28 +1709,37 @@ static void sunxi_nand_part_release(stru + struct nand_part *sunxi_ofnandpart_parse(void *priv, struct mtd_info *master, + struct device_node *pp) + { ++ struct nand_chip *chip = master->priv; + struct sunxi_nand_part *part; + int ret; + + part = kzalloc(sizeof(*part), GFP_KERNEL); + part->part.release = sunxi_nand_part_release; + +- ret = sunxi_nand_ecc_init(master, &part->ecc, pp); +- if (ret) +- goto err; +- +- ret = sunxi_nand_rnd_init(master, &part->rnd, &part->ecc, pp); +- if (ret) { +- sunxi_nand_ecc_cleanup(&part->ecc); +- goto err; ++ if (of_find_property(pp, "nand-ecc-mode", NULL)) { ++ ret = sunxi_nand_ecc_init(master, &part->ecc, pp); ++ if (ret) ++ goto err; ++ ++ part->part.ecc = &part->ecc; + } + +- part->part.ecc = &part->ecc; +- part->part.rnd = &part->rnd; ++ if (of_find_property(pp, "nand-rnd-mode", NULL)) { ++ ret = sunxi_nand_rnd_init(master, &part->rnd, ++ part->part.ecc ? part->part.ecc : &chip->ecc, ++ pp); ++ if (ret) ++ goto err; ++ ++ part->part.rnd = &part->rnd; ++ } + + return &part->part; + + err: ++ if (part->part.ecc) ++ sunxi_nand_ecc_cleanup(part->part.ecc); ++ + kfree(part); + return ERR_PTR(ret); + } -- cgit v1.2.3