The MTD layer provides an SLC mode (purely software emulation of SLC
behavior) addressing the paired-pages corruption issue, which was the
main reason for refusing attaching MLC NANDs to UBI.
Relax this rule and allow partitions that have the
MTD_EMULATE_SLC_ON_MLC flag set to be attached.
Signed-off-by: Boris Brezillon <bbrezillon@kernel.org>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Acked-by: Richard Weinberger <richard@nod.at>
Link: https://lore.kernel.org/linux-mtd/20200503155341.16712-9-miquel.raynal@bootlin.com
 
         * Both UBI and UBIFS have been designed for SLC NAND and NOR flashes.
         * MLC NAND is different and needs special care, otherwise UBI or UBIFS
         * will die soon and you will lose all your data.
+        * Relax this rule if the partition we're attaching to operates in SLC
+        * mode.
         */
-       if (mtd->type == MTD_MLCNANDFLASH) {
+       if (mtd->type == MTD_MLCNANDFLASH &&
+           !(mtd->flags & MTD_SLC_ON_MLC_EMULATION)) {
                pr_err("ubi: refuse attaching mtd%d - MLC NAND is not supported\n",
                        mtd->index);
                return -EINVAL;