[PATCH 4/4] Revert "mtd: atmel_nand: optimize read/write buffer functions"

Jean-Christophe PLAGNIOL-VILLARD plagnioj at jcrosoft.com
Sat Nov 24 03:45:44 EST 2012


On 11:42 Sat 24 Nov     , 张忠山 wrote:
> In message <1353686104-31295-4-git-send-email-plagnioj at jcrosoft.com> Jean-Christophe PLAGNIOL-VILLARD wrote:
> > As in the kernel we revert as this was supposed to work but does not yet
> > this may need more work on the smc to be able to use it
> > So for now revert it
> >
> > This reverts commit 809f0f6327241504b5071622a8d573255f91a875.
> >
> > Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj at jcrosoft.com>
> > ---
> >  drivers/mtd/nand/atmel_nand.c |   33 +++++++++++++++++++++++++--------
> >  1 file changed, 25 insertions(+), 8 deletions(-)
> >
> > diff --git a/drivers/mtd/nand/atmel_nand.c b/drivers/mtd/nand/atmel_nand.c
> > index 0477178..69e8171 100644
> > --- a/drivers/mtd/nand/atmel_nand.c
> > +++ b/drivers/mtd/nand/atmel_nand.c
> > @@ -159,16 +159,30 @@ static int atmel_nand_device_ready(struct mtd_info *mtd)
> >   */
> >  static void atmel_read_buf(struct mtd_info *mtd, u8 *buf, int len)
> >  {
> > -	struct nand_chip *chip = mtd->priv;
> > +	struct nand_chip	*nand_chip = mtd->priv;
> >
> > -	memcpy_fromio(buf, chip->IO_ADDR_R, len);
> > +	readsb(nand_chip->IO_ADDR_R, buf, len);
> > +}
> > +
> > +static void atmel_read_buf16(struct mtd_info *mtd, u8 *buf, int len)
> > +{
> > +	struct nand_chip	*nand_chip = mtd->priv;
> > +
> > +	readsw(nand_chip->IO_ADDR_R, buf, len / 2);
> >  }
> >
> >  static void atmel_write_buf(struct mtd_info *mtd, const u8 *buf, int len)
> >  {
> > -	struct nand_chip *chip = mtd->priv;
> > +	struct nand_chip	*nand_chip = mtd->priv;
> >
> > -	memcpy_toio(chip->IO_ADDR_W, buf, len);
> > +	writesb(nand_chip->IO_ADDR_W, buf, len);
> > +}
> > +
> > +static void atmel_write_buf16(struct mtd_info *mtd, const u8 *buf, int len)
> > +{
> > +	struct nand_chip	*nand_chip = mtd->priv;
> > +
> > +	writesw(nand_chip->IO_ADDR_W, buf, len / 2);
> >  }
> >
> >  /*
> > @@ -1112,11 +1126,14 @@ static int __init atmel_nand_probe(struct device_d *dev)
> >
> >  	nand_chip->chip_delay = 20;		/* 20us command delay time */
> >
> > -	if (host->board->bus_width_16)		/* 16-bit bus width */
> > +	if (host->board->bus_width_16) {	/* 16-bit bus width */
> >  		nand_chip->options |= NAND_BUSWIDTH_16;
> > -
> > -	nand_chip->read_buf = atmel_read_buf;
> > -	nand_chip->write_buf = atmel_write_buf;
> > +		nand_chip->read_buf = atmel_read_buf16;
> > +		nand_chip->write_buf = atmel_write_buf16;
> > +	} else {
> > +		nand_chip->read_buf = atmel_read_buf;
> > +		nand_chip->write_buf = atmel_write_buf;
> > +	}
> >
> >  	atmel_nand_enable(host);
> >
> > --
> > 1.7.10.4
> >
> 
> This patch resolves my problem
I'm expecting to see your patches

Best Regards,
J.



More information about the barebox mailing list