On Thu, 22 Feb 2018 14:33:39 +0100 Miquel Raynal <miquel.ray...@bootlin.com> wrote:
> When changing the column, the ONFI specification states that a minimum > time of tCCS (Change Column Setup time) must elapse between the last > address cycle is asserted on the bus and the first data cycle is > clocked. An usual value for average NANDs is 500 nanoseconds. Round it > up to 1 microsecond to be safe. > > Signed-off-by: Miquel Raynal <miquel.ray...@bootlin.com> > --- > drivers/mtd/nand/sunxi_nand_spl.c | 13 ++++++++++--- > 1 file changed, 10 insertions(+), 3 deletions(-) > > diff --git a/drivers/mtd/nand/sunxi_nand_spl.c > b/drivers/mtd/nand/sunxi_nand_spl.c > index 25a0941fd2..2fa1f70d9d 100644 > --- a/drivers/mtd/nand/sunxi_nand_spl.c > +++ b/drivers/mtd/nand/sunxi_nand_spl.c > @@ -243,15 +243,22 @@ static int nand_load_page(const struct nfc_config > *conf, u32 offs) > > static int nand_reset_column(void) > { > + int ret; > + > writel((NFC_CMD_RNDOUTSTART << NFC_RANDOM_READ_CMD1_OFFSET) | > (NFC_CMD_RNDOUT << NFC_RANDOM_READ_CMD0_OFFSET) | > (NFC_CMD_RNDOUTSTART << NFC_READ_CMD_OFFSET), > SUNXI_NFC_BASE + NFC_RCMD_SET); > writel(0, SUNXI_NFC_BASE + NFC_ADDR_LOW); > > - return nand_exec_cmd(NFC_SEND_CMD1 | NFC_SEND_CMD2 | NFC_RAW_CMD | > - (1 << NFC_ADDR_NUM_OFFSET) | NFC_SEND_ADDR | > - NFC_CMD_RNDOUT); > + ret = nand_exec_cmd(NFC_SEND_CMD1 | NFC_SEND_CMD2 | NFC_RAW_CMD | > + (1 << NFC_ADDR_NUM_OFFSET) | NFC_SEND_ADDR | > + NFC_CMD_RNDOUT); > + > + /* Ensure tCCS has passed before reading data */ > + udelay(1); Just nitpicking, but if ret < 0 you don't have to wait tCCS :P. > + > + return ret; > } > > static int nand_read_page(const struct nfc_config *conf, u32 offs, -- Boris Brezillon, Bootlin (formerly Free Electrons) Embedded Linux and Kernel engineering https://bootlin.com _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot