[U-Boot] U-boot running on DDR fails to detect the CFI compliant flash

prakash bedge prakash.bedge at gmail.com
Fri Jan 15 14:23:35 CET 2010


Hi Stefan,

In October 09 month, I had asked whether U-boot supports M29W128GH, a CFI
compilant chip and I got a yes reply. Please refer below URL for reference.

http://www.mail-archive.com/u-boot@lists.denx.de/msg24531.html.

So I have used Uboot for my PPC440 based board.

When I flashed U-boot on flash and then run the Uboot in DDR then U-boot
running on DDR fails to detect CFI chip M29W128GH (16M x 8 mode).

flash_detect_cfi function gives error that flash not found. I have added
debug statements for temporary debug purpose.
 Please see the below error I am getting.

The CFI query address looks different in below code and not as per ST make
M29W128GH specs. PCIMW.

static int __flash_detect_cfi (flash_info_t * info, struct cfi_qry *qry)
{
        int cfi_offset;
        debug ("1__flash detect cfi\n");
        /* We do not yet know what kind of commandset to use, so we issue
           the reset command in both Intel and AMD variants, in the hope
           that AMD flash roms ignore the Intel command. */
        flash_write_cmd (info, 0, 0, AMD_CMD_RESET);
        flash_write_cmd (info, 0, 0, FLASH_CMD_RESET);
        debug ("2__flash detect cfi\n");
        for (cfi_offset=0;
             cfi_offset < sizeof(flash_offset_cfi) / sizeof(uint);
             cfi_offset++) {
                flash_write_cmd (info, 0, flash_offset_cfi[cfi_offset],
                                 FLASH_CMD_CFI);

        debug ("3__flash detect cfi\n");
        if (flash_isequal (info, 0, FLASH_OFFSET_CFI_RESP, 'Q')
                    && flash_isequal (info, 0, FLASH_OFFSET_CFI_RESP + 1,
'R')
                    && flash_isequal (info, 0, FLASH_OFFSET_CFI_RESP + 2,
'Y')) {
                        flash_read_cfi(info, qry, FLASH_OFFSET_CFI_RESP,
                                        sizeof(struct cfi_qry));

 /* UART Output */

U-Boot 2009.08 (Jan 15 2010 - 16:44:40)
DRAM:  Meminfo.ptrCDBs: 0xc00174e0
512 MB (ECC is ON, 400 MHz, CL 7)
Top of RAM usable for U-Boot at: 20000000
Reserving 174k for U-Boot at: 1ffd4000
Reserving 1040k for malloc() at: 1fed0000
Reserving 128 Bytes for Board Info at: 1fecff80
Reserving 64 Bytes for Global Data at: 1fecff40
Stack Pointer at: 1fecff28
New Stack Pointer is: 1fecff28
after watchdog reset
after watchdog reset 2
after memcpy
befor relocate addr_sp = 1fecff28, id = 1fecff40, addr = 1ffd4000
Now running in RAM - U-Boot at: 1ffd4000
FLASH: flash detect cfi
1__flash detect cfi
fwc addr ff000000 cmd f0 f0 8bit x 8 bit
Entering into First Write
First Write is done
fwc addr ff000000 cmd ff ff 8bit x 8 bit
Entering into First Write
First Write is done
2__flash detect cfi
fwc addr ff000055 cmd 98 98 8bit x 8 bit
Entering into First Write
First Write is done
3__flash detect cfi
is= cmd 51(Q) addr ff000010 is= ff 51
fwc addr ff000555 cmd 98 98 8bit x 8 bit
Entering into First Write
First Write is done
3__flash detect cfi
is= cmd 51(Q) addr ff000010 is= ff 51
1__flash detect cfi
fwc addr ff000000 cmd f0 f0f0 16bit x 8 bit
fwc addr ff000000 cmd ff ffff 16bit x 8 bit
2__flash detect cfi
fwc addr ff0000aa cmd 98 9898 16bit x 8 bit
3__flash detect cfi
is= cmd 51(Q) addr ff000020 is= ffff 5151
fwc addr ff000aaa cmd 98 9898 16bit x 8 bit
3__flash detect cfi
is= cmd 51(Q) addr ff000020 is= ffff 5151
1__flash detect cfi
fwc addr ff000000 cmd f0 00f0 16bit x 16 bit
fwc addr ff000000 cmd ff 00ff 16bit x 16 bit
2__flash detect cfi
fwc addr ff0000aa cmd 98 0098 16bit x 16 bit
3__flash detect cfi
is= cmd 51(Q) addr ff000020 is= ffff 0051
fwc addr ff000aaa cmd 98 0098 16bit x 16 bit
3__flash detect cfi
is= cmd 51(Q) addr ff000020 is= ffff 0051
1__flash detect cfi
fwc addr ff000000 cmd f0 f0f0f0f0 32bit x 8 bit
fwc addr ff000000 cmd ff ffffffff 32bit x 8 bit
2__flash detect cfi
fwc addr ff000154 cmd 98 98989898 32bit x 8 bit
3__flash detect cfi
is= cmd 51(Q) addr ff000040 is= ffffffff 51515151
fwc addr ff001554 cmd 98 98989898 32bit x 8 bit
3__flash detect cfi
is= cmd 51(Q) addr ff000040 is= ffffffff 51515151

1__flash detect cfi
fwc addr ff000000 cmd f0 00f000f0 32bit x 16 bit
fwc addr ff000000 cmd ff 00ff00ff 32bit x 16 bit
2__flash detect cfi
fwc addr ff000154 cmd 98 00980098 32bit x 16 bit
3__flash detect cfi
is= cmd 51(Q) addr ff000040 is= ffffffff 00510051
fwc addr ff001554 cmd 98 00980098 32bit x 16 bit
3__flash detect cfi
is= cmd 51(Q) addr ff000040 is= ffffffff 00510051
1__flash detect cfi
fwc addr ff000000 cmd f0 000000f0 32bit x 32 bit
fwc addr ff000000 cmd ff 000000ff 32bit x 32 bit
2__flash detect cfi
fwc addr ff000154 cmd 98 00000098 32bit x 32 bit
3__flash detect cfi
is= cmd 51(Q) addr ff000040 is= ffffffff 00000051
fwc addr ff001554 cmd 98 00000098 32bit x 32 bit
3__flash detect cfi
is= cmd 51(Q) addr ff000040 is= ffffffff 00000051

1__flash detect cfi
fwrite addr ff000000 cmd f0 f0f0f0f0f0f0f0f0 64 bit x 8 bit
fwrite addr ff000000 cmd ff ffffffffffffffff 64 bit x 8 bit
2__flash detect cfi
fwrite addr ff0002a8 cmd 98 9898989898989898 64 bit x 8 bit
3__flash detect cfi
is= cmd 51(Q) addr ff000080 is= ffffffffffffffff 5151515151515151
fwrite addr ff002aa8 cmd 98 9898989898989898 64 bit x 8 bit
3__flash detect cfi
is= cmd 51(Q) addr ff000080 is= ffffffffffffffff 5151515151515151

1__flash detect cfi
fwrite addr ff000000 cmd f0 00f000f000f000f0 64 bit x 16 bit
fwrite addr ff000000 cmd ff 00ff00ff00ff00ff 64 bit x 16 bit
2__flash detect cfi
fwrite addr ff0002a8 cmd 98 0098009800980098 64 bit x 16 bit
3__flash detect cfi
is= cmd 51(Q) addr ff000080 is= ffffffffffffffff 0051005100510051
fwrite addr ff002aa8 cmd 98 0098009800980098 64 bit x 16 bit
3__flash detect cfi
is= cmd 51(Q) addr ff000080 is= ffffffffffffffff 0051005100510051

1__flash detect cfi
fwrite addr ff000000 cmd f0 000000f0000000f0 64 bit x 32 bit
fwrite addr ff000000 cmd ff 000000ff000000ff 64 bit x 32 bit
2__flash detect cfi
fwrite addr ff0002a8 cmd 98 0000009800000098 64 bit x 32 bit
3__flash detect cfi
is= cmd 51(Q) addr ff000080 is= ffffffffffffffff 0000005100000051
fwrite addr ff002aa8 cmd 98 0000009800000098 64 bit x 32 bit
3__flash detect cfi
is= cmd 51(Q) addr ff000080 is= ffffffffffffffff 0000005100000051

1__flash detect cfi
fwrite addr ff000000 cmd f0 00000000000000f0 64 bit x 64 bit
fwrite addr ff000000 cmd ff 00000000000000ff 64 bit x 64 bit
2__flash detect cfi
fwrite addr ff0002a8 cmd 98 0000000000000098 64 bit x 64 bit
3__flash detect cfi
is= cmd 51(Q) addr ff000080 is= ffffffffffffffff 0000000000000051
fwrite addr ff002aa8 cmd 98 0000000000000098 64 bit x 64 bit
3__flash detect cfi
is= cmd 51(Q) addr ff000080 is= ffffffffffffffff 0000000000000051
not found
## Unknown FLASH on Bank 1 - Size = 0x00000000 = 0 MB
flash_protect ON: from 0xFFFC0000 to 0xFFFE8AFF
flash_protect ON: from 0xFFFA0000 to 0xFFFBFFFF
*** failed ***
### ERROR ### Please RESET the board ###


What should be the cause. It would be really helpful if someone who have
face this kind of issues can give some inputs.

TIA.

Regards,
Prakash


More information about the U-Boot mailing list