[U-Boot] [PATCH v4 4/7] jz4740 nand driver
Scott Wood
scottwood at freescale.com
Tue Jan 4 21:16:45 CET 2011
On Wed, Dec 08, 2010 at 12:20:46AM -0600, Xiangfu Liu wrote:
> + do {
> + status = readl(EMC_NFINTS);
> + } while(!(status & EMC_NFINTS_ENCF));
> +
> + /* disable ecc */
> + writel(readl(EMC_NFECR) & ~EMC_NFECR_ECCE, EMC_NFECR);
readl() and other I/O accessors take pointers, not integer addresses.
> +
> + for (i = 0; i < 9; i++)
> + ecc_code[i] = *(paraddr + i);
Use I/O accesors.
> + /* Check decoding */
> + if (status & EMC_NFINTS_ERR) {
> + if (status & EMC_NFINTS_UNCOR) {
> + printk("uncorrectable ecc\n");
> + return -1;
> + }
> +
> + uint32_t errcnt = (status & EMC_NFINTS_ERRCNT_MASK) >> EMC_NFINTS_ERRCNT_BIT;
U-Boot coding style prohibits declarations mid-block.
> + switch (errcnt) {
> + case 4:
> + jz_rs_correct(dat,
> + (readl(EMC_NFERR3) & EMC_NFERR_INDEX_MASK) >> EMC_NFERR_INDEX_BIT,
> + (readl(EMC_NFERR3) & EMC_NFERR_MASK_MASK) >> EMC_NFERR_MASK_BIT);
> + case 3:
> + jz_rs_correct(dat,
> + (readl(EMC_NFERR2) & EMC_NFERR_INDEX_MASK) >> EMC_NFERR_INDEX_BIT,
> + (readl(EMC_NFERR2) & EMC_NFERR_MASK_MASK) >> EMC_NFERR_MASK_BIT);
> + case 2:
> + jz_rs_correct(dat,
> + (readl(EMC_NFERR1) & EMC_NFERR_INDEX_MASK) >> EMC_NFERR_INDEX_BIT,
> + (readl(EMC_NFERR1) & EMC_NFERR_MASK_MASK) >> EMC_NFERR_MASK_BIT);
> + case 1:
> + jz_rs_correct(dat,
> + (readl(EMC_NFERR0) & EMC_NFERR_INDEX_MASK) >> EMC_NFERR_INDEX_BIT,
> + (readl(EMC_NFERR0) & EMC_NFERR_MASK_MASK) >> EMC_NFERR_MASK_BIT);
> + return errcnt;
Line length.
> + writel(0x094c4400, EMC_SMCR1);
Please symbolically define what went into that magic number.
-Scott
More information about the U-Boot
mailing list