brcmnand: Clear EXT_ADDR error registers in PIO mode
authorSimon Arlott <simon@fire.lp0.eu>
Mon, 16 Nov 2015 22:05:39 +0000 (22:05 +0000)
committerBrian Norris <computersforpeace@gmail.com>
Tue, 1 Dec 2015 01:52:29 +0000 (17:52 -0800)
If an error occurs in flash above 4GB in PIO mode then the EXT_ADDR
registers will be set to the location of the error and never cleared.

Reset them to 0 before reading.

Signed-off-by: Simon Arlott <simon@fire.lp0.eu>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
drivers/mtd/nand/brcmnand/brcmnand.c

index 626a80e..8feee1e 100644 (file)
@@ -1405,6 +1405,8 @@ static int brcmnand_read_by_pio(struct mtd_info *mtd, struct nand_chip *chip,
        /* Clear error addresses */
        brcmnand_write_reg(ctrl, BRCMNAND_UNCORR_ADDR, 0);
        brcmnand_write_reg(ctrl, BRCMNAND_CORR_ADDR, 0);
+       brcmnand_write_reg(ctrl, BRCMNAND_UNCORR_EXT_ADDR, 0);
+       brcmnand_write_reg(ctrl, BRCMNAND_CORR_EXT_ADDR, 0);
 
        brcmnand_write_reg(ctrl, BRCMNAND_CMD_EXT_ADDRESS,
                        (host->cs << 16) | ((addr >> 32) & 0xffff));