From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marek Vasut Date: Sun, 1 Apr 2012 23:02:05 +0200 Subject: [U-Boot] [PATCH] Correct corrupted NAND Flash access on KARO TX25 modules In-Reply-To: <7605B15734F74B40A124AED46B25250A4F262A@HEFRMBX01.sofr.hefr.lan> References: <7605B15734F74B40A124AED46B25250A4F257F@HEFRMBX01.sofr.hefr.lan> <4F782EE4.7030407@denx.de> <7605B15734F74B40A124AED46B25250A4F262A@HEFRMBX01.sofr.hefr.lan> Message-ID: <201204012302.05768.marex@denx.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Dear Gachet Daniel, > Hi Stefano and Marek, > > -----Original Message----- > From: stefano babic [mailto:sbabic at denx.de] > Sent: dimanche 1 avril 2012 12:33 > To: Gachet Daniel > Cc: u-boot at lists.denx.de > Subject: Re: [U-Boot] [PATCH] Correct corrupted NAND Flash access on KARO > TX25 modules > > >Am 31/03/2012 09:31, schrieb Gachet Daniel: > >> This short patch correct corrupted data while reading NAND flash modules > >> on the KARO TX25 module. > >> > >> The current version of the mxc_nand driver uses the symmetric mode to > >> access the NAND flash, but the devices > >> > >>populated on the KARO TX25 only support an asymmetric mode (i.MX25: bit 8 > >> within NAND_FLASH_CONFIG1 register cleared). > >> > >> Signed-off-by: Daniel Gachet > >> Cc: Wolfgang Denk > >> > >> diff -upr drivers/mtd/nand/mxc_nand.c drivers/mtd/nand/mxc_nand.c > >> --- drivers/mtd/nand/mxc_nand.c 2011-12-23 20:25:35.000000000 +0100 > >> +++ drivers/mtd/nand/mxc_nand.c 2012-03-30 08:10:13.000000000 +0200 > >> @@ -1290,7 +1290,9 @@ static void mxc_setup_config1(void) > >> > >> uint16_t tmp; > >> > >> tmp = readw(&host->regs->nfc_config1); > >> > >> +#ifndef MACH_TYPE_TX25 > >> > >> tmp |= NFC_ONE_CYCLE; > >> > >> +#endif > > > >NAK. We cleaned up all u-boot occurrencies of machine id, except the > >machid passed to the kernel. And when the device tree will be effective, > >also the machid will be obsolete. > > > >This change seems not strictly related to the Karo's SOM, but it it a > >configuration of the mxc_nand driver, such as CONFIG_NAND_MXC_V1_1. You > >can add a CONFIG_NAND_MXC_* value (please add documentation, too) and use > >it in the driver code. > > > >Can I also ask you if the same setup is used in the Linux driver (this SOM > >is not mainlined, I suppose you have a porting from the manufacturer) ? > >As far as I can see, this setup is not used for the Freescale's mx25pdk > >(the only MX25 board in mainline kernel). > > > >Best regards, > >Stefano Babic > > > >-- > >===================================================================== > >DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel > >HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany > >Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office at denx.de > >===================================================================== > > I found the proposition of Stefano very interesting. My proposition will be > to define a specific value for that bit, for instance > CONFIG_NAND_MXC_V1_1_NFC_ONE_CYCLE. If this value is defined, the > NFC_ONE_CYCLE bit will be set, otherwise not. This value could be defined > in the specific board configuration file (./include/configs/...). > > The patch will be the following: > diff -upr drivers/mtd/nand/mxc_nand.c drivers/mtd/nand/mxc_nand.c > --- drivers/mtd/nand/mxc_nand.c 2011-12-23 20:25:35.000000000 +0100 > +++ drivers/mtd/nand/mxc_nand.c 2012-04-01 21:07:13.000000000 +0200 > @@ -1290,7 +1290,9 @@ static void mxc_setup_config1(void) > uint16_t tmp; > > tmp = readw(&host->regs->nfc_config1); > +#ifdef CONFIG_NAND_MXC_V1_1_NFC_ONE_CYCLE > tmp |= NFC_ONE_CYCLE; > +#endif > tmp |= NFC_4_8N_ECC; > writew(tmp, &host->regs->nfc_config1); > if (host->pagesize_2k) > > Is that a valuable solution for you? Ain't that basically what I said? Though, I might have not been clear enough ;-) Yes, that's it. Thanks! > > Cordially, > > Daniel