[U-Boot] Question about M29W128G CFI QRY bug

Richard Retanubun RichardRetanubun at RuggedCom.com
Fri Apr 10 01:29:18 CEST 2009


Hi Stefan,

I'm trying to get u-boot 2009.03 on coldfire to boot on flash part M29W128G.

I think I am getting hit by this bug in the flash chip

http://lists.infradead.org/pipermail/linux-mtd/2008-July/022252.html

The debug output is as follows:


U-Boot 2009.03dvl-00087-gd53876a-dirty (Apr 09 2009 - 19:00:37)

CPU:   Freescale ColdFire MCF5270 rev. 1, at 150 MHz
Board: Ruggedcom MCF5270
I2C:   ready
DRAM:   8 MB
Top of RAM usable for U-Boot at: 00800000
Reserving 172k for U-Boot at: 007d4000
Reserving 256k for malloc() at: 00794000
Reserving 58 Bytes for Board Info at: 00793fc6
Reserving 56 Bytes for Global Data at: 00793f8e
Reserving 64k for boot parameters at: 00783f8e
Stack Pointer at: 00783f68
Start relocate of code from ff000400 to 007d4000
Now running in RAM - U-Boot at: 007d4000
FLASH: flash detect cfi

fwc addr ff000000 cmd f0 f0f0 16bit x 8 bit
fwc addr ff000000 cmd ff ffff 16bit x 8 bit
fwc addr ff0000aa cmd 98 9898 16bit x 8 bit
is= cmd 51(Q) addr ff000020 is= ff00 5151
[snip]

Note that we suffer from the same bug, where QRY is not being setup properly.
The notes there offers a remedy by sending ff before f0. (or skipping ff altogether).

Am I on the right track here and if so, how can I make the same fix in u-boot?

Thanks for your time

- Richard


<Raw debug output>
U-Boot 2009.03dvl-00087-gd53876a-dirty (Apr 09 2009 - 19:00:37)

CPU:   Freescale ColdFire MCF5270 rev. 1, at 150 MHz
Board: Ruggedcom MCF5270
I2C:   ready
DRAM:   8 MB
Top of RAM usable for U-Boot at: 00800000
Reserving 172k for U-Boot at: 007d4000
Reserving 256k for malloc() at: 00794000
Reserving 58 Bytes for Board Info at: 00793fc6
Reserving 56 Bytes for Global Data at: 00793f8e
Reserving 64k for boot parameters at: 00783f8e
Stack Pointer at: 00783f68
Start relocate of code from ff000400 to 007d4000
Now running in RAM - U-Boot at: 007d4000
FLASH: flash detect cfi

