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

张忠山 zzs213 at 126.com
Fri Nov 23 22:42:42 EST 2012


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

-- 
Best Regards,
zzs





More information about the barebox mailing list