nand: atmel: Fix not calling dev_xxx with a device

Use mtd_info to get a device to log with.

Signed-off-by: Sean Anderson <seanga2@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Tested-by: Patrick Delaunay <patrick.delaunay@st.com>
This commit is contained in:
Sean Anderson 2020-09-15 10:44:49 -04:00 committed by Tom Rini
parent fe6e209a27
commit 2e8c907aba

View File

@ -424,7 +424,8 @@ static int pmecc_err_location(struct mtd_info *mtd)
} }
if (!timeout) { if (!timeout) {
dev_err(host->dev, "atmel_nand : Timeout to calculate PMECC error location\n"); dev_err(mtd->dev,
"Timeout to calculate PMECC error location\n");
return -1; return -1;
} }
@ -464,7 +465,8 @@ static void pmecc_correct_data(struct mtd_info *mtd, uint8_t *buf, uint8_t *ecc,
*(buf + byte_pos) ^= (1 << bit_pos); *(buf + byte_pos) ^= (1 << bit_pos);
pos = sector_num * host->pmecc_sector_size + byte_pos; pos = sector_num * host->pmecc_sector_size + byte_pos;
dev_dbg(host->dev, "Bit flip in data area, byte_pos: %d, bit_pos: %d, 0x%02x -> 0x%02x\n", dev_dbg(mtd->dev,
"Bit flip in data area, byte_pos: %d, bit_pos: %d, 0x%02x -> 0x%02x\n",
pos, bit_pos, err_byte, *(buf + byte_pos)); pos, bit_pos, err_byte, *(buf + byte_pos));
} else { } else {
/* Bit flip in OOB area */ /* Bit flip in OOB area */
@ -474,7 +476,8 @@ static void pmecc_correct_data(struct mtd_info *mtd, uint8_t *buf, uint8_t *ecc,
ecc[tmp] ^= (1 << bit_pos); ecc[tmp] ^= (1 << bit_pos);
pos = tmp + nand_chip->ecc.layout->eccpos[0]; pos = tmp + nand_chip->ecc.layout->eccpos[0];
dev_dbg(host->dev, "Bit flip in OOB, oob_byte_pos: %d, bit_pos: %d, 0x%02x -> 0x%02x\n", dev_dbg(mtd->dev,
"Bit flip in OOB, oob_byte_pos: %d, bit_pos: %d, 0x%02x -> 0x%02x\n",
pos, bit_pos, err_byte, ecc[tmp]); pos, bit_pos, err_byte, ecc[tmp]);
} }
@ -516,7 +519,7 @@ normal_check:
err_nbr = pmecc_err_location(mtd); err_nbr = pmecc_err_location(mtd);
if (err_nbr == -1) { if (err_nbr == -1) {
dev_err(host->dev, "PMECC: Too many errors\n"); dev_err(mtd->dev, "PMECC: Too many errors\n");
mtd->ecc_stats.failed++; mtd->ecc_stats.failed++;
return -EBADMSG; return -EBADMSG;
} else { } else {
@ -560,7 +563,7 @@ static int atmel_nand_pmecc_read_page(struct mtd_info *mtd,
} }
if (!timeout) { if (!timeout) {
dev_err(host->dev, "atmel_nand : Timeout to read PMECC page\n"); dev_err(mtd->dev, "Timeout to read PMECC page\n");
return -1; return -1;
} }
@ -600,7 +603,8 @@ static int atmel_nand_pmecc_write_page(struct mtd_info *mtd,
} }
if (!timeout) { if (!timeout) {
dev_err(host->dev, "atmel_nand : Timeout to read PMECC status, fail to write PMECC in oob\n"); dev_err(mtd->dev,
"Timeout to read PMECC status, fail to write PMECC in oob\n");
goto out; goto out;
} }
@ -713,7 +717,8 @@ static int pmecc_choose_ecc(struct atmel_nand_host *host,
if (*cap == 0 && *sector_size == 0) { if (*cap == 0 && *sector_size == 0) {
/* Non-ONFI compliant */ /* Non-ONFI compliant */
dev_info(host->dev, "NAND chip is not ONFI compliant, assume ecc_bits is 2 in 512 bytes\n"); dev_info(chip->mtd.dev,
"NAND chip is not ONFI compliant, assume ecc_bits is 2 in 512 bytes\n");
*cap = 2; *cap = 2;
*sector_size = 512; *sector_size = 512;
} }
@ -835,17 +840,20 @@ static int atmel_pmecc_nand_init_params(struct nand_chip *nand,
* from ONFI. * from ONFI.
*/ */
if (pmecc_choose_ecc(host, nand, &cap, &sector_size)) { if (pmecc_choose_ecc(host, nand, &cap, &sector_size)) {
dev_err(host->dev, "Required ECC %d bits in %d bytes not supported!\n", dev_err(mtd->dev,
"Required ECC %d bits in %d bytes not supported!\n",
cap, sector_size); cap, sector_size);
return -EINVAL; return -EINVAL;
} }
if (cap > host->pmecc_corr_cap) if (cap > host->pmecc_corr_cap)
dev_info(host->dev, "WARNING: Using different ecc correct bits(%d bit) from Nand ONFI ECC reqirement (%d bit).\n", dev_info(mtd->dev,
host->pmecc_corr_cap, cap); "WARNING: Using different ecc correct bits(%d bit) from Nand ONFI ECC reqirement (%d bit).\n",
host->pmecc_corr_cap, cap);
if (sector_size < host->pmecc_sector_size) if (sector_size < host->pmecc_sector_size)
dev_info(host->dev, "WARNING: Using different ecc correct sector size (%d bytes) from Nand ONFI ECC reqirement (%d bytes).\n", dev_info(mtd->dev,
host->pmecc_sector_size, sector_size); "WARNING: Using different ecc correct sector size (%d bytes) from Nand ONFI ECC reqirement (%d bytes).\n",
host->pmecc_sector_size, sector_size);
#else /* CONFIG_SYS_NAND_ONFI_DETECTION */ #else /* CONFIG_SYS_NAND_ONFI_DETECTION */
host->pmecc_corr_cap = CONFIG_PMECC_CAP; host->pmecc_corr_cap = CONFIG_PMECC_CAP;
host->pmecc_sector_size = CONFIG_PMECC_SECTOR_SIZE; host->pmecc_sector_size = CONFIG_PMECC_SECTOR_SIZE;
@ -877,7 +885,7 @@ static int atmel_pmecc_nand_init_params(struct nand_chip *nand,
#if defined(NO_GALOIS_TABLE_IN_ROM) #if defined(NO_GALOIS_TABLE_IN_ROM)
pmecc_galois_table = create_lookup_table(host->pmecc_sector_size); pmecc_galois_table = create_lookup_table(host->pmecc_sector_size);
if (!pmecc_galois_table) { if (!pmecc_galois_table) {
dev_err(host->dev, "out of memory\n"); dev_err(mtd->dev, "out of memory\n");
return -ENOMEM; return -ENOMEM;
} }
@ -909,13 +917,14 @@ static int atmel_pmecc_nand_init_params(struct nand_chip *nand,
host->pmecc_sector_number; host->pmecc_sector_number;
if (nand->ecc.bytes > MTD_MAX_ECCPOS_ENTRIES_LARGE) { if (nand->ecc.bytes > MTD_MAX_ECCPOS_ENTRIES_LARGE) {
dev_err(host->dev, "too large eccpos entries. max support ecc.bytes is %d\n", dev_err(mtd->dev,
MTD_MAX_ECCPOS_ENTRIES_LARGE); "too large eccpos entries. max support ecc.bytes is %d\n",
MTD_MAX_ECCPOS_ENTRIES_LARGE);
return -EINVAL; return -EINVAL;
} }
if (nand->ecc.bytes > mtd->oobsize - PMECC_OOB_RESERVED_BYTES) { if (nand->ecc.bytes > mtd->oobsize - PMECC_OOB_RESERVED_BYTES) {
dev_err(host->dev, "No room for ECC bytes\n"); dev_err(mtd->dev, "No room for ECC bytes\n");
return -EINVAL; return -EINVAL;
} }
pmecc_config_ecc_layout(&atmel_pmecc_oobinfo, pmecc_config_ecc_layout(&atmel_pmecc_oobinfo,
@ -926,7 +935,8 @@ static int atmel_pmecc_nand_init_params(struct nand_chip *nand,
case 512: case 512:
case 1024: case 1024:
/* TODO */ /* TODO */
dev_err(host->dev, "Unsupported page size for PMECC, use Software ECC\n"); dev_err(mtd->dev,
"Unsupported page size for PMECC, use Software ECC\n");
default: default:
/* page size not handled by HW ECC */ /* page size not handled by HW ECC */
/* switching back to soft ECC */ /* switching back to soft ECC */
@ -940,7 +950,8 @@ static int atmel_pmecc_nand_init_params(struct nand_chip *nand,
/* Allocate data for PMECC computation */ /* Allocate data for PMECC computation */
if (pmecc_data_alloc(host)) { if (pmecc_data_alloc(host)) {
dev_err(host->dev, "Cannot allocate memory for PMECC computation!\n"); dev_err(mtd->dev,
"Cannot allocate memory for PMECC computation!\n");
return -ENOMEM; return -ENOMEM;
} }
@ -951,7 +962,7 @@ static int atmel_pmecc_nand_init_params(struct nand_chip *nand,
/* Check the PMECC ip version */ /* Check the PMECC ip version */
host->pmecc_version = pmecc_readl(host->pmerrloc, version); host->pmecc_version = pmecc_readl(host->pmerrloc, version);
dev_dbg(host->dev, "PMECC IP version is: %x\n", host->pmecc_version); dev_dbg(mtd->dev, "PMECC IP version is: %x\n", host->pmecc_version);
atmel_pmecc_core_init(mtd); atmel_pmecc_core_init(mtd);
@ -1114,8 +1125,8 @@ static int atmel_nand_correct(struct mtd_info *mtd, u_char *dat,
/* it doesn't seems to be a freshly /* it doesn't seems to be a freshly
* erased block. * erased block.
* We can't correct so many errors */ * We can't correct so many errors */
dev_warn(host->dev, "atmel_nand : multiple errors detected." dev_warn(mtd->dev,
" Unable to correct.\n"); "multiple errors detected. Unable to correct.\n");
return -EBADMSG; return -EBADMSG;
} }
@ -1124,15 +1135,14 @@ static int atmel_nand_correct(struct mtd_info *mtd, u_char *dat,
/* there's nothing much to do here. /* there's nothing much to do here.
* the bit error is on the ECC itself. * the bit error is on the ECC itself.
*/ */
dev_warn(host->dev, "atmel_nand : one bit error on ECC code." dev_warn(mtd->dev,
" Nothing to correct\n"); "one bit error on ECC code. Nothing to correct\n");
return 0; return 0;
} }
dev_warn(host->dev, "atmel_nand : one bit error on data." dev_warn(mtd->dev,
" (word offset in the page :" "one bit error on data. (word offset in the page : 0x%x bit offset : 0x%x)\n",
" 0x%x bit offset : 0x%x)\n", ecc_word, ecc_bit);
ecc_word, ecc_bit);
/* correct the error */ /* correct the error */
if (nand_chip->options & NAND_BUSWIDTH_16) { if (nand_chip->options & NAND_BUSWIDTH_16) {
/* 16 bits words */ /* 16 bits words */
@ -1141,7 +1151,7 @@ static int atmel_nand_correct(struct mtd_info *mtd, u_char *dat,
/* 8 bits words */ /* 8 bits words */
dat[ecc_word] ^= (1 << ecc_bit); dat[ecc_word] ^= (1 << ecc_bit);
} }
dev_warn(host->dev, "atmel_nand : error corrected\n"); dev_warn(mtd->dev, "error corrected\n");
return 1; return 1;
} }
@ -1511,7 +1521,6 @@ void board_nand_init(void)
int i; int i;
for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++) for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++)
if (atmel_nand_chip_init(i, base_addr[i])) if (atmel_nand_chip_init(i, base_addr[i]))
dev_err(host->dev, "atmel_nand: Fail to initialize #%d chip", log_err("atmel_nand: Fail to initialize #%d chip", i);
i);
} }
#endif /* CONFIG_SPL_BUILD */ #endif /* CONFIG_SPL_BUILD */