]> www.infradead.org Git - users/willy/linux.git/commitdiff
mtd: nand: davinci: add support for on-die ECC engine type
authorMarcus Folkesson <marcus.folkesson@gmail.com>
Thu, 7 Nov 2024 13:47:07 +0000 (14:47 +0100)
committerMiquel Raynal <miquel.raynal@bootlin.com>
Thu, 5 Dec 2024 10:08:03 +0000 (11:08 +0100)
Some chips, e.g. Micron MT29F1G08ABBFAH4, has a mandatory on-die ECC.
Add "on-die" as ECC engine type in order to be compatible with those.

Signed-off-by: Marcus Folkesson <marcus.folkesson@gmail.com>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
drivers/mtd/nand/raw/davinci_nand.c

index 1f8354acfb50b2f4d155cdfc03afcf2863539f66..d1dfc0788e7492a681e95706c24694b0887ea29d 100644 (file)
@@ -66,6 +66,7 @@ struct davinci_nand_pdata {
 
        /* none  == NAND_ECC_ENGINE_TYPE_NONE (strongly *not* advised!!)
         * soft  == NAND_ECC_ENGINE_TYPE_SOFT
+        * on-die == NAND_ECC_ENGINE_TYPE_ON_DIE
         * else  == NAND_ECC_ENGINE_TYPE_ON_HOST, according to ecc_bits
         *
         * All DaVinci-family chips support 1-bit hardware ECC.
@@ -525,6 +526,8 @@ nand_davinci_get_pdata(struct platform_device *pdev)
                                pdata->engine_type = NAND_ECC_ENGINE_TYPE_SOFT;
                        if (!strncmp("hw", mode, 2))
                                pdata->engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST;
+                       if (!strncmp("on-die", mode, 6))
+                               pdata->engine_type = NAND_ECC_ENGINE_TYPE_ON_DIE;
                }
                if (!device_property_read_u32(&pdev->dev,
                                              "ti,davinci-ecc-bits", &prop))
@@ -580,6 +583,7 @@ static int davinci_nand_attach_chip(struct nand_chip *chip)
 
        switch (chip->ecc.engine_type) {
        case NAND_ECC_ENGINE_TYPE_NONE:
+       case NAND_ECC_ENGINE_TYPE_ON_DIE:
                pdata->ecc_bits = 0;
                break;
        case NAND_ECC_ENGINE_TYPE_SOFT: