diff options
| -rw-r--r-- | drivers/mtd/nand/docg4.c | 26 | 
1 files changed, 14 insertions, 12 deletions
| diff --git a/drivers/mtd/nand/docg4.c b/drivers/mtd/nand/docg4.c index 7dd9953be..09f01c80d 100644 --- a/drivers/mtd/nand/docg4.c +++ b/drivers/mtd/nand/docg4.c @@ -487,7 +487,7 @@ static void docg4_read_buf(struct mtd_info *mtd, uint8_t *buf, int len)  }  static int docg4_read_oob(struct mtd_info *mtd, struct nand_chip *nand, -			  int page, int sndcmd) +			  int page)  {  	struct docg4_priv *doc = nand->priv;  	void __iomem *docptr = CONFIG_SYS_NAND_BASE; @@ -577,7 +577,7 @@ static void docg4_write_buf16(struct mtd_info *mtd, const uint8_t *buf, int len)  		writew(p[i], nand->IO_ADDR_W);  } -static void write_page(struct mtd_info *mtd, struct nand_chip *nand, +static int write_page(struct mtd_info *mtd, struct nand_chip *nand,  		       const uint8_t *buf, int use_ecc)  {  	void __iomem *docptr = CONFIG_SYS_NAND_BASE; @@ -626,16 +626,18 @@ static void write_page(struct mtd_info *mtd, struct nand_chip *nand,  	write_nop(docptr);  	writew(0, docptr + DOC_DATAEND);  	write_nop(docptr); + +	return 0;  } -static void docg4_write_page_raw(struct mtd_info *mtd, struct nand_chip *nand, -				 const uint8_t *buf) +static int docg4_write_page_raw(struct mtd_info *mtd, struct nand_chip *nand, +				 const uint8_t *buf, int oob_required)  {  	return write_page(mtd, nand, buf, 0);  } -static void docg4_write_page(struct mtd_info *mtd, struct nand_chip *nand, -			     const uint8_t *buf) +static int docg4_write_page(struct mtd_info *mtd, struct nand_chip *nand, +			     const uint8_t *buf, int oob_required)  {  	return write_page(mtd, nand, buf, 1);  } @@ -706,13 +708,13 @@ static int read_page(struct mtd_info *mtd, struct nand_chip *nand,  static int docg4_read_page_raw(struct mtd_info *mtd, struct nand_chip *nand, -			       uint8_t *buf, int page) +			       uint8_t *buf, int oob_required, int page)  {  	return read_page(mtd, nand, buf, page, 0);  }  static int docg4_read_page(struct mtd_info *mtd, struct nand_chip *nand, -			   uint8_t *buf, int page) +			   uint8_t *buf, int oob_required, int page)  {  	return read_page(mtd, nand, buf, page, 1);  } @@ -779,7 +781,7 @@ static int read_factory_bbt(struct mtd_info *mtd)  		return -ENOMEM;  	read_page_prologue(CONFIG_SYS_NAND_BASE, g4_addr); -	status = docg4_read_page(mtd, nand, buf, DOCG4_FACTORY_BBT_PAGE); +	status = docg4_read_page(mtd, nand, buf, 0, DOCG4_FACTORY_BBT_PAGE);  	if (status)  		goto exit; @@ -858,7 +860,7 @@ static int docg4_block_markbad(struct mtd_info *mtd, loff_t ofs)  	/* write first page of block */  	write_page_prologue(CONFIG_SYS_NAND_BASE, g4_addr); -	docg4_write_page(mtd, nand, buf); +	docg4_write_page(mtd, nand, buf, 1);  	ret = pageprog(mtd);  	if (!ret)  		mtd->ecc_stats.badblocks++; @@ -959,8 +961,8 @@ int docg4_nand_init(struct mtd_info *mtd, struct nand_chip *nand, int devnum)  	nand->ecc.size = DOCG4_PAGE_SIZE;  	nand->ecc.prepad = 8;  	nand->ecc.bytes	= 8; -	nand->options = -		NAND_BUSWIDTH_16 | NAND_NO_SUBPAGE_WRITE | NAND_NO_AUTOINCR; +	nand->ecc.strength = DOCG4_T; +	nand->options = NAND_BUSWIDTH_16 | NAND_NO_SUBPAGE_WRITE;  	nand->controller = &nand->hwcontrol;  	/* methods */ |