Re: [U-Boot] [PATCH] mtd: nand/docg4: fix driver after Linux resync

2013-06-18 Thread Mike Dunn
On 06/17/2013 03:29 PM, Scott Wood wrote:
 On 06/17/2013 12:44:55 PM, Mike Dunn wrote:
 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.
 
 Applied to u-boot-nand-flash.
 
 Is board support for palmtre680 coming, so the driver will get routine
 build-testing?


Yes.  I've already submitted patches for palmtreo680 board support, but was
remiss in shepherding it to mainline.  Will be resubmitting soon.

Thanks,
Mike
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH] mtd: nand/docg4: fix driver after Linux resync

2013-06-17 Thread Mike Dunn
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 miked...@newsguy.com
---
 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 7dd9953..09f01c8 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 */
-- 
1.7.8.6

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH] mtd: nand/docg4: fix driver after Linux resync

2013-06-17 Thread Scott Wood

On 06/17/2013 12:44:55 PM, Mike Dunn wrote:

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.


Applied to u-boot-nand-flash.

Is board support for palmtre680 coming, so the driver will get routine  
build-testing?


-Scott
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot