Commit 6e1899e633c2ac3f6da7101d4990361c6ff2a9d2
Committed by
Tom Rini
1 parent
27ce9e4290
Exists in
v2017.01-smarct4x
and in
40 other branches
mtd: nand: fix GET/SET_FEATURES address on 16-bit devices
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>
Showing 1 changed file with 10 additions and 1 deletions Side-by-side Diff
include/linux/mtd/nand.h
... | ... | @@ -725,7 +725,16 @@ |
725 | 725 | */ |
726 | 726 | static inline int nand_opcode_8bits(unsigned int command) |
727 | 727 | { |
728 | - return command == NAND_CMD_READID; | |
728 | + switch (command) { | |
729 | + case NAND_CMD_READID: | |
730 | + case NAND_CMD_PARAM: | |
731 | + case NAND_CMD_GET_FEATURES: | |
732 | + case NAND_CMD_SET_FEATURES: | |
733 | + return 1; | |
734 | + default: | |
735 | + break; | |
736 | + } | |
737 | + return 0; | |
729 | 738 | } |
730 | 739 | |
731 | 740 |