mtd: rawnand: Use the new ECC engine type enumeration
authorMiquel Raynal <miquel.raynal@bootlin.com>
Thu, 27 Aug 2020 08:51:58 +0000 (10:51 +0200)
committerMiquel Raynal <miquel.raynal@bootlin.com>
Mon, 28 Sep 2020 13:59:42 +0000 (15:59 +0200)
Mechanical switch from the legacy "mode" enumeration to the new
"engine type" enumeration in drivers and board files.

The device tree parsing is also updated to return the new enumeration
from the old strings.

Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Link: https://lore.kernel.org/linux-mtd/20200827085208.16276-11-miquel.raynal@bootlin.com
78 files changed:
arch/arm/mach-davinci/board-da830-evm.c
arch/arm/mach-davinci/board-da850-evm.c
arch/arm/mach-davinci/board-dm355-evm.c
arch/arm/mach-davinci/board-dm355-leopard.c
arch/arm/mach-davinci/board-dm365-evm.c
arch/arm/mach-davinci/board-dm644x-evm.c
arch/arm/mach-davinci/board-dm646x-evm.c
arch/arm/mach-davinci/board-mityomapl138.c
arch/arm/mach-davinci/board-neuros-osd2.c
arch/arm/mach-davinci/board-omapl138-hawk.c
arch/arm/mach-s3c24xx/common-smdk.c
arch/arm/mach-s3c24xx/mach-anubis.c
arch/arm/mach-s3c24xx/mach-at2440evb.c
arch/arm/mach-s3c24xx/mach-bast.c
arch/arm/mach-s3c24xx/mach-gta02.c
arch/arm/mach-s3c24xx/mach-jive.c
arch/arm/mach-s3c24xx/mach-mini2440.c
arch/arm/mach-s3c24xx/mach-osiris.c
arch/arm/mach-s3c24xx/mach-qt2410.c
arch/arm/mach-s3c24xx/mach-rx1950.c
arch/arm/mach-s3c24xx/mach-rx3715.c
arch/arm/mach-s3c24xx/mach-vstms.c
arch/arm/mach-s3c64xx/mach-hmt.c
arch/arm/mach-s3c64xx/mach-mini6410.c
arch/arm/mach-s3c64xx/mach-real6410.c
drivers/mtd/nand/raw/ams-delta.c
drivers/mtd/nand/raw/arasan-nand-controller.c
drivers/mtd/nand/raw/atmel/nand-controller.c
drivers/mtd/nand/raw/au1550nd.c
drivers/mtd/nand/raw/bcm47xxnflash/ops_bcm4706.c
drivers/mtd/nand/raw/brcmnand/brcmnand.c
drivers/mtd/nand/raw/cadence-nand-controller.c
drivers/mtd/nand/raw/cafe_nand.c
drivers/mtd/nand/raw/cs553x_nand.c
drivers/mtd/nand/raw/davinci_nand.c
drivers/mtd/nand/raw/denali.c
drivers/mtd/nand/raw/diskonchip.c
drivers/mtd/nand/raw/fsl_elbc_nand.c
drivers/mtd/nand/raw/fsl_ifc_nand.c
drivers/mtd/nand/raw/fsl_upm.c
drivers/mtd/nand/raw/fsmc_nand.c
drivers/mtd/nand/raw/gpio.c
drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c
drivers/mtd/nand/raw/hisi504_nand.c
drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c
drivers/mtd/nand/raw/lpc32xx_mlc.c
drivers/mtd/nand/raw/lpc32xx_slc.c
drivers/mtd/nand/raw/marvell_nand.c
drivers/mtd/nand/raw/meson_nand.c
drivers/mtd/nand/raw/mpc5121_nfc.c
drivers/mtd/nand/raw/mtk_nand.c
drivers/mtd/nand/raw/mxc_nand.c
drivers/mtd/nand/raw/nand_base.c
drivers/mtd/nand/raw/nand_micron.c
drivers/mtd/nand/raw/nand_toshiba.c
drivers/mtd/nand/raw/nandsim.c
drivers/mtd/nand/raw/ndfc.c
drivers/mtd/nand/raw/omap2.c
drivers/mtd/nand/raw/orion_nand.c
drivers/mtd/nand/raw/pasemi_nand.c
drivers/mtd/nand/raw/plat_nand.c
drivers/mtd/nand/raw/qcom_nandc.c
drivers/mtd/nand/raw/r852.c
drivers/mtd/nand/raw/s3c2410.c
drivers/mtd/nand/raw/sh_flctl.c
drivers/mtd/nand/raw/sharpsl.c
drivers/mtd/nand/raw/socrates_nand.c
drivers/mtd/nand/raw/stm32_fmc2_nand.c
drivers/mtd/nand/raw/sunxi_nand.c
drivers/mtd/nand/raw/tango_nand.c
drivers/mtd/nand/raw/tegra_nand.c
drivers/mtd/nand/raw/tmio_nand.c
drivers/mtd/nand/raw/txx9ndfmc.c
drivers/mtd/nand/raw/vf610_nfc.c
drivers/mtd/nand/raw/xway_nand.c
include/linux/mtd/rawnand.h
include/linux/platform_data/mtd-davinci.h
include/linux/platform_data/mtd-nand-s3c2410.h

