@@ -293,7 +293,9 @@ static int sf_parse_rd_inst_arg(char *arg, u8 *rd_inst, u8 *rd_qeb_req)
else if (strcmp(arg, "qofr") == 0) {
*rd_inst = CMD_READ_QUAD_OUTPUT_FAST;
*rd_qeb_req = 1;
- } else
+ } else if (strcmp(arg, "diofr") == 0)
+ *rd_inst = CMD_READ_DUAL_IO_FAST;
+ else
return 1;
return 0;
@@ -648,6 +650,7 @@ U_BOOT_CMD(
" asr (Array Slow Read, 02b)\n"
" dofr (Dual Output Fast Read, 3bh)\n"
" qofr (Quad Output Fast Read, 6bh)\n"
+ " diofr (Dual Input/Output Fast Read, bbh)\n"
"sf write wr_inst addr offset len\n"
" - write `len' bytes from memory\n"
" at `addr' to flash at `offset' using\n"
@@ -662,10 +665,11 @@ U_BOOT_CMD(
" pp | qpp `wr_inst' write instructions and\n"
" pp (Page Program, 02h)\n"
" qpp (Quad Page Program, 32h)\n"
- " afr | asr | dofr | qofr `rd_inst' read instructions\n"
+ " afr | asr | dofr | qofr | diofr `rd_inst' read instructions\n"
" afr (Array Fast Read, 0bh)\n"
" asr (Array Slow Read, 02b)\n"
" dofr (Dual Output Fast Read, 3bh)\n"
- " qofr (Quad Output Fast Read, 6bh)"
+ " qofr (Quad Output Fast Read, 6bh)\n"
+ " diofr (Dual Input/Output Fast Read, bbh)"
SF_TEST_HELP
);
@@ -33,5 +33,6 @@
#define CMD_READ_ARRAY_SLOW 0x03
#define CMD_READ_DUAL_OUTPUT_FAST 0x3b
#define CMD_READ_QUAD_OUTPUT_FAST 0x6b
+#define CMD_READ_DUAL_IO_FAST 0xbb
#endif /* _SPI_FLASH_INST_H_ */
This patch provides a support to read a flash using 'diofr' read instruction(rd_inst) for 'sf read' and 'sf update' commands. 'diofr' is similar to the dofr(Dual Output Fast Read) except that it improves performance throughput by allowing input of the address bits using two bits per SCK via two input pins. Example: read 0x2000 length bytes starting at offset 0x0 to memory at 0x10000 using diofr read instruction. u-boot> sf read diofr 0x10000 0x0 0x2000 erase and write 0x2000 length bytes from memory at 0x10000 address to flash offset at 0x0 using pp write instruction and diofr read instruction. u-boot> sf update pp diofr 0x10000 0x0 0x2000 Signed-off-by: Jagannadha Sutradharudu Teki <jagannadh.teki@gmail.com> --- common/cmd_sf.c | 10 +++++++--- include/spi_flash_inst.h | 1 + 2 files changed, 8 insertions(+), 3 deletions(-)