mtd: nand: Fix data interface configuration logic
authorBoris Brezillon <boris.brezillon@free-electrons.com>
Mon, 24 Oct 2016 14:46:20 +0000 (16:46 +0200)
committerBoris Brezillon <boris.brezillon@free-electrons.com>
Fri, 28 Oct 2016 07:58:36 +0000 (09:58 +0200)
commit73f907fd5fa56b0066d199bdd7126bbd04f6cd7b
tree72452a439edc30d4ef2dbaaafea88b5fe8e01432
parentce93bedb5ed2b16c08c6df4c797865f9ead600a3
mtd: nand: Fix data interface configuration logic

When changing from one data interface setting to another, one has to
ensure a specific sequence which is described in the ONFI spec.

One of these constraints is that the CE line has go high after a reset
before a command can be sent with the new data interface setting, which
is not guaranteed by the current implementation.

Rework the nand_reset() function and all the call sites to make sure the
CE line is asserted and released when required.

Also make sure to actually apply the new data interface setting on the
first die.

Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Fixes: d8e725dd8311 ("mtd: nand: automate NAND timings selection")
Reviewed-by: Sascha Hauer <s.hauer@pengutronix.de>
Tested-by: Marc Gonzalez <marc_gonzalez@sigmadesigns.com>
drivers/mtd/nand/nand_base.c
include/linux/mtd/nand.h