
Josh, Use the flash driver in drivers/cfi_flash.c - this is a much better version. A number of people have helped make improvements over the original strataflash driver. I use this driver in a 4 chip16 x 64 and a 2 chip 16 x 32 implementations. If you have 4 chips in parrallel it should detect a 16x64 bit interface. Brad
-----Original Message----- From: Josh Fryman [mailto:fryman@cc.gatech.edu] Sent: Sun 2/15/2004 2:48 PM To: u-boot-users@lists.sourceforge.net Cc: Brad Kemp Subject: problems with the strataflash driver in U-boot
hi, the strataflash driver (used in the U-boot boot loader project) is getting confused by the configuration of flash i've got. i'm CC'ing Brad Kemp, the author of the driver, as i'm not sure he's a developer of U-boot. the intel sitsang platform has the 28F128J3 (A150) on it. it has 4 of these 16MB chips, set up to make a 32-bit wide flash interface. the address lines and flash bank enables are shared for both chips in a block. ie: 0-32MB: high-data chip 1 low-data chip 0 32-64MB: high-data chip 3 low-data chip 2 should the driver support this? it seems to be getting very confused right in the beginnining of initialization, with flash_get_size() calling flash_isequal() which does this pattern of data xfer... (i've tossed in a lot of debug statements :) Flash Driver initializing... flash_isequal: tgt = 00000010 (sect 0 ofs 16) flash_isequal: cptr-8[0]=0x14, cword=0x51 flash_isequal: retval = 0 flash_isequal: tgt = 00000020 (sect 0 ofs 16) flash_isequal: cptr-16[0]=0x0000, cword=0x5151 flash_isequal: retval = 0 flash_isequal: tgt = 00000020 (sect 0 ofs 16) flash_isequal: cptr-16[0]=0x0260, cword=0x5100 flash_isequal: retval = 0 flash_isequal: tgt = 00000040 (sect 0 ofs 16) flash_isequal: cptr-32[0]=0x00510051, cword=0x51515151 flash_isequal: retval = 0 flash_isequal: tgt = 00000040 (sect 0 ofs 16) flash_isequal: cptr-32[0]=0xa1fe0000, cword=0x51005100 flash_isequal: retval = 0 flash_isequal: tgt = 00000040 (sect 0 ofs 16) flash_isequal: cptr-32[0]=0xa1fe0000, cword=0x51000000 flash_isequal: retval = 0 flash detect base 0, bank 0 failed Flash bank 0 reported size 0x00000000 ## Unknown FLASH on Bank 0 - Size = 0x00000000 = 0x00000000 MB flash_isequal: tgt = 02000010 (sect 0 ofs 16) flash_isequal: cptr-8[0]=0x0e, cword=0x51 flash_isequal: retval = 0 flash_isequal: tgt = 02000020 (sect 0 ofs 16) flash_isequal: cptr-16[0]=0x0000, cword=0x5151 flash_isequal: retval = 0 flash_isequal: tgt = 02000020 (sect 0 ofs 16) flash_isequal: cptr-16[0]=0xe195, cword=0x5100 flash_isequal: retval = 0 flash_isequal: tgt = 02000040 (sect 0 ofs 16) flash_isequal: cptr-32[0]=0x00510051, cword=0x51515151 flash_isequal: retval = 0 flash_isequal: tgt = 02000040 (sect 0 ofs 16) flash_isequal: cptr-32[0]=0x2523fa29, cword=0x51005100 flash_isequal: retval = 0 flash_isequal: tgt = 02000040 (sect 0 ofs 16) flash_isequal: cptr-32[0]=0x2523fa29, cword=0x51000000 flash_isequal: retval = 0 flash detect base 33554432, bank 1 failed Flash bank 1 reported size 0x00000000 ## Unknown FLASH on Bank 1 - Size = 0x00000000 = 0x00000000 MB Flash driver done... returning size 0 Flash: 0 kB do i just have the permutation of CFG_foo flags set wrong? thanks for any input, -josh