mail archive of the barebox mailing list
 help / color / mirror / Atom feed
* [PATCH 1/2] mtd: nand_omap_gpmc: Remove unused code
@ 2015-03-30 13:51 Teresa Gámez
  2015-03-30 13:51 ` [PATCH 2/2] mtd: nand_omap_gpmc: Fix ecc check for bch8 romcode Teresa Gámez
  2015-03-30 17:27 ` [PATCH 1/2] mtd: nand_omap_gpmc: Remove unused code Sascha Hauer
  0 siblings, 2 replies; 3+ messages in thread
From: Teresa Gámez @ 2015-03-30 13:51 UTC (permalink / raw)
  To: barebox

The ecc layout structs are not used anywhere.

Signed-off-by: Teresa Gámez <t.gamez@phytec.de>
---
 drivers/mtd/nand/nand_omap_gpmc.c | 68 ---------------------------------------
 1 file changed, 68 deletions(-)

diff --git a/drivers/mtd/nand/nand_omap_gpmc.c b/drivers/mtd/nand/nand_omap_gpmc.c
index d254042..647605b 100644
--- a/drivers/mtd/nand/nand_omap_gpmc.c
+++ b/drivers/mtd/nand/nand_omap_gpmc.c
@@ -130,53 +130,6 @@ static struct nand_bbt_descr bb_descrip_flashbased = {
 	.pattern = scan_ff_pattern,
 };
 
-/** Large Page x8 NAND device Layout */
-static struct nand_ecclayout ecc_lp_x8 = {
-	.eccbytes = 12,
-	.eccpos = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12},
-	.oobfree = {
-		{
-			.offset = 60,
-			.length = 2,
-		}
-	}
-};
-
-/** Large Page x16 NAND device Layout */
-static struct nand_ecclayout ecc_lp_x16 = {
-	.eccbytes = 12,
-	.eccpos = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13},
-	.oobfree = {
-		{
-			.offset = 60,
-			.length = 2,
-		}
-	}
-};
-
-/** Small Page x8 NAND device Layout */
-static struct nand_ecclayout ecc_sp_x8 = {
-	.eccbytes = 3,
-	.eccpos = {1, 2, 3},
-	.oobfree = {
-		{
-			.offset = 14,
-			.length = 2,
-		}
-	}
-};
-
-/** Small Page x16 NAND device Layout */
-static struct nand_ecclayout ecc_sp_x16 = {
-	.eccbytes = 3,
-	.eccpos = {2, 3, 4},
-	.oobfree = {
-		{
-			.offset = 14,
-			.length = 2 }
-	}
-};
-
 /**
  * @brief calls the platform specific dev_ready functionds
  *
@@ -891,7 +844,6 @@ static int gpmc_nand_probe(struct device_d *pdev)
 	struct mtd_info *minfo;
 	void __iomem *cs_base;
 	int err;
-	struct nand_ecclayout *layout, *lsp, *llp;
 
 	pdata = (struct gpmc_nand_platform_data *)pdev->platform_data;
 	if (pdata == NULL) {
@@ -1012,26 +964,6 @@ static int gpmc_nand_probe(struct device_d *pdev)
 
 	gpmc_set_buswidth(nand, nand->options & NAND_BUSWIDTH_16);
 
-	if (nand->options & NAND_BUSWIDTH_16) {
-		lsp = &ecc_sp_x16;
-		llp = &ecc_lp_x16;
-	} else {
-		lsp = &ecc_sp_x8;
-		llp = &ecc_lp_x8;
-	}
-
-	switch (minfo->writesize) {
-	case 512:
-		layout = lsp;
-		break;
-	case 2048:
-		layout = llp;
-		break;
-	default:
-		err = -EINVAL;
-		goto out_release_mem;
-	}
-
 	nand->read_buf   = omap_read_buf_pref;
 	if (IS_ENABLED(CONFIG_MTD_WRITE))
 		nand->write_buf  = omap_write_buf_pref;
-- 
1.9.1


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

* [PATCH 2/2] mtd: nand_omap_gpmc: Fix ecc check for bch8 romcode
  2015-03-30 13:51 [PATCH 1/2] mtd: nand_omap_gpmc: Remove unused code Teresa Gámez
@ 2015-03-30 13:51 ` Teresa Gámez
  2015-03-30 17:27 ` [PATCH 1/2] mtd: nand_omap_gpmc: Remove unused code Sascha Hauer
  1 sibling, 0 replies; 3+ messages in thread
From: Teresa Gámez @ 2015-03-30 13:51 UTC (permalink / raw)
  To: barebox

The bch8 romcode was only checked and corrected for the
first 512 bytes of a 2048 byte page. Set interation counter
and eccsizes correct for the different bch types.

Tested OMAP_ECC_BCH8_CODE_HW and OMAP_ECC_BCH8_CODE_HW_ROMCODE.

Reported-by: Gabor Janak <g.janak@agilion.de>
Signed-off-by: Teresa Gámez <t.gamez@phytec.de>
---
 drivers/mtd/nand/nand_omap_gpmc.c | 38 +++++++++++++++++++++++---------------
 1 file changed, 23 insertions(+), 15 deletions(-)

diff --git a/drivers/mtd/nand/nand_omap_gpmc.c b/drivers/mtd/nand/nand_omap_gpmc.c
index 647605b..9d9d27e 100644
--- a/drivers/mtd/nand/nand_omap_gpmc.c
+++ b/drivers/mtd/nand/nand_omap_gpmc.c
@@ -298,37 +298,45 @@ static int omap_correct_bch(struct mtd_info *mtd, uint8_t *dat,
 {
 	struct nand_chip *nand = (struct nand_chip *)(mtd->priv);
 	struct gpmc_nand_info *oinfo = (struct gpmc_nand_info *)(nand->priv);
-	int i, j, eccsize, eccflag, count, totalcount;
+	int i, j, eccflag, count, totalcount, actual_eccsize;
 	unsigned int err_loc[8];
-	int blocks = 0;
 	int select_4_8;
 
-	if (oinfo->ecc_mode == OMAP_ECC_BCH4_CODE_HW) {
-		eccsize = 7;
+	int eccsteps = oinfo->nand.ecc.steps;
+	int eccsize = oinfo->nand.ecc.bytes;
+
+	switch (oinfo->ecc_mode) {
+	case OMAP_ECC_BCH4_CODE_HW:
+		actual_eccsize = eccsize;
 		select_4_8 = 0;
-	} else {
-		eccsize = 13;
+		break;
+	case OMAP_ECC_BCH8_CODE_HW:
+		eccsize /= eccsteps;
+		actual_eccsize = eccsize;
+		select_4_8 = 1;
+		break;
+	case OMAP_ECC_BCH8_CODE_HW_ROMCODE:
+		actual_eccsize = eccsize - 1;
 		select_4_8 = 1;
+		break;
+	default:
+		dev_err(oinfo->pdev, "invalid driver configuration\n");
+		return -EINVAL;
 	}
 
-	if (nand->ecc.size  == 2048)
-		blocks = 4;
-	else
-		blocks = 1;
-
 	totalcount = 0;
 
-	for (i = 0; i < blocks; i++) {
+	for (i = 0; i < eccsteps; i++) {
 		/* check if any ecc error */
 		eccflag = 0;
