mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-25 06:00:43 +00:00
mxc nand: Access all ecc_status_result fields
On the NFC IP 1.1, the 32-bit ecc_status_result value comes from 2 consecutive 16-bit registers. This patch reads all the fields of this value, which makes a difference for 4-kiB NF pages. Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com> Cc: Scott Wood <scottwood@freescale.com> Cc: Stefano Babic <sbabic@denx.de> Signed-off-by: Scott Wood <scottwood@freescale.com>
This commit is contained in:
parent
0e55ad7271
commit
c1db8dd62b
3 changed files with 6 additions and 3 deletions
|
@ -653,7 +653,7 @@ static int mxc_nand_correct_data(struct mtd_info *mtd, u_char *dat,
|
||||||
{
|
{
|
||||||
struct nand_chip *nand_chip = mtd->priv;
|
struct nand_chip *nand_chip = mtd->priv;
|
||||||
struct mxc_nand_host *host = nand_chip->priv;
|
struct mxc_nand_host *host = nand_chip->priv;
|
||||||
uint16_t ecc_status = readw(&host->regs->ecc_status_result);
|
uint32_t ecc_status = readl(&host->regs->ecc_status_result);
|
||||||
int subpages = mtd->writesize / nand_chip->subpagesize;
|
int subpages = mtd->writesize / nand_chip->subpagesize;
|
||||||
int pg2blk_shift = nand_chip->phys_erase_shift -
|
int pg2blk_shift = nand_chip->phys_erase_shift -
|
||||||
nand_chip->page_shift;
|
nand_chip->page_shift;
|
||||||
|
|
|
@ -94,8 +94,7 @@ struct fsl_nfc_regs {
|
||||||
u16 flash_addr;
|
u16 flash_addr;
|
||||||
u16 flash_cmd;
|
u16 flash_cmd;
|
||||||
u16 config;
|
u16 config;
|
||||||
u16 ecc_status_result;
|
u32 ecc_status_result;
|
||||||
u16 ecc_status_result2;
|
|
||||||
u16 spare_area_size;
|
u16 spare_area_size;
|
||||||
u16 wrprot;
|
u16 wrprot;
|
||||||
u16 reserved3[2];
|
u16 reserved3[2];
|
||||||
|
|
|
@ -139,7 +139,11 @@ static void nfc_nand_data_output(void)
|
||||||
|
|
||||||
static int nfc_nand_check_ecc(void)
|
static int nfc_nand_check_ecc(void)
|
||||||
{
|
{
|
||||||
|
#if defined(MXC_NFC_V1)
|
||||||
return readw(&nfc->ecc_status_result);
|
return readw(&nfc->ecc_status_result);
|
||||||
|
#elif defined(MXC_NFC_V1_1)
|
||||||
|
return readl(&nfc->ecc_status_result);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void nfc_nand_read_page(unsigned int page_address)
|
static void nfc_nand_read_page(unsigned int page_address)
|
||||||
|
|
Loading…
Reference in a new issue