[U-Boot] NAND: mxc_nand reads/writes only first 512 bytes of each page

Hi,
My target is a mx35 board (not yet in mainline). According to the manual and checking the register set and their functionality, the MX.35 has the same nand controller as the i.MX25 processor (MXC_NFC_V1_1 in the mxc_nand driver). Probably there is the same issue with the i.MX25, too.
The storage is a Samsung 2GiB (8-bit), 2KB page, sector size 256KiB, and CONFIG_SYS_NAND_LARGEPAGE is set.
The flash is recognized correctly. However, after reading/writing, only the first 512 bytes of each page are correct. The rest is filled with random bytes. Under Linux (2.6.37) everything works flawlessy, however the driver in Linux is quite different as what we have in u-boot, and this makes a comparison quite difficult. Any hint how can I better investigate this issue ?
Best regards, Stefano Babic

Hi, Stefano,
2011/1/9 Stefano Babic sbabic@denx.de:
Hi,
My target is a mx35 board (not yet in mainline). According to the manual and checking the register set and their functionality, the MX.35 has the same nand controller as the i.MX25 processor (MXC_NFC_V1_1 in the mxc_nand driver). Probably there is the same issue with the i.MX25, too.
The storage is a Samsung 2GiB (8-bit), 2KB page, sector size 256KiB, and CONFIG_SYS_NAND_LARGEPAGE is set.
The flash is recognized correctly. However, after reading/writing, only the first 512 bytes of each page are correct. The rest is filled with random bytes. Under Linux (2.6.37) everything works flawlessy, however the driver in Linux is quite different as what we have in u-boot, and this makes a comparison quite difficult. Any hint how can I better investigate this issue ?
Have you set the page_size correctly with the following register?
49.4.3.7 Reset Control and Sourse Register - RCSR:
NFC_4K This bit is used to config the NandFlash page size. It is defined by PAGE_SIZE while boot up, and it can be configured by software after boot up. 0 not 4k page 1 4k page 8 NFC_FMS This bit is used to config the NandFlash page size.It is defined by PAGE_SIZE while boot up,and it can be configured by software after boot up. 0 not 2k page 1 2k page
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@denx.de ===================================================================== _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot

On 01/09/2011 03:40 PM, Jason Liu wrote:
Hi, Stefano,
Hi Jason,
Have you set the page_size correctly with the following register?
Let's see...
49.4.3.7 Reset Control and Sourse Register - RCSR:
NFC_4K This bit is used to config the NandFlash page size. It is defined by PAGE_SIZE while boot up, and it can be configured by software after boot up. 0 not 4k page 1 4k page 8
This seems ok.
NFC_FMS This bit is used to config the NandFlash page size.It is defined by PAGE_SIZE while boot up,and it can be configured by software after boot up. 0 not 2k page 1 2k page
That's it ! This was wrong on my board. I set the NFC_FMS bit and the whole page is now read correctly.
Many thanks,
Stefano Babic
participants (2)
-
Jason Liu
-
Stefano Babic