linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/3] mtd/nand : use elbc_fcm_ctrl->oob to set FPAR_MS bit of FPAR
@ 2011-12-04  4:31 shuo.liu
  2011-12-04  4:31 ` [PATCH 2/3] mtd/nand : set correct length to FBCR for a non-full-page write shuo.liu
                   ` (2 more replies)
  0 siblings, 3 replies; 43+ messages in thread
From: shuo.liu @ 2011-12-04  4:31 UTC (permalink / raw)
  To: dwmw2, Artem.Bityutskiy, scottwood
  Cc: linux-mtd, linuxppc-dev, akpm, linux-kernel, leoli, shuo.liu

From: Liu Shuo <b35362@freescale.com>

On both of large-page chip and small-page chip, we always should use
'elbc_fcm_ctrl->oob' to set the FPAR_LP_MS/FPAR_SP_MS bit of FPAR, don't
use a overflowed 'column' to set it.

Signed-off-by: Liu Shuo <b35362@freescale.com>
Signed-off-by: Li Yang <leoli@freescale.com>
---
 drivers/mtd/nand/fsl_elbc_nand.c |   18 +++++++++++-------
 1 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/drivers/mtd/nand/fsl_elbc_nand.c b/drivers/mtd/nand/fsl_elbc_nand.c
index cc08a11..6fce7da 100644
--- a/drivers/mtd/nand/fsl_elbc_nand.c
+++ b/drivers/mtd/nand/fsl_elbc_nand.c
@@ -414,9 +414,17 @@ static void fsl_elbc_cmdfunc(struct mtd_info *mtd, unsigned int command,
 		         page_addr, column);
 
 		elbc_fcm_ctrl->column = column;
-		elbc_fcm_ctrl->oob = 0;
 		elbc_fcm_ctrl->use_mdr = 1;
 
+		if (column >= mtd->writesize) {
+			/* OOB area */
+			column -= mtd->writesize;
+			elbc_fcm_ctrl->oob = 1;
+		} else {
+			WARN_ON(column != 0);
+			elbc_fcm_ctrl->oob = 0;
+		}
+
 		fcr = (NAND_CMD_STATUS   << FCR_CMD1_SHIFT) |
 		      (NAND_CMD_SEQIN    << FCR_CMD2_SHIFT) |
 		      (NAND_CMD_PAGEPROG << FCR_CMD3_SHIFT);
@@ -441,16 +449,12 @@ static void fsl_elbc_cmdfunc(struct mtd_info *mtd, unsigned int command,
 			         (FIR_OP_CW1 << FIR_OP6_SHIFT) |
 			         (FIR_OP_RS  << FIR_OP7_SHIFT));
 
-			if (column >= mtd->writesize) {
+			if (elbc_fcm_ctrl->oob)
 				/* OOB area --> READOOB */
-				column -= mtd->writesize;
 				fcr |= NAND_CMD_READOOB << FCR_CMD0_SHIFT;
-				elbc_fcm_ctrl->oob = 1;
-			} else {
-				WARN_ON(column != 0);
+			else
 				/* First 256 bytes --> READ0 */
 				fcr |= NAND_CMD_READ0 << FCR_CMD0_SHIFT;
-			}
 		}
 
 		out_be32(&lbc->fcr, fcr);
-- 
1.7.1



