|
|
|
@ -484,7 +484,20 @@ static int nand_davinci_4bit_correct_data(struct mtd_info *mtd, uint8_t *dat, |
|
|
|
|
__raw_writel(1 << 13, &davinci_emif_regs->nandfcr); |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Wait for the corr_state field (bits 8 to 11)in the |
|
|
|
|
* Wait for the corr_state field (bits 8 to 11) in the |
|
|
|
|
* NAND Flash Status register to be not equal to 0x0, 0x1, 0x2, or 0x3. |
|
|
|
|
* Otherwise ECC calculation has not even begun and the next loop might |
|
|
|
|
* fail because of a false positive! |
|
|
|
|
*/ |
|
|
|
|
i = NAND_TIMEOUT; |
|
|
|
|
do { |
|
|
|
|
val = __raw_readl(&davinci_emif_regs->nandfsr); |
|
|
|
|
val &= 0xc00; |
|
|
|
|
i--; |
|
|
|
|
} while ((i > 0) && !val); |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Wait for the corr_state field (bits 8 to 11) in the |
|
|
|
|
* NAND Flash Status register to be equal to 0x0, 0x1, 0x2, or 0x3. |
|
|
|
|
*/ |
|
|
|
|
i = NAND_TIMEOUT; |
|
|
|
|