fwc addr ff000000 cmd f0 f0f0 16bit x 8 bit
fwc addr ff000000 cmd ff ffff 16bit x 8 bit
fwc addr ff0000aa cmd 98 9898 16bit x 8 bit
is= cmd 51(Q) addr ff000020 is= ff00 5151
fwc addr ff000aaa cmd 98 9898 16bit x 8 bit
is= cmd 51(Q) addr ff000020 is= ff00 5151
fwc addr ff000000 cmd f0 00f0 16bit x 16 bit
fwc addr ff000000 cmd ff 00ff 16bit x 16 bit
fwc addr ff0000aa cmd 98 0098 16bit x 16 bit
is= cmd 51(Q) addr ff000020 is= ff00 0051
fwc addr ff000aaa cmd 98 0098 16bit x 16 bit
is= cmd 51(Q) addr ff000020 is= ff00 0051
fwc addr ff000000 cmd f0 f0f0f0f0 32bit x 8 bit
fwc addr ff000000 cmd ff ffffffff 32bit x 8 bit
fwc addr ff000154 cmd 98 98989898 32bit x 8 bit
is= cmd 51(Q) addr ff000040 is= ff0004b4 51515151
fwc addr ff001554 cmd 98 98989898 32bit x 8 bit
is= cmd 51(Q) addr ff000040 is= ff0004b4 51515151
fwc addr ff000000 cmd f0 00f000f0 32bit x 16 bit
fwc addr ff000000 cmd ff 00ff00ff 32bit x 16 bit
fwc addr ff000154 cmd 98 00980098 32bit x 16 bit
is= cmd 51(Q) addr ff000040 is= ff0004b4 00510051
fwc addr ff001554 cmd 98 00980098 32bit x 16 bit
is= cmd 51(Q) addr ff000040 is= ff0004b4 00510051
fwc addr ff000000 cmd f0 000000f0 32bit x 32 bit
fwc addr ff000000 cmd ff 000000ff 32bit x 32 bit
fwc addr ff000154 cmd 98 00000098 32bit x 32 bit
is= cmd 51(Q) addr ff000040 is= ff0004b4 00000051
fwc addr ff001554 cmd 98 00000098 32bit x 32 bit
is= cmd 51(Q) addr ff000040 is= ff0004b4 00000051
fwrite addr ff000000 cmd f0 fffffffffffffffffffff0 64 bit x 8 bit
fwrite addr ff000000 cmd ff ffffffffffffffffffffff 64 bit x 8 bit
fwrite addr ff0002a8 cmd 98 ffffffffffffffffffff98 64 bit x 8 bit
is= cmd 51(Q) addr ff000080 is= ff0004ffff0004ffffffb4 6234005151515151
fwrite addr ff002aa8 cmd 98 ffffffffffffffffffff98 64 bit x 8 bit
is= cmd 51(Q) addr ff000080 is= ff0004ffff0004ffffffb4 6234005151515151
fwrite addr ff000000 cmd f0 00ff00ff00ff00fffffff0 64 bit x 16 bit
fwrite addr ff000000 cmd ff 00ff00ff00ff00ffffffff 64 bit x 16 bit
fwrite addr ff0002a8 cmd 98 00ff00ff00ff00ffffff98 64 bit x 16 bit
is= cmd 51(Q) addr ff000080 is= ff0004ffff0004ffffffb4 6234005100510051
fwrite addr ff002aa8 cmd 98 00ff00ff00ff00ffffff98 64 bit x 16 bit
is= cmd 51(Q) addr ff000080 is= ff0004ffff0004ffffffb4 6234005100510051
fwrite addr ff000000 cmd f0 000000ff000000fffffff0 64 bit x 32 bit
fwrite addr ff000000 cmd ff 000000ff000000ffffffff 64 bit x 32 bit
fwrite addr ff0002a8 cmd 98 000000ff000000ffffff98 64 bit x 32 bit
is= cmd 51(Q) addr ff000080 is= ff0004ffff0004ffffffb4 6234005100000051
fwrite addr ff002aa8 cmd 98 000000ff000000ffffff98 64 bit x 32 bit
is= cmd 51(Q) addr ff000080 is= ff0004ffff0004ffffffb4 6234005100000051
fwrite addr ff000000 cmd f0 00000000000000fffffff0 64 bit x 64 bit
fwrite addr ff000000 cmd ff 00000000000000ffffffff 64 bit x 64 bit
fwrite addr ff0002a8 cmd 98 00000000000000ffffff98 64 bit x 64 bit
is= cmd 51(Q) addr ff000080 is= ff0004ffff0004ffffffb4 6234000000000051
fwrite addr ff002aa8 cmd 98 00000000000000ffffff98 64 bit x 64 bit
is= cmd 51(Q) addr ff000080 is= ff0004ffff0004ffffffb4 6234000000000051
not found
## Unknown FLASH on Bank 1 - Size = 0x00000000 = 0 MB
flash_protect ON: from 0xFF000400 to 0xFF0231FF
flash_protect ON: from 0xFF004000 to 0xFF005FFF
*** failed ***
Ignoring flash failure, see if we boot
In:    serial
Out:   serial
Err:   serial
MAC:   ethaddr  00:00:00:00:01:00
U-Boot relocated to 007d4000
Net:   FEC0 [PRIME]
### main_loop entered: bootdelay=0


More information about the U-Boot mailing list