Commit 9bb94643 authored by Miquel Raynal's avatar Miquel Raynal

mtd: nand: Clarify Kconfig entry for software Hamming ECC entries

The software Hamming ECC correction implementation is referred as
MTD_NAND_ECC which is too generic. Rename it
MTD_NAND_ECC_SW_HAMMING. Also rename MTD_NAND_ECC_SMC which is an
SMC quirk in the Hamming implementation as
MTD_NAND_ECC_SW_HAMMING_SMC.
Signed-off-by: default avatarMiquel Raynal <miquel.raynal@bootlin.com>
parent 714c0682
...@@ -53,7 +53,7 @@ CONFIG_MTD_BLOCK=y ...@@ -53,7 +53,7 @@ CONFIG_MTD_BLOCK=y
CONFIG_MTD_ONENAND=y CONFIG_MTD_ONENAND=y
CONFIG_MTD_ONENAND_VERIFY_WRITE=y CONFIG_MTD_ONENAND_VERIFY_WRITE=y
CONFIG_MTD_ONENAND_GENERIC=y CONFIG_MTD_ONENAND_GENERIC=y
CONFIG_MTD_NAND_ECC_SMC=y CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC=y
CONFIG_MTD_NAND=y CONFIG_MTD_NAND=y
CONFIG_MTD_NAND_FSMC=y CONFIG_MTD_NAND_FSMC=y
CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_LOOP=y
......
...@@ -15,7 +15,7 @@ CONFIG_MTD=y ...@@ -15,7 +15,7 @@ CONFIG_MTD=y
CONFIG_MTD_BLOCK=y CONFIG_MTD_BLOCK=y
CONFIG_MTD_CMDLINE_PARTS=y CONFIG_MTD_CMDLINE_PARTS=y
CONFIG_MTD_NAND_ECC=y CONFIG_MTD_NAND_ECC_SW_HAMMING=y
CONFIG_MTD_NAND_ECC_SW_BCH=y CONFIG_MTD_NAND_ECC_SW_BCH=y
CONFIG_MTD_NAND=y CONFIG_MTD_NAND=y
CONFIG_MTD_NAND_GPIO=y CONFIG_MTD_NAND_GPIO=y
......
...@@ -35,7 +35,7 @@ CONFIG_MTD=y ...@@ -35,7 +35,7 @@ CONFIG_MTD=y
CONFIG_MTD_CFI=y CONFIG_MTD_CFI=y
CONFIG_MTD_CFI_AMDSTD=y CONFIG_MTD_CFI_AMDSTD=y
CONFIG_MTD_PHYSMAP_OF=y CONFIG_MTD_PHYSMAP_OF=y
CONFIG_MTD_NAND_ECC_SMC=y CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC=y
CONFIG_MTD_NAND=y CONFIG_MTD_NAND=y
CONFIG_MTD_NAND_FSL_UPM=y CONFIG_MTD_NAND_FSL_UPM=y
CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_LOOP=y
......
...@@ -230,12 +230,11 @@ config SSFDC ...@@ -230,12 +230,11 @@ config SSFDC
This enables read only access to SmartMedia formatted NAND This enables read only access to SmartMedia formatted NAND
flash. You can mount it with FAT file system. flash. You can mount it with FAT file system.
config SM_FTL config SM_FTL
tristate "SmartMedia/xD new translation layer" tristate "SmartMedia/xD new translation layer"
depends on BLOCK depends on BLOCK
select MTD_BLKDEVS select MTD_BLKDEVS
select MTD_NAND_ECC select MTD_NAND_ECC_SW_HAMMING
help help
This enables EXPERIMENTAL R/W support for SmartMedia/xD This enables EXPERIMENTAL R/W support for SmartMedia/xD
FTL (Flash translation layer). FTL (Flash translation layer).
......
config MTD_NAND_ECC config MTD_NAND_ECC_SW_HAMMING
tristate tristate
config MTD_NAND_ECC_SMC config MTD_NAND_ECC_SW_HAMMING_SMC
bool "NAND ECC Smart Media byte order" bool "NAND ECC Smart Media byte order"
depends on MTD_NAND_ECC depends on MTD_NAND_ECC_SW_HAMMING
default n default n
help help
Software ECC according to the Smart Media Specification. Software ECC according to the Smart Media Specification.
The original Linux implementation had byte 0 and 1 swapped. The original Linux implementation had byte 0 and 1 swapped.
menuconfig MTD_NAND menuconfig MTD_NAND
tristate "Raw/Parallel NAND Device Support" tristate "Raw/Parallel NAND Device Support"
depends on MTD depends on MTD
select MTD_NAND_ECC
select MTD_NAND_CORE select MTD_NAND_CORE
select MTD_NAND_ECC_SW_HAMMING
help help
This enables support for accessing all type of raw/parallel This enables support for accessing all type of raw/parallel
NAND flash devices. For further information see NAND flash devices. For further information see
...@@ -132,7 +131,7 @@ config MTD_NAND_S3C2410_DEBUG ...@@ -132,7 +131,7 @@ config MTD_NAND_S3C2410_DEBUG
config MTD_NAND_NDFC config MTD_NAND_NDFC
tristate "NDFC NanD Flash Controller" tristate "NDFC NanD Flash Controller"
depends on 4xx depends on 4xx
select MTD_NAND_ECC_SMC select MTD_NAND_ECC_SW_HAMMING_SMC
help help
NDFC Nand Flash Controllers are integrated in IBM/AMCC's 4xx SoCs NDFC Nand Flash Controllers are integrated in IBM/AMCC's 4xx SoCs
......
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_MTD_NAND) += nand.o obj-$(CONFIG_MTD_NAND) += nand.o
obj-$(CONFIG_MTD_NAND_ECC) += nand_ecc.o obj-$(CONFIG_MTD_NAND_ECC_SW_HAMMING) += nand_ecc.o
obj-$(CONFIG_MTD_NAND_ECC_SW_BCH) += nand_bch.o obj-$(CONFIG_MTD_NAND_ECC_SW_BCH) += nand_bch.o
obj-$(CONFIG_MTD_SM_COMMON) += sm_common.o obj-$(CONFIG_MTD_SM_COMMON) += sm_common.o
......
...@@ -5081,7 +5081,7 @@ static int nand_set_ecc_soft_ops(struct nand_chip *chip) ...@@ -5081,7 +5081,7 @@ static int nand_set_ecc_soft_ops(struct nand_chip *chip)
ecc->bytes = 3; ecc->bytes = 3;
ecc->strength = 1; ecc->strength = 1;
if (IS_ENABLED(CONFIG_MTD_NAND_ECC_SMC)) if (IS_ENABLED(CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC))
ecc->options |= NAND_ECC_SOFT_HAMMING_SM_ORDER; ecc->options |= NAND_ECC_SOFT_HAMMING_SM_ORDER;
return 0; return 0;
......
...@@ -222,17 +222,17 @@ static int sm_correct_sector(uint8_t *buffer, struct sm_oob *oob) ...@@ -222,17 +222,17 @@ static int sm_correct_sector(uint8_t *buffer, struct sm_oob *oob)
uint8_t ecc[3]; uint8_t ecc[3];
__nand_calculate_ecc(buffer, SM_SMALL_PAGE, ecc, __nand_calculate_ecc(buffer, SM_SMALL_PAGE, ecc,
IS_ENABLED(CONFIG_MTD_NAND_ECC_SMC)); IS_ENABLED(CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC));
if (__nand_correct_data(buffer, ecc, oob->ecc1, SM_SMALL_PAGE, if (__nand_correct_data(buffer, ecc, oob->ecc1, SM_SMALL_PAGE,
IS_ENABLED(CONFIG_MTD_NAND_ECC_SMC)) < 0) IS_ENABLED(CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC)) < 0)
return -EIO; return -EIO;
buffer += SM_SMALL_PAGE; buffer += SM_SMALL_PAGE;
__nand_calculate_ecc(buffer, SM_SMALL_PAGE, ecc, __nand_calculate_ecc(buffer, SM_SMALL_PAGE, ecc,
IS_ENABLED(CONFIG_MTD_NAND_ECC_SMC)); IS_ENABLED(CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC));
if (__nand_correct_data(buffer, ecc, oob->ecc2, SM_SMALL_PAGE, if (__nand_correct_data(buffer, ecc, oob->ecc2, SM_SMALL_PAGE,
IS_ENABLED(CONFIG_MTD_NAND_ECC_SMC)) < 0) IS_ENABLED(CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC)) < 0)
return -EIO; return -EIO;
return 0; return 0;
} }
...@@ -399,11 +399,11 @@ static int sm_write_block(struct sm_ftl *ftl, uint8_t *buf, ...@@ -399,11 +399,11 @@ static int sm_write_block(struct sm_ftl *ftl, uint8_t *buf,
if (ftl->smallpagenand) { if (ftl->smallpagenand) {
__nand_calculate_ecc(buf + boffset, SM_SMALL_PAGE, __nand_calculate_ecc(buf + boffset, SM_SMALL_PAGE,
oob.ecc1, oob.ecc1,
IS_ENABLED(CONFIG_MTD_NAND_ECC_SMC)); IS_ENABLED(CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC));
__nand_calculate_ecc(buf + boffset + SM_SMALL_PAGE, __nand_calculate_ecc(buf + boffset + SM_SMALL_PAGE,
SM_SMALL_PAGE, oob.ecc2, SM_SMALL_PAGE, oob.ecc2,
IS_ENABLED(CONFIG_MTD_NAND_ECC_SMC)); IS_ENABLED(CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC));
} }
if (!sm_write_sector(ftl, zone, block, boffset, if (!sm_write_sector(ftl, zone, block, boffset,
buf + boffset, &oob)) buf + boffset, &oob))
......
...@@ -122,9 +122,9 @@ static int no_bit_error_verify(void *error_data, void *error_ecc, ...@@ -122,9 +122,9 @@ static int no_bit_error_verify(void *error_data, void *error_ecc,
int ret; int ret;
__nand_calculate_ecc(error_data, size, calc_ecc, __nand_calculate_ecc(error_data, size, calc_ecc,
IS_ENABLED(CONFIG_MTD_NAND_ECC_SMC)); IS_ENABLED(CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC));
ret = __nand_correct_data(error_data, error_ecc, calc_ecc, size, ret = __nand_correct_data(error_data, error_ecc, calc_ecc, size,
IS_ENABLED(CONFIG_MTD_NAND_ECC_SMC)); IS_ENABLED(CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC));
if (ret == 0 && !memcmp(correct_data, error_data, size)) if (ret == 0 && !memcmp(correct_data, error_data, size))
return 0; return 0;
...@@ -152,9 +152,9 @@ static int single_bit_error_correct(void *error_data, void *error_ecc, ...@@ -152,9 +152,9 @@ static int single_bit_error_correct(void *error_data, void *error_ecc,
int ret; int ret;
__nand_calculate_ecc(error_data, size, calc_ecc, __nand_calculate_ecc(error_data, size, calc_ecc,
IS_ENABLED(CONFIG_MTD_NAND_ECC_SMC)); IS_ENABLED(CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC));
ret = __nand_correct_data(error_data, error_ecc, calc_ecc, size, ret = __nand_correct_data(error_data, error_ecc, calc_ecc, size,
IS_ENABLED(CONFIG_MTD_NAND_ECC_SMC)); IS_ENABLED(CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC));
if (ret == 1 && !memcmp(correct_data, error_data, size)) if (ret == 1 && !memcmp(correct_data, error_data, size))
return 0; return 0;
...@@ -189,9 +189,9 @@ static int double_bit_error_detect(void *error_data, void *error_ecc, ...@@ -189,9 +189,9 @@ static int double_bit_error_detect(void *error_data, void *error_ecc,
int ret; int ret;
__nand_calculate_ecc(error_data, size, calc_ecc, __nand_calculate_ecc(error_data, size, calc_ecc,
IS_ENABLED(CONFIG_MTD_NAND_ECC_SMC)); IS_ENABLED(CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC));
ret = __nand_correct_data(error_data, error_ecc, calc_ecc, size, ret = __nand_correct_data(error_data, error_ecc, calc_ecc, size,
IS_ENABLED(CONFIG_MTD_NAND_ECC_SMC)); IS_ENABLED(CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC));
return (ret == -EBADMSG) ? 0 : -EINVAL; return (ret == -EBADMSG) ? 0 : -EINVAL;
} }
...@@ -266,7 +266,7 @@ static int nand_ecc_test_run(const size_t size) ...@@ -266,7 +266,7 @@ static int nand_ecc_test_run(const size_t size)
prandom_bytes(correct_data, size); prandom_bytes(correct_data, size);
__nand_calculate_ecc(correct_data, size, correct_ecc, __nand_calculate_ecc(correct_data, size, correct_ecc,
IS_ENABLED(CONFIG_MTD_NAND_ECC_SMC)); IS_ENABLED(CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC));
for (i = 0; i < ARRAY_SIZE(nand_ecc_test); i++) { for (i = 0; i < ARRAY_SIZE(nand_ecc_test); i++) {
nand_ecc_test[i].prepare(error_data, error_ecc, nand_ecc_test[i].prepare(error_data, error_ecc,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment