[darkprof@SUT tusl-2c]$ sudo flashrom -w 1014tc.001 Пароль: flashrom v0.9.5.1-r1509 on Linux 3.0-ARCH (i686), built with libpci 3.1.9, GCC 4.6.2 20120120 (prerelease), little endian flashrom is free software, get the source code at http://www.flashrom.org Calibrating delay loop... OK. sh: dmidecode: команда не найдена dmidecode execution unsuccessful - continuing without DMI info Found chipset "Intel ICH2". Enabling flash write... OK. Found Winbond flash chip "W49V002FA" (256 kB, FWH) at physical address 0xfffc0000. === This flash part has status UNTESTED for operations: ERASE WRITE The test status of this chip may have been updated in the latest development version of flashrom. If you are running the latest development version, please email a report to flashrom@flashrom.org if any of the above operations work correctly for you with this flash part. Please include the flashrom output with the additional -V option for all operations you tested (-V, -Vr, -VE, -Vw), and mention which mainboard or programmer you tested. Please mention your board in the subject line. Thanks for your help! Flash image seems to be a legacy BIOS. Disabling coreboot-related checks. Reading old flash chip contents... done. Erasing and writing flash chip... ERASE FAILED at 0x00000000! Expected=0xff, Read=0x25, failed byte count from 0x00000000-0x0000ffff: 0xfee7 ERASE FAILED! Reading current flash chip contents... done. ERASE FAILED at 0x00000000! Expected=0xff, Read=0x25, failed byte count from 0x00000000-0x0003ffff: 0x36050 ERASE FAILED! FAILED! Uh oh. Erase/write failed. Checking if anything changed. Good. It seems nothing was changed. Writing to the flash chip apparently didn't do anything. This means we have to add special support for your board, programmer or flash chip. Please report this on IRC at irc.freenode.net (channel #flashrom) or mail flashrom@flashrom.org! ------------------------------------------------------------------------------- You may now reboot or simply leave the machine running. [darkprof@SUT tusl-2c]$ sudo flashrom -Vw 1014tc.001 Пароль: flashrom v0.9.5.1-r1509 on Linux 3.0-ARCH (i686), built with libpci 3.1.9, GCC 4.6.2 20120120 (prerelease), little endian flashrom is free software, get the source code at http://www.flashrom.org Calibrating delay loop... OS timer resolution is 1 usecs, 476M loops per second, delay more than 10% too short (got 84% of expected delay), recalculating... 380M loops per second, delay more than 10% too short (got 69% of expected delay), recalculating... 364M loops per second, delay more than 10% too short (got 65% of expected delay), recalculating... 525M loops per second, 10 myus = 10 us, 100 myus = 93 us, 1000 myus = 1022 us, 10000 myus = 15445 us, 4 myus = 4 us, OK. Initializing internal programmer No coreboot table found. sh: dmidecode: команда не найдена dmidecode execution unsuccessful - continuing without DMI info Found chipset "Intel ICH2" with PCI ID 8086:2440. Enabling flash write... BIOS Lock Enable: disabled, BIOS Write Enable: disabled, BIOS_CNTL is 0x0 OK. The following protocols are supported: FWH. Probing for Atmel AT49LH002, 256 kB: probe_82802ab: id1 0x25, id2 0xdc, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AB, 512 kB: probe_82802ab: id1 0x25, id2 0xdc, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AC, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL002, 256 kB: probe_jedec_common: id1 0xda, id2 0x32 Probing for PMC Pm49FL004, 512 kB: probe_jedec_common: id1 0xda, id2 0x32 Probing for Sharp LHF00L04, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF002A/B, 256 kB: probe_jedec_common: id1 0xda, id2 0x32 Probing for SST SST49LF003A/B, 384 kB: probe_jedec_common: id1 0xda, id2 0x32 Probing for SST SST49LF004A/B, 512 kB: probe_jedec_common: id1 0xda, id2 0x32 Probing for SST SST49LF004C, 512 kB: probe_82802ab: id1 0x25, id2 0xdc, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF008A, 1024 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF008C, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF016C, 2048 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040A, 512 kB: probe_82802ab: id1 0x25, id2 0xdc, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040B, 512 kB: probe_82802ab: id1 0x25, id2 0xdc, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080A, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080B, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW002, 256 kB: probe_82802ab: id1 0x25, id2 0xdc, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW016, 2048 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW040, 512 kB: probe_82802ab: id1 0x25, id2 0xdc, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW080, 1024 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V040FA, 512 kB: probe_jedec_common: id1 0xda, id2 0x32 Probing for Winbond W39V040FB, 512 kB: probe_jedec_common: id1 0xda, id2 0x32 Probing for Winbond W39V040FC, 512 kB: probe_jedec_common: id1 0xda, id2 0x32 Probing for Winbond W49V002FA, 256 kB: probe_jedec_common: id1 0xda, id2 0x32 Found Winbond flash chip "W49V002FA" (256 kB, FWH) at physical address 0xfffc0000. Probing for Winbond W39V080FA, 1024 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V080FA (dual mode), 512 kB: probe_jedec_common: id1 0xda, id2 0x32 Found Winbond flash chip "W49V002FA" (256 kB, FWH). === This flash part has status UNTESTED for operations: ERASE WRITE The test status of this chip may have been updated in the latest development version of flashrom. If you are running the latest development version, please email a report to flashrom@flashrom.org if any of the above operations work correctly for you with this flash part. Please include the flashrom output with the additional -V option for all operations you tested (-V, -Vr, -VE, -Vw), and mention which mainboard or programmer you tested. Please mention your board in the subject line. Thanks for your help! Flash image seems to be a legacy BIOS. Disabling coreboot-related checks. Reading old flash chip contents... done. Erasing and writing flash chip... Trying erase function 0... 0x000000-0x00ffff:EERASE FAILED at 0x00000000! Expected=0xff, Read=0x25, failed byte count from 0x00000000-0x0000ffff: 0xfee7 ERASE FAILED! Reading current flash chip contents... done. Looking for another erase function. Trying erase function 1... 0x000000-0x03ffff:EERASE FAILED at 0x00000000! Expected=0xff, Read=0x25, failed byte count from 0x00000000-0x0003ffff: 0x36050 ERASE FAILED! Looking for another erase function. No usable erase functions left. FAILED! Uh oh. Erase/write failed. Checking if anything changed. Good. It seems nothing was changed. Writing to the flash chip apparently didn't do anything. This means we have to add special support for your board, programmer or flash chip. Please report this on IRC at irc.freenode.net (channel #flashrom) or mail flashrom@flashrom.org! ------------------------------------------------------------------------------- You may now reboot or simply leave the machine running. Restoring PCI config space for 00:1f:0 reg 0x4e [darkprof@SUT tusl-2c]$
On Tue, 06 Mar 2012 13:41:58 +0400 Андрей Тимираев dark_prof@mail.ru wrote:
[darkprof@SUT tusl-2c]$ sudo flashrom -w 1014tc.001
Hello Андрей!
Your board needs a small piece of code that disables the write protection pin of the flash chip. In flashrom this is called a board enable (see http://flashrom.org/Board_Enable for more details).
Please try attached patch and report back. If it does *not* work, please send the "flashrom -V -w <file>" output and also the output of lspci -nnvvvxxx (run as root), thanks.
Am Mittwoch, den 07.03.2012, 01:22 +0100 schrieb Stefan Tauner:
From 4df237d340416aa424f93ca4a9d9b4dd719ed02f Mon Sep 17 00:00:00 2001 From: Stefan Tauner stefan.tauner@student.tuwien.ac.at Date: Wed, 7 Mar 2012 01:16:11 +0100 Subject: [PATCH] Add board enable for ASUS TUSL2-C
Primary IDs SMBus controller, Secondary IDs MCH. With implicit courtesy of Micheal 'awesome' Kracher :)
My name is "Karcher", not "Kracher". And also it is "Michael", not "Micheal".
{0x8086, 0x2443, 0x1043, 0x8027, 0x8086, 0x1130, 0x1043, 0x8027, NULL, NULL, NULL, P3, "ASUS", "TUSL2-C", 0, OK, intel_ich_gpio21_raise},
This line looks entirely correct, but you did not care about the "rule of three" for board enables: A typical board enable patch needs three hunks, one of them is vital for functionality.
1st: (you have it, it is vital) The board enable table 2nd: The comment with the board list at the enable function, or the complete enable function, if it is a new one 3rd: The entries in print.c
Regards, Michael Karcher
Primary IDs SMBus controller, secondary IDs MCH. The reverse engineering was done by Michael Karcher. Андрей Тимираев dark_prof@mail.ru reported the problem, but did not reply (yet) to our propsed fix.
Signed-off-by: Stefan Tauner stefan.tauner@student.tuwien.ac.at Acked-by: Michael Karcher flashrom@mkarcher.dialup.fu-berlin.de --- board_enable.c | 2 ++ print.c | 1 + 2 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/board_enable.c b/board_enable.c index d9e26bc..31b212a 100644 --- a/board_enable.c +++ b/board_enable.c @@ -1529,6 +1529,7 @@ static int intel_ich_gpio19_raise(void) * - ASUS P5GD2 Premium: Intel LGA775 + 915G + ICH6R * - ASUS P5GDC Deluxe: Intel socket775 + 915P + ICH6R * - ASUS P5PE-VM: Intel LGA775 + 865G + ICH5 + * - ASUS TUSL2-C: Intel socket370 + 815 + ICH2 * - Samsung Polaris 32: socket478 + 865P + ICH5 */ static int intel_ich_gpio21_raise(void) @@ -2173,6 +2174,7 @@ const struct board_match board_matches[] = { {0x10DE, 0x0260, 0x1043, 0x81BC, 0x10DE, 0x026C, 0x1043, 0x829E, "^P5N-D$", NULL, NULL, P3, "ASUS", "P5N-D", 0, OK, it8718f_gpio63_raise}, {0x10DE, 0x0260, 0x1043, 0x81BC, 0x10DE, 0x026C, 0x1043, 0x8249, "^P5N-E SLI$",NULL, NULL, P3, "ASUS", "P5N-E SLI", 0, NT, it8718f_gpio63_raise}, {0x8086, 0x24dd, 0x1043, 0x80a6, 0x8086, 0x2570, 0x1043, 0x8157, NULL, NULL, NULL, P3, "ASUS", "P5PE-VM", 0, OK, intel_ich_gpio21_raise}, + {0x8086, 0x2443, 0x1043, 0x8027, 0x8086, 0x1130, 0x1043, 0x8027, NULL, NULL, NULL, P3, "ASUS", "TUSL2-C", 0, NT, intel_ich_gpio21_raise}, {0x10b7, 0x9055, 0x1028, 0x0082, 0x8086, 0x7190, 0, 0, NULL, NULL, NULL, P3, "Dell", "OptiPlex GX1", 0, OK, intel_piix4_gpo30_lower}, {0x8086, 0x3590, 0x1028, 0x016c, 0x1000, 0x0030, 0x1028, 0x016c, NULL, NULL, NULL, P3, "Dell", "PowerEdge 1850", 0, OK, intel_ich_gpio23_raise}, {0x10de, 0x03ea, 0x1019, 0x2602, 0x10de, 0x03e0, 0x1019, 0x2602, NULL, NULL, NULL, P3, "Elitegroup", "GeForce6100SM-M", 0, OK, board_ecs_geforce6100sm_m}, diff --git a/print.c b/print.c index 1fdeac7..01f8ae9 100644 --- a/print.c +++ b/print.c @@ -706,6 +706,7 @@ const struct board_info boards_known[] = { B("ASUS", "P8H67-M PRO", 0, NULL, "Probing works (Macronix MX25L3205, 4096 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), B("ASUS", "P8P67 (rev. 3.1)", 0, NULL, "Probing works (Macronix MX25L3205, 4096 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), B("ASUS", "P8Z68-V PRO", 0, NULL, "Probing works (Winbond W25Q64, 8192 kB, SPI), but parts of the flash are problematic: descriptor is r/o (conforming to ICH reqs), ME region is locked."), + B("ASUS", "TUSL2-C", 0, "http://support.asus.com/download.aspx?SLanguage=en&p=1&s=4&m=TUS...", "Untested board enable."), B("ASUS", "Z8NA-D6C", 1, "http://www.asus.com/Server_Workstation/Server_Motherboards/Z8NAD6C/", NULL), B("ASUS", "Z8PE-D12", 1, "http://www.asus.com/Server_Workstation/Server_Motherboards/Z8PED12/", NULL), B("BCOM", "WinNET100", 1, "http://www.coreboot.org/BCOM_WINNET100", "Used in the IGEL-316 thin client."),