diff mbox

[U-Boot,v5,3/5] mtd: nand: fix GET/SET_FEATURES address on 16-bit devices

Message ID 1399317380-16755-4-git-send-email-pekon@ti.com
State Accepted
Delegated to: Tom Rini
Headers show

Commit Message

pekon gupta May 5, 2014, 7:16 p.m. UTC
From: David Mosberger <davidm@egauge.net>

As per following Sections in ONFI Spec, GET_FEATURES and SET_FEATURES also need
byte-addressing on 16-bit devices.

*Section: Target Initialization"
"The Read ID and Read Parameter Page commands only use the lower 8-bits of the
 data bus. The host shall not issue commands that use a word data width on x16
 devices until the host determines the device supports a 16-bit data bus width
 in the parameter page."

*Section: Bus Width Requirements*
"When the host supports a 16-bit bus width, only data is transferred at the
 16-bit width. All address and command line transfers shall use only the lower
 8-bits of the data bus. During command transfers, the host may place any value
 on the upper 8-bits of the data bus. During address transfers, the host shall
 set the upper 8-bits of the data bus to 00h."

So porting following commit from linux kernel
    commit e34fcb07a6d57411de6e15a47724fbe92c5caa42
    Author: David Mosberger <davidm@egauge.net>  (preserving authorship)
    mtd: nand: fix GET/SET_FEATURES address on 16-bit devices

Signed-off-by: Pekon Gupta <pekon@ti.com>
---
 include/linux/mtd/nand.h | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

Comments

Tom Rini June 6, 2014, 9:54 p.m. UTC | #1
On Tue, May 06, 2014 at 12:46:18AM +0530, pekon gupta wrote:

> From: David Mosberger <davidm@egauge.net>
> 
> As per following Sections in ONFI Spec, GET_FEATURES and SET_FEATURES also need
> byte-addressing on 16-bit devices.
> 
> *Section: Target Initialization"
> "The Read ID and Read Parameter Page commands only use the lower 8-bits of the
>  data bus. The host shall not issue commands that use a word data width on x16
>  devices until the host determines the device supports a 16-bit data bus width
>  in the parameter page."
> 
> *Section: Bus Width Requirements*
> "When the host supports a 16-bit bus width, only data is transferred at the
>  16-bit width. All address and command line transfers shall use only the lower
>  8-bits of the data bus. During command transfers, the host may place any value
>  on the upper 8-bits of the data bus. During address transfers, the host shall
>  set the upper 8-bits of the data bus to 00h."
> 
> So porting following commit from linux kernel
>     commit e34fcb07a6d57411de6e15a47724fbe92c5caa42
>     Author: David Mosberger <davidm@egauge.net>  (preserving authorship)
>     mtd: nand: fix GET/SET_FEATURES address on 16-bit devices
> 
> Signed-off-by: Pekon Gupta <pekon@ti.com>

Applied to u-boot-ti/master, thanks!
diff mbox

Patch

diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h
index 4be8858..991bd8e 100644
--- a/include/linux/mtd/nand.h
+++ b/include/linux/mtd/nand.h
@@ -725,7 +725,16 @@  static inline int onfi_get_sync_timing_mode(struct nand_chip *chip)
  */
 static inline int nand_opcode_8bits(unsigned int command)
 {
-	return command == NAND_CMD_READID;
+	switch (command) {
+	case NAND_CMD_READID:
+	case NAND_CMD_PARAM:
+	case NAND_CMD_GET_FEATURES:
+	case NAND_CMD_SET_FEATURES:
+		return 1;
+	default:
+		break;
+	}
+	return 0;
 }