[U-Boot] omap3 nand boot issue

Hi!
I have a custom board based on OMAP3530 with Micron MT29F2G16ABBEAH4-IT:E nand flash installed. The problem is that when I flash MLO/u-boot.img to NAND the CPU does not boot from this NAND although it boots fine from a 2Gb NAND used in previous configurations.
Here is what u-boot knows about the new NAND: Device 0: nand0, sector size 256 KiB Page size 4096 b OOB size 128 b Erase size 262144 b
When looking at the configuration file "include/configs/omap3_beagle.h" I can see the following about the NAND configuration: /* NAND boot config */ #define CONFIG_SYS_NAND_5_ADDR_CYCLE #define CONFIG_SYS_NAND_PAGE_COUNT 64 #define CONFIG_SYS_NAND_PAGE_SIZE 2048 #define CONFIG_SYS_NAND_OOBSIZE 64 #define CONFIG_SYS_NAND_BLOCK_SIZE (128*1024) #define CONFIG_SYS_NAND_BAD_BLOCK_POS 0 #define CONFIG_SYS_NAND_ECCPOS {2, 3, 4, 5, 6, 7, 8, 9,\ 10, 11, 12, 13} #define CONFIG_SYS_NAND_ECCSIZE 512 #define CONFIG_SYS_NAND_ECCBYTES 3 #define CONFIG_SYS_NAND_U_BOOT_START CONFIG_SYS_TEXT_BASE #define CONFIG_SYS_NAND_U_BOOT_OFFS 0x80000
Apparently this configuration is absolutely wrong because my NAND has the following organization (the nand is x16): – Page size x8: 4320 bytes (4096 + 224 bytes) – Page size x16: 2160 words (2048 + 112 words) – Block size: 64 pages (256K + 14K bytes) – Plane size: 2 planes x 2048 blocks per plane – Device size: 8Gb: 4096 blocks – Device size: 16Gb: 8192 blocks
As I understand the omap3 BOOT ROM simply ignores the NAND for an unknown reason. I expect the ECC written along with MLO file is wrong and therefore BOOT ROM ignores it. However I frankly have no idea if BOOT ROM actually calculates the ECC. I guess it should so as not to run garbage code which can jump to nowhere.
Can anybody recommend how to fix the current NAND code so as it gets support for NAND with blocks 256k and pages 4k?
participants (1)
-
Maxim Podbereznyy