On Thu, 20 Oct 2016 10:12:42 +0200 Maxime Ripard <maxime.rip...@free-electrons.com> wrote:
> From: Boris Brezillon <boris.brezil...@free-electrons.com> > > The driver is incorrectly assuming that the ECC block size is always 1k > which is not always true. > > Also take the other cases into account. > > Signed-off-by: Boris Brezillon <boris.brezil...@free-electrons.com> > Signed-off-by: Maxime Ripard <maxime.rip...@free-electrons.com> Applied. > --- > drivers/mtd/nand/sunxi_nand.c | 4 ++++ > 1 file changed, 4 insertions(+), 0 deletions(-) > > diff --git a/drivers/mtd/nand/sunxi_nand.c b/drivers/mtd/nand/sunxi_nand.c > index 8b8470c4e6d0..e40482a65de6 100644 > --- a/drivers/mtd/nand/sunxi_nand.c > +++ b/drivers/mtd/nand/sunxi_nand.c > @@ -145,6 +145,7 @@ > #define NFC_ECC_PIPELINE BIT(3) > #define NFC_ECC_EXCEPTION BIT(4) > #define NFC_ECC_BLOCK_SIZE_MSK BIT(5) > +#define NFC_ECC_BLOCK_512 BIT(5) > #define NFC_RANDOM_EN BIT(9) > #define NFC_RANDOM_DIRECTION BIT(10) > #define NFC_ECC_MODE_MSK GENMASK(15, 12) > @@ -817,6 +818,9 @@ static void sunxi_nfc_hw_ecc_enable(struct mtd_info *mtd) > ecc_ctl |= NFC_ECC_EN | NFC_ECC_MODE(data->mode) | NFC_ECC_EXCEPTION | > NFC_ECC_PIPELINE; > > + if (nand->ecc.size == 512) > + ecc_ctl |= NFC_ECC_BLOCK_512; > + > writel(ecc_ctl, nfc->regs + NFC_REG_ECC_CTL); > } >