Hi,
my Asrock K8NF4G-SATA2 has a Winbond W39V040BPZ 4 Mbit LPC flash chip, but flash_rom doesn't find the chip. Data sheet for the flash chip is available at http://winbond-usa.com/products/winbond_products/pdfs/Memory/W39V040Bd.pdf
# flashrom -V Calibrating delay loop... Setting up microsecond timing loop 510M loops per second ok No LinuxBIOS table found. Trying Am29F040B, 512 KB probe_29f040b: id1 0xff, id2 0xff Trying Am29F016D, 2048 KB probe_29f040b: id1 0xff, id2 0xff Trying At29C040A, 512 KB probe_jedec: id1 0xff, id2 0xff Trying Mx29f002, 256 KB probe_29f002: id1 0xc, id2 0x92 Trying SST29EE020A, 256 KB probe_jedec: id1 0xc, id2 0x92 Trying SST28SF040A, 512 KB probe_28sf040: id1 0xff, id2 0xff Trying SST39SF020A, 256 KB probe_jedec: id1 0xc, id2 0x92 Trying SST39VF020, 256 KB probe_jedec: id1 0xc, id2 0x92 Trying SST49LF040B, 512 KB probe_jedec: id1 0xff, id2 0xff Trying SST49LF040, 512 KB probe_jedec: id1 0xff, id2 0xff Trying SST49LF080A, 1024 KB probe_jedec: id1 0xff, id2 0xff Trying SST49LF002A/B, 256 KB probe_jedec: id1 0xc, id2 0x92 Trying SST49LF003A/B, 384 KB probe_jedec: id1 0x65, id2 0xf5 Trying SST49LF004A/B, 512 KB probe_jedec: id1 0xff, id2 0xff Trying SST49LF008A, 1024 KB probe_jedec: id1 0xff, id2 0xff Trying Pm49FL002, 256 KB probe_jedec: id1 0xc, id2 0x92 Trying Pm49FL004, 512 KB probe_jedec: id1 0xff, id2 0xff Trying W29C011, 128 KB probe_jedec: id1 0xff, id2 0xff Trying W29C020C, 256 KB probe_jedec: id1 0xc, id2 0x92 Trying W49F002U, 256 KB probe_jedec: id1 0xc, id2 0x92 Trying W49V002A, 256 KB probe_jedec: id1 0xc, id2 0x92 Trying W49V002FA, 256 KB probe_jedec: id1 0xc, id2 0x92 Trying W39V040A, 512 KB probe_jedec: id1 0xff, id2 0xff Trying M29F040B, 512 KB probe_29f040b: id1 0xff, id2 0xff Trying M29F400BT, 512 KB probe_m29f400bt: id1 0xff, id2 0xff Trying 82802ab, 512 KB probe_82802ab: id1 0xff, id2 0xff Trying 82802ac, 1024 KB probe_82802ab: id1 0xff, id2 0xff Trying F49B002UA, 256 KB probe_jedec: id1 0xc, id2 0x92 Trying LHF00L04, 1024 KB probe_lhf00l04: id1 0xff, id2 0xff No EEPROM/flash device found.
lspci excerpt follows: 00:0a.0 ISA bridge: nVidia Corporation MCP51 LPC Bridge (rev a2) Subsystem: ASRock Incorporation Unknown device 0261 Flags: bus master, 66MHz, fast devsel, latency 0
00:0a.1 SMBus: nVidia Corporation MCP51 SMBus (rev a2) Subsystem: ASRock Incorporation Unknown device 0264 Flags: 66MHz, fast devsel, IRQ 7 I/O ports at 5000 [size=64] I/O ports at 6000 [size=64] Capabilities: [44] Power Management version 2
Any chance to get support for that flash chip on my board?
Regards, Carl-Daniel
The LPC device is not recognized.
Can you try to add your LPC device to the table in flash_enable.c:enables[]
You have to find out the correct device ID since there are several IDs for the LPC device you posted: 0260 MCP51 LPC Bridge 0261 MCP51 LPC Bridge 0262 MCP51 LPC Bridge 0263 MCP51 LPC Bridge
I'd start out using the enable_flash_ck804() function to enable flash access on that system because the flash enable mechanism is often similar across generations of LPC devices from one manufacturer.
Stefan
With the following (whitespace-damaged) patch
Index: flash.h =================================================================== --- flash.h (Revision 2350) +++ flash.h (Arbeitskopie) @@ -59,6 +59,7 @@ #define W_29C011 0xC1 /* Winbond w29c011 device code */ #define W_29C020C 0x45 /* Winbond w29c020c device code */ #define W_39V040A 0x3D /* Winbond w39v040a device code */ +#define W_39V040B 0x54 /* Winbond w39v040b device code */ #define W_49F002U 0x0B /* Winbond w49F002u device code */ #define W_49V002A 0xB0 /* Winbond W49V002A device code */ #define W_49V002FA 0x32 /* Winbond W49V002FA device code */ Index: flash_enable.c =================================================================== --- flash_enable.c (Revision 2350) +++ flash_enable.c (Arbeitskopie) @@ -396,6 +396,7 @@ {0x1022, 0x7468, "AMD8111", enable_flash_amd8111}, // this fallthrough looks broken. {0x10de, 0x0050, "NVIDIA CK804", enable_flash_ck804}, // LPC + {0x10de, 0x0261, "NVIDIA C51", enable_flash_ck804}, {0x10de, 0x0051, "NVIDIA CK804", enable_flash_ck804}, // Pro {0x10de, 0x00d3, "NVIDIA CK804", enable_flash_ck804}, // Slave, should not be here, to fix known bug for A01. {0x1002, 0x4377, "ATI SB400", enable_flash_sb400}, // ATI Technologies Inc IXP SB400 PCI-ISA Bridge (rev 80) Index: flashchips.c =================================================================== --- flashchips.c (Revision 2350) +++ flashchips.c (Arbeitskopie) @@ -88,6 +88,8 @@ probe_jedec, erase_chip_jedec, write_49f002, NULL}, {"W39V040A", WINBOND_ID, W_39V040A, NULL, 512, 64*1024, probe_jedec, erase_chip_jedec, write_39sf020, NULL}, + {"W39V040B", WINBOND_ID, W_39V040B, NULL, 512, 64*1024, + probe_jedec, erase_chip_jedec, write_39sf020, NULL}, {"M29F040B", ST_ID, ST_M29F040B, NULL, 512, 64 * 1024, probe_29f040b, erase_29f040b, write_29f040b, NULL}, {"M29F400BT", ST_ID, ST_M29F400BT, NULL, 512, 64 * 1024,
I get this result: # LinuxBIOSv2/util/flashrom/flashrom Calibrating delay loop... ok No LinuxBIOS table found. Enabling flash write on NVIDIA C51...OK W39V040B found at physical address: 0xfff80000 Flash part is W39V040B OK, only ENABLING flash write, but NOT FLASHING.
There is one small problem: I depend on this board very much since my laptop is in repair. So I can't test whether writing would work. The only difference between W39V040B (new) and W39V040A (supported) ist that W39V040B is a LPC chip instead of FWH. I don't know whether that matters for flashing.
Regards, Carl-Daniel
On Mon, Jul 31, 2006 at 04:45:11PM +0200, Carl-Daniel U. Hailfinger wrote:
There is one small problem: I depend on this board very much since my laptop is in repair. So I can't test whether writing would work. The only difference between W39V040B (new) and W39V040A (supported) ist that W39V040B is a LPC chip instead of FWH. I don't know whether that matters for flashing.
It shouldn't. FWH is also LPC, but with some added IO functionality.
//Peter
Applied.
* Carl-Daniel U. Hailfinger c-d.hailfinger.devel.2006@gmx.net [060731 16:45]:
With the following (whitespace-damaged) patch
Index: flash.h
--- flash.h (Revision 2350) +++ flash.h (Arbeitskopie) @@ -59,6 +59,7 @@ #define W_29C011 0xC1 /* Winbond w29c011 device code */ #define W_29C020C 0x45 /* Winbond w29c020c device code */ #define W_39V040A 0x3D /* Winbond w39v040a device code */ +#define W_39V040B 0x54 /* Winbond w39v040b device code */ #define W_49F002U 0x0B /* Winbond w49F002u device code */ #define W_49V002A 0xB0 /* Winbond W49V002A device code */ #define W_49V002FA 0x32 /* Winbond W49V002FA device code */ Index: flash_enable.c =================================================================== --- flash_enable.c (Revision 2350) +++ flash_enable.c (Arbeitskopie) @@ -396,6 +396,7 @@ {0x1022, 0x7468, "AMD8111", enable_flash_amd8111}, // this fallthrough looks broken. {0x10de, 0x0050, "NVIDIA CK804", enable_flash_ck804}, // LPC
{0x10de, 0x0261, "NVIDIA C51", enable_flash_ck804}, {0x10de, 0x0051, "NVIDIA CK804", enable_flash_ck804}, // Pro {0x10de, 0x00d3, "NVIDIA CK804", enable_flash_ck804}, // Slave, should not be here, to fix known bug for A01. {0x1002, 0x4377, "ATI SB400", enable_flash_sb400}, // ATI Technologies Inc IXP SB400 PCI-ISA Bridge (rev 80)
Index: flashchips.c
--- flashchips.c (Revision 2350) +++ flashchips.c (Arbeitskopie) @@ -88,6 +88,8 @@ probe_jedec, erase_chip_jedec, write_49f002, NULL}, {"W39V040A", WINBOND_ID, W_39V040A, NULL, 512, 64*1024, probe_jedec, erase_chip_jedec, write_39sf020, NULL},
{"W39V040B", WINBOND_ID, W_39V040B, NULL, 512, 64*1024,
probe_jedec, erase_chip_jedec, write_39sf020, NULL}, {"M29F040B", ST_ID, ST_M29F040B, NULL, 512, 64 * 1024, probe_29f040b, erase_29f040b, write_29f040b, NULL}, {"M29F400BT", ST_ID, ST_M29F400BT, NULL, 512, 64 * 1024,
I get this result: # LinuxBIOSv2/util/flashrom/flashrom Calibrating delay loop... ok No LinuxBIOS table found. Enabling flash write on NVIDIA C51...OK W39V040B found at physical address: 0xfff80000 Flash part is W39V040B OK, only ENABLING flash write, but NOT FLASHING.
There is one small problem: I depend on this board very much since my laptop is in repair. So I can't test whether writing would work. The only difference between W39V040B (new) and W39V040A (supported) ist that W39V040B is a LPC chip instead of FWH. I don't know whether that matters for flashing.
Regards, Carl-Daniel --
Echte DSL-Flatrate dauerhaft für 0,- Euro*. Nur noch kurze Zeit! "Feel free" mit GMX DSL: http://www.gmx.net/de/go/dsl