diff options
author | Bastian Hecht <hechtb@googlemail.com> | 2012-03-01 04:48:38 -0500 |
---|---|---|
committer | David Woodhouse <David.Woodhouse@intel.com> | 2012-03-26 19:42:51 -0400 |
commit | dd5ab248329edab4b16b70e4d9920f162d181d90 (patch) | |
tree | f517c5b835c4418080139729f782255be371bc92 /drivers/mtd/nand/sh_flctl.c | |
parent | 7b6b23036b43a418198be9468d4dc4c9ea79c2e8 (diff) |
mtd: sh_flctl: Implement NAND_CMD_RNDOUT command
Implements the command to seek and read in pages.
Signed-off-by: Bastian Hecht <hechtb@gmail.com>
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Diffstat (limited to 'drivers/mtd/nand/sh_flctl.c')
-rw-r--r-- | drivers/mtd/nand/sh_flctl.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/mtd/nand/sh_flctl.c b/drivers/mtd/nand/sh_flctl.c index 407acb51469c..61e41c065db8 100644 --- a/drivers/mtd/nand/sh_flctl.c +++ b/drivers/mtd/nand/sh_flctl.c | |||
@@ -303,6 +303,7 @@ static void set_cmd_regs(struct mtd_info *mtd, uint32_t cmd, uint32_t flcmcdr_va | |||
303 | break; | 303 | break; |
304 | case NAND_CMD_READ0: | 304 | case NAND_CMD_READ0: |
305 | case NAND_CMD_READOOB: | 305 | case NAND_CMD_READOOB: |
306 | case NAND_CMD_RNDOUT: | ||
306 | addr_len_bytes = flctl->rw_ADRCNT; | 307 | addr_len_bytes = flctl->rw_ADRCNT; |
307 | flcmdcr_val |= CDSRC_E; | 308 | flcmdcr_val |= CDSRC_E; |
308 | if (flctl->chip.options & NAND_BUSWIDTH_16) | 309 | if (flctl->chip.options & NAND_BUSWIDTH_16) |
@@ -558,6 +559,21 @@ static void flctl_cmdfunc(struct mtd_info *mtd, unsigned int command, | |||
558 | flctl->read_bytes = mtd->oobsize; | 559 | flctl->read_bytes = mtd->oobsize; |
559 | goto read_normal_exit; | 560 | goto read_normal_exit; |
560 | 561 | ||
562 | case NAND_CMD_RNDOUT: | ||
563 | if (flctl->hwecc) | ||
564 | break; | ||
565 | |||
566 | if (flctl->page_size) | ||
567 | set_cmd_regs(mtd, command, (NAND_CMD_RNDOUTSTART << 8) | ||
568 | | command); | ||
569 | else | ||
570 | set_cmd_regs(mtd, command, command); | ||
571 | |||
572 | set_addr(mtd, column, 0); | ||
573 | |||
574 | flctl->read_bytes = mtd->writesize + mtd->oobsize - column; | ||
575 | goto read_normal_exit; | ||
576 | |||
561 | case NAND_CMD_READID: | 577 | case NAND_CMD_READID: |
562 | set_cmd_regs(mtd, command, command); | 578 | set_cmd_regs(mtd, command, command); |
563 | 579 | ||