| .. | .. |
|---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
|---|
| 1 | 2 | #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt |
|---|
| 2 | 3 | |
|---|
| 3 | 4 | #include <linux/kernel.h> |
|---|
| .. | .. |
|---|
| 21 | 22 | * or detected. |
|---|
| 22 | 23 | */ |
|---|
| 23 | 24 | |
|---|
| 24 | | -#if IS_ENABLED(CONFIG_MTD_NAND) |
|---|
| 25 | +#if IS_ENABLED(CONFIG_MTD_RAW_NAND) |
|---|
| 25 | 26 | |
|---|
| 26 | 27 | struct nand_ecc_test { |
|---|
| 27 | 28 | const char *name; |
|---|
| .. | .. |
|---|
| 121 | 122 | unsigned char calc_ecc[3]; |
|---|
| 122 | 123 | int ret; |
|---|
| 123 | 124 | |
|---|
| 124 | | - __nand_calculate_ecc(error_data, size, calc_ecc); |
|---|
| 125 | | - ret = __nand_correct_data(error_data, error_ecc, calc_ecc, size); |
|---|
| 125 | + __nand_calculate_ecc(error_data, size, calc_ecc, |
|---|
| 126 | + IS_ENABLED(CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC)); |
|---|
| 127 | + ret = __nand_correct_data(error_data, error_ecc, calc_ecc, size, |
|---|
| 128 | + IS_ENABLED(CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC)); |
|---|
| 126 | 129 | if (ret == 0 && !memcmp(correct_data, error_data, size)) |
|---|
| 127 | 130 | return 0; |
|---|
| 128 | 131 | |
|---|
| .. | .. |
|---|
| 149 | 152 | unsigned char calc_ecc[3]; |
|---|
| 150 | 153 | int ret; |
|---|
| 151 | 154 | |
|---|
| 152 | | - __nand_calculate_ecc(error_data, size, calc_ecc); |
|---|
| 153 | | - ret = __nand_correct_data(error_data, error_ecc, calc_ecc, size); |
|---|
| 155 | + __nand_calculate_ecc(error_data, size, calc_ecc, |
|---|
| 156 | + IS_ENABLED(CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC)); |
|---|
| 157 | + ret = __nand_correct_data(error_data, error_ecc, calc_ecc, size, |
|---|
| 158 | + IS_ENABLED(CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC)); |
|---|
| 154 | 159 | if (ret == 1 && !memcmp(correct_data, error_data, size)) |
|---|
| 155 | 160 | return 0; |
|---|
| 156 | 161 | |
|---|
| .. | .. |
|---|
| 184 | 189 | unsigned char calc_ecc[3]; |
|---|
| 185 | 190 | int ret; |
|---|
| 186 | 191 | |
|---|
| 187 | | - __nand_calculate_ecc(error_data, size, calc_ecc); |
|---|
| 188 | | - ret = __nand_correct_data(error_data, error_ecc, calc_ecc, size); |
|---|
| 192 | + __nand_calculate_ecc(error_data, size, calc_ecc, |
|---|
| 193 | + IS_ENABLED(CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC)); |
|---|
| 194 | + ret = __nand_correct_data(error_data, error_ecc, calc_ecc, size, |
|---|
| 195 | + IS_ENABLED(CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC)); |
|---|
| 189 | 196 | |
|---|
| 190 | 197 | return (ret == -EBADMSG) ? 0 : -EINVAL; |
|---|
| 191 | 198 | } |
|---|
| .. | .. |
|---|
| 259 | 266 | } |
|---|
| 260 | 267 | |
|---|
| 261 | 268 | prandom_bytes(correct_data, size); |
|---|
| 262 | | - __nand_calculate_ecc(correct_data, size, correct_ecc); |
|---|
| 269 | + __nand_calculate_ecc(correct_data, size, correct_ecc, |
|---|
| 270 | + IS_ENABLED(CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC)); |
|---|
| 263 | 271 | |
|---|
| 264 | 272 | for (i = 0; i < ARRAY_SIZE(nand_ecc_test); i++) { |
|---|
| 265 | 273 | nand_ecc_test[i].prepare(error_data, error_ecc, |
|---|