index 1076886938b6662f5058ec5409589457b7e54540..a20ba12d876c6c200e4c317c5302a361ca1ead96 100644 (file)
@@ -306,7 +306,7 @@ static struct davinci_nand_pdata da830_evm_nand_pdata = {
        .core_chipsel   = 1,
        .parts          = da830_evm_nand_partitions,
        .nr_parts       = ARRAY_SIZE(da830_evm_nand_partitions),
-       .ecc_mode       = NAND_ECC_HW,
+       .engine_type    = NAND_ECC_ENGINE_TYPE_ON_HOST,
        .ecc_bits       = 4,
        .bbt_options    = NAND_BBT_USE_FLASH,
        .bbt_td         = &da830_evm_nand_bbt_main_descr,
index 6751292e5f8f77b43d46f23d0c4cdd151c5291de..428012687a802a9f2cbeeb9e24f950e5bd5f960f 100644 (file)
@@ -239,7 +239,7 @@ static struct davinci_nand_pdata da850_evm_nandflash_data = {
        .core_chipsel   = 1,
        .parts          = da850_evm_nandflash_partition,
        .nr_parts       = ARRAY_SIZE(da850_evm_nandflash_partition),
-       .ecc_mode       = NAND_ECC_HW,
+       .engine_type    = NAND_ECC_ENGINE_TYPE_ON_HOST,
        .ecc_bits       = 4,
        .bbt_options    = NAND_BBT_USE_FLASH,
        .timing         = &da850_evm_nandflash_timing,
index 5113273fda6916c04b5c31d1143444a31f64c9bf..3c5a9e3c128ab637019b8f2e42b605b31e602dcb 100644 (file)
@@ -82,7 +82,7 @@ static struct davinci_nand_pdata davinci_nand_data = {
        .mask_chipsel           = BIT(14),
        .parts                  = davinci_nand_partitions,
        .nr_parts               = ARRAY_SIZE(davinci_nand_partitions),
-       .ecc_mode               = NAND_ECC_HW,
+       .engine_type            = NAND_ECC_ENGINE_TYPE_ON_HOST,
        .bbt_options            = NAND_BBT_USE_FLASH,
        .ecc_bits               = 4,
 };
index 4c8a592754ace4bc8934deb5839e16dd30f60e8b..e475b2113e70f789d6704808d938e75d812bdbb2 100644 (file)
@@ -76,7 +76,7 @@ static struct davinci_nand_pdata davinci_nand_data = {
        .mask_chipsel           = BIT(14),
        .parts                  = davinci_nand_partitions,
        .nr_parts               = ARRAY_SIZE(davinci_nand_partitions),
-       .ecc_mode               = NAND_HW_ECC_ENGINE,
+       .engine_type            = NAND_ECC_ENGINE_TYPE_ON_HOST,
        .ecc_placement          = NAND_ECC_PLACEMENT_INTERLEAVED,
        .ecc_bits               = 4,
        .bbt_options            = NAND_BBT_USE_FLASH,
index 2328b15ac067b7e5c8c980aceb44327b37998f1e..bdf31eb7762042e38118461b8ade9c97f4215cc0 100644 (file)
@@ -146,7 +146,7 @@ static struct davinci_nand_pdata davinci_nand_data = {
        .mask_chipsel           = BIT(14),
        .parts                  = davinci_nand_partitions,
        .nr_parts               = ARRAY_SIZE(davinci_nand_partitions),
-       .ecc_mode               = NAND_ECC_HW,
+       .engine_type            = NAND_ECC_ENGINE_TYPE_ON_HOST,
        .bbt_options            = NAND_BBT_USE_FLASH,
        .ecc_bits               = 4,
 };
index a5d3708fedf68c35a545cdfb6acffb9466de45cb..bcb3c4070945e4b5f38e58f83a0db6317241e686 100644 (file)
@@ -162,7 +162,7 @@ static struct davinci_nand_pdata davinci_evm_nandflash_data = {
        .core_chipsel   = 0,
        .parts          = davinci_evm_nandflash_partition,
        .nr_parts       = ARRAY_SIZE(davinci_evm_nandflash_partition),
-       .ecc_mode       = NAND_ECC_HW,
+       .engine_type    = NAND_ECC_ENGINE_TYPE_ON_HOST,
        .ecc_bits       = 1,
        .bbt_options    = NAND_BBT_USE_FLASH,
        .timing         = &davinci_evm_nandflash_timing,
index dd7d60f4139a40ff977966893192b6643e1444ee..8319a6067a68bace5017e0733d2714bbf50a81b7 100644 (file)
@@ -91,7 +91,7 @@ static struct davinci_nand_pdata davinci_nand_data = {
        .mask_ale               = 0x40000,
        .parts                  = davinci_nand_partitions,
        .nr_parts               = ARRAY_SIZE(davinci_nand_partitions),
-       .ecc_mode               = NAND_ECC_HW,
+       .engine_type            = NAND_ECC_ENGINE_TYPE_ON_HOST,
        .ecc_bits               = 1,
        .options                = 0,
 };
index 3382b93d9a2abfd86188a9523bff4e12d71c968f..5205008c8061b568386e74a15b791befcfc9a28f 100644 (file)
@@ -432,7 +432,7 @@ static struct davinci_nand_pdata mityomapl138_nandflash_data = {
        .core_chipsel   = 1,
        .parts          = mityomapl138_nandflash_partition,
        .nr_parts       = ARRAY_SIZE(mityomapl138_nandflash_partition),
-       .ecc_mode       = NAND_ECC_HW,
+       .engine_type    = NAND_ECC_ENGINE_TYPE_ON_HOST,
        .bbt_options    = NAND_BBT_USE_FLASH,
        .options        = NAND_BUSWIDTH_16,
        .ecc_bits       = 1, /* 4 bit mode is not supported with 16 bit NAND */
index 6cf46bbc7e1dca6c4562e11ae005e374d9b34f95..b4843f68bb57585f7ac06030551bfa00ca8e7806 100644 (file)
@@ -90,7 +90,7 @@ static struct davinci_nand_pdata davinci_ntosd2_nandflash_data = {
        .core_chipsel   = 0,
        .parts          = davinci_ntosd2_nandflash_partition,
        .nr_parts       = ARRAY_SIZE(davinci_ntosd2_nandflash_partition),
-       .ecc_mode       = NAND_ECC_HW,
+       .engine_type    = NAND_ECC_ENGINE_TYPE_ON_HOST,
        .ecc_bits       = 1,
        .bbt_options    = NAND_BBT_USE_FLASH,
 };
index 6c79039002c915626e7af11c491ce03aaf1b055c..88df8011a4e6b99e3c832b8170272df8066dcb7c 100644 (file)
@@ -206,7 +206,7 @@ static struct davinci_nand_pdata omapl138_hawk_nandflash_data = {
        .core_chipsel   = 1,
        .parts          = omapl138_hawk_nandflash_partition,
        .nr_parts       = ARRAY_SIZE(omapl138_hawk_nandflash_partition),
-       .ecc_mode       = NAND_ECC_HW,
+       .engine_type    = NAND_ECC_ENGINE_TYPE_ON_HOST,
        .ecc_bits       = 4,
        .bbt_options    = NAND_BBT_USE_FLASH,
        .options        = NAND_BUSWIDTH_16,
index 75064dfaceb1344f9f10006dabba3c9ca48e3071..121646ad1bb1ee97f40d92d9ff8133acfc44d057 100644 (file)
@@ -191,7 +191,7 @@ static struct s3c2410_platform_nand smdk_nand_info = {
        .twrph1         = 20,
        .nr_sets        = ARRAY_SIZE(smdk_nand_sets),
        .sets           = smdk_nand_sets,
-       .ecc_mode       = NAND_ECC_SOFT,
+       .engine_type    = NAND_ECC_ENGINE_TYPE_SOFT,
 };
 
 /* devices we initialise */
index 072966dcad788336d7e80c37940c118ae3600f90..28326241e3607032343106bea99da16cf0d430e2 100644 (file)
@@ -218,7 +218,7 @@ static struct s3c2410_platform_nand __initdata anubis_nand_info = {
        .nr_sets        = ARRAY_SIZE(anubis_nand_sets),
        .sets           = anubis_nand_sets,
        .select_chip    = anubis_nand_select,
-       .ecc_mode       = NAND_ECC_SOFT,
+       .engine_type    = NAND_ECC_ENGINE_TYPE_SOFT,
 };
 
 /* IDE channels */
index 58c5ef3cf1d7e583a4bb49172aad1e7938e318eb..04dedebdb57c7940cd18b28810ce68f47ead890a 100644 (file)
@@ -109,7 +109,7 @@ static struct s3c2410_platform_nand __initdata at2440evb_nand_info = {
        .twrph1         = 40,
        .nr_sets        = ARRAY_SIZE(at2440evb_nand_sets),
        .sets           = at2440evb_nand_sets,
-       .ecc_mode       = NAND_ECC_SOFT,
+       .engine_type    = NAND_ECC_ENGINE_TYPE_SOFT,
 };
 
 /* DM9000AEP 10/100 ethernet controller */
index a7c3955ae8f6454c5aafd8a775e7b1b21fb2aeb9..6465eab0ab3a3fe38e66ded1d143b7deeeb1221b 100644 (file)
@@ -294,7 +294,7 @@ static struct s3c2410_platform_nand __initdata bast_nand_info = {
        .nr_sets        = ARRAY_SIZE(bast_nand_sets),
        .sets           = bast_nand_sets,
        .select_chip    = bast_nand_select,
-       .ecc_mode       = NAND_ECC_SOFT,
+       .engine_type    = NAND_ECC_ENGINE_TYPE_SOFT,
 };
 
 /* DM9000 */
index 594901f3b8e58b8383125c54abf8759c665725dd..db1b64f6e0a5d4cd36b9e6246902a6b77b6bc3d6 100644 (file)
@@ -416,7 +416,7 @@ static struct s3c2410_platform_nand __initdata gta02_nand_info = {
        .twrph1         = 15,
        .nr_sets        = ARRAY_SIZE(gta02_nand_sets),
        .sets           = gta02_nand_sets,
-       .ecc_mode       = NAND_ECC_SOFT,
+       .engine_type    = NAND_ECC_ENGINE_TYPE_SOFT,
 };
 
 
index 885e8f12e4b911bfaaf74ce8a8f9767b95bd08e7..8233dcff19e773391a04741706285b5d98ba8452 100644 (file)
@@ -228,7 +228,7 @@ static struct s3c2410_platform_nand __initdata jive_nand_info = {
        .twrph1         = 40,
        .sets           = jive_nand_sets,
        .nr_sets        = ARRAY_SIZE(jive_nand_sets),
-       .ecc_mode       = NAND_ECC_SOFT,
+       .engine_type    = NAND_ECC_ENGINE_TYPE_SOFT,
 };
 
 static int __init jive_mtdset(char *options)
index 235749448311865c647b6390c23e949ad67e26d3..057dcbaf1b222be8982b972febde0cb2ef508991 100644 (file)
@@ -296,7 +296,7 @@ static struct s3c2410_platform_nand mini2440_nand_info __initdata = {
        .nr_sets        = ARRAY_SIZE(mini2440_nand_sets),
        .sets           = mini2440_nand_sets,
        .ignore_unset_ecc = 1,
-       .ecc_mode       = NAND_ECC_HW,
+       .engine_type    = NAND_ECC_ENGINE_TYPE_ON_HOST,
 };
 
 /* DM9000AEP 10/100 ethernet controller */
index ee3630cb236a45efe7f39c3bee708dde7f7bf823..157448827f6135e9ff61b26321efcf08d3ad641d 100644 (file)
@@ -234,7 +234,7 @@ static struct s3c2410_platform_nand __initdata osiris_nand_info = {
        .nr_sets        = ARRAY_SIZE(osiris_nand_sets),
        .sets           = osiris_nand_sets,
        .select_chip    = osiris_nand_select,
-       .ecc_mode       = NAND_ECC_SOFT,
+       .engine_type    = NAND_ECC_ENGINE_TYPE_SOFT,
 };
 
 /* PCMCIA control and configuration */
index ff9e3197309b6a7cc403d84f50e7df4b2dd0bf25..f3131d94e90b6c3d45dd0581b41ac1f36a6b33f7 100644 (file)
@@ -287,7 +287,7 @@ static struct s3c2410_platform_nand __initdata qt2410_nand_info = {
        .twrph1         = 20,
        .nr_sets        = ARRAY_SIZE(qt2410_nand_sets),
        .sets           = qt2410_nand_sets,
-       .ecc_mode       = NAND_ECC_SOFT,
+       .engine_type    = NAND_ECC_ENGINE_TYPE_SOFT,
 };
 
 /* UDC */
index fde98b175c7521ea5e621adcda7b6370cc8edff6..5ecb42e8a028b2f49084dad390f723b2ed629f3b 100644 (file)
@@ -620,7 +620,7 @@ static struct s3c2410_platform_nand rx1950_nand_info = {
        .twrph1 = 15,
        .nr_sets = ARRAY_SIZE(rx1950_nand_sets),
        .sets = rx1950_nand_sets,
-       .ecc_mode = NAND_ECC_SOFT,
+       .engine_type = NAND_ECC_ENGINE_TYPE_SOFT,
 };
 
 static struct s3c2410_udc_mach_info rx1950_udc_cfg __initdata = {
index 995f1ff34a1bbac5cf20f44913bd6cab7e358026..017010d67e016685b44cb63b9d44a903bcafc7c5 100644 (file)
@@ -158,7 +158,7 @@ static struct s3c2410_platform_nand __initdata rx3715_nand_info = {
        .twrph1         = 15,
        .nr_sets        = ARRAY_SIZE(rx3715_nand_sets),
        .sets           = rx3715_nand_sets,
-       .ecc_mode       = NAND_ECC_SOFT,
+       .engine_type    = NAND_ECC_ENGINE_TYPE_SOFT,
 };
 
 static struct platform_device *rx3715_devices[] __initdata = {
index d76b28b65e653e7ac5b5d35888f2e4869625a820..c5fa215a527e038af8cadeda5c6b3d280364a22f 100644 (file)
@@ -112,7 +112,7 @@ static struct s3c2410_platform_nand __initdata vstms_nand_info = {
        .twrph1         = 20,
        .nr_sets        = ARRAY_SIZE(vstms_nand_sets),
        .sets           = vstms_nand_sets,
-       .ecc_mode       = NAND_ECC_SOFT,
+       .engine_type    = NAND_ECC_ENGINE_TYPE_SOFT,
 };
 
 static struct platform_device *vstms_devices[] __initdata = {
index e7080215c624c91aafede19a5374756bb7807e0f..0d9acaf9170185de114db4a0c848d0f0bde30550 100644 (file)
@@ -199,7 +199,7 @@ static struct s3c2410_platform_nand hmt_nand_info = {
        .twrph1         = 40,
        .nr_sets        = ARRAY_SIZE(hmt_nand_sets),
        .sets           = hmt_nand_sets,
-       .ecc_mode       = NAND_ECC_SOFT,
+       .engine_type    = NAND_ECC_ENGINE_TYPE_SOFT,
 };
 
 static struct gpio_led hmt_leds[] = {
index 0dd36ae49e6a56aac537042ddae357faa2f6ae08..6fbb57878746082b63744dae25f0e8c104d24255 100644 (file)
@@ -136,7 +136,7 @@ static struct s3c2410_platform_nand mini6410_nand_info = {
        .twrph1         = 40,
        .nr_sets        = ARRAY_SIZE(mini6410_nand_sets),
        .sets           = mini6410_nand_sets,
-       .ecc_mode       = NAND_ECC_SOFT,
+       .engine_type    = NAND_ECC_ENGINE_TYPE_SOFT,
 };
 
 static struct s3c_fb_pd_win mini6410_lcd_type0_fb_win = {
index 0ff88b6859c4364327d70327e57fd2b8b2b9c445..1e98e530a6aa2c303ca376ab1def23cf3b3620e6 100644 (file)
@@ -188,7 +188,7 @@ static struct s3c2410_platform_nand real6410_nand_info = {
        .twrph1         = 40,
        .nr_sets        = ARRAY_SIZE(real6410_nand_sets),
        .sets           = real6410_nand_sets,
-       .ecc_mode       = NAND_ECC_SOFT,
+       .engine_type    = NAND_ECC_ENGINE_TYPE_SOFT,
 };
 
 static struct platform_device *real6410_devices[] __initdata = {
index 21199d9ae9be21232bb55e46b35458f2a00a40e8..770d4f1001bb7bdfa4b5667632e323463118f4b3 100644 (file)
@@ -260,7 +260,7 @@ static int gpio_nand_probe(struct platform_device *pdev)
                return err;
        }
 
-       this->ecc.mode = NAND_ECC_SOFT;
+       this->ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT;
        this->ecc.algo = NAND_ECC_ALGO_HAMMING;
 
        platform_set_drvdata(pdev, priv);
index b0616a95340defcde2d2c2756f11e4cf9ca36d5f..006bc3d3ce200276ba6ab826c1e2834062efd01a 100644 (file)
@@ -1056,17 +1056,17 @@ static int anfc_attach_chip(struct nand_chip *chip)
        chip->ecc.read_page_raw = nand_monolithic_read_page_raw;
        chip->ecc.write_page_raw = nand_monolithic_write_page_raw;
 
-       switch (chip->ecc.mode) {
-       case NAND_ECC_NONE:
-       case NAND_ECC_SOFT:
-       case NAND_ECC_ON_DIE:
+       switch (chip->ecc.engine_type) {
+       case NAND_ECC_ENGINE_TYPE_NONE:
+       case NAND_ECC_ENGINE_TYPE_SOFT:
+       case NAND_ECC_ENGINE_TYPE_ON_DIE:
                break;
-       case NAND_ECC_HW:
+       case NAND_ECC_ENGINE_TYPE_ON_HOST:
                ret = anfc_init_hw_ecc_controller(nfc, chip);
                break;
        default:
                dev_err(nfc->dev, "Unsupported ECC mode: %d\n",
-                       chip->ecc.mode);
+                       chip->ecc.engine_type);
                return -EINVAL;
        }
 
index 8999571bfa5ddbad60dd3f2c19a8102f569391cc..0d9cd7faf00d4530e575bda4e10609e38b28b701 100644 (file)
@@ -1118,15 +1118,15 @@ static int atmel_nand_ecc_init(struct nand_chip *chip)
 
        nc = to_nand_controller(chip->controller);
 
-       switch (chip->ecc.mode) {
-       case NAND_ECC_NONE:
-       case NAND_ECC_SOFT:
+       switch (chip->ecc.engine_type) {
+       case NAND_ECC_ENGINE_TYPE_NONE:
+       case NAND_ECC_ENGINE_TYPE_SOFT:
                /*
                 * Nothing to do, the core will initialize everything for us.
                 */
                break;
 
-       case NAND_ECC_HW:
+       case NAND_ECC_ENGINE_TYPE_ON_HOST:
                ret = atmel_nand_pmecc_init(chip);
                if (ret)
                        return ret;
@@ -1140,7 +1140,7 @@ static int atmel_nand_ecc_init(struct nand_chip *chip)
        default:
                /* Other modes are not supported. */
                dev_err(nc->dev, "Unsupported ECC mode: %d\n",
-                       chip->ecc.mode);
+                       chip->ecc.engine_type);
                return -ENOTSUPP;
        }
 
@@ -1155,7 +1155,7 @@ static int atmel_hsmc_nand_ecc_init(struct nand_chip *chip)
        if (ret)
                return ret;
 
-       if (chip->ecc.mode != NAND_ECC_HW)
+       if (chip->ecc.engine_type != NAND_ECC_ENGINE_TYPE_ON_HOST)
                return 0;
 
        /* Adjust the ECC operations for the HSMC IP. */
@@ -1498,7 +1498,7 @@ static void atmel_nand_init(struct atmel_nand_controller *nc,
 
        /* Default to HW ECC if pmecc is available. */
        if (nc->pmecc)
-               chip->ecc.mode = NAND_ECC_HW;
+               chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST;
 }
 
 static void atmel_smc_nand_init(struct atmel_nand_controller *nc,
index ec2d90ad87dee5e857dda42fff11e0570fbcb8c1..79b057400fe91631f52379fc4f73647499c625fe 100644 (file)
@@ -294,7 +294,7 @@ static int au1550nd_probe(struct platform_device *pdev)
        nand_controller_init(&ctx->controller);
        ctx->controller.ops = &au1550nd_ops;
        this->controller = &ctx->controller;
-       this->ecc.mode = NAND_ECC_SOFT;
+       this->ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT;
        this->ecc.algo = NAND_ECC_ALGO_HAMMING;
 
        if (pd->devwidth)
index 591775173034d0634bc8aa4d4326c3091111f5cd..8bb17c5a66c3eab035196aeb48e2faa92535c689 100644 (file)
@@ -391,7 +391,8 @@ int bcm47xxnflash_ops_bcm4706_init(struct bcm47xxnflash *b47n)
 
        nand_chip->legacy.chip_delay = 50;
        b47n->nand_chip.bbt_options = NAND_BBT_USE_FLASH;
-       b47n->nand_chip.ecc.mode = NAND_ECC_NONE; /* TODO: implement ECC */
+       /* TODO: implement ECC */
+       b47n->nand_chip.ecc.engine_type = NAND_ECC_ENGINE_TYPE_NONE;
 
        /* Enable NAND flash access */
        bcma_cc_set32(b47n->cc, BCMA_CC_4706_FLASHSCFG,
index 39f1bf327592501fd3449764c43acaedcbd8728b..afe27a27cb93d240cb39d6e30ed230f86eaebbd8 100644 (file)
@@ -2565,9 +2565,9 @@ static int brcmnand_setup_dev(struct brcmnand_host *host)
        cfg->col_adr_bytes = 2;
        cfg->blk_adr_bytes = get_blk_adr_bytes(mtd->size, mtd->writesize);
 
-       if (chip->ecc.mode != NAND_ECC_HW) {
+       if (chip->ecc.engine_type != NAND_ECC_ENGINE_TYPE_ON_HOST) {
                dev_err(ctrl->dev, "only HW ECC supported; selected: %d\n",
-                       chip->ecc.mode);
+                       chip->ecc.engine_type);
                return -EINVAL;
        }
 
@@ -2587,7 +2587,7 @@ static int brcmnand_setup_dev(struct brcmnand_host *host)
                return -EINVAL;
        }
 
-       if (chip->ecc.mode != NAND_ECC_NONE &&
+       if (chip->ecc.engine_type != NAND_ECC_ENGINE_TYPE_NONE &&
            (!chip->ecc.size || !chip->ecc.strength)) {
                if (chip->base.eccreq.step_size && chip->base.eccreq.strength) {
                        /* use detected ECC parameters */
@@ -2728,7 +2728,7 @@ static int brcmnand_init_cs(struct brcmnand_host *host, struct device_node *dn)
        chip->legacy.read_buf = brcmnand_read_buf;
        chip->legacy.write_buf = brcmnand_write_buf;
 
-       chip->ecc.mode = NAND_ECC_HW;
+       chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST;
        chip->ecc.read_page = brcmnand_read_page;
        chip->ecc.write_page = brcmnand_write_page;
        chip->ecc.read_page_raw = brcmnand_read_page_raw;
index 71516af85f236aa39ab6b92265f3dd925b0772c8..db29e5e512dfbfa96077ae084e59ed1ca7bcb9c9 100644 (file)
@@ -2611,7 +2611,7 @@ static int cadence_nand_attach_chip(struct nand_chip *chip)
 
        chip->bbt_options |= NAND_BBT_USE_FLASH;
        chip->bbt_options |= NAND_BBT_NO_OOB;
-       chip->ecc.mode = NAND_ECC_HW;
+       chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST;
 
        chip->options |= NAND_NO_SUBPAGE_WRITE;
 
@@ -2757,7 +2757,7 @@ static int cadence_nand_chip_init(struct cdns_nand_ctrl *cdns_ctrl,
         * Default to HW ECC engine mode. If the nand-ecc-mode property is given
         * in the DT node, this entry will be overwritten in nand_scan_ident().
         */
-       chip->ecc.mode = NAND_ECC_HW;
+       chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST;
 
        ret = nand_scan(chip, cdns_chip->nsels);
        if (ret) {
index 2bf8ab542e38000e1ebeb8a5b698214a6c4fb199..2b94f385a1a88680deb6e3eeff597a79ffeb699a 100644 (file)
@@ -629,7 +629,7 @@ static int cafe_nand_attach_chip(struct nand_chip *chip)
                goto out_free_dma;
        }
 
-       cafe->nand.ecc.mode = NAND_ECC_HW;
+       cafe->nand.ecc.engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST;
        cafe->nand.ecc.placement = NAND_ECC_PLACEMENT_INTERLEAVED;
        cafe->nand.ecc.size = mtd->writesize;
        cafe->nand.ecc.bytes = 14;
index 9472bf798ed5092a1e6d14b47241cbd279a3e5e9..b7f3f6347761512cbf9a6cbf610483f16311ec29 100644 (file)
@@ -286,7 +286,7 @@ static int __init cs553x_init_one(int cs, int mmio, unsigned long adr)
                goto out_mtd;
        }
 
-       this->ecc.mode = NAND_ECC_HW;
+       this->ecc.engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST;
        this->ecc.size = 256;
        this->ecc.bytes = 3;
        this->ecc.hwctl  = cs_enable_hwecc;
index 3640c7e45e150bfe847734990fcf5efe26479844..58966a9706b1289959ba4fd62483fdabae412f92 100644 (file)
@@ -530,11 +530,11 @@ static struct davinci_nand_pdata
                if (!of_property_read_string(pdev->dev.of_node,
                        "ti,davinci-ecc-mode", &mode)) {
                        if (!strncmp("none", mode, 4))
-                               pdata->ecc_mode = NAND_ECC_NONE;
+                               pdata->engine_type = NAND_ECC_ENGINE_TYPE_NONE;
                        if (!strncmp("soft", mode, 4))
-                               pdata->ecc_mode = NAND_ECC_SOFT;
+                               pdata->engine_type = NAND_ECC_ENGINE_TYPE_SOFT;
                        if (!strncmp("hw", mode, 2))
-                               pdata->ecc_mode = NAND_ECC_HW;
+                               pdata->engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST;
                }
                if (!of_property_read_u32(pdev->dev.of_node,
                        "ti,davinci-ecc-bits", &prop))
@@ -585,21 +585,21 @@ static int davinci_nand_attach_chip(struct nand_chip *chip)
        if (IS_ERR(pdata))
                return PTR_ERR(pdata);
 
-       switch (info->chip.ecc.mode) {
-       case NAND_ECC_NONE:
+       switch (info->chip.ecc.engine_type) {
+       case NAND_ECC_ENGINE_TYPE_NONE:
                pdata->ecc_bits = 0;
                break;
-       case NAND_ECC_SOFT:
+       case NAND_ECC_ENGINE_TYPE_SOFT:
                pdata->ecc_bits = 0;
                /*
-                * This driver expects Hamming based ECC when ecc_mode is set
-                * to NAND_ECC_SOFT. Force ecc.algo to NAND_ECC_ALGO_HAMMING to
-                * avoid adding an extra ->ecc_algo field to
-                * davinci_nand_pdata.
+                * This driver expects Hamming based ECC when engine_type is set
+                * to NAND_ECC_ENGINE_TYPE_SOFT. Force ecc.algo to
+                * NAND_ECC_ALGO_HAMMING to avoid adding an extra ->ecc_algo
+                * field to davinci_nand_pdata.
                 */
                info->chip.ecc.algo = NAND_ECC_ALGO_HAMMING;
                break;
-       case NAND_ECC_HW:
+       case NAND_ECC_ENGINE_TYPE_ON_HOST:
                if (pdata->ecc_bits == 4) {
                        int chunks = mtd->writesize / 512;
 
@@ -850,7 +850,7 @@ static int nand_davinci_probe(struct platform_device *pdev)
        info->mask_cle          = pdata->mask_cle ? : MASK_CLE;
 
        /* Use board-specific ECC config */
-       info->chip.ecc.mode     = pdata->ecc_mode;
+       info->chip.ecc.engine_type = pdata->engine_type;
        info->chip.ecc.placement = pdata->ecc_placement;
 
        spin_lock_irq(&davinci_nand_lock);
index 0e54b8a61cf00a9f9482f10155f5e6a32effa7af..fa2439cb4daaf145d1dbd8e8305b00ef41ff9756 100644 (file)
@@ -1237,7 +1237,7 @@ int denali_chip_init(struct denali_controller *denali,
        chip->bbt_options |= NAND_BBT_USE_FLASH;
        chip->bbt_options |= NAND_BBT_NO_OOB;
        chip->options |= NAND_NO_SUBPAGE_WRITE;
-       chip->ecc.mode = NAND_ECC_HW;
+       chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST;
        chip->ecc.placement = NAND_ECC_PLACEMENT_INTERLEAVED;
        chip->ecc.read_page = denali_read_page;
        chip->ecc.write_page = denali_write_page;
index 40360352136bff2098e358cd105f9ee102e6396f..94432a453e5eef7d50e2ba6e8c7fc86c2b5ff943 100644 (file)
@@ -1456,7 +1456,7 @@ static int __init doc_probe(unsigned long physadr)
        nand->ecc.calculate     = doc200x_calculate_ecc;
        nand->ecc.correct       = doc200x_correct_data;
 
-       nand->ecc.mode          = NAND_ECC_HW;
+       nand->ecc.engine_type   = NAND_ECC_ENGINE_TYPE_ON_HOST;
        nand->ecc.placement     = NAND_ECC_PLACEMENT_INTERLEAVED;
        nand->ecc.size          = 512;
        nand->ecc.bytes         = 6;
index da89389faaaeb7e547eaa4069ac5a6925e6e10be..b2af7f81fdf8f1360f5d8686aba707bd4c104db7 100644 (file)
@@ -244,7 +244,7 @@ static int fsl_elbc_run_command(struct mtd_info *mtd)
                return -EIO;
        }
 
-       if (chip->ecc.mode != NAND_ECC_HW)
+       if (chip->ecc.engine_type != NAND_ECC_ENGINE_TYPE_ON_HOST)
                return 0;
 
        elbc_fcm_ctrl->max_bitflips = 0;
@@ -727,12 +727,12 @@ static int fsl_elbc_attach_chip(struct nand_chip *chip)
        struct fsl_lbc_regs __iomem *lbc = ctrl->regs;
        unsigned int al;
 
-       switch (chip->ecc.mode) {
+       switch (chip->ecc.engine_type) {
        /*
         * if ECC was not chosen in DT, decide whether to use HW or SW ECC from
         * CS Base Register
         */
-       case NAND_ECC_NONE:
+       case NAND_ECC_ENGINE_TYPE_NONE:
                /* If CS Base Register selects full hardware ECC then use it */
                if ((in_be32(&lbc->bank[priv->bank].br) & BR_DECC) ==
                    BR_DECC_CHK_GEN) {
@@ -740,23 +740,23 @@ static int fsl_elbc_attach_chip(struct nand_chip *chip)
                        chip->ecc.write_page = fsl_elbc_write_page;
                        chip->ecc.write_subpage = fsl_elbc_write_subpage;
 
-                       chip->ecc.mode = NAND_ECC_HW;
+                       chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST;
                        mtd_set_ooblayout(mtd, &fsl_elbc_ooblayout_ops);
                        chip->ecc.size = 512;
                        chip->ecc.bytes = 3;
                        chip->ecc.strength = 1;
                } else {
                        /* otherwise fall back to default software ECC */
-                       chip->ecc.mode = NAND_ECC_SOFT;
+                       chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT;
                        chip->ecc.algo = NAND_ECC_ALGO_HAMMING;
                }
                break;
 
        /* if SW ECC was chosen in DT, we do not need to set anything here */
-       case NAND_ECC_SOFT:
+       case NAND_ECC_ENGINE_TYPE_SOFT:
                break;
 
-       /* should we also implement NAND_ECC_HW to do as the code above? */
+       /* should we also implement *_ECC_ENGINE_CONTROLLER to do as above? */
        default:
                return -EINVAL;
        }
@@ -786,8 +786,8 @@ static int fsl_elbc_attach_chip(struct nand_chip *chip)
                chip->page_shift);
        dev_dbg(priv->dev, "fsl_elbc_init: nand->phys_erase_shift = %d\n",
                chip->phys_erase_shift);
-       dev_dbg(priv->dev, "fsl_elbc_init: nand->ecc.mode = %d\n",
-               chip->ecc.mode);
+       dev_dbg(priv->dev, "fsl_elbc_init: nand->ecc.engine_type = %d\n",
+               chip->ecc.engine_type);
        dev_dbg(priv->dev, "fsl_elbc_init: nand->ecc.steps = %d\n",
                chip->ecc.steps);
        dev_dbg(priv->dev, "fsl_elbc_init: nand->ecc.bytes = %d\n",
index b2ae759dd14e6811c66dbdb1fd37829ff3b53ad7..0e7a9b64301e1198f0eeca2ee5a837ea86b6c092 100644 (file)
@@ -309,7 +309,7 @@ static void fsl_ifc_cmdfunc(struct nand_chip *chip, unsigned int command,
                ifc_nand_ctrl->read_bytes = mtd->writesize + mtd->oobsize;
                ifc_nand_ctrl->index += column;
 
-               if (chip->ecc.mode == NAND_ECC_HW)
+               if (chip->ecc.engine_type == NAND_ECC_ENGINE_TYPE_ON_HOST)
                        ifc_nand_ctrl->eccread = 1;
 
                fsl_ifc_do_read(chip, 0, mtd);
@@ -724,8 +724,8 @@ static int fsl_ifc_attach_chip(struct nand_chip *chip)
                                                        chip->page_shift);
        dev_dbg(priv->dev, "%s: nand->phys_erase_shift = %d\n", __func__,
                                                        chip->phys_erase_shift);
-       dev_dbg(priv->dev, "%s: nand->ecc.mode = %d\n", __func__,
-                                                       chip->ecc.mode);
+       dev_dbg(priv->dev, "%s: nand->ecc.engine_type = %d\n", __func__,
+                                                       chip->ecc.engine_type);
        dev_dbg(priv->dev, "%s: nand->ecc.steps = %d\n", __func__,
                                                        chip->ecc.steps);
        dev_dbg(priv->dev, "%s: nand->ecc.bytes = %d\n", __func__,
@@ -912,7 +912,7 @@ static int fsl_ifc_chip_init(struct fsl_ifc_mtd *priv)
 
        /* Must also set CSOR_NAND_ECC_ENC_EN if DEC_EN set */
        if (csor & CSOR_NAND_ECC_DEC_EN) {
-               chip->ecc.mode = NAND_ECC_HW;
+               chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST;
                mtd_set_ooblayout(mtd, &fsl_ifc_ooblayout_ops);
 
                /* Hardware generates ECC per 512 Bytes */
@@ -925,7 +925,7 @@ static int fsl_ifc_chip_init(struct fsl_ifc_mtd *priv)
                        chip->ecc.strength = 8;
                }
        } else {
-               chip->ecc.mode = NAND_ECC_SOFT;
+               chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT;
                chip->ecc.algo = NAND_ECC_ALGO_HAMMING;
        }
 
index 04cf7d14082a59a68af1684ff82a43114f741557..d5813b9abc8e7092a39727a977a7dbb29c85095a 100644 (file)
@@ -47,7 +47,7 @@ static int fun_chip_init(struct fsl_upm_nand *fun,
        int ret;
        struct device_node *flash_np;
 
-       fun->chip.ecc.mode = NAND_ECC_SOFT;
+       fun->chip.ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT;
        fun->chip.ecc.algo = NAND_ECC_ALGO_HAMMING;
        fun->chip.controller = &fun->base;
        mtd->dev.parent = fun->dev;
index 580b9fe8ca4224d6564e7739d612f3170bf7ea0e..4191831df182053197bd83be636c35a116ae7070 100644 (file)
@@ -900,8 +900,8 @@ static int fsmc_nand_attach_chip(struct nand_chip *nand)
                return 0;
        }
 
-       switch (nand->ecc.mode) {
-       case NAND_ECC_HW:
+       switch (nand->ecc.engine_type) {
+       case NAND_ECC_ENGINE_TYPE_ON_HOST:
                dev_info(host->dev, "Using 1-bit HW ECC scheme\n");
                nand->ecc.calculate = fsmc_read_hwecc_ecc1;
                nand->ecc.correct = nand_correct_data;
@@ -910,14 +910,14 @@ static int fsmc_nand_attach_chip(struct nand_chip *nand)
                nand->ecc.options |= NAND_ECC_SOFT_HAMMING_SM_ORDER;
                break;
 
-       case NAND_ECC_SOFT:
+       case NAND_ECC_ENGINE_TYPE_SOFT:
                if (nand->ecc.algo == NAND_ECC_ALGO_BCH) {
                        dev_info(host->dev,
                                 "Using 4-bit SW BCH ECC scheme\n");
                        break;
                }
 
-       case NAND_ECC_ON_DIE:
+       case NAND_ECC_ENGINE_TYPE_ON_DIE:
                break;
 
        default:
@@ -929,7 +929,7 @@ static int fsmc_nand_attach_chip(struct nand_chip *nand)
         * Don't set layout for BCH4 SW ECC. This will be
         * generated later in nand_bch_init() later.
         */
-       if (nand->ecc.mode == NAND_ECC_HW) {
+       if (nand->ecc.engine_type == NAND_ECC_ENGINE_TYPE_ON_HOST) {
                switch (mtd->oobsize) {
                case 16:
                case 64:
@@ -1059,7 +1059,7 @@ static int __init fsmc_nand_probe(struct platform_device *pdev)
         * Setup default ECC mode. nand_dt_init() called from nand_scan_ident()
         * can overwrite this value if the DT provides a different value.
         */
-       nand->ecc.mode = NAND_ECC_HW;
+       nand->ecc.engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST;
        nand->ecc.hwctl = fsmc_enable_hwecc;
        nand->ecc.size = 512;
        nand->badblockbits = 7;
index c8f498eaabeb29bd87bdbac79fa348cedab6eed3..4ec0a1e10867c279be94d66d08fdc1a0b0f3d641 100644 (file)
@@ -342,7 +342,7 @@ static int gpio_nand_probe(struct platform_device *pdev)
        gpiomtd->base.ops = &gpio_nand_ops;
 
        nand_set_flash_node(chip, pdev->dev.of_node);
-       chip->ecc.mode          = NAND_ECC_SOFT;
+       chip->ecc.engine_type   = NAND_ECC_ENGINE_TYPE_SOFT;
        chip->ecc.algo          = NAND_ECC_ALGO_HAMMING;
        chip->options           = gpiomtd->plat.options;
        chip->controller        = &gpiomtd->base;
index 5d4aee46cc552927d7f84d3118c1ccaa14460335..9b015d360a50485d9d297c785a11f016d53227dd 100644 (file)
@@ -2032,7 +2032,7 @@ static int gpmi_init_last(struct gpmi_nand_data *this)
        ecc->write_page_raw = gpmi_ecc_write_page_raw;
        ecc->read_oob_raw = gpmi_ecc_read_oob_raw;
        ecc->write_oob_raw = gpmi_ecc_write_oob_raw;
-       ecc->mode       = NAND_ECC_HW;
+       ecc->engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST;
        ecc->size       = bch_geo->ecc_chunk_size;
        ecc->strength   = bch_geo->ecc_strength;
        mtd_set_ooblayout(mtd, &gpmi_ooblayout_ops);
index b84238e2268ae9a5dea5e579a8d8b1dbfd9f7cf0..8b2122ce6ec359461fa59ef024f98168f1522ec0 100644 (file)
@@ -186,7 +186,7 @@ static void hisi_nfc_dma_transfer(struct hinfc_host *host, int todev)
        hinfc_write(host, host->dma_buffer, HINFC504_DMA_ADDR_DATA);
        hinfc_write(host, host->dma_oob, HINFC504_DMA_ADDR_OOB);
 
-       if (chip->ecc.mode == NAND_ECC_NONE) {
+       if (chip->ecc.engine_type == NAND_ECC_ENGINE_TYPE_NONE) {
                hinfc_write(host, ((mtd->oobsize & HINFC504_DMA_LEN_OOB_MASK)
                        << HINFC504_DMA_LEN_OOB_SHIFT), HINFC504_DMA_LEN);
 
@@ -468,7 +468,7 @@ static void hisi_nfc_cmdfunc(struct nand_chip *chip, unsigned command,
 
        case NAND_CMD_STATUS:
                flag = hinfc_read(host, HINFC504_CON);
-               if (chip->ecc.mode == NAND_ECC_HW)
+               if (chip->ecc.engine_type == NAND_ECC_ENGINE_TYPE_ON_HOST)
                        hinfc_write(host,
                                    flag & ~(HINFC504_CON_ECCTYPE_MASK <<
                                    HINFC504_CON_ECCTYPE_SHIFT), HINFC504_CON);
@@ -721,7 +721,7 @@ static int hisi_nfc_attach_chip(struct nand_chip *chip)
        }
        hinfc_write(host, flag, HINFC504_CON);
 
-       if (chip->ecc.mode == NAND_ECC_HW)
+       if (chip->ecc.engine_type == NAND_ECC_ENGINE_TYPE_ON_HOST)
                hisi_nfc_ecc_probe(host);
 
        return 0;
index 69423bb29adbd32ce8e8dc5bc4bd4d078bacac06..70309f18124c49e3c33dad9bb4ab9f417df8388f 100644 (file)
@@ -194,8 +194,8 @@ static int ingenic_nand_attach_chip(struct nand_chip *chip)
                                  (chip->ecc.strength / 8);
        }
 
-       switch (chip->ecc.mode) {
-       case NAND_ECC_HW:
+       switch (chip->ecc.engine_type) {
+       case NAND_ECC_ENGINE_TYPE_ON_HOST:
                if (!nfc->ecc) {
                        dev_err(nfc->dev, "HW ECC selected, but ECC controller not found\n");
                        return -ENODEV;
@@ -205,22 +205,22 @@ static int ingenic_nand_attach_chip(struct nand_chip *chip)
                chip->ecc.calculate = ingenic_nand_ecc_calculate;
                chip->ecc.correct = ingenic_nand_ecc_correct;
                fallthrough;
-       case NAND_ECC_SOFT:
+       case NAND_ECC_ENGINE_TYPE_SOFT:
                dev_info(nfc->dev, "using %s (strength %d, size %d, bytes %d)\n",
                         (nfc->ecc) ? "hardware ECC" : "software ECC",
                         chip->ecc.strength, chip->ecc.size, chip->ecc.bytes);
                break;
-       case NAND_ECC_NONE:
+       case NAND_ECC_ENGINE_TYPE_NONE:
                dev_info(nfc->dev, "not using ECC\n");
                break;
        default:
                dev_err(nfc->dev, "ECC mode %d not supported\n",
-                       chip->ecc.mode);
+                       chip->ecc.engine_type);
                return -EINVAL;
        }
 
        /* The NAND core will generate the ECC layout for SW ECC */
-       if (chip->ecc.mode != NAND_ECC_HW)
+       if (chip->ecc.engine_type != NAND_ECC_ENGINE_TYPE_ON_HOST)
                return 0;
 
        /* Generate ECC layout. ECC codes are right aligned in the OOB area. */
@@ -404,7 +404,7 @@ static int ingenic_nand_init_chip(struct platform_device *pdev,
        mtd->dev.parent = dev;
 
        chip->options = NAND_NO_SUBPAGE_WRITE;
-       chip->ecc.mode = NAND_ECC_HW;
+       chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST;
        chip->controller = &nfc->controller;
        nand_set_flash_node(chip, np);
 
index 7521038af2efe638ae8ecf83ffb7aef161428f57..4940bb2e3c079e0ed9f881b8d0f5a70e9b727677 100644 (file)
@@ -656,7 +656,7 @@ static int lpc32xx_nand_attach_chip(struct nand_chip *chip)
        if (!host->dummy_buf)
                return -ENOMEM;
 
-       chip->ecc.mode = NAND_ECC_HW;
+       chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST;
        chip->ecc.size = 512;
        mtd_set_ooblayout(mtd, &lpc32xx_ooblayout_ops);
        host->mlcsubpages = mtd->writesize / 512;
index ccb189c8e3430d3b7049228620841ad200a3c810..6db9d2ed6881702e37e9cb69062322f944888a83 100644 (file)
@@ -881,7 +881,7 @@ static int lpc32xx_nand_probe(struct platform_device *pdev)
        platform_set_drvdata(pdev, host);
 
        /* NAND callbacks for LPC32xx SLC hardware */
-       chip->ecc.mode = NAND_ECC_HW;
+       chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST;
        chip->ecc.placement = NAND_ECC_PLACEMENT_INTERLEAVED;
        chip->legacy.read_byte = lpc32xx_nand_read_byte;
        chip->legacy.read_buf = lpc32xx_nand_read_buf;
index b2200aa787f29873ebebabd8bfd15c1570ec9c7a..88f8ed0512266ff80e61d502e6ece7cff4617955 100644 (file)
@@ -2250,7 +2250,8 @@ static int marvell_nand_ecc_init(struct mtd_info *mtd,
        struct marvell_nfc *nfc = to_marvell_nfc(chip->controller);
        int ret;
 
-       if (ecc->mode != NAND_ECC_NONE && (!ecc->size || !ecc->strength)) {
+       if (ecc->engine_type != NAND_ECC_ENGINE_TYPE_NONE &&
+           (!ecc->size || !ecc->strength)) {
                if (chip->base.eccreq.step_size && chip->base.eccreq.strength) {
                        ecc->size = chip->base.eccreq.step_size;
                        ecc->strength = chip->base.eccreq.strength;
@@ -2262,15 +2263,15 @@ static int marvell_nand_ecc_init(struct mtd_info *mtd,
                }
        }
 
-       switch (ecc->mode) {
-       case NAND_ECC_HW:
+       switch (ecc->engine_type) {
+       case NAND_ECC_ENGINE_TYPE_ON_HOST:
                ret = marvell_nand_hw_ecc_controller_init(mtd, ecc);
                if (ret)
                        return ret;
                break;
-       case NAND_ECC_NONE:
-       case NAND_ECC_SOFT:
-       case NAND_ECC_ON_DIE:
+       case NAND_ECC_ENGINE_TYPE_NONE:
+       case NAND_ECC_ENGINE_TYPE_SOFT:
+       case NAND_ECC_ENGINE_TYPE_ON_DIE:
                if (!nfc->caps->is_nfcv2 && mtd->writesize != SZ_512 &&
                    mtd->writesize != SZ_2K) {
                        dev_err(nfc->dev, "NFCv1 cannot write %d bytes pages\n",
@@ -2467,7 +2468,7 @@ static int marvell_nand_attach_chip(struct nand_chip *chip)
                return ret;
        }
 
-       if (chip->ecc.mode == NAND_ECC_HW) {
+       if (chip->ecc.engine_type == NAND_ECC_ENGINE_TYPE_ON_HOST) {
                /*
                 * Subpage write not available with hardware ECC, prohibit also
                 * subpage read as in userspace subpage access would still be
@@ -2642,7 +2643,7 @@ static int marvell_nand_chip_init(struct device *dev, struct marvell_nfc *nfc,
         * Default to HW ECC engine mode. If the nand-ecc-mode property is given
         * in the DT node, this entry will be overwritten in nand_scan_ident().
         */
-       chip->ecc.mode = NAND_ECC_HW;
+       chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST;
 
        /*
         * Save a reference value for timing registers before
index 0e5829a2b54f8d3f0466ef147e150a120b649b86..48e6dac96be6d7ecf4a2e26c3f456c6b1b305e07 100644 (file)
@@ -1197,7 +1197,7 @@ static int meson_nand_attach_chip(struct nand_chip *nand)
        if (ret)
                return -EINVAL;
 
-       nand->ecc.mode = NAND_ECC_HW;
+       nand->ecc.engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST;
        nand->ecc.write_page_raw = meson_nfc_write_page_raw;
        nand->ecc.write_page = meson_nfc_write_page_hwecc;
        nand->ecc.write_oob_raw = nand_write_oob_std;
index a67eded226db6b2ff7c4bc4128d92c73caf375d2..dfd0d3ed5ed0418e5cfbb9c5b70216074a00a6a3 100644 (file)
@@ -688,7 +688,7 @@ static int mpc5121_nfc_probe(struct platform_device *op)
        chip->legacy.set_features = nand_get_set_features_notsupp;
        chip->legacy.get_features = nand_get_set_features_notsupp;
        chip->bbt_options = NAND_BBT_USE_FLASH;
-       chip->ecc.mode = NAND_ECC_SOFT;
+       chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT;
        chip->ecc.algo = NAND_ECC_ALGO_HAMMING;
 
        /* Support external chip-select logic on ADS5121 board */
index ad1b55dab2110641761f058a4eec66af5eb8ad66..42966fe22d8bc5b0736ef35afd3293f98d2bb29b 100644 (file)
@@ -1258,8 +1258,8 @@ static int mtk_nfc_ecc_init(struct device *dev, struct mtd_info *mtd)
        int free, ret;
 
        /* support only ecc hw mode */
-       if (nand->ecc.mode != NAND_ECC_HW) {
-               dev_err(dev, "ecc.mode not supported\n");
+       if (nand->ecc.engine_type != NAND_ECC_ENGINE_TYPE_ON_HOST) {
+               dev_err(dev, "ecc.engine_type not supported\n");
                return -EINVAL;
        }
 
@@ -1416,7 +1416,7 @@ static int mtk_nfc_nand_chip_init(struct device *dev, struct mtk_nfc *nfc,
        nand->options |= NAND_USES_DMA | NAND_SUBPAGE_READ;
 
        /* set default mode in case dt entry is missing */
-       nand->ecc.mode = NAND_ECC_HW;
+       nand->ecc.engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST;
 
        nand->ecc.write_subpage = mtk_nfc_write_subpage_hwecc;
        nand->ecc.write_page_raw = mtk_nfc_write_page_raw;
index 65448fb223b8d37c3922f3da6fb90aa55aeac761..d4200eb2ad3284984dec89758f0d798a0c333762 100644 (file)
@@ -669,7 +669,7 @@ static void mxc_nand_enable_hwecc_v1_v2(struct nand_chip *chip, bool enable)
        struct mxc_nand_host *host = nand_get_controller_data(chip);
        uint16_t config1;
 
-       if (chip->ecc.mode != NAND_ECC_HW)
+       if (chip->ecc.engine_type != NAND_ECC_ENGINE_TYPE_ON_HOST)
                return;
 
        config1 = readw(NFC_V1_V2_CONFIG1);
@@ -687,7 +687,7 @@ static void mxc_nand_enable_hwecc_v3(struct nand_chip *chip, bool enable)
        struct mxc_nand_host *host = nand_get_controller_data(chip);
        uint32_t config2;
 
-       if (chip->ecc.mode != NAND_ECC_HW)
+       if (chip->ecc.engine_type != NAND_ECC_ENGINE_TYPE_ON_HOST)
                return;
 
        config2 = readl(NFC_V3_CONFIG2);
@@ -1117,7 +1117,8 @@ static void preset_v1(struct mtd_info *mtd)
        struct mxc_nand_host *host = nand_get_controller_data(nand_chip);
        uint16_t config1 = 0;
 
-       if (nand_chip->ecc.mode == NAND_ECC_HW && mtd->writesize)
+       if (nand_chip->ecc.engine_type == NAND_ECC_ENGINE_TYPE_ON_HOST &&
+           mtd->writesize)
                config1 |= NFC_V1_V2_CONFIG1_ECC_EN;
 
        if (!host->devtype_data->irqpending_quirk)
@@ -1227,7 +1228,7 @@ static void preset_v2(struct mtd_info *mtd)
        if (mtd->writesize) {
                uint16_t pages_per_block = mtd->erasesize / mtd->writesize;
 
-               if (nand_chip->ecc.mode == NAND_ECC_HW)
+               if (nand_chip->ecc.engine_type == NAND_ECC_ENGINE_TYPE_ON_HOST)
                        config1 |= NFC_V1_V2_CONFIG1_ECC_EN;
 
                host->eccsize = get_eccsize(mtd);
@@ -1303,7 +1304,7 @@ static void preset_v3(struct mtd_info *mtd)
        }
 
        if (mtd->writesize) {
-               if (chip->ecc.mode == NAND_ECC_HW)
+               if (chip->ecc.engine_type == NAND_ECC_ENGINE_TYPE_ON_HOST)
                        config2 |= NFC_V3_CONFIG2_ECC_EN;
 
                config2 |= NFC_V3_CONFIG2_PPB(
@@ -1680,8 +1681,8 @@ static int mxcnd_attach_chip(struct nand_chip *chip)
        struct mxc_nand_host *host = nand_get_controller_data(chip);
        struct device *dev = mtd->dev.parent;
 
-       switch (chip->ecc.mode) {
-       case NAND_ECC_HW:
+       switch (chip->ecc.engine_type) {
+       case NAND_ECC_ENGINE_TYPE_ON_HOST:
                chip->ecc.read_page = mxc_nand_read_page;
                chip->ecc.read_page_raw = mxc_nand_read_page_raw;
                chip->ecc.read_oob = mxc_nand_read_oob;
@@ -1690,7 +1691,7 @@ static int mxcnd_attach_chip(struct nand_chip *chip)
                chip->ecc.write_oob = mxc_nand_write_oob;
                break;
 
-       case NAND_ECC_SOFT:
+       case NAND_ECC_ENGINE_TYPE_SOFT:
                break;
 
        default:
@@ -1728,7 +1729,7 @@ static int mxcnd_attach_chip(struct nand_chip *chip)
         */
        host->used_oobsize = min(mtd->oobsize, 218U);
 
-       if (chip->ecc.mode == NAND_ECC_HW) {
+       if (chip->ecc.engine_type == NAND_ECC_ENGINE_TYPE_ON_HOST) {
                if (is_imx21_nfc(host) || is_imx27_nfc(host))
                        chip->ecc.strength = 1;
                else
@@ -1843,9 +1844,9 @@ static int mxcnd_probe(struct platform_device *pdev)
        mtd_set_ooblayout(mtd, host->devtype_data->ooblayout);
 
        if (host->pdata.hw_ecc) {
-               this->ecc.mode = NAND_ECC_HW;
+               this->ecc.engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST;
        } else {
-               this->ecc.mode = NAND_ECC_SOFT;
+               this->ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT;
                this->ecc.algo = NAND_ECC_ALGO_HAMMING;
        }
 
index 172852a29a50feaa0ca82f08da969a2b89ce4b7e..4b406b0f783c803265c535d610a3615c5ad71607 100644 (file)
@@ -5041,28 +5041,45 @@ static const char * const nand_ecc_modes[] = {
        [NAND_ECC_ON_DIE]       = "on-die",
 };
 
-static int of_get_nand_ecc_mode(struct device_node *np)
+static enum nand_ecc_engine_type
+of_get_nand_ecc_engine_type(struct device_node *np)
 {
+       enum nand_ecc_mode eng_type;
        const char *pm;
-       int err, i;
+       int err;
 
        err = of_property_read_string(np, "nand-ecc-mode", &pm);
-       if (err < 0)
-               return err;
-
-       for (i = NAND_ECC_NONE; i < ARRAY_SIZE(nand_ecc_modes); i++)
-               if (!strcasecmp(pm, nand_ecc_modes[i]))
-                       return i;
+       if (err)
+               return NAND_ECC_ENGINE_TYPE_INVALID;
+
+       for (eng_type = NAND_ECC_NONE;
+            eng_type < ARRAY_SIZE(nand_ecc_modes); eng_type++) {
+               if (!strcasecmp(pm, nand_ecc_modes[eng_type])) {
+                       switch (eng_type) {
+                       case NAND_ECC_NONE:
+                               return NAND_ECC_ENGINE_TYPE_NONE;
+                       case NAND_ECC_SOFT:
+                               return NAND_ECC_ENGINE_TYPE_SOFT;
+                       case NAND_ECC_HW:
+                       case NAND_ECC_HW_SYNDROME:
+                               return NAND_ECC_ENGINE_TYPE_ON_HOST;
+                       case NAND_ECC_ON_DIE:
+                               return NAND_ECC_ENGINE_TYPE_ON_DIE;
+                       default:
+                               break;
+                       }
+               }
+       }
 
        /*
         * For backward compatibility we support few obsoleted values that don't
-        * have their mappings into the nand_ecc_mode enum anymore (they were
-        * merged with other enums).
+        * have their mappings into the nand_ecc_engine_providers enum anymore
+        * (they were merged with other enums).
         */
        if (!strcasecmp(pm, "soft_bch"))
-               return NAND_ECC_SOFT;
+               return NAND_ECC_ENGINE_TYPE_SOFT;
 
-       return -ENODEV;
+       return NAND_ECC_ENGINE_TYPE_INVALID;
 }
 
 static const char * const nand_ecc_algos[] = {
@@ -5144,8 +5161,9 @@ static bool of_get_nand_on_flash_bbt(struct device_node *np)
 static int nand_dt_init(struct nand_chip *chip)
 {
        struct device_node *dn = nand_get_flash_node(chip);
+       enum nand_ecc_engine_type ecc_type;
        enum nand_ecc_algo ecc_algo;
-       int ecc_mode, ecc_strength, ecc_step;
+       int ecc_strength, ecc_step;
 
        if (!dn)
                return 0;
@@ -5159,13 +5177,13 @@ static int nand_dt_init(struct nand_chip *chip)
        if (of_get_nand_on_flash_bbt(dn))
                chip->bbt_options |= NAND_BBT_USE_FLASH;
 
-       ecc_mode = of_get_nand_ecc_mode(dn);
+       ecc_type = of_get_nand_ecc_engine_type(dn);
        ecc_algo = of_get_nand_ecc_algo(dn);
        ecc_strength = of_get_nand_ecc_strength(dn);
        ecc_step = of_get_nand_ecc_step_size(dn);
 
-       if (ecc_mode >= 0)
-               chip->ecc.mode = ecc_mode;
+       if (ecc_type != NAND_ECC_ENGINE_TYPE_INVALID)
+               chip->ecc.engine_type = ecc_type;
 
        if (ecc_algo != NAND_ECC_ALGO_UNKNOWN)
                chip->ecc.algo = ecc_algo;
@@ -5287,7 +5305,7 @@ static int nand_set_ecc_soft_ops(struct nand_chip *chip)
        struct mtd_info *mtd = nand_to_mtd(chip);
        struct nand_ecc_ctrl *ecc = &chip->ecc;
 
-       if (WARN_ON(ecc->mode != NAND_ECC_SOFT))
+       if (WARN_ON(ecc->engine_type != NAND_ECC_ENGINE_TYPE_SOFT))
                return -EINVAL;
 
        switch (ecc->algo) {
@@ -5752,7 +5770,8 @@ static int nand_scan_tail(struct nand_chip *chip)
         * If no default placement scheme is given, select an appropriate one.
         */
        if (!mtd->ooblayout &&
-           !(ecc->mode == NAND_ECC_SOFT && ecc->algo == NAND_ECC_ALGO_BCH)) {
+           !(ecc->engine_type == NAND_ECC_ENGINE_TYPE_SOFT &&
+             ecc->algo == NAND_ECC_ALGO_BCH)) {
                switch (mtd->oobsize) {
                case 8:
                case 16:
@@ -5770,7 +5789,7 @@ static int nand_scan_tail(struct nand_chip *chip)
                         * page with ECC layout when ->oobsize <= 128 for
                         * compatibility reasons.
                         */
-                       if (ecc->mode == NAND_ECC_NONE) {
+                       if (ecc->engine_type == NAND_ECC_ENGINE_TYPE_NONE) {
                                mtd_set_ooblayout(mtd,
                                                &nand_ooblayout_lp_ops);
                                break;
@@ -5788,8 +5807,9 @@ static int nand_scan_tail(struct nand_chip *chip)
         * selected and we have 256 byte pagesize fallback to software ECC
         */
 
-       switch (ecc->mode) {
-       case NAND_ECC_HW:
+       switch (ecc->engine_type) {
+       case NAND_ECC_ENGINE_TYPE_ON_HOST:
+
                switch (ecc->placement) {
                case NAND_ECC_PLACEMENT_UNKNOWN:
                case NAND_ECC_PLACEMENT_OOB:
@@ -5854,11 +5874,11 @@ static int nand_scan_tail(struct nand_chip *chip)
                }
                pr_warn("%d byte HW ECC not possible on %d byte page size, fallback to SW ECC\n",
                        ecc->size, mtd->writesize);
-               ecc->mode = NAND_ECC_SOFT;
+               ecc->engine_type = NAND_ECC_ENGINE_TYPE_SOFT;
                ecc->algo = NAND_ECC_ALGO_HAMMING;
                fallthrough;
 
-       case NAND_ECC_SOFT:
+       case NAND_ECC_ENGINE_TYPE_SOFT:
                ret = nand_set_ecc_soft_ops(chip);
                if (ret) {
                        ret = -EINVAL;
@@ -5866,7 +5886,7 @@ static int nand_scan_tail(struct nand_chip *chip)
                }
                break;
 
-       case NAND_ECC_ON_DIE:
+       case NAND_ECC_ENGINE_TYPE_ON_DIE:
                if (!ecc->read_page || !ecc->write_page) {
                        WARN(1, "No ECC functions supplied; on-die ECC not possible\n");
                        ret = -EINVAL;
@@ -5878,8 +5898,8 @@ static int nand_scan_tail(struct nand_chip *chip)
                        ecc->write_oob = nand_write_oob_std;
                break;
 
-       case NAND_ECC_NONE:
-               pr_warn("NAND_ECC_NONE selected by board driver. This is not recommended!\n");
+       case NAND_ECC_ENGINE_TYPE_NONE:
+               pr_warn("NAND_ECC_ENGINE_TYPE_NONE selected by board driver. This is not recommended!\n");
                ecc->read_page = nand_read_page_raw;
                ecc->write_page = nand_write_page_raw;
                ecc->read_oob = nand_read_oob_std;
@@ -5892,7 +5912,7 @@ static int nand_scan_tail(struct nand_chip *chip)
                break;
 
        default:
-               WARN(1, "Invalid NAND_ECC_MODE %d\n", ecc->mode);
+               WARN(1, "Invalid NAND_ECC_MODE %d\n", ecc->engine_type);
                ret = -EINVAL;
                goto err_nand_manuf_cleanup;
        }
@@ -5969,8 +5989,8 @@ static int nand_scan_tail(struct nand_chip *chip)
        chip->pagecache.page = -1;
 
        /* Large page NAND with SOFT_ECC should support subpage reads */
-       switch (ecc->mode) {
-       case NAND_ECC_SOFT:
+       switch (ecc->engine_type) {
+       case NAND_ECC_ENGINE_TYPE_SOFT:
                if (chip->page_shift > 9)
                        chip->options |= NAND_SUBPAGE_READ;
                break;
@@ -6114,7 +6134,7 @@ EXPORT_SYMBOL(nand_scan_with_ids);
  */
 void nand_cleanup(struct nand_chip *chip)
 {
-       if (chip->ecc.mode == NAND_ECC_SOFT &&
+       if (chip->ecc.engine_type == NAND_ECC_ENGINE_TYPE_SOFT &&
            chip->ecc.algo == NAND_ECC_ALGO_BCH)
                nand_bch_free((struct nand_bch_control *)chip->ecc.priv);
 
index 2d54a3aa15b1bd22732d4febc7b36428f804c94f..c43afaf2148225c00cb5efda904d203949eb9984 100644 (file)
@@ -497,13 +497,13 @@ static int micron_nand_init(struct nand_chip *chip)
        ondie = micron_supports_on_die_ecc(chip);
 
        if (ondie == MICRON_ON_DIE_MANDATORY &&
-           chip->ecc.mode != NAND_ECC_ON_DIE) {
+           chip->ecc.engine_type != NAND_ECC_ENGINE_TYPE_ON_DIE) {
                pr_err("On-die ECC forcefully enabled, not supported\n");
                ret = -EINVAL;
                goto err_free_manuf_data;
        }
 
-       if (chip->ecc.mode == NAND_ECC_ON_DIE) {
+       if (chip->ecc.engine_type == NAND_ECC_ENGINE_TYPE_ON_DIE) {
                if (ondie == MICRON_ON_DIE_UNSUPPORTED) {
                        pr_err("On-die ECC selected but not supported\n");
                        ret = -EINVAL;
index f746c19f3b2cea384f7f8d4403f2681a6d0ccb29..7ba0516c6247ad704203feff9fb8499fd76d7017 100644 (file)
@@ -273,7 +273,8 @@ static int toshiba_nand_init(struct nand_chip *chip)
                chip->options |= NAND_BBM_FIRSTPAGE | NAND_BBM_SECONDPAGE;
 
        /* Check that chip is BENAND and ECC mode is on-die */
-       if (nand_is_slc(chip) && chip->ecc.mode == NAND_ECC_ON_DIE &&
+       if (nand_is_slc(chip) &&
+           chip->ecc.engine_type == NAND_ECC_ENGINE_TYPE_ON_DIE &&
            chip->id.data[4] & TOSHIBA_NAND_ID4_IS_BENAND)
                toshiba_nand_benand_init(chip);
 
index 1ab849ccaa96382a24107d823ce95b605676982d..a8048cb8d220576be45ccbbf27e38edbd6ffc433 100644 (file)
@@ -2234,7 +2234,7 @@ static int ns_attach_chip(struct nand_chip *chip)
                return -EINVAL;
        }
 
-       chip->ecc.mode = NAND_ECC_SOFT;
+       chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT;
        chip->ecc.algo = NAND_ECC_ALGO_BCH;
        chip->ecc.size = 512;
        chip->ecc.strength = bch;
@@ -2274,7 +2274,7 @@ static int __init ns_init_module(void)
        nsmtd       = nand_to_mtd(chip);
        nand_set_controller_data(chip, (void *)ns);
 
-       chip->ecc.mode   = NAND_ECC_SOFT;
+       chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT;
        chip->ecc.algo   = NAND_ECC_ALGO_HAMMING;
        /* The NAND_SKIP_BBTSCAN option is necessary for 'overridesize' */
        /* and 'badblocks' parameters to work */
index ed38338c13832f6daef76b1525fc1bd747ca4fef..0fb4ba93c41e031d93c4a258f14283d9505c1785 100644 (file)
@@ -149,7 +149,7 @@ static int ndfc_chip_init(struct ndfc_controller *ndfc,
        chip->ecc.correct = nand_correct_data;
        chip->ecc.hwctl = ndfc_enable_hwecc;
        chip->ecc.calculate = ndfc_calculate_ecc;
-       chip->ecc.mode = NAND_ECC_HW;
+       chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST;
        chip->ecc.size = 256;
        chip->ecc.bytes = 3;
        chip->ecc.strength = 1;
index 967ddbda1c485a9063370832530116c9a9cbe4cd..512f60780a5018d9066dad4a9735a86f4a37c01e 100644 (file)
@@ -884,8 +884,8 @@ static int omap_correct_data(struct nand_chip *chip, u_char *dat,
        int stat = 0;
 
        /* Ex NAND_ECC_HW12_2048 */
-       if ((info->nand.ecc.mode == NAND_ECC_HW) &&
-                       (info->nand.ecc.size  == 2048))
+       if (info->nand.ecc.engine_type == NAND_ECC_ENGINE_TYPE_ON_HOST &&
+           info->nand.ecc.size == 2048)
                blockCnt = 4;
        else
                blockCnt = 1;
@@ -2006,11 +2006,11 @@ static int omap_nand_attach_chip(struct nand_chip *chip)
                return -EINVAL;
 
        /*
-        * Bail out earlier to let NAND_ECC_SOFT code create its own
+        * Bail out earlier to let NAND_ECC_ENGINE_TYPE_SOFT code create its own
         * ooblayout instead of using ours.
         */
        if (info->ecc_opt == OMAP_ECC_HAM1_CODE_SW) {
-               chip->ecc.mode = NAND_ECC_SOFT;
+               chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT;
                chip->ecc.algo = NAND_ECC_ALGO_HAMMING;
                return 0;
        }
@@ -2019,7 +2019,7 @@ static int omap_nand_attach_chip(struct nand_chip *chip)
        switch (info->ecc_opt) {
        case OMAP_ECC_HAM1_CODE_HW:
                dev_info(dev, "nand: using OMAP_ECC_HAM1_CODE_HW\n");
-               chip->ecc.mode          = NAND_ECC_HW;
+               chip->ecc.engine_type   = NAND_ECC_ENGINE_TYPE_ON_HOST;
                chip->ecc.bytes         = 3;
                chip->ecc.size          = 512;
                chip->ecc.strength      = 1;
@@ -2036,7 +2036,7 @@ static int omap_nand_attach_chip(struct nand_chip *chip)
 
        case OMAP_ECC_BCH4_CODE_HW_DETECTION_SW:
                pr_info("nand: using OMAP_ECC_BCH4_CODE_HW_DETECTION_SW\n");
-               chip->ecc.mode          = NAND_ECC_HW;
+               chip->ecc.engine_type   = NAND_ECC_ENGINE_TYPE_ON_HOST;
                chip->ecc.size          = 512;
                chip->ecc.bytes         = 7;
                chip->ecc.strength      = 4;
@@ -2056,7 +2056,7 @@ static int omap_nand_attach_chip(struct nand_chip *chip)
 
        case OMAP_ECC_BCH4_CODE_HW:
                pr_info("nand: using OMAP_ECC_BCH4_CODE_HW ECC scheme\n");
-               chip->ecc.mode          = NAND_ECC_HW;
+               chip->ecc.engine_type   = NAND_ECC_ENGINE_TYPE_ON_HOST;
                chip->ecc.size          = 512;
                /* 14th bit is kept reserved for ROM-code compatibility */
                chip->ecc.bytes         = 7 + 1;
@@ -2078,7 +2078,7 @@ static int omap_nand_attach_chip(struct nand_chip *chip)
 
        case OMAP_ECC_BCH8_CODE_HW_DETECTION_SW:
                pr_info("nand: using OMAP_ECC_BCH8_CODE_HW_DETECTION_SW\n");
-               chip->ecc.mode          = NAND_ECC_HW;
+               chip->ecc.engine_type   = NAND_ECC_ENGINE_TYPE_ON_HOST;
                chip->ecc.size          = 512;
                chip->ecc.bytes         = 13;
                chip->ecc.strength      = 8;
@@ -2098,7 +2098,7 @@ static int omap_nand_attach_chip(struct nand_chip *chip)
 
        case OMAP_ECC_BCH8_CODE_HW:
                pr_info("nand: using OMAP_ECC_BCH8_CODE_HW ECC scheme\n");
-               chip->ecc.mode          = NAND_ECC_HW;
+               chip->ecc.engine_type   = NAND_ECC_ENGINE_TYPE_ON_HOST;
                chip->ecc.size          = 512;
                /* 14th bit is kept reserved for ROM-code compatibility */
                chip->ecc.bytes         = 13 + 1;
@@ -2121,7 +2121,7 @@ static int omap_nand_attach_chip(struct nand_chip *chip)
 
        case OMAP_ECC_BCH16_CODE_HW:
                pr_info("Using OMAP_ECC_BCH16_CODE_HW ECC scheme\n");
-               chip->ecc.mode          = NAND_ECC_HW;
+               chip->ecc.engine_type   = NAND_ECC_ENGINE_TYPE_ON_HOST;
                chip->ecc.size          = 512;
                chip->ecc.bytes         = 26;
                chip->ecc.strength      = 16;
index 7a5cfa3d883f78e10a4f9e7ebcce1c6bcbb0e5cd..df9c0f8e4b4e0723281376f33d9ee7f97274567f 100644 (file)
@@ -139,7 +139,7 @@ static int __init orion_nand_probe(struct platform_device *pdev)
        nc->legacy.IO_ADDR_R = nc->legacy.IO_ADDR_W = io_base;
        nc->legacy.cmd_ctrl = orion_nand_cmd_ctrl;
        nc->legacy.read_buf = orion_nand_read_buf;
-       nc->ecc.mode = NAND_ECC_SOFT;
+       nc->ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT;
        nc->ecc.algo = NAND_ECC_ALGO_HAMMING;
 
        if (board->chip_delay)
index 3eddc284614d4fdfcd03a945bf432a2a87010639..155e8c8f61e27ae9d65b76d045e4000c45fa52c5 100644 (file)
@@ -132,7 +132,7 @@ static int pasemi_nand_probe(struct platform_device *ofdev)
        chip->legacy.read_buf = pasemi_read_buf;
        chip->legacy.write_buf = pasemi_write_buf;
        chip->legacy.chip_delay = 0;
-       chip->ecc.mode = NAND_ECC_SOFT;
+       chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT;
        chip->ecc.algo = NAND_ECC_ALGO_HAMMING;
 
        /* Enable the following for a flash based bad block table */
index dbc089c8872faaf45034eba5a85778cc3a5b8a7c..b98c0d5c413fa837a570de0e23d27c8a68b4f9ab 100644 (file)
@@ -66,7 +66,7 @@ static int plat_nand_probe(struct platform_device *pdev)
        data->chip.options |= pdata->chip.options;
        data->chip.bbt_options |= pdata->chip.bbt_options;
 
-       data->chip.ecc.mode = NAND_ECC_SOFT;
+       data->chip.ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT;
        data->chip.ecc.algo = NAND_ECC_ALGO_HAMMING;
 
        platform_set_drvdata(pdev, data);
index bd7a7251429bd91c5e59eea53034ef893114a307..3d616e616b265345b2d17fb963a86de74e10a94c 100644 (file)
@@ -2550,7 +2550,7 @@ static int qcom_nand_attach_chip(struct nand_chip *chip)
        ecc->write_page_raw     = qcom_nandc_write_page_raw;
        ecc->write_oob          = qcom_nandc_write_oob;
 
-       ecc->mode = NAND_ECC_HW;
+       ecc->engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST;
 
        mtd_set_ooblayout(mtd, &qcom_nand_ooblayout_ops);
 
index f0988cda44796fd00fee93c95a086f78f8221b57..6b7addd2c42089a73bb4542e72c4039e5d04a03f 100644 (file)
@@ -859,7 +859,7 @@ static int  r852_probe(struct pci_dev *pci_dev, const struct pci_device_id *id)
        chip->legacy.write_buf = r852_write_buf;
 
        /* ecc */
-       chip->ecc.mode = NAND_ECC_HW;
+       chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST;
        chip->ecc.placement = NAND_ECC_PLACEMENT_INTERLEAVED;
        chip->ecc.size = R852_DMA_LEN;
        chip->ecc.bytes = SM_OOB_SIZE;
index 5a39002d67eff4503c442fa80a73d3d5e56d9d1e..fbd0fa48e063d94e4d0f5baeb57975d898278df7 100644 (file)
@@ -904,7 +904,7 @@ static void s3c2410_nand_init_chip(struct s3c2410_nand_info *info,
        nmtd->info         = info;
        nmtd->set          = set;
 
-       chip->ecc.mode = info->platform->ecc_mode;
+       chip->ecc.engine_type = info->platform->engine_type;
 
        /*
         * If you use u-boot BBT creation code, specifying this flag will
@@ -929,24 +929,24 @@ static int s3c2410_nand_attach_chip(struct nand_chip *chip)
        struct mtd_info *mtd = nand_to_mtd(chip);
        struct s3c2410_nand_info *info = s3c2410_nand_mtd_toinfo(mtd);
 
-       switch (chip->ecc.mode) {
+       switch (chip->ecc.engine_type) {
 
-       case NAND_ECC_NONE:
+       case NAND_ECC_ENGINE_TYPE_NONE:
                dev_info(info->device, "ECC disabled\n");
                break;
 
-       case NAND_ECC_SOFT:
+       case NAND_ECC_ENGINE_TYPE_SOFT:
                /*
-                * This driver expects Hamming based ECC when ecc_mode is set
-                * to NAND_ECC_SOFT. Force ecc.algo to NAND_ECC_ALGO_HAMMING to
-                * avoid adding an extra ecc_algo field to
-                * s3c2410_platform_nand.
+                * This driver expects Hamming based ECC when engine_type is set
+                * to NAND_ECC_ENGINE_TYPE_SOFT. Force ecc.algo to
+                * NAND_ECC_ALGO_HAMMING to avoid adding an extra ecc_algo field
+                * to s3c2410_platform_nand.
                 */
                chip->ecc.algo = NAND_ECC_ALGO_HAMMING;
                dev_info(info->device, "soft ECC\n");
                break;
 
-       case NAND_ECC_HW:
+       case NAND_ECC_ENGINE_TYPE_ON_HOST:
                chip->ecc.calculate = s3c2410_nand_calculate_ecc;
                chip->ecc.correct   = s3c2410_nand_correct_data;
                chip->ecc.strength  = 1;
index 9dbd6fdbe264b9baf22c629017b2f15ad92dee9a..13df4bdf792af38dd011be93713bbe76654a9c9a 100644 (file)
@@ -1039,12 +1039,12 @@ static int flctl_chip_attach_chip(struct nand_chip *chip)
                chip->ecc.strength = 4;
                chip->ecc.read_page = flctl_read_page_hwecc;
                chip->ecc.write_page = flctl_write_page_hwecc;
-               chip->ecc.mode = NAND_ECC_HW;
+               chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST;
 
                /* 4 symbols ECC enabled */
                flctl->flcmncr_base |= _4ECCEN;
        } else {
-               chip->ecc.mode = NAND_ECC_SOFT;
+               chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT;
                chip->ecc.algo = NAND_ECC_ALGO_HAMMING;
        }
 
index 51286f7acf54f37a8a528799153b21422f84617d..1327bfb3d5d3f005536217fd9a304bd76f016a22 100644 (file)
@@ -157,7 +157,7 @@ static int sharpsl_nand_probe(struct platform_device *pdev)
        /* 15 us command delay time */
        this->legacy.chip_delay = 15;
        /* set eccmode using hardware ECC */
-       this->ecc.mode = NAND_ECC_HW;
+       this->ecc.engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST;
        this->ecc.size = 256;
        this->ecc.bytes = 3;
        this->ecc.strength = 1;
index 72a3a7f98282678f9e87a1c8aab51bd870228cd9..0f63ff6f7fe7dc5175a42657a98f3c3280ae982f 100644 (file)
@@ -153,7 +153,8 @@ static int socrates_nand_probe(struct platform_device *ofdev)
        nand_chip->legacy.read_buf = socrates_nand_read_buf;
        nand_chip->legacy.dev_ready = socrates_nand_device_ready;
 
-       nand_chip->ecc.mode = NAND_ECC_SOFT;    /* enable ECC */
+       /* enable ECC */
+       nand_chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT;
        nand_chip->ecc.algo = NAND_ECC_ALGO_HAMMING;
 
        /* TODO: I have no idea what real delay is. */
index 7f4546ae91303b07e67595a58bfa28bfeb4de729..ba679d2cc743d3ddbe66dc4cf7faa6ba686354b8 100644 (file)
@@ -1696,14 +1696,15 @@ static int stm32_fmc2_nfc_attach_chip(struct nand_chip *chip)
        int ret;
 
        /*
-        * Only NAND_ECC_HW mode is actually supported
+        * Only NAND_ECC_ENGINE_TYPE_ON_HOST mode is actually supported
         * Hamming => ecc.strength = 1
         * BCH4 => ecc.strength = 4
         * BCH8 => ecc.strength = 8
         * ECC sector size = 512
         */
-       if (chip->ecc.mode != NAND_ECC_HW) {
-               dev_err(nfc->dev, "nand_ecc_mode is not well defined in the DT\n");
+       if (chip->ecc.engine_type != NAND_ECC_ENGINE_TYPE_ON_HOST) {
+               dev_err(nfc->dev,
+                       "nand_ecc_engine_type is not well defined in the DT\n");
                return -EINVAL;
        }
 
@@ -1952,7 +1953,7 @@ static int stm32_fmc2_nfc_probe(struct platform_device *pdev)
                         NAND_USES_DMA;
 
        /* Default ECC settings */
-       chip->ecc.mode = NAND_ECC_HW;
+       chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST;
        chip->ecc.size = FMC2_ECC_STEP_SIZE;
        chip->ecc.strength = FMC2_ECC_BCH8;
 
index 9c50c2b965e10fb7fe0f90e4e4af909062562936..c78276de7c3746aa4fca824dd8c63c3387a72759 100644 (file)
@@ -1575,7 +1575,7 @@ static int sunxi_nand_ooblayout_free(struct mtd_info *mtd, int section,
         * only have 2 bytes available in the first user data
         * section.
         */
-       if (!section && ecc->mode == NAND_ECC_HW) {
+       if (!section && ecc->engine_type == NAND_ECC_ENGINE_TYPE_ON_HOST) {
                oobregion->offset = 2;
                oobregion->length = 2;
 
@@ -1720,11 +1720,11 @@ err:
 
 static void sunxi_nand_ecc_cleanup(struct nand_ecc_ctrl *ecc)
 {
-       switch (ecc->mode) {
-       case NAND_ECC_HW:
+       switch (ecc->engine_type) {
+       case NAND_ECC_ENGINE_TYPE_ON_HOST:
                sunxi_nand_hw_ecc_ctrl_cleanup(ecc);
                break;
-       case NAND_ECC_NONE:
+       case NAND_ECC_ENGINE_TYPE_NONE:
        default:
                break;
        }
@@ -1752,14 +1752,14 @@ static int sunxi_nand_attach_chip(struct nand_chip *nand)
        if (!ecc->size || !ecc->strength)
                return -EINVAL;
 
-       switch (ecc->mode) {
-       case NAND_ECC_HW:
+       switch (ecc->engine_type) {
+       case NAND_ECC_ENGINE_TYPE_ON_HOST:
                ret = sunxi_nand_hw_ecc_ctrl_init(nand, ecc, np);
                if (ret)
                        return ret;
                break;
-       case NAND_ECC_NONE:
-       case NAND_ECC_SOFT:
+       case NAND_ECC_ENGINE_TYPE_NONE:
+       case NAND_ECC_ENGINE_TYPE_SOFT:
                break;
        default:
                return -EINVAL;
@@ -1991,7 +1991,7 @@ static int sunxi_nand_chip_init(struct device *dev, struct sunxi_nfc *nfc,
         * Set the ECC mode to the default value in case nothing is specified
         * in the DT.
         */
-       nand->ecc.mode = NAND_ECC_HW;
+       nand->ecc.engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST;
        nand_set_flash_node(nand, np);
 
        mtd = nand_to_mtd(nand);
index 021ceef4ad0acd604b4a8108864e46afb9ab96e4..359187b5a4bec8364e44b97aea0b097feaa6967c 100644 (file)
@@ -549,7 +549,7 @@ static int tango_attach_chip(struct nand_chip *chip)
 {
        struct nand_ecc_ctrl *ecc = &chip->ecc;
 
-       ecc->mode = NAND_ECC_HW;
+       ecc->engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST;
        ecc->algo = NAND_ECC_ALGO_BCH;
        ecc->bytes = DIV_ROUND_UP(ecc->strength * FIELD_ORDER, BITS_PER_BYTE);
 
index 0d6f3c6d6e1148cb3a807ca0fd123ccf25f25f5e..cc72a2de8891d6628c646f8aa7a022356e7432b4 100644 (file)
@@ -916,7 +916,7 @@ static int tegra_nand_attach_chip(struct nand_chip *chip)
        if (chip->bbt_options & NAND_BBT_USE_FLASH)
                chip->bbt_options |= NAND_BBT_NO_OOB;
 
-       chip->ecc.mode = NAND_ECC_HW;
+       chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST;
        chip->ecc.size = 512;
        chip->ecc.steps = mtd->writesize / chip->ecc.size;
        if (chip->base.eccreq.step_size != 512) {
index 843a8683b737141aaafb142131c90f8cf86fca0b..235a2f7b1baddc30aaa04d96d9bef46ff800af83 100644 (file)
@@ -410,7 +410,7 @@ static int tmio_probe(struct platform_device *dev)
        nand_chip->legacy.read_buf = tmio_nand_read_buf;
 
        /* set eccmode using hardware ECC */
-       nand_chip->ecc.mode = NAND_ECC_HW;
+       nand_chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST;
        nand_chip->ecc.size = 512;
        nand_chip->ecc.bytes = 6;
        nand_chip->ecc.strength = 2;
index 47d966871445b588c76d47eb3a70a3c382890314..ef81dce6b5c4637bdd3924322d1c6aba9579ca75 100644 (file)
@@ -329,7 +329,7 @@ static int __init txx9ndfmc_probe(struct platform_device *dev)
                chip->ecc.calculate = txx9ndfmc_calculate_ecc;
                chip->ecc.correct = txx9ndfmc_correct_data;
                chip->ecc.hwctl = txx9ndfmc_enable_hwecc;
-               chip->ecc.mode = NAND_ECC_HW;
+               chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST;
                chip->ecc.strength = 1;
                chip->legacy.chip_delay = 100;
                chip->controller = &drvdata->controller;
index 7248c590118367ad8cdac6f0cf4078770277bce8..8ee2c1f539c496e6943e2e9a2a7f09fa78c28f4b 100644 (file)
@@ -732,7 +732,7 @@ static void vf610_nfc_init_controller(struct vf610_nfc *nfc)
        else
                vf610_nfc_clear(nfc, NFC_FLASH_CONFIG, CONFIG_16BIT);
 
-       if (nfc->chip.ecc.mode == NAND_ECC_HW) {
+       if (nfc->chip.ecc.engine_type == NAND_ECC_ENGINE_TYPE_ON_HOST) {
                /* Set ECC status offset in SRAM */
                vf610_nfc_set_field(nfc, NFC_FLASH_CONFIG,
                                    CONFIG_ECC_SRAM_ADDR_MASK,
@@ -761,7 +761,7 @@ static int vf610_nfc_attach_chip(struct nand_chip *chip)
                return -ENXIO;
        }
 
-       if (chip->ecc.mode != NAND_ECC_HW)
+       if (chip->ecc.engine_type != NAND_ECC_ENGINE_TYPE_ON_HOST)
                return 0;
 
        if (mtd->writesize != PAGE_2K && mtd->oobsize < 64) {
index b279ed143b8fe70496c55f77a56851db22a799ac..f2dbd63a5c1f1a000b7d85857c73d5146be2cae1 100644 (file)
@@ -180,7 +180,7 @@ static int xway_nand_probe(struct platform_device *pdev)
        data->chip.legacy.read_byte = xway_read_byte;
        data->chip.legacy.chip_delay = 30;
 
-       data->chip.ecc.mode = NAND_ECC_SOFT;
+       data->chip.ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT;
        data->chip.ecc.algo = NAND_ECC_ALGO_HAMMING;
 
        platform_set_drvdata(pdev, data);
index cfd75a12f8027b2769c87307e7f47c45b26ca0b6..967b616c50df27abcc607944e8f6f86f409a8588 100644 (file)
@@ -303,7 +303,7 @@ static const struct nand_ecc_caps __name = {                        \
 
 /**
  * struct nand_ecc_ctrl - Control structure for ECC
- * @mode:      ECC mode
+ * @engine_type: ECC engine type
  * @placement: OOB bytes placement
  * @algo:      ECC algorithm
  * @steps:     number of ECC steps per page
@@ -356,7 +356,7 @@ static const struct nand_ecc_caps __name = {                        \
  * @write_oob: function to write chip OOB data
  */
 struct nand_ecc_ctrl {
-       enum nand_ecc_mode mode;
+       enum nand_ecc_engine_type engine_type;
        enum nand_ecc_placement placement;
        enum nand_ecc_algo algo;
        int steps;
index 6e2b252a4ce6c5cd09ad584f6baa974b5b8cec17..dd474dd44848195bdafaf27a4735ed4c26aae497 100644 (file)
@@ -60,15 +60,15 @@ struct davinci_nand_pdata {         /* platform_data */
        struct mtd_partition    *parts;
        unsigned                nr_parts;
 
-       /* none  == NAND_ECC_NONE (strongly *not* advised!!)
-        * soft  == NAND_ECC_SOFT
-        * else  == NAND_ECC_HW, according to ecc_bits
+       /* none  == NAND_ECC_ENGINE_TYPE_NONE (strongly *not* advised!!)
+        * soft  == NAND_ECC_ENGINE_TYPE_SOFT
+        * else  == NAND_ECC_ENGINE_TYPE_ON_HOST, according to ecc_bits
         *
         * All DaVinci-family chips support 1-bit hardware ECC.
         * Newer ones also support 4-bit ECC, but are awkward
         * using it with large page chips.
         */
-       enum nand_ecc_mode      ecc_mode;
+       enum nand_ecc_engine_type engine_type;
        enum nand_ecc_placement ecc_placement;
        u8                      ecc_bits;
 
index 08675b16f9e16995f916d4e46f46b4ba42e96a49..25390fc3e795dee55111bd379b5c08ba7f848541 100644 (file)
@@ -49,7 +49,7 @@ struct s3c2410_platform_nand {
 
        unsigned int    ignore_unset_ecc:1;
 
-       enum nand_ecc_mode      ecc_mode;
+       enum nand_ecc_engine_type engine_type;
 
        int                     nr_sets;
        struct s3c2410_nand_set *sets;