[U-Boot] [PATCH 2/2] mtd/nand: Fix IFC driver to support 2K NAND page

Kushwaha Prabhakar-B32579 B32579 at freescale.com
Wed Dec 28 08:11:01 CET 2011


Thanks Marek for the comments.
Please find my response in-lined..

> -----Original Message-----
> From: Marek Vasut [mailto:marek.vasut at gmail.com]
> Sent: Wednesday, December 28, 2011 12:17 PM
> To: u-boot at lists.denx.de
> Cc: Kushwaha Prabhakar-B32579; Aggrwal Poonam-B10812
> Subject: Re: [U-Boot] [PATCH 2/2] mtd/nand: Fix IFC driver to support 2K
> NAND page
> 
> > 1) OOB area should be updated irrespective of NAND page size. Earlier
> > it was updated only for 512byte NAND page.
> >
> > 2) During OOB update fbcr should be equal to OOB size.
> 
> Cool, does the IFC driver have any relationship with the linux one? Is
> this patch pulled from Linux or is this standalone/unrelated change?
> 

This patch is not pulled from Linux, it is standalone patch. 
I will float similar path for the Linux.

> Also, you can just specify commit (or even better, rebase on top of
> HEAD), you don't need to specify whole commit message.
> 
I will take care this in near future.

--Prabhakar

> >
> > Signed-off-by: Poonam Aggrwal <poonam.aggrwal at freescale.com>
> > Signed-off-by: Prabhakar Kushwaha <prabhakar at freescale.com>
> > ---
> >  Based upon git://git.denx.de/u-boot.git (branch master)
> >
> >  Top commit:
> >             commit bfcc40bb09b05c90cc3b1496abb270eb8aa72134
> >             Merge: cba9a89 1895420
> >             Author: Wolfgang Denk <wd at denx.de>
> >             Date:   Fri Dec 23 20:53:58 2011 +0100
> >
> >                 Merge branch 'next' of ../next
> >
> >                 * 'next' of ../next:
> >                 mkenvimage: Add version info switch (-V)
> >                 mkenvimage: Fix getopt() error handling
> >                 mkenvimage: Fix some typos
> >                 phy: add Micrel KS8721BL phy definition
> >                 net: introduce per device index
> >                 mvgbe: remove setting of ethaddr within the driver
> >                 x86: Add support for specifying an initrd with the
> > zboot command x86: Refactor the zboot innards so they can be reused
> > with a vboot image x86: Add infrastructure to extract an e820 table
> > from the coreboot tables x86: Add support for booting Linux using the
> > 32 bit boot protocol
> > x86: Clean up the x86 zimage code in preparation to extend it x86:
> > Import code from coreboot's libpayload to parse the coreboot table
> > x86: Initial commit for running as a coreboot payload CHECKPATCH:
> > ./board/esd/hh405/logo_320_240_8bpp.c
> >                 CHECKPATCH: ./board/esd/hh405/logo_1024_768_8bpp.c
> >                 CHECKPATCH: ./board/esd/hh405/logo_320_240_4bpp.c
> >                 CHECKPATCH: ./board/esd/hh405/logo_640_480_24bpp.c
> >                 CHECKPATCH: ./board/esd/apc405/logo_640_480_24bpp.c
> >                 CHECKPATCH: ./board/esd/voh405/logo_320_240_4bpp.c
> >                 CHECKPATCH: ./board/esd/voh405/logo_640_480_24bpp.c
> >                 CHECKPATCH: ./board/esd/hh405/fpgadata.c
> >                 CHECKPATCH: ./board/esd/pci405/fpgadata.c
> >                 CHECKPATCH: ./board/esd/tasreg/fpgadata.c
> >
> >  drivers/mtd/nand/fsl_ifc_nand.c |   17 +++++++++--------
> >  1 files changed, 9 insertions(+), 8 deletions(-)
> >
> > diff --git a/drivers/mtd/nand/fsl_ifc_nand.c
> > b/drivers/mtd/nand/fsl_ifc_nand.c index 3a28ab8..56ae66a 100644
> > --- a/drivers/mtd/nand/fsl_ifc_nand.c
> > +++ b/drivers/mtd/nand/fsl_ifc_nand.c
> > @@ -450,13 +450,7 @@ static void fsl_ifc_cmdfunc(struct mtd_info *mtd,
> > unsigned int command, out_be32(&ifc->ifc_nand.nand_fir1,
> >  				 (IFC_FIR_OP_CW1 << IFC_NAND_FIR1_OP5_SHIFT));
> >
> > -			if (column >= mtd->writesize) {
> > -				/* OOB area --> READOOB */
> > -				column -= mtd->writesize;
> > -				nand_fcr0 |= NAND_CMD_READOOB <<
> > -						IFC_NAND_FCR0_CMD0_SHIFT;
> > -				ctrl->oob = 1;
> > -			} else if (column < 256) {
> > +		if (column < 256) {
> >  				/* First 256 bytes --> READ0 */
> >  				nand_fcr0 |= NAND_CMD_READ0 << FCR_CMD0_SHIFT;
> >  			} else {
> > @@ -465,6 +459,12 @@ static void fsl_ifc_cmdfunc(struct mtd_info *mtd,
> > unsigned int command, }
> >  		}
> >
> > +		if (column >= mtd->writesize) {
> > +			/* OOB area --> READOOB */
> > +			column -= mtd->writesize;
> > +			ctrl->oob = 1;
> > +		}
> > +
> >  		out_be32(&ifc->ifc_nand.nand_fcr0, nand_fcr0);
> >  		set_addr(mtd, column, page_addr, ctrl->oob);
> >  		return;
> > @@ -473,7 +473,8 @@ static void fsl_ifc_cmdfunc(struct mtd_info *mtd,
> > unsigned int command, /* PAGEPROG reuses all of the setup from SEQIN
> > and adds the length */ case NAND_CMD_PAGEPROG:
> >  		if (ctrl->oob)
> > -			out_be32(&ifc->ifc_nand.nand_fbcr, ctrl->index);
> > +			out_be32(&ifc->ifc_nand.nand_fbcr,
> > +						ctrl->index - ctrl->column);
> >  		else
> >  			out_be32(&ifc->ifc_nand.nand_fbcr, 0);




More information about the U-Boot mailing list