From 65a9db7be0868be91ba81b9b5bf821de82e6d9b0 Mon Sep 17 00:00:00 2001 From: Alex Waterman Date: Wed, 6 Apr 2011 16:01:52 -0400 Subject: nand_spl: Fix large page nand_command() This patch changes the large page nand_command() routine to use a word offset instead of a byte offset. The 'offs' argument gets divided by 2 so that the offset passed to nand_command() is still by byte offset. Originally, the offset was not shifted and when too high an offset was requested the nand chip would attempt to read non-existent data. Signed-off-by: Alex Waterman --- nand_spl/nand_boot.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'nand_spl') diff --git a/nand_spl/nand_boot.c b/nand_spl/nand_boot.c index 76b8566fb2..4a968784e7 100644 --- a/nand_spl/nand_boot.c +++ b/nand_spl/nand_boot.c @@ -90,6 +90,10 @@ static int nand_command(struct mtd_info *mtd, int block, int page, int offs, u8 cmd = NAND_CMD_READ0; } + /* Shift the offset from byte addressing to word addressing. */ + if (this->options & NAND_BUSWIDTH_16) + offs >>= 1; + /* Begin command latch cycle */ this->cmd_ctrl(mtd, cmd, NAND_CTRL_CLE | NAND_CTRL_CHANGE); /* Set ALE and clear CLE to start address cycle */ -- cgit