From: Ezequiel Garcia Date: Mon, 12 Aug 2013 17:14:48 +0000 (-0300) Subject: mtd: nand: pxa3xx: Handle ECC and DMA enable/disable properly X-Git-Tag: next-20130822~69^2~42 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=b0c938452b0f07ad4749b77e95e7c94520095c20;p=karo-tx-linux.git mtd: nand: pxa3xx: Handle ECC and DMA enable/disable properly When ECC is not selected, the ECC enable bit must be cleared in the NAND control register. Same applies to DMA. Signed-off-by: Ezequiel Garcia Tested-by: Daniel Mack Signed-off-by: Brian Norris --- diff --git a/drivers/mtd/nand/pxa3xx_nand.c b/drivers/mtd/nand/pxa3xx_nand.c index a11415b5640c..c41902513ce0 100644 --- a/drivers/mtd/nand/pxa3xx_nand.c +++ b/drivers/mtd/nand/pxa3xx_nand.c @@ -314,8 +314,17 @@ static void pxa3xx_nand_start(struct pxa3xx_nand_info *info) uint32_t ndcr; ndcr = host->reg_ndcr; - ndcr |= info->use_ecc ? NDCR_ECC_EN : 0; - ndcr |= info->use_dma ? NDCR_DMA_EN : 0; + + if (info->use_ecc) + ndcr |= NDCR_ECC_EN; + else + ndcr &= ~NDCR_ECC_EN; + + if (info->use_dma) + ndcr |= NDCR_DMA_EN; + else + ndcr &= ~NDCR_DMA_EN; + ndcr |= NDCR_ND_RUN; /* clear status bits and run */