diff options
| author | Mike Dunn <mikedunn@newsguy.com> | 2013-06-17 10:44:55 -0700 | 
|---|---|---|
| committer | Scott Wood <scottwood@freescale.com> | 2013-06-17 17:26:12 -0500 | 
| commit | 211bf20c35838b2181e8d04fd7ce8a7ac6e68db1 (patch) | |
| tree | d924d3e0847d2a38d64188542c16f30dffb8c272 | |
| parent | 2f998071254d566c71c34ef013aef1d9d0ec0fa3 (diff) | |
| download | olio-uboot-2014.01-211bf20c35838b2181e8d04fd7ce8a7ac6e68db1.tar.xz olio-uboot-2014.01-211bf20c35838b2181e8d04fd7ce8a7ac6e68db1.zip | |
mtd: nand/docg4: fix driver after Linux resync
Commit dfe64e2c89731a3f9950d7acd8681b68df2bae03:
    mtd: resync with Linux-3.7.1
broke the docg4 driver.  Specifically:
 - some of the prototypes of the ecc methods changed
 - the NAND_NO_AUTOINCR flag was removed
 - the ecc.strength element was added.
This patch fixes these.  Tested on the docg4 on my palmtre680 board.
Signed-off-by: Mike Dunn <mikedunn@newsguy.com>
| -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 */ |