• Markus Pargmann's avatar
    gpmi-nand: Handle ECC Errors in erased pages · bd2e778c
    Markus Pargmann authored
    ECC is only calculated for written pages. As erased pages are not
    actively written the ECC is always invalid. For this purpose the
    Hardware BCH unit is able to check for erased pages and does not raise
    an ECC error in this case. This behaviour can be influenced using the
    BCH_MODE register which sets the number of allowed bitflips in an erased
    page. Unfortunately the unit is not capable of fixing the bitflips in
    memory.
    
    To avoid complete software checks for erased pages, we can simply check
    buffers with uncorrectable ECC errors because we know that any erased
    page with errors is uncorrectable by the BCH unit.
    
    This patch adds the generic nand_check_erased_ecc_chunk() to gpmi-nand
    to correct erased pages. To have the valid data in the buffer before
    using them, this patch moves the read_page_swap_end() call before the
    ECC status checking for-loop.
    Signed-off-by: default avatarMarkus Pargmann <mpa@pengutronix.de>
    [Squashed patches by Stefan and Boris to check ECC area]
    Tested-by: default avatarStefan Christ <s.christ@phytec.de>
    Acked-by: default avatarHan xu <han.xu@nxp.com>
    Signed-off-by: default avatarBoris Brezillon <boris.brezillon@free-electrons.com>
    bd2e778c
gpmi-nand.c 61.8 KB