This EVB has two flash chips, a small Atmel and a larger Intel. The deafult arrangement is to boot u-boot from the Atmel chip, which boots a Linix kernel from the Intel chip which would then mount a root filesystem from the Intel chip. That all works fine.
The board can be switched so that it boots from the Intel chip instead. I'm trying to get it to work in this mode beacause i) our eventual custom hardware will only have 1 chip, ii) I want to mess with boot setting from Linux application, so I only deal with a single flash chip.
Have programmed u-boot (configured for Intel flash) into the Intel flash, it boots and can boot the Linux kernel, but the Linux kernel fails when the MTD driver tries to do a CFI probe for the flash chip. With the board set for the Atmel bootloader it works fine. It's the same kernel and boot command line in both cases.
Both u-boots can see both flash chips, the only difference is which is bank 1 and which is bank 2 is swapped around. The memory addresses of the flashes are the same in both cases, so the system shouldnt look any different to the kernel?
Here is what happens:
-> flinfo
Bank # 1: CFI conformant FLASH (8 x 8) Size: 16 MB in 128 Sectors
Intel Extended command set, Manufacturer ID: 0x89, Device ID: 0x18
Erase timeout: 4096 ms, write timeout: 1 ms
Buffer write timeout: 2 ms, buffer size: 32 bytes
Sector Start Addresses:
00000000 RO 00020000 RO 00040000 RO 00060000 00080000
000A0000 000C0000 000E0000 00100000 00120000
...
Bank # 2: CFI conformant FLASH (8 x 8) Size: 512 kB in 11 Sectors
AMD Legacy command set, Manufacturer ID: 0x1F, Device ID: 0x13
Erase timeout: 16384 ms, write timeout: 2 ms
Buffer write timeout: 5 ms, buffer size: 32 bytes
Sector Start Addresses:
04000000 04004000 04006000 04008000 04010000
...
On boot:
physmap platform flash device: 01000000 at 00000000
physmap-flash physmap-flash.0: map_probe failed
Unable to handle kernel NULL pointer dereference at virtual address 00000000
Oops: 00000000
But when u-boot is from the Atmel flash it works fine:
physmap platform flash device: 01000000 at 00000000
physmap-flash.0: Found 1 x16 devices at 0x0 in 8-bit bank
Intel/Sharp Extended Query Table at 0x0031
Using buffer write method
cfi_cmdset_0001: Erase suspend on write enabled
This was fixed several months ago -- I put the fixes in while I still worked at freescale. It's been a long time and I'm a bit fuzzy on the changes.
Contact FSL Tech Support and they should be able to tell you the solution. I think I generated a patch against the shipping bsp.
--Kurt