The Skytone Alpha 400 boards don't use ECC. It's probably and oversignt and certainly a bad idea, nevertheless enforcing ECC on existing boards would break boot. Sigh.
Signed-off-by: Lubomir Rintel <lkund...@v3.sk> --- drivers/mtd/nand/raw/nand_spl_simple.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/drivers/mtd/nand/raw/nand_spl_simple.c b/drivers/mtd/nand/raw/nand_spl_simple.c index 09e053541a9..ea5bcaf3982 100644 --- a/drivers/mtd/nand/raw/nand_spl_simple.c +++ b/drivers/mtd/nand/raw/nand_spl_simple.c @@ -9,14 +9,16 @@ #include <asm/io.h> #include <linux/mtd/nand_ecc.h> -static int nand_ecc_pos[] = CONFIG_SYS_NAND_ECCPOS; static struct mtd_info *mtd; static struct nand_chip nand_chip; +#if IS_ENABLED(CONFIG_SPL_NAND_ECC) +static int nand_ecc_pos[] = CONFIG_SYS_NAND_ECCPOS; + #define ECCSTEPS (CONFIG_SYS_NAND_PAGE_SIZE / \ CONFIG_SYS_NAND_ECCSIZE) #define ECCTOTAL (ECCSTEPS * CONFIG_SYS_NAND_ECCBYTES) - +#endif #if (CONFIG_SYS_NAND_PAGE_SIZE <= 512) /* @@ -166,7 +168,7 @@ static int nand_read_page(int block, int page, uchar *dst) return 0; } -#else +#elif IS_ENABLED(CONFIG_SPL_NAND_ECC) static int nand_read_page(int block, int page, void *dst) { struct nand_chip *this = mtd_to_nand(mtd); @@ -206,6 +208,16 @@ static int nand_read_page(int block, int page, void *dst) return 0; } +#else +static int nand_read_page(int block, int page, void *dst) +{ + struct nand_chip *this = mtd_to_nand(mtd); + + nand_command(block, page, 0, NAND_CMD_READ0); + this->read_buf(mtd, dst, CONFIG_SYS_NAND_PAGE_SIZE); + + return 0; +} #endif /* nand_init() - initialize data to make nand usable by SPL */ -- 2.28.0