]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
mtd: nand: pxa3xx: Handle ECC and DMA enable/disable properly
authorEzequiel Garcia <ezequiel.garcia@free-electrons.com>
Mon, 12 Aug 2013 17:14:48 +0000 (14:14 -0300)
committerBrian Norris <computersforpeace@gmail.com>
Mon, 12 Aug 2013 22:13:39 +0000 (15:13 -0700)
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 <ezequiel.garcia@free-electrons.com>
Tested-by: Daniel Mack <zonque@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
drivers/mtd/nand/pxa3xx_nand.c

index a11415b5640cb958b32e33a4fdf433136ca62b1f..c41902513ce02301b50f2f777973f2cb1946ab66 100644 (file)
@@ -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 */