.. | .. |
---|
| 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, |
---|