[PATCH] powerpc/85xx: fix NAND_CMD_READID read bytes number

Bryan Hundven bryanhundven at gmail.com
Sat Jun 18 03:58:53 EST 2011


On Sun, Jun 12, 2011 at 7:23 PM, Shaohui Xie <Shaohui.Xie at freescale.com> wrote:
> when nand_get_flash_type() is called, it will read 8 bytes of ID instead of 5,
> but the driver only read 5 bytes, so kernel will dump error messages like:
>
> fsl-lbc ffe124000.localbus: read_byte beyond end of buffer
> fsl-lbc ffe124000.localbus: read_byte beyond end of buffer
> fsl-lbc ffe124000.localbus: read_byte beyond end of buffer
>
> Signed-off-by: Shaohui Xie <Shaohui.Xie at freescale.com>
> Acked-by: Scott Wood <scottwood at freescale.com>
> ---
>  drivers/mtd/nand/fsl_elbc_nand.c |    6 +++---
>  1 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/mtd/nand/fsl_elbc_nand.c b/drivers/mtd/nand/fsl_elbc_nand.c
> index 0bb254c..33d8aad 100644
> --- a/drivers/mtd/nand/fsl_elbc_nand.c
> +++ b/drivers/mtd/nand/fsl_elbc_nand.c
> @@ -339,9 +339,9 @@ static void fsl_elbc_cmdfunc(struct mtd_info *mtd, unsigned int command,
>                                    (FIR_OP_UA  << FIR_OP1_SHIFT) |
>                                    (FIR_OP_RBW << FIR_OP2_SHIFT));
>                out_be32(&lbc->fcr, NAND_CMD_READID << FCR_CMD0_SHIFT);
> -               /* 5 bytes for manuf, device and exts */
> -               out_be32(&lbc->fbcr, 5);
> -               elbc_fcm_ctrl->read_bytes = 5;
> +               /* nand_get_flash_type() reads 8 bytes of entire ID string */
> +               out_be32(&lbc->fbcr, 8);
> +               elbc_fcm_ctrl->read_bytes = 8;
>                elbc_fcm_ctrl->use_mdr = 1;
>                elbc_fcm_ctrl->mdr = 0;
>
> --
> 1.6.4
>
>
>
> ______________________________________________________
> Linux MTD discussion mailing list
> http://lists.infradead.org/mailman/listinfo/linux-mtd/
>

Shaohui,

I have tested this on p1011rdb, p1020rdb, and p2020rdb on 2.6.35.13
and 2.6.39.1.
Thank you for fixing this :-)

-Bryan


More information about the Linuxppc-dev mailing list