[U-Boot] [PATCH v4 4/7] jz4740 nand driver

Scott Wood
2011-01-04T20:16:45Z

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