mtd: nand: pxa3xx_nand: fix early spurious interrupt
authorRobert Jarzmik <robert.jarzmik@free.fr>
Wed, 19 Aug 2015 18:30:14 +0000 (20:30 +0200)
committerBrian Norris <computersforpeace@gmail.com>
Wed, 19 Aug 2015 22:25:19 +0000 (15:25 -0700)
When the nand is first probe, and upon the first command start, the
status bits should be cleared before the interrupts are unmasked.

The bug is tricky : if the bootloader left a status bit set, the
unmasking of interrupts does trigger the interrupt handler before the
first command is issued, blocking the good behavior of the nand.

The same would happen if in pxa3xx_nand code flow a status bit is left,
and then a command is started.

Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr>
Acked-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
Tested-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
drivers/mtd/nand/pxa3xx_nand.c

index baf3246edeefad9b2f79f39f22246f2226a01684..faf056ba95b34fc8a0a44c92020e526949c3cd0d 100644 (file)
@@ -442,8 +442,8 @@ static void pxa3xx_nand_start(struct pxa3xx_nand_info *info)
        ndcr |= NDCR_ND_RUN;
 
        /* clear status bits and run */
-       nand_writel(info, NDCR, 0);
        nand_writel(info, NDSR, NDSR_MASK);
+       nand_writel(info, NDCR, 0);
        nand_writel(info, NDCR, ndcr);
 }