Message ID | 1399317380-16755-4-git-send-email-pekon@ti.com |
---|---|
State | Accepted |
Delegated to: | Tom Rini |
Headers | show |
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 --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; }