mtd: nand: automate NAND timings selection
authorBoris Brezillon <boris.brezillon@free-electrons.com>
Thu, 15 Sep 2016 08:32:50 +0000 (10:32 +0200)
committerBoris Brezillon <boris.brezillon@free-electrons.com>
Fri, 23 Sep 2016 07:35:16 +0000 (09:35 +0200)
commitd8e725dd831186a3595036b2b1df9f68cbc6efa3
treeb6632089aafbf8b55a65c8abbf57e486da6e5afa
parent6e1f9708dbf3c50a8da93c1952a01a7a2acb5e66
mtd: nand: automate NAND timings selection

The NAND framework provides several helpers to query timing modes supported
by a NAND chip, but this implies that all NAND controller drivers have
to implement the same timings selection dance. Also currently NAND
devices can be resetted at arbitrary places which also resets the timing
for ONFI chips to timing mode 0.

Provide a common logic to select the best timings based on ONFI or
->onfi_timing_mode_default information. Hook this into nand_reset()
to make sure the new timing is applied each time during a reset.

NAND controller willing to support timings adjustment should just
implement the ->setup_data_interface() method.

Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
drivers/mtd/nand/nand_base.c
include/linux/mtd/nand.h