From: Alex Waterman Date: Wed, 6 Apr 2011 20:01:52 +0000 (-0400) Subject: nand_spl: Fix large page nand_command() X-Git-Tag: v2011.06-rc1~145^2~1 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=65a9db7b;p=oweals%2Fu-boot.git 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 --- 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 */