Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 332623
b: refs/heads/master
c: ef4ce0b
h: refs/heads/master
i:
  332621: b3013a8
  332619: ad582a3
  332615: edda374
  332607: 9f25ab2
v: v3
  • Loading branch information
Bastian Hecht authored and David Woodhouse committed Jul 6, 2012
1 parent 442a797 commit 822ffad
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 24 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: aa32d1f0601ac2f5f69520175b8d2cea42caa025
refs/heads/master: ef4ce0bcb3c91375d2bdefd7a0e2fead95c97620
30 changes: 7 additions & 23 deletions trunk/drivers/mtd/nand/sh_flctl.c
Original file line number Diff line number Diff line change
Expand Up @@ -427,30 +427,20 @@ static void execmd_read_page_sector(struct mtd_info *mtd, int page_addr)
static void execmd_read_oob(struct mtd_info *mtd, int page_addr)
{
struct sh_flctl *flctl = mtd_to_flctl(mtd);
int page_sectors = flctl->page_size ? 4 : 1;
int i;

set_cmd_regs(mtd, NAND_CMD_READ0,
(NAND_CMD_READSTART << 8) | NAND_CMD_READ0);

empty_fifo(flctl);
if (flctl->page_size) {
int i;
/* In case that the page size is 2k */
for (i = 0; i < 16 * 3; i++)
flctl->done_buff[i] = 0xFF;

set_addr(mtd, 3 * 528 + 512, page_addr);
writel(16, FLDTCNTR(flctl));

start_translation(flctl);
read_fiforeg(flctl, 16, 16 * 3);
wait_completion(flctl);
} else {
/* In case that the page size is 512b */
set_addr(mtd, 512, page_addr);
for (i = 0; i < page_sectors; i++) {
set_addr(mtd, (512 + 16) * i + 512 , page_addr);
writel(16, FLDTCNTR(flctl));

start_translation(flctl);
read_fiforeg(flctl, 16, 0);
read_fiforeg(flctl, 16, 16 * i);
wait_completion(flctl);
}
}
Expand Down Expand Up @@ -495,18 +485,12 @@ static void execmd_write_oob(struct mtd_info *mtd)
int page_addr = flctl->seqin_page_addr;
int sector, page_sectors;

if (flctl->page_size) {
sector = 3;
page_sectors = 4;
} else {
sector = 0;
page_sectors = 1;
}
page_sectors = flctl->page_size ? 4 : 1;

set_cmd_regs(mtd, NAND_CMD_PAGEPROG,
(NAND_CMD_PAGEPROG << 8) | NAND_CMD_SEQIN);

for (; sector < page_sectors; sector++) {
for (sector = 0; sector < page_sectors; sector++) {
empty_fifo(flctl);
set_addr(mtd, sector * 528 + 512, page_addr);
writel(16, FLDTCNTR(flctl)); /* set read size */
Expand Down

0 comments on commit 822ffad

Please sign in to comment.