[U-Boot] [PATCH] Correct corrupted NAND Flash access on KARO TX25 modules

Gachet Daniel Daniel.Gachet at hefr.ch
Sun Apr 1 21:09:33 CEST 2012


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 <daniel.gachet at hefr.ch>
>> Cc: Wolfgang Denk <wd at denx.de >
>> 
>> 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?

Cordially,

Daniel 




More information about the U-Boot mailing list