* [PATCH 2.6.30-rc6 1/3] NAND: Add "page" parameter to all read_page/read_page_raw APIs
@ 2009-05-18 21:38 nsnehaprabha
2009-06-01 16:08 ` Paulraj, Sandeep
0 siblings, 1 reply; 4+ messages in thread
From: nsnehaprabha @ 2009-05-18 21:38 UTC (permalink / raw)
To: linux-mtd, davinci-linux-open-source, dwmw2, tglx, akpm; +Cc: Sneha Narnakaje
From: Sneha Narnakaje <nsnehaprabha@ti.com>
This patch new "page" parameter to all NAND read_page/read_page_raw APIs.
The read_page API for the new mode ECC_HW_OOB_FIRST requires the page
information to send the READOOB command and read the OOB area before the
data area.
Reviewed-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Sneha Narnakaje <nsnehaprabha@ti.com>
---
drivers/mtd/nand/atmel_nand.c | 2 +-
drivers/mtd/nand/cafe_nand.c | 2 +-
drivers/mtd/nand/fsl_elbc_nand.c | 3 ++-
drivers/mtd/nand/nand_base.c | 18 ++++++++++--------
drivers/mtd/nand/sh_flctl.c | 2 +-
include/linux/mtd/nand.h | 4 ++--
6 files changed, 17 insertions(+), 14 deletions(-)
diff --git a/drivers/mtd/nand/atmel_nand.c b/drivers/mtd/nand/atmel_nand.c
index 47a33ce..b63eddb 100644
--- a/drivers/mtd/nand/atmel_nand.c
+++ b/drivers/mtd/nand/atmel_nand.c
@@ -214,7 +214,7 @@ static int atmel_nand_calculate(struct mtd_info *mtd,
* buf: buffer to store read data
*/
static int atmel_nand_read_page(struct mtd_info *mtd,
- struct nand_chip *chip, uint8_t *buf)
+ struct nand_chip *chip, uint8_t *buf, int page)
{
int eccsize = chip->ecc.size;
int eccbytes = chip->ecc.bytes;
diff --git a/drivers/mtd/nand/cafe_nand.c b/drivers/mtd/nand/cafe_nand.c
index 29acd06..a70f40e 100644
--- a/drivers/mtd/nand/cafe_nand.c
+++ b/drivers/mtd/nand/cafe_nand.c
@@ -381,7 +381,7 @@ static int cafe_nand_read_oob(struct mtd_info *mtd, struct nand_chip *chip,
* we need a special oob layout and handling.
*/
static int cafe_nand_read_page(struct mtd_info *mtd, struct nand_chip *chip,
- uint8_t *buf)
+ uint8_t *buf, int page)
{
struct cafe_priv *cafe = mtd->priv;
diff --git a/drivers/mtd/nand/fsl_elbc_nand.c b/drivers/mtd/nand/fsl_elbc_nand.c
index 1f6eb25..ddd37d2 100644
--- a/drivers/mtd/nand/fsl_elbc_nand.c
+++ b/drivers/mtd/nand/fsl_elbc_nand.c
@@ -739,7 +739,8 @@ static int fsl_elbc_chip_init_tail(struct mtd_info *mtd)
static int fsl_elbc_read_page(struct mtd_info *mtd,
struct nand_chip *chip,
- uint8_t *buf)
+ uint8_t *buf,
+ int page)
{
fsl_elbc_read_buf(mtd, buf, mtd->writesize);
fsl_elbc_read_buf(mtd, chip->oob_poi, mtd->oobsize);
diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
index 8c21b89..979988a 100644
--- a/drivers/mtd/nand/nand_base.c
+++ b/drivers/mtd/nand/nand_base.c
@@ -766,7 +766,7 @@ static int nand_wait(struct mtd_info *mtd, struct nand_chip *chip)
* Not for syndrome calculating ecc controllers, which use a special oob layout
*/
static int nand_read_page_raw(struct mtd_info *mtd, struct nand_chip *chip,
- uint8_t *buf)
+ uint8_t *buf, int page)
{
chip->read_buf(mtd, buf, mtd->writesize);
chip->read_buf(mtd, chip->oob_poi, mtd->oobsize);
@@ -782,7 +782,7 @@ static int nand_read_page_raw(struct mtd_info *mtd, struct nand_chip *chip,
* We need a special oob layout and handling even when OOB isn't used.
*/
static int nand_read_page_raw_syndrome(struct mtd_info *mtd, struct nand_chip *chip,
- uint8_t *buf)
+ uint8_t *buf, int page)
{
int eccsize = chip->ecc.size;
int eccbytes = chip->ecc.bytes;
@@ -821,7 +821,7 @@ static int nand_read_page_raw_syndrome(struct mtd_info *mtd, struct nand_chip *c
* @buf: buffer to store read data
*/
static int nand_read_page_swecc(struct mtd_info *mtd, struct nand_chip *chip,
- uint8_t *buf)
+ uint8_t *buf, int page)
{
int i, eccsize = chip->ecc.size;
int eccbytes = chip->ecc.bytes;
@@ -831,7 +831,7 @@ static int nand_read_page_swecc(struct mtd_info *mtd, struct nand_chip *chip,
uint8_t *ecc_code = chip->buffers->ecccode;
uint32_t *eccpos = chip->ecc.layout->eccpos;
- chip->ecc.read_page_raw(mtd, chip, buf);
+ chip->ecc.read_page_raw(mtd, chip, buf, page);
for (i = 0; eccsteps; eccsteps--, i += eccbytes, p += eccsize)
chip->ecc.calculate(mtd, p, &ecc_calc[i]);
@@ -944,7 +944,7 @@ static int nand_read_subpage(struct mtd_info *mtd, struct nand_chip *chip, uint3
* Not for syndrome calculating ecc controllers which need a special oob layout
*/
static int nand_read_page_hwecc(struct mtd_info *mtd, struct nand_chip *chip,
- uint8_t *buf)
+ uint8_t *buf, int page)
{
int i, eccsize = chip->ecc.size;
int eccbytes = chip->ecc.bytes;
@@ -989,7 +989,7 @@ static int nand_read_page_hwecc(struct mtd_info *mtd, struct nand_chip *chip,
* we need a special oob layout and handling.
*/
static int nand_read_page_syndrome(struct mtd_info *mtd, struct nand_chip *chip,
- uint8_t *buf)
+ uint8_t *buf, int page)
{
int i, eccsize = chip->ecc.size;
int eccbytes = chip->ecc.bytes;
@@ -1131,11 +1131,13 @@ static int nand_do_read_ops(struct mtd_info *mtd, loff_t from,
/* Now read the page into the buffer */
if (unlikely(ops->mode == MTD_OOB_RAW))
- ret = chip->ecc.read_page_raw(mtd, chip, bufpoi);
+ ret = chip->ecc.read_page_raw(mtd, chip,
+ bufpoi, page);
else if (!aligned && NAND_SUBPAGE_READ(chip) && !oob)
ret = chip->ecc.read_subpage(mtd, chip, col, bytes, bufpoi);
else
- ret = chip->ecc.read_page(mtd, chip, bufpoi);
+ ret = chip->ecc.read_page(mtd, chip, bufpoi,
+ page);
if (ret < 0)
break;
diff --git a/drivers/mtd/nand/sh_flctl.c b/drivers/mtd/nand/sh_flctl.c
index 2bc8966..c5df285 100644
--- a/drivers/mtd/nand/sh_flctl.c
+++ b/drivers/mtd/nand/sh_flctl.c
@@ -329,7 +329,7 @@ static void set_cmd_regs(struct mtd_info *mtd, uint32_t cmd, uint32_t flcmcdr_va
}
static int flctl_read_page_hwecc(struct mtd_info *mtd, struct nand_chip *chip,
- uint8_t *buf)
+ uint8_t *buf, int page)
{
int i, eccsize = chip->ecc.size;
int eccbytes = chip->ecc.bytes;
diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h
index fd07e4a..f6c4dbe 100644
--- a/include/linux/mtd/nand.h
+++ b/include/linux/mtd/nand.h
@@ -271,13 +271,13 @@ struct nand_ecc_ctrl {
uint8_t *calc_ecc);
int (*read_page_raw)(struct mtd_info *mtd,
struct nand_chip *chip,
- uint8_t *buf);
+ uint8_t *buf, int page);
void (*write_page_raw)(struct mtd_info *mtd,
struct nand_chip *chip,
const uint8_t *buf);
int (*read_page)(struct mtd_info *mtd,
struct nand_chip *chip,
- uint8_t *buf);
+ uint8_t *buf, int page);
int (*read_subpage)(struct mtd_info *mtd,
struct nand_chip *chip,
uint32_t offs, uint32_t len,
--
1.6.0.4
^ permalink raw reply related [flat|nested] 4+ messages in thread
* RE: [PATCH 2.6.30-rc6 1/3] NAND: Add "page" parameter to all read_page/read_page_raw APIs
2009-05-18 21:38 [PATCH 2.6.30-rc6 1/3] NAND: Add "page" parameter to all read_page/read_page_raw APIs nsnehaprabha
@ 2009-06-01 16:08 ` Paulraj, Sandeep
2009-06-03 23:42 ` David Brownell
0 siblings, 1 reply; 4+ messages in thread
From: Paulraj, Sandeep @ 2009-06-01 16:08 UTC (permalink / raw)
To: Narnakaje, Snehaprabha, linux-mtd@lists.infradead.org,
davinci-linux-open-source@linux.davincidsp.com,
dwmw2@infradead.org, tglx@linutronix.de,
akpm@linux-foundation.org
Anything comments on this patch?
Thanks,
Sandeep
> -----Original Message-----
> From: davinci-linux-open-source-bounces@linux.davincidsp.com
> [mailto:davinci-linux-open-source-bounces@linux.davincidsp.com] On Behalf
> Of Narnakaje, Snehaprabha
> Sent: Monday, May 18, 2009 5:38 PM
> To: linux-mtd@lists.infradead.org; davinci-linux-open-
> source@linux.davincidsp.com; dwmw2@infradead.org; tglx@linutronix.de;
> akpm@linux-foundation.org
> Subject: [PATCH 2.6.30-rc6 1/3] NAND: Add "page" parameter to all
> read_page/read_page_raw APIs
>
> From: Sneha Narnakaje <nsnehaprabha@ti.com>
>
> This patch new "page" parameter to all NAND read_page/read_page_raw APIs.
> The read_page API for the new mode ECC_HW_OOB_FIRST requires the page
> information to send the READOOB command and read the OOB area before the
> data area.
>
> Reviewed-by: David Brownell <dbrownell@users.sourceforge.net>
> Signed-off-by: Sneha Narnakaje <nsnehaprabha@ti.com>
> ---
> drivers/mtd/nand/atmel_nand.c | 2 +-
> drivers/mtd/nand/cafe_nand.c | 2 +-
> drivers/mtd/nand/fsl_elbc_nand.c | 3 ++-
> drivers/mtd/nand/nand_base.c | 18 ++++++++++--------
> drivers/mtd/nand/sh_flctl.c | 2 +-
> include/linux/mtd/nand.h | 4 ++--
> 6 files changed, 17 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/mtd/nand/atmel_nand.c b/drivers/mtd/nand/atmel_nand.c
> index 47a33ce..b63eddb 100644
> --- a/drivers/mtd/nand/atmel_nand.c
> +++ b/drivers/mtd/nand/atmel_nand.c
> @@ -214,7 +214,7 @@ static int atmel_nand_calculate(struct mtd_info *mtd,
> * buf: buffer to store read data
> */
> static int atmel_nand_read_page(struct mtd_info *mtd,
> - struct nand_chip *chip, uint8_t *buf)
> + struct nand_chip *chip, uint8_t *buf, int page)
> {
> int eccsize = chip->ecc.size;
> int eccbytes = chip->ecc.bytes;
> diff --git a/drivers/mtd/nand/cafe_nand.c b/drivers/mtd/nand/cafe_nand.c
> index 29acd06..a70f40e 100644
> --- a/drivers/mtd/nand/cafe_nand.c
> +++ b/drivers/mtd/nand/cafe_nand.c
> @@ -381,7 +381,7 @@ static int cafe_nand_read_oob(struct mtd_info *mtd,
> struct nand_chip *chip,
> * we need a special oob layout and handling.
> */
> static int cafe_nand_read_page(struct mtd_info *mtd, struct nand_chip
> *chip,
> - uint8_t *buf)
> + uint8_t *buf, int page)
> {
> struct cafe_priv *cafe = mtd->priv;
>
> diff --git a/drivers/mtd/nand/fsl_elbc_nand.c
> b/drivers/mtd/nand/fsl_elbc_nand.c
> index 1f6eb25..ddd37d2 100644
> --- a/drivers/mtd/nand/fsl_elbc_nand.c
> +++ b/drivers/mtd/nand/fsl_elbc_nand.c
> @@ -739,7 +739,8 @@ static int fsl_elbc_chip_init_tail(struct mtd_info
> *mtd)
>
> static int fsl_elbc_read_page(struct mtd_info *mtd,
> struct nand_chip *chip,
> - uint8_t *buf)
> + uint8_t *buf,
> + int page)
> {
> fsl_elbc_read_buf(mtd, buf, mtd->writesize);
> fsl_elbc_read_buf(mtd, chip->oob_poi, mtd->oobsize);
> diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
> index 8c21b89..979988a 100644
> --- a/drivers/mtd/nand/nand_base.c
> +++ b/drivers/mtd/nand/nand_base.c
> @@ -766,7 +766,7 @@ static int nand_wait(struct mtd_info *mtd, struct
> nand_chip *chip)
> * Not for syndrome calculating ecc controllers, which use a special oob
> layout
> */
> static int nand_read_page_raw(struct mtd_info *mtd, struct nand_chip
> *chip,
> - uint8_t *buf)
> + uint8_t *buf, int page)
> {
> chip->read_buf(mtd, buf, mtd->writesize);
> chip->read_buf(mtd, chip->oob_poi, mtd->oobsize);
> @@ -782,7 +782,7 @@ static int nand_read_page_raw(struct mtd_info *mtd,
> struct nand_chip *chip,
> * We need a special oob layout and handling even when OOB isn't used.
> */
> static int nand_read_page_raw_syndrome(struct mtd_info *mtd, struct
> nand_chip *chip,
> - uint8_t *buf)
> + uint8_t *buf, int page)
> {
> int eccsize = chip->ecc.size;
> int eccbytes = chip->ecc.bytes;
> @@ -821,7 +821,7 @@ static int nand_read_page_raw_syndrome(struct mtd_info
> *mtd, struct nand_chip *c
> * @buf: buffer to store read data
> */
> static int nand_read_page_swecc(struct mtd_info *mtd, struct nand_chip
> *chip,
> - uint8_t *buf)
> + uint8_t *buf, int page)
> {
> int i, eccsize = chip->ecc.size;
> int eccbytes = chip->ecc.bytes;
> @@ -831,7 +831,7 @@ static int nand_read_page_swecc(struct mtd_info *mtd,
> struct nand_chip *chip,
> uint8_t *ecc_code = chip->buffers->ecccode;
> uint32_t *eccpos = chip->ecc.layout->eccpos;
>
> - chip->ecc.read_page_raw(mtd, chip, buf);
> + chip->ecc.read_page_raw(mtd, chip, buf, page);
>
> for (i = 0; eccsteps; eccsteps--, i += eccbytes, p += eccsize)
> chip->ecc.calculate(mtd, p, &ecc_calc[i]);
> @@ -944,7 +944,7 @@ static int nand_read_subpage(struct mtd_info *mtd,
> struct nand_chip *chip, uint3
> * Not for syndrome calculating ecc controllers which need a special oob
> layout
> */
> static int nand_read_page_hwecc(struct mtd_info *mtd, struct nand_chip
> *chip,
> - uint8_t *buf)
> + uint8_t *buf, int page)
> {
> int i, eccsize = chip->ecc.size;
> int eccbytes = chip->ecc.bytes;
> @@ -989,7 +989,7 @@ static int nand_read_page_hwecc(struct mtd_info *mtd,
> struct nand_chip *chip,
> * we need a special oob layout and handling.
> */
> static int nand_read_page_syndrome(struct mtd_info *mtd, struct nand_chip
> *chip,
> - uint8_t *buf)
> + uint8_t *buf, int page)
> {
> int i, eccsize = chip->ecc.size;
> int eccbytes = chip->ecc.bytes;
> @@ -1131,11 +1131,13 @@ static int nand_do_read_ops(struct mtd_info *mtd,
> loff_t from,
>
> /* Now read the page into the buffer */
> if (unlikely(ops->mode == MTD_OOB_RAW))
> - ret = chip->ecc.read_page_raw(mtd, chip, bufpoi);
> + ret = chip->ecc.read_page_raw(mtd, chip,
> + bufpoi, page);
> else if (!aligned && NAND_SUBPAGE_READ(chip) && !oob)
> ret = chip->ecc.read_subpage(mtd, chip, col,
> bytes, bufpoi);
> else
> - ret = chip->ecc.read_page(mtd, chip, bufpoi);
> + ret = chip->ecc.read_page(mtd, chip, bufpoi,
> + page);
> if (ret < 0)
> break;
>
> diff --git a/drivers/mtd/nand/sh_flctl.c b/drivers/mtd/nand/sh_flctl.c
> index 2bc8966..c5df285 100644
> --- a/drivers/mtd/nand/sh_flctl.c
> +++ b/drivers/mtd/nand/sh_flctl.c
> @@ -329,7 +329,7 @@ static void set_cmd_regs(struct mtd_info *mtd,
> uint32_t cmd, uint32_t flcmcdr_va
> }
>
> static int flctl_read_page_hwecc(struct mtd_info *mtd, struct nand_chip
> *chip,
> - uint8_t *buf)
> + uint8_t *buf, int page)
> {
> int i, eccsize = chip->ecc.size;
> int eccbytes = chip->ecc.bytes;
> diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h
> index fd07e4a..f6c4dbe 100644
> --- a/include/linux/mtd/nand.h
> +++ b/include/linux/mtd/nand.h
> @@ -271,13 +271,13 @@ struct nand_ecc_ctrl {
> uint8_t *calc_ecc);
> int (*read_page_raw)(struct mtd_info *mtd,
> struct nand_chip *chip,
> - uint8_t *buf);
> + uint8_t *buf, int page);
> void (*write_page_raw)(struct mtd_info *mtd,
> struct nand_chip *chip,
> const uint8_t *buf);
> int (*read_page)(struct mtd_info *mtd,
> struct nand_chip *chip,
> - uint8_t *buf);
> + uint8_t *buf, int page);
> int (*read_subpage)(struct mtd_info *mtd,
> struct nand_chip *chip,
> uint32_t offs, uint32_t len,
> --
> 1.6.0.4
>
> _______________________________________________
> Davinci-linux-open-source mailing list
> Davinci-linux-open-source@linux.davincidsp.com
> http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 2.6.30-rc6 1/3] NAND: Add "page" parameter to all read_page/read_page_raw APIs
2009-06-01 16:08 ` Paulraj, Sandeep
@ 2009-06-03 23:42 ` David Brownell
2009-06-04 4:16 ` Paulraj, Sandeep
0 siblings, 1 reply; 4+ messages in thread
From: David Brownell @ 2009-06-03 23:42 UTC (permalink / raw)
To: davinci-linux-open-source
Cc: Paulraj, Sandeep, linux-mtd@lists.infradead.org,
Narnakaje, Snehaprabha, tglx@linutronix.de, dwmw2@infradead.org,
akpm@linux-foundation.org
On Monday 01 June 2009, Paulraj, Sandeep wrote:
> Anything comments on this patch?
I think Sneha was going to reissue the third patch, to address
some minor goofage with the OOB layout used.
Once that's done, it looked to me like it was time to just
queue these three patches for 2.6.31 ... nobody had any
objections to the $SUBJECT patch, or the second patch which
added the NAND_ECC_HW_OOB_FIRST mode.
^ permalink raw reply [flat|nested] 4+ messages in thread
* RE: [PATCH 2.6.30-rc6 1/3] NAND: Add "page" parameter to all read_page/read_page_raw APIs
2009-06-03 23:42 ` David Brownell
@ 2009-06-04 4:16 ` Paulraj, Sandeep
0 siblings, 0 replies; 4+ messages in thread
From: Paulraj, Sandeep @ 2009-06-04 4:16 UTC (permalink / raw)
To: David Brownell, davinci-linux-open-source@linux.davincidsp.com
Cc: linux-mtd@lists.infradead.org, tglx@linutronix.de,
Narnakaje, Snehaprabha, dwmw2@infradead.org,
akpm@linux-foundation.org
Ok.
I'll be submitting that patch as Sneha is unavailable for the next 5 weeks
________________________________________
From: David Brownell [david-b@pacbell.net]
Sent: Wednesday, June 03, 2009 7:42 PM
To: davinci-linux-open-source@linux.davincidsp.com
Cc: Paulraj, Sandeep; Narnakaje, Snehaprabha; linux-mtd@lists.infradead.org; dwmw2@infradead.org; tglx@linutronix.de; akpm@linux-foundation.org
Subject: Re: [PATCH 2.6.30-rc6 1/3] NAND: Add "page" parameter to all read_page/read_page_raw APIs
On Monday 01 June 2009, Paulraj, Sandeep wrote:
> Anything comments on this patch?
I think Sneha was going to reissue the third patch, to address
some minor goofage with the OOB layout used.
Once that's done, it looked to me like it was time to just
queue these three patches for 2.6.31 ... nobody had any
objections to the $SUBJECT patch, or the second patch which
added the NAND_ECC_HW_OOB_FIRST mode.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2009-06-04 4:18 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-05-18 21:38 [PATCH 2.6.30-rc6 1/3] NAND: Add "page" parameter to all read_page/read_page_raw APIs nsnehaprabha
2009-06-01 16:08 ` Paulraj, Sandeep
2009-06-03 23:42 ` David Brownell
2009-06-04 4:16 ` Paulraj, Sandeep
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox