
14 Jun
2013
14 Jun
'13
10:38 p.m.
On 06/14/2013 06:20:42 AM, Josh Wu wrote:
+static int pmecc_choose_ecc(struct atmel_nand_host *host,
struct nand_chip *chip,
int *cap, int *sector_size)
+{
- /* Get ECC requirement from ONFI parameters */
- *cap = *sector_size = 0;
- if (chip->onfi_version) {
if (!get_onfi_ecc_param(chip, cap, sector_size))
MTDDEBUG(MTD_DEBUG_LEVEL1, "ONFI params,
minimum required ECC: %d bits in %d bytes\n",
*cap, *sector_size);
else
printk(KERN_WARNING "NAND chip ECC reqirement
is in Extended ONFI parameter, we don't support yet.\n");
Both of these prints are dev_info in Linux. While I tend to agree that the first print should be debug and the second an error (or at least a warning), it doesn't make much sense to use KERN_WARNING in U-Boot-only code (and even in Linux, explicit use of KERN_WARNING is deprecated in favor of pr_warn or dev_warn).
- } else {
printk(KERN_WARNING "NAND chip is not ONFI compliant,
assume ecc_bits is 2 in 512 bytes");
- }
- if (*cap == 0 && *sector_size == 0) {
/* Non-ONFI compliant or use extended ONFI parameters */
*cap = 2;
*sector_size = 512;
- }
- /* If head file doesn't specify then use the one in ONFI
parameters */
- if (host->pmecc_corr_cap == 0) {
/* use the most fitable ecc bits (the near bigger one )
*/
if (*cap <= 2)
host->pmecc_corr_cap = 2;
else if (*cap <= 4)
host->pmecc_corr_cap = 4;
else if (*cap < 8)
host->pmecc_corr_cap = 8;
else if (*cap < 12)
host->pmecc_corr_cap = 12;
else if (*cap < 24)
host->pmecc_corr_cap = 24;
else
return -EINVAL;
Why are some of these "<=" and others "<"?
-Scott