diff options
| author | mhench <mhench@elutions.com> | 2011-07-11 12:29:43 +0000 | 
|---|---|---|
| committer | Scott Wood <scottwood@freescale.com> | 2011-10-03 18:35:12 -0500 | 
| commit | 17d261df18acfab96dcb5e0e078d2fe81a7d70ad (patch) | |
| tree | 77a8ee67d390ce370edd2170c44b1f839a4d14a0 | |
| parent | 6089981663f2abb065ac852b844215a2ceced65f (diff) | |
| download | olio-uboot-2014.01-17d261df18acfab96dcb5e0e078d2fe81a7d70ad.tar.xz olio-uboot-2014.01-17d261df18acfab96dcb5e0e078d2fe81a7d70ad.zip | |
mtd: eLBC NAND: remove elbc_fcm_ctrl->oob_poi
The eLBC NAND driver currently follows up each program/write operation with a
read-back of the page, in order to [ostensibly] fill in ECC data for the
caller. However, the page address used for this read is always -1, so the read
will never work correctly.  Remove this useless (and potentially problematic)
block of code.
v2: fix broken mailer
Signed-off-by: mhench <mhench@elutions.com>
Signed-off-by: Scott Wood <scottwood@freescale.com>
| -rw-r--r-- | drivers/mtd/nand/fsl_elbc_nand.c | 32 | 
1 files changed, 2 insertions, 30 deletions
| diff --git a/drivers/mtd/nand/fsl_elbc_nand.c b/drivers/mtd/nand/fsl_elbc_nand.c index acdb43112..4d1e527db 100644 --- a/drivers/mtd/nand/fsl_elbc_nand.c +++ b/drivers/mtd/nand/fsl_elbc_nand.c @@ -85,7 +85,6 @@ struct fsl_elbc_ctrl {  	unsigned int mdr;        /* UPM/FCM Data Register value           */  	unsigned int use_mdr;    /* Non zero if the MDR is to be set      */  	unsigned int oob;        /* Non zero if operating on OOB data     */ -	uint8_t *oob_poi;        /* Place to write ECC after read back    */  };  /* These map to the positions used by the FCM hardware ECC generator */ @@ -436,7 +435,6 @@ static void fsl_elbc_cmdfunc(struct mtd_info *mtd, unsigned int command,  	/* PAGEPROG reuses all of the setup from SEQIN and adds the length */  	case NAND_CMD_PAGEPROG: { -		int full_page;  		vdbg("fsl_elbc_cmdfunc: NAND_CMD_PAGEPROG "  		     "writing %d bytes.\n", ctrl->index); @@ -445,34 +443,13 @@ static void fsl_elbc_cmdfunc(struct mtd_info *mtd, unsigned int command,  		 * write so the HW generates the ECC.  		 */  		if (ctrl->oob || ctrl->column != 0 || -		    ctrl->index != mtd->writesize + mtd->oobsize) { +		    ctrl->index != mtd->writesize + mtd->oobsize)  			out_be32(&lbc->fbcr, ctrl->index); -			full_page = 0; -		} else { +		else  			out_be32(&lbc->fbcr, 0); -			full_page = 1; -		}  		fsl_elbc_run_command(mtd); -		/* Read back the page in order to fill in the ECC for the -		 * caller.  Is this really needed? -		 */ -		if (full_page && ctrl->oob_poi) { -			out_be32(&lbc->fbcr, 3); -			set_addr(mtd, 6, page_addr, 1); - -			ctrl->read_bytes = mtd->writesize + 9; - -			fsl_elbc_do_read(chip, 1); -			fsl_elbc_run_command(mtd); - -			memcpy_fromio(ctrl->oob_poi + 6, -				      &ctrl->addr[ctrl->index], 3); -			ctrl->index += 3; -		} - -		ctrl->oob_poi = NULL;  		return;  	} @@ -680,13 +657,8 @@ static void fsl_elbc_write_page(struct mtd_info *mtd,  				struct nand_chip *chip,  				const uint8_t *buf)  { -	struct fsl_elbc_mtd *priv = chip->priv; -	struct fsl_elbc_ctrl *ctrl = priv->ctrl; -  	fsl_elbc_write_buf(mtd, buf, mtd->writesize);  	fsl_elbc_write_buf(mtd, chip->oob_poi, mtd->oobsize); - -	ctrl->oob_poi = chip->oob_poi;  }  static struct fsl_elbc_ctrl *elbc_ctrl; |