-		for (j = 0; (j < eccsize) && (eccflag == 0); j++) {
+		for (j = 0; (j < actual_eccsize) && (eccflag == 0); j++) {
 			if (calc_ecc[j] != 0)
 				eccflag = 1;
 		}
 
 		if (eccflag == 1) {
 			eccflag = 0;
-			for (j = 0; (j < eccsize) &&
+			for (j = 0; (j < actual_eccsize) &&
 					(eccflag == 0); j++)
 				if (read_ecc[j] != 0xFF)
 					eccflag = 1;
@@ -350,7 +358,7 @@ static int omap_correct_bch(struct mtd_info *mtd, uint8_t *dat,
 			/* else, not interested to correct ecc */
 		}
 
-		calc_ecc = calc_ecc + eccsize;
+		calc_ecc = calc_ecc + actual_eccsize;
 		read_ecc = read_ecc + eccsize;
 		dat += 512;
 	}
-- 
1.9.1


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

* Re: [PATCH 1/2] mtd: nand_omap_gpmc: Remove unused code
  2015-03-30 13:51 [PATCH 1/2] mtd: nand_omap_gpmc: Remove unused code Teresa Gámez
  2015-03-30 13:51 ` [PATCH 2/2] mtd: nand_omap_gpmc: Fix ecc check for bch8 romcode Teresa Gámez
@ 2015-03-30 17:27 ` Sascha Hauer
  1 sibling, 0 replies; 3+ messages in thread
From: Sascha Hauer @ 2015-03-30 17:27 UTC (permalink / raw)
  To: Teresa Gámez; +Cc: barebox

On Mon, Mar 30, 2015 at 03:51:04PM +0200, Teresa Gámez wrote:
> The ecc layout structs are not used anywhere.
> 
> Signed-off-by: Teresa Gámez <t.gamez@phytec.de>
> ---
>  drivers/mtd/nand/nand_omap_gpmc.c | 68 ---------------------------------------
>  1 file changed, 68 deletions(-)

Applied both, thanks

Sascha


-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

end of thread, other threads:[~2015-03-30 17:28 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-03-30 13:51 [PATCH 1/2] mtd: nand_omap_gpmc: Remove unused code Teresa Gámez
2015-03-30 13:51 ` [PATCH 2/2] mtd: nand_omap_gpmc: Fix ecc check for bch8 romcode Teresa Gámez
2015-03-30 17:27 ` [PATCH 1/2] mtd: nand_omap_gpmc: Remove unused code Sascha Hauer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox