
4 Jan
2011
4 Jan
'11
9:16 p.m.
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