]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
mtd: nand: pxa3xx: Use ECC strength and step size devicetree binding
authorEzequiel Garcia <ezequiel.garcia@free-electrons.com>
Wed, 14 May 2014 17:58:08 +0000 (14:58 -0300)
committerBrian Norris <computersforpeace@gmail.com>
Wed, 21 May 2014 19:55:09 +0000 (12:55 -0700)
This commit adds support for the user to specify the ECC strength
and step size through the devicetree. We keep the previous behavior,
when there is no DT parameter provided.

Signed-off-by: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
drivers/mtd/nand/pxa3xx_nand.c
include/linux/platform_data/mtd-nand-pxa3xx.h

index 3b66a6460d672331ca8d406ba18c6f77085feb02..2a9add06c2d5ca56ac8d82bd50d4a90928fc4b4b 100644 (file)
@@ -1519,8 +1519,13 @@ KEEP_CONFIG:
                }
        }
 
-       ecc_strength = chip->ecc_strength_ds;
-       ecc_step = chip->ecc_step_ds;
+       if (pdata->ecc_strength && pdata->ecc_step_size) {
+               ecc_strength = pdata->ecc_strength;
+               ecc_step = pdata->ecc_step_size;
+       } else {
+               ecc_strength = chip->ecc_strength_ds;
+               ecc_step = chip->ecc_step_ds;
+       }
 
        /* Set default ECC strength requirements on non-ONFI devices */
        if (ecc_strength < 1 && ecc_step < 1) {
@@ -1729,6 +1734,14 @@ static int pxa3xx_nand_probe_dt(struct platform_device *pdev)
        of_property_read_u32(np, "num-cs", &pdata->num_cs);
        pdata->flash_bbt = of_get_nand_on_flash_bbt(np);
 
+       pdata->ecc_strength = of_get_nand_ecc_strength(np);
+       if (pdata->ecc_strength < 0)
+               pdata->ecc_strength = 0;
+
+       pdata->ecc_step_size = of_get_nand_ecc_step_size(np);
+       if (pdata->ecc_step_size < 0)
+               pdata->ecc_step_size = 0;
+
        pdev->dev.platform_data = pdata;
 
        return 0;
index a941471249299c842a7cfea12de9a4091d2e44e2..ac4ea2e641c7c6ecb52f01414593e7db62fa7a0e 100644 (file)
@@ -58,6 +58,9 @@ struct pxa3xx_nand_platform_data {
        /* use an flash-based bad block table */
        bool    flash_bbt;
 
+       /* requested ECC strength and ECC step size */
+       int ecc_strength, ecc_step_size;
+
        const struct mtd_partition              *parts[NUM_CHIP_SELECT];
        unsigned int                            nr_parts[NUM_CHIP_SELECT];