[U-Boot] Is the Numonyx's M29W128 fully supported in U-Boot?

txema lopez
2009-12-11T14:03:34Z

Hi all,

We have a MPC5200B custom board and we are evaluating the Numonyx
M29W128 Flash as a second source for the Spansion's S29GL128.
I've checked the top of the tree version of the U-Boot (u-boot.git) CFI
driver and the Numonyx Flash is not detected. This is the U-Boot debug
output:

FLASH: flash detect cfi
fwc addr fe000000 cmd f0 f0 8bit x 8 bit
fwc addr fe000055 cmd 98 98 8bit x 8 bit
is= cmd 51(Q) addr fe000010 is= 0 51
fwc addr fe000000 cmd f0 f0f0 16bit x 8 bit
fwc addr fe0000aa cmd 98 9898 16bit x 8 bit
is= cmd 51(Q) addr fe000020 is= 5100 5151
fwc addr fe000000 cmd f0 00f0 16bit x 16 bit
fwc addr fe0000aa cmd 98 0098 16bit x 16 bit
is= cmd 51(Q) addr fe000020 is= 6d69 0051
fwc addr fe000000 cmd f0 f0f0f0f0 32bit x 8 bit
fwc addr fe000154 cmd 98 98989898 32bit x 8 bit
is= cmd 51(Q) addr fe000040 is= 4e6f7620 51515151
fwc addr fe000000 cmd f0 00f000f0 32bit x 16 bit
fwc addr fe000154 cmd 98 00980098 32bit x 16 bit
is= cmd 51(Q) addr fe000040 is= 4e6f7620 00510051
fwc addr fe000000 cmd f0 000000f0 32bit x 32 bit
fwc addr fe000154 cmd 98 00000098 32bit x 32 bit
is= cmd 51(Q) addr fe000040 is= 4e6f7620 00000051
fwrite addr fe000000 cmd f0 f0f0f0f0f0f0f0f0 64 bit x 8 bit
fwrite addr fe0002a8 cmd 98 9898989898989898 64 bit x 8 bit
is= cmd 51(Q) addr fe000080 is= 0000000000000000 5151515151515151
fwrite addr fe000000 cmd f0 00f000f000f000f0 64 bit x 16 bit
fwrite addr fe0002a8 cmd 98 0098009800980098 64 bit x 16 bit
is= cmd 51(Q) addr fe000080 is= 0000000000000000 0051005100510051
fwrite addr fe000000 cmd f0 000000f0000000f0 64 bit x 32 bit
fwrite addr fe0002a8 cmd 98 0000009800000098 64 bit x 32 bit
is= cmd 51(Q) addr fe000080 is= 0000000000000000 0000005100000051
fwrite addr fe000000 cmd f0 00000000000000f0 64 bit x 64 bit
fwrite addr fe0002a8 cmd 98 0000000000000098 64 bit x 64 bit
is= cmd 51(Q) addr fe000080 is= 0000000000000000 0000000000000051
not found
## Unknown FLASH on Bank 0 - Size = 0x00000000 = 0 MB

This is the debug output for the Spansion Flash that works fine.

FLASH: flash detect cfi
fwc addr fe000000 cmd f0 f0 8bit x 8 bit
fwc addr fe000055 cmd 98 98 8bit x 8 bit
is= cmd 51(Q) addr fe000010 is= 0 51
fwc addr fe000000 cmd f0 f0f0 16bit x 8 bit
fwc addr fe0000aa cmd 98 9898 16bit x 8 bit
is= cmd 51(Q) addr fe000020 is= 5151 5151
is= cmd 52(R) addr fe000022 is= 5252 5252
is= cmd 59(Y) addr fe000024 is= 5959 5959
ushort addr is at fe000050 info->portwidth = 2
addr[0] = 0x2
addr[1] = 0x2
addr[2] = 0x0
addr[3] = 0x0
retval = 0x2
device interface is 2
found port 2 chip 1 port 16 bits chip 8 bits
ushort addr is at fe000026 info->portwidth = 2
addr[0] = 0x2
addr[1] = 0x2
addr[2] = 0x0
addr[3] = 0x0
retval = 0x2
fe000020 : 51 51 52 52 59 59 02 02 00 00 40 40 00 00 00 00
QQRRYY....@@....
fe000030 : 00 00 00 00 00 00 27 27 36 36 00 00 00 00 06
06 ......''66......
fe000040 : 06 06 09 09 13 13 03 03 05 05 03 03 02 02 18
18 ................
fe000050 : 02 02 00 00 06 06 00 00 01 01 7f 7f 00 00 00
00 ................
fe000060 : 02 02 00 00 00 00 00 00 00 00 00 00 00 00 00
00 ................
fe000070 : 00 00 00 00 00 00 00 00 00 00 ff ff ff ff ff
ff ................
fe000080 : 50 50 52 52 49 49 31 31 33 33 14 14 02 02 01 01
PPRRII1133......
fe000090 : 00 00 08 08 00 00 00 00 02 02 b5 b5 c5 c5 04
04 ................
manufacturer is 2
size_ratio 1 port 16 bits chip 8 bits
found 1 erase regions
long addr is at fe00005a info->portwidth = 2
addr[0] = 0x7f
addr[1] = 0x7f
addr[2] = 0x0
addr[3] = 0x0
addr[4] = 0x0
addr[5] = 0x0
addr[6] = 0x2
addr[7] = 0x2
erase_region_count = 128 erase_region_size = 131072
ushort addr is at fe000054 info->portwidth = 2
addr[0] = 0x6
addr[1] = 0x6
addr[2] = 0x0
addr[3] = 0x0
retval = 0x6

So the problem seems to be that the Numonyx Flash do not put the CFI
query information in the odd bytes as you can see here:
fwc addr fe000000 cmd f0 f0f0 16bit x 8 bit
fwc addr fe0000aa cmd 98 9898 16bit x 8 bit
is= cmd 51(Q) addr fe000020 is= 5100 5151

I've checked the U-Boot mainling list and I've found only something
about a M29W128 bug but in a coldfire architecture. So I think the
Numonyx Flash has been tested in some boards but I don't knwon if there
is full support in U-Boot for it. If not, is there a patch available or
in process? Any clue will be welcomed.

TIA,