^ permalink raw reply related	[flat|nested] 43+ messages in thread
* [PATCH 1/3] mtd/nand : use elbc_fcm_ctrl->oob to set FPAR_MS bit of FPAR
@ 2011-11-24  0:41 b35362
  2011-11-24  0:41 ` [PATCH 3/3] mtd/nand : workaround for Freescale FCM to support large-page Nand chip b35362
  0 siblings, 1 reply; 43+ messages in thread
From: b35362 @ 2011-11-24  0:41 UTC (permalink / raw)
  To: dwmw2, Artem.Bityutskiy, scottwood
  Cc: linux-mtd, linuxppc-dev, akpm, linux-kernel, leoli

From: Liu Shuo <b35362@freescale.com>

On both of large-page chip and small-page chip, we always should use
'elbc_fcm_ctrl->oob' to set the FPAR_LP_MS/FPAR_SP_MS bit of FPAR, don't
use a overflowed 'column' to set it.

Signed-off-by: Liu Shuo <b35362@freescale.com>
Signed-off-by: Li Yang <leoli@freescale.com>
---
 drivers/mtd/nand/fsl_elbc_nand.c |   18 +++++++++++-------
 1 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/drivers/mtd/nand/fsl_elbc_nand.c b/drivers/mtd/nand/fsl_elbc_nand.c
index cc08a11..6fce7da 100644
--- a/drivers/mtd/nand/fsl_elbc_nand.c
+++ b/drivers/mtd/nand/fsl_elbc_nand.c
@@ -414,9 +414,17 @@ static void fsl_elbc_cmdfunc(struct mtd_info *mtd, unsigned int command,
 		         page_addr, column);
 
 		elbc_fcm_ctrl->column = column;
-		elbc_fcm_ctrl->oob = 0;
 		elbc_fcm_ctrl->use_mdr = 1;
 
+		if (column >= mtd->writesize) {
+			/* OOB area */
+			column -= mtd->writesize;
+			elbc_fcm_ctrl->oob = 1;
+		} else {
+			WARN_ON(column != 0);
+			elbc_fcm_ctrl->oob = 0;
+		}
+
 		fcr = (NAND_CMD_STATUS   << FCR_CMD1_SHIFT) |
 		      (NAND_CMD_SEQIN    << FCR_CMD2_SHIFT) |
 		      (NAND_CMD_PAGEPROG << FCR_CMD3_SHIFT);
@@ -441,16 +449,12 @@ static void fsl_elbc_cmdfunc(struct mtd_info *mtd, unsigned int command,
 			         (FIR_OP_CW1 << FIR_OP6_SHIFT) |
 			         (FIR_OP_RS  << FIR_OP7_SHIFT));
 
-			if (column >= mtd->writesize) {
+			if (elbc_fcm_ctrl->oob)
 				/* OOB area --> READOOB */
-				column -= mtd->writesize;
 				fcr |= NAND_CMD_READOOB << FCR_CMD0_SHIFT;
-				elbc_fcm_ctrl->oob = 1;
-			} else {
-				WARN_ON(column != 0);
+			else
 				/* First 256 bytes --> READ0 */
 				fcr |= NAND_CMD_READ0 << FCR_CMD0_SHIFT;
-			}
 		}
 
 		out_be32(&lbc->fcr, fcr);
-- 
1.7.1



^ permalink raw reply related	[flat|nested] 43+ messages in thread

end of thread, other threads:[~2011-12-20 19:48 UTC | newest]

Thread overview: 43+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-12-04  4:31 [PATCH 1/3] mtd/nand : use elbc_fcm_ctrl->oob to set FPAR_MS bit of FPAR shuo.liu
2011-12-04  4:31 ` [PATCH 2/3] mtd/nand : set correct length to FBCR for a non-full-page write shuo.liu
2011-12-04  4:31 ` [PATCH 3/3] mtd/nand : workaround for Freescale FCM to support large-page Nand chip shuo.liu
2011-12-05  6:47   ` Artem Bityutskiy
2011-12-05 19:46     ` Scott Wood
2011-12-06 11:49       ` Artem Bityutskiy
2011-12-06 11:49   ` Artem Bityutskiy
2011-12-07  0:09   ` Scott Wood
2011-12-07  3:55     ` LiuShuo
2011-12-07 19:11       ` Scott Wood
2011-12-08 10:44         ` LiuShuo
2011-12-08 18:43           ` Scott Wood
2011-12-12 21:09     ` Artem Bityutskiy
2011-12-12 21:15       ` Scott Wood
2011-12-12 21:19         ` Artem Bityutskiy
2011-12-12 21:30           ` Scott Wood
2011-12-13  2:46             ` LiuShuo
2011-12-14  8:41               ` LiuShuo
2011-12-14 20:15                 ` Scott Wood
2011-12-15  4:59                   ` Li Yang
2011-12-15 17:32                     ` Scott Wood
2011-12-16  2:44                   ` LiuShuo
2011-12-16 17:59                     ` Scott Wood
2011-12-19 11:05                       ` Li Yang
2011-12-19 16:47                         ` Scott Wood
2011-12-20  9:08                           ` Li Yang
2011-12-20 19:48                             ` Scott Wood
2011-12-17 14:35             ` Artem Bityutskiy
2011-12-19 18:38               ` Scott Wood
2011-12-19 18:42                 ` Scott Wood
2011-12-14  3:41       ` LiuShuo
2011-12-14 20:53         ` Scott Wood
2011-12-05  6:50 ` [PATCH 1/3] mtd/nand : use elbc_fcm_ctrl->oob to set FPAR_MS bit of FPAR Artem Bityutskiy
  -- strict thread matches above, loose matches on Subject: below --
2011-11-24  0:41 b35362
2011-11-24  0:41 ` [PATCH 3/3] mtd/nand : workaround for Freescale FCM to support large-page Nand chip b35362
2011-11-24  7:37   ` Li Yang-R58472
2011-11-28 17:20     ` Scott Wood
2011-11-24  7:41   ` Artem Bityutskiy
2011-11-24  7:49     ` Li Yang-R58472
2011-11-24  8:16       ` Artem Bityutskiy
2011-11-24 10:02         ` LiuShuo
2011-11-24 11:07           ` Artem Bityutskiy
2011-11-28 21:48   ` Scott Wood
2011-11-28 21:49     ` Scott Wood

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).