flashrom
Threads by month
- ----- 2026 -----
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
May 2010
- 64 participants
- 169 discussions
June 12, 2010
Hi,
Just reporting a failure on the Gigabyte GA-8IRML (Rev 2.2) with bios F8.
flashrom (0.9.2-r1023) appears to read (backup) the bios fine OK but fails
on first sector/bit when attempting erase before write.
Please see attached logs.
idlogin,
bios download page
http://www.gigabyte.com.tw/products/product-page.aspx?pid=1343#dl
<http://www.gigabyte.com.tw/products/product-page.aspx?pid=1343#dl>sticker
on bios says Phoenix Bios
2
1
Hi all, there are the results of running flashrom on motherboard "Elitegroup A740GM-M (1.0)".
some MB specifications
http://www.ecs.com.tw/ECSWebSite/Products/ProductsDetail.aspx?detailid=864&…
READ test results:
./flashrom --read a740.backup.rom
flashrom v0.9.1-r993 on Linux 2.6.28-gentoo-r1.ddb.den_m (i686), built with libpci 3.0.0, GCC 4.3.2
No coreboot table found.
Found ITE Super I/O, id 8726
Found chipset "AMD SB700/SB710/SB750", enabling flash write... OK.
This chipset supports the following protocols: LPC,FWH,SPI.
Calibrating delay loop... OK.
Found chip "Generic unknown SPI chip (RDID)" (0 KB, SPI) at physical address 0x0.
===
This flash part has status NOT WORKING for operations: PROBE READ ERASE WRITE
Please email a report to flashrom(a)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, -rV,
-wV, -EV), and mention which mainboard or programmer you tested.
Thanks for your help!
===
Reading flash... FAILED!
ERROR: flashrom has no read function for this flash chip.
./flashrom -V
flashrom v0.9.1-r993 on Linux 2.6.28-gentoo-r1.ddb.den_m (i686), built with libpci 3.0.0, GCC 4.3.2
No coreboot table found.
DMI string system-manufacturer: "ECS"
DMI string system-product-name: "A740GM-M"
DMI string system-version: "1.0 "
DMI string baseboard-manufacturer: "ECS"
DMI string baseboard-product-name: "A740GM-M"
DMI string baseboard-version: "1.0 "
DMI string chassis-type: "Desktop"
Found ITE Super I/O, id 8726
Found chipset "AMD SB700/SB710/SB750", enabling flash write... SPI base address is at 0xfec10000
AltSpiCSEnable=0, SpiRomEnable=1, AbortEnable=0
PrefetchEnSPIFromIMC=0, PrefetchEnSPIFromHost=1, SpiOpEnInLpcMode=1
SpiArbEnable=1, SpiAccessMacRomEn=1, SpiHostAccessRomEn=1, ArbWaitCount=4, SpiBridgeDisable=0, DropOneClkOnRd=0
GPIO11 used for SPI_DO
GPIO12 used for SPI_DI
GPIO31 used for SPI_HOLD
GPIO32 used for SPI_CS
GPIO47 used for SPI_CLK
ROM strap override is not active
OK.
This chipset supports the following protocols: LPC,FWH,SPI.
SuperI/O ID 8726 is not on the controller list.
Calibrating delay loop... 1396M loops per second, 10 myus = 10 us, 100 myus = 100 us, 1000 myus = 1000 us, 10000 myus = 10004 us, OK.
Probing for AMD Am29F010A/B, 128 KB: skipped.
Probing for AMD Am29F002(N)BB, 256 KB: skipped.
Probing for AMD Am29F002(N)BT, 256 KB: skipped.
Probing for AMD Am29F016D, 2048 KB: skipped.
Probing for AMD Am29F040B, 512 KB: skipped.
Probing for AMD Am29F080B, 1024 KB: skipped.
Probing for AMD Am29LV040B, 512 KB: skipped.
Probing for AMD Am29LV081B, 1024 KB: skipped.
Probing for ASD AE49F2008, 256 KB: skipped.
Probing for Atmel AT25DF021, 256 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Atmel AT25DF041A, 512 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Atmel AT25DF081, 1024 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Atmel AT25DF161, 2048 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Atmel AT25DF321, 4096 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Atmel AT25DF321A, 4096 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Atmel AT25DF641, 8192 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Atmel AT25F512B, 64 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Atmel AT25FS010, 128 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Atmel AT25FS040, 512 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Atmel AT26DF041, 512 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Atmel AT26DF081A, 1024 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Atmel AT26DF161, 2048 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Atmel AT26DF161A, 2048 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Atmel AT26F004, 512 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Atmel AT29C512, 64 KB: skipped.
Probing for Atmel AT29C010A, 128 KB: skipped.
Probing for Atmel AT29C020, 256 KB: skipped.
Probing for Atmel AT29C040A, 512 KB: skipped.
Probing for Atmel AT45CS1282, 16896 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Atmel AT45DB011D, 128 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Atmel AT45DB021D, 256 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Atmel AT45DB041D, 512 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Atmel AT45DB081D, 1024 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Atmel AT45DB161D, 2048 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Atmel AT45DB321C, 4224 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Atmel AT45DB321D, 4096 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Atmel AT45DB642D, 8192 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Atmel AT49BV512, 64 KB: skipped.
Probing for Atmel AT49F002(N), 256 KB: skipped.
Probing for Atmel AT49F002(N)T, 256 KB: skipped.
Probing for AMIC A25L40PT, 512 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for AMIC A25L40PU, 512 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for AMIC A29002B, 256 KB: skipped.
Probing for AMIC A29002T, 256 KB: skipped.
Probing for AMIC A29040B, 512 KB: skipped.
Probing for AMIC A49LF040A, 512 KB: probe_jedec_common: id1 0x54, id2 0x5a, id1 is normal flash content, id2 is normal flash content
Probing for EMST F49B002UA, 256 KB: skipped.
Probing for Eon EN25B05, 64 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Eon EN25B05T, 64 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Eon EN25B10, 128 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Eon EN25B10T, 128 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Eon EN25B20, 256 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Eon EN25B20T, 256 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Eon EN25B40, 512 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Eon EN25B40T, 512 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Eon EN25B80, 1024 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Eon EN25B80T, 1024 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Eon EN25B16, 2048 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Eon EN25B16T, 2048 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Eon EN25B32, 4096 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Eon EN25B32T, 4096 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Eon EN25B64, 8192 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Eon EN25B64T, 8192 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Eon EN25D16, 2048 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Eon EN25F05, 64 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Eon EN25F10, 128 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Eon EN25F20, 256 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Eon EN25F40, 512 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Eon EN25F80, 1024 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Eon EN25F16, 2048 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Eon EN25F32, 4096 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Eon EN29F010, 128 KB: skipped.
Probing for EON EN29F002(A)(N)B, 256 KB: skipped.
Probing for EON EN29F002(A)(N)T, 256 KB: skipped.
Probing for Fujitsu MBM29F004BC, 512 KB: skipped.
Probing for Fujitsu MBM29F004TC, 512 KB: skipped.
Probing for Fujitsu MBM29F400BC, 512 KB: skipped.
Probing for Fujitsu MBM29F400TC, 512 KB: skipped.
Probing for Intel 28F001BX-B, 128 KB: skipped.
Probing for Intel 28F001BX-T, 128 KB: skipped.
Probing for Intel 28F004S5, 512 KB: skipped.
Probing for Intel 28F004BV/BE-B, 512 KB: skipped.
Probing for Intel 28F004BV/BE-T, 512 KB: skipped.
Probing for Intel 28F400BV/CV/CE-B, 512 KB: skipped.
Probing for Intel 28F400BV/CV/CE-T, 512 KB: skipped.
Probing for Intel 82802AB, 512 KB: probe_82802ab: id1 0x54, id2 0x5a, 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 Macronix MX25L512, 64 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Macronix MX25L1005, 128 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Macronix MX25L2005, 256 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Macronix MX25L4005, 512 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Macronix MX25L8005, 1024 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Macronix MX25L1605, 2048 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Macronix MX25L1635D, 2048 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Macronix MX25L3205, 4096 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Macronix MX25L3235D, 4096 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Macronix MX25L6405, 8192 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Macronix MX25L12805, 16384 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Macronix MX29F001B, 128 KB: skipped.
Probing for Macronix MX29F001T, 128 KB: skipped.
Probing for Macronix MX29F002B, 256 KB: skipped.
Probing for Macronix MX29F002T, 256 KB: skipped.
Probing for Macronix MX29LV040, 512 KB: skipped.
Probing for Numonyx M25PE10, 128 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Numonyx M25PE20, 256 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Numonyx M25PE40, 512 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Numonyx M25PE80, 1024 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Numonyx M25PE16, 2048 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for PMC Pm25LV010, 128 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for PMC Pm25LV016B, 2048 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for PMC Pm25LV020, 256 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for PMC Pm25LV040, 512 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for PMC Pm25LV080B, 1024 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for PMC Pm25LV512, 64 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for PMC Pm29F002T, 256 KB: skipped.
Probing for PMC Pm29F002B, 256 KB: skipped.
Probing for PMC Pm39LV010, 128 KB: skipped.
Probing for PMC Pm39LV020, 256 KB: skipped.
Probing for PMC Pm39LV040, 512 KB: skipped.
Probing for PMC Pm49FL002, 256 KB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for PMC Pm49FL004, 512 KB: probe_jedec_common: id1 0x54, id2 0x5a, id1 is normal flash content, id2 is normal flash content
Probing for Sanyo LF25FW203A, 2048 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
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 Spansion S25FL008A, 1024 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Spansion S25FL016A, 2048 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for SST SST25VF016B, 2048 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for SST SST25VF032B, 4096 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for SST SST25VF040.REMS, 512 KB: probe_spi_rems: id1 0x8c, id2 0x13
Probing for SST SST25VF040B, 512 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for SST SST25VF040B.REMS, 512 KB: probe_spi_rems: id1 0x8c, id2 0x13
Probing for SST SST25VF080B, 1024 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for SST SST28SF040A, 512 KB: skipped.
Probing for SST SST29EE010, 128 KB: skipped.
Probing for SST SST29LE010, 128 KB: skipped.
Probing for SST SST29EE020A, 256 KB: skipped.
Probing for SST SST29LE020, 256 KB: skipped.
Probing for SST SST39SF512, 64 KB: skipped.
Probing for SST SST39SF010A, 128 KB: skipped.
Probing for SST SST39SF020A, 256 KB: skipped.
Probing for SST SST39SF040, 512 KB: skipped.
Probing for SST SST39VF512, 64 KB: skipped.
Probing for SST SST39VF010, 128 KB: skipped.
Probing for SST SST39VF020, 256 KB: skipped.
Probing for SST SST39VF040, 512 KB: skipped.
Probing for SST SST39VF080, 1024 KB: skipped.
Probing for SST SST49LF002A/B, 256 KB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF003A/B, 384 KB: probe_jedec_common: id1 0xf5, id2 0xc9, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF004A/B, 512 KB: probe_jedec_common: id1 0x54, id2 0x5a, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF004C, 512 KB: probe_82802ab: id1 0x54, id2 0x5a, 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 SST SST49LF020, 256 KB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF020A, 256 KB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF040, 512 KB: probe_jedec_common: id1 0x54, id2 0x5a, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF040B, 512 KB: probe_jedec_common: id1 0x54, id2 0x5a, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF080A, 1024 KB: Chip lacks correct probe timing information, using default 10mS/40uS. probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF160C, 2048 KB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for ST M25P05-A, 64 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for ST M25P05.RES, 64 KB: Ignoring RES in favour of RDID.
Probing for ST M25P10-A, 128 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for ST M25P10.RES, 128 KB: Ignoring RES in favour of RDID.
Probing for ST M25P20, 256 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for ST M25P40, 512 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for ST M25P40-old, 512 KB: Ignoring RES in favour of RDID.
Probing for ST M25P80, 1024 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for ST M25P16, 2048 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for ST M25P32, 4096 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for ST M25P64, 8192 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for ST M25P128, 16384 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for ST M29F002B, 256 KB: skipped.
Probing for ST M29F002T/NT, 256 KB: skipped.
Probing for ST M29F040B, 512 KB: skipped.
Probing for ST M29F400BT, 512 KB: skipped.
Probing for ST M29W010B, 128 KB: skipped.
Probing for ST M29W040B, 512 KB: skipped.
Probing for ST M29W512B, 64 KB: skipped.
Probing for ST M50FLW040A, 512 KB: probe_82802ab: id1 0x54, id2 0x5a, id1 is normal flash content, id2 is normal flash content
Probing for ST M50FLW040B, 512 KB: probe_82802ab: id1 0x54, id2 0x5a, 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 0xff, id2 0xff, id1 parity violation, 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 0x54, id2 0x5a, 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 ST M50LPW116, 2048 KB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SyncMOS S29C31004T, 512 KB: skipped.
Probing for SyncMOS S29C51001T, 128 KB: skipped.
Probing for SyncMOS S29C51002T, 256 KB: skipped.
Probing for SyncMOS S29C51004T, 512 KB: skipped.
Probing for TI TMS29F002RB, 256 KB: skipped.
Probing for TI TMS29F002RT, 256 KB: skipped.
Probing for Winbond W25x10, 128 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Winbond W25x20, 256 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Winbond W25x40, 512 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Winbond W25x80, 1024 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Winbond W25x16, 2048 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Winbond W25x32, 4096 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Winbond W25x64, 8192 KB: probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Probing for Winbond W29C011, 128 KB: skipped.
Probing for Winbond W29C020C, 256 KB: skipped.
Probing for Winbond W29C040P, 512 KB: skipped.
Probing for Winbond W29EE011, 128 KB: skipped.
Probing for Winbond W39V040A, 512 KB: probe_jedec_common: id1 0x54, id2 0x5a, id1 is normal flash content, id2 is normal flash content
Probing for Winbond W39V040B, 512 KB: probe_jedec_common: id1 0x54, id2 0x5a, id1 is normal flash content, id2 is normal flash content
Probing for Winbond W39V040C, 512 KB: Chip lacks correct probe timing information, using default 10mS/40uS. probe_jedec_common: id1 0x54, id2 0x5a, id1 is normal flash content, id2 is normal flash content
Probing for Winbond W39V040FA, 512 KB: probe_jedec_common: id1 0x54, id2 0x5a, id1 is normal flash content, id2 is normal flash content
Probing for Winbond W39V080A, 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 W49F002U, 256 KB: skipped.
Probing for Winbond W49V002A, 256 KB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for Winbond W49V002FA, 256 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, 1024 KB: Chip lacks correct probe timing information, using default 10mS/40uS. 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: Chip lacks correct probe timing information, using default 10mS/40uS. probe_jedec_common: id1 0x54, id2 0x5a, id1 is normal flash content, id2 is normal flash content
Probing for Atmel unknown Atmel SPI chip, 0 KB: Not mapping flash chip, zero size at 0x00000000.
probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Not unmapping zero size at (nil)
Probing for EON unknown EON SPI chip, 0 KB: Not mapping flash chip, zero size at 0x00000000.
probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Not unmapping zero size at (nil)
Probing for Macronix unknown Macronix SPI chip, 0 KB: Not mapping flash chip, zero size at 0x00000000.
probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Not unmapping zero size at (nil)
Probing for PMC unknown PMC SPI chip, 0 KB: Not mapping flash chip, zero size at 0x00000000.
probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Not unmapping zero size at (nil)
Probing for SST unknown SST SPI chip, 0 KB: Not mapping flash chip, zero size at 0x00000000.
probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Not unmapping zero size at (nil)
Probing for ST unknown ST SPI chip, 0 KB: Not mapping flash chip, zero size at 0x00000000.
probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Not unmapping zero size at (nil)
Probing for Sanyo unknown Sanyo SPI chip, 0 KB: Not mapping flash chip, zero size at 0x00000000.
probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Not unmapping zero size at (nil)
Probing for Generic unknown SPI chip (RDID), 0 KB: Not mapping flash chip, zero size at 0x00000000.
probe_spi_rdid_generic: id1 0x8c, id2 0x2014
Found chip "Generic unknown SPI chip (RDID)" (0 KB, SPI) at physical address 0x0.
Probing for Generic unknown SPI chip (REMS), 0 KB: Not mapping flash chip, zero size at 0x00000000.
probe_spi_rems: id1 0x8c, id2 0x13
Not unmapping zero size at (nil)
===
This flash part has status NOT WORKING for operations: PROBE READ ERASE WRITE
Please email a report to flashrom(a)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, -rV,
-wV, -EV), and mention which mainboard or programmer you tested.
Thanks for your help!
===
No operations were specified.
Any advices or links how to implement operations for that chip?
--
Den_M
2
1
Hi
Probing and reading ok. Patch and logs in attachments.
Signed-off-by: Mateusz Murawski <matowy(a)tlen.pl>
2
1
With the attached patch it is no longer necessary to have an extra
dependency step.
--
coresystems GmbH . Brahmsstr. 16 . D-79104 Freiburg i. Br.
Tel.: +49 761 7668825 . Fax: +49 761 7664613
Email: info(a)coresystems.de . http://www.coresystems.de/
Registergericht: Amtsgericht Freiburg . HRB 7656
Geschäftsführer: Stefan Reinauer . Ust-IdNr.: DE245674866
2
5
Hello All!
2010/5/26 Michael Karcher <flashrom(a)mkarcher.dialup.fu-berlin.de>:
>> Moved all data to board_enable.c to avoid duplicating.
> I think print.c is the better location.
Done.
> I didn't tell you last time, but having the working field behind the
> URL/note field in the line moves it out of the 80 column screen. The
> contra-URL fraction might be annoyed by it. Please put URL/note last in
> the structure.
All URL/Notes moved to the end.
Ok, here is a new patch (I still don't ubderstand the proper way I should
change section, responsible for printing information about board_enable):
Signed-off-by: Peter Lemenkov <lemenkov(a)gmail.com>
---
flash.h | 18 ++-
print.c | 450 +++++++++++++++++++++++++++++++---------------------------
print_wiki.c | 404 ++++------------------------------------------------
3 files changed, 284 insertions(+), 588 deletions(-)
diff --git a/flash.h b/flash.h
index a201af3..dc251f0 100644
--- a/flash.h
+++ b/flash.h
@@ -303,12 +303,22 @@ extern struct board_pciid_enable board_pciid_enables[];
struct board_info {
const char *vendor;
const char *name;
+ const int working;
+#ifdef PRINT_WIKI_SUPPORT
+ const char *url;
+ const char *note;
+#endif /* PRINT_WIKI_SUPPORT */
};
-extern const struct board_info boards_ok[];
-extern const struct board_info boards_bad[];
-extern const struct board_info laptops_ok[];
-extern const struct board_info laptops_bad[];
+#ifdef PRINT_WIKI_SUPPORT
+#define BOARD_ENTRY(vendor, name, status, url, note) { vendor, name, status, url, note }
+#else
+#define BOARD_ENTRY(vendor, name, status, url, note) { vendor, name, status }
+#endif
+
+extern const struct board_info boards_known[];
+extern const struct board_info laptops_known[];
+
#endif
/* udelay.c */
diff --git a/print.c b/print.c
index a8da65f..aa3aea3 100644
--- a/print.c
+++ b/print.c
@@ -168,59 +168,46 @@ void print_supported_chipsets(void)
}
}
-void print_supported_boards_helper(const struct board_info *b, const char *msg)
+void print_supported_boards_helper(const struct board_info *boards, const char *devicetype)
{
- int i, j, boardcount = 0;
-
- for (i = 0; b[i].vendor != NULL; i++)
- boardcount++;
-
- printf("\n%s (total: %d):\n\n", msg, boardcount);
-
- for (i = 0; b[i].vendor != NULL; i++) {
- printf("%s", b[i].vendor);
- for (j = 0; j < 25 - strlen(b[i].vendor); j++)
- printf(" ");
- printf("%s", b[i].name);
- for (j = 0; j < 28 - strlen(b[i].name); j++)
- printf(" ");
- printf("\n");
- }
-}
-
-void print_supported_boards(void)
-{
- int i, j, boardcount = 0;
+ int i, j, k, boardcount = 0;
struct board_pciid_enable *b = board_pciid_enables;
- for (i = 0; b[i].vendor_name != NULL; i++)
+ /* Print known mainboards */
+ for (i = 0; boards[i].vendor != NULL; i++)
boardcount++;
- printf("\nSupported boards which need write-enable code (total: %d):"
- "\n\nVendor: Board: "
- "Required option:\n\n", boardcount);
+ printf("\nKnown %s (total: %d):"
+ "\n\nVendor: Board: Status: Write-enable option?"
+ "\n\n", devicetype, boardcount);
- for (i = 0; b[i].vendor_name != NULL; i++) {
- printf("%s", b[i].vendor_name);
- for (j = 0; j < 25 - strlen(b[i].vendor_name); j++)
+ for (i = 0; boards[i].vendor != NULL; i++) {
+ printf("%s", boards[i].vendor);
+ for (j = 0; j < 25 - strlen(boards[i].vendor); j++)
printf(" ");
- printf("%s", b[i].board_name);
- for (j = 0; j < 30 - strlen(b[i].board_name); j++)
+ printf("%s", boards[i].name);
+ for (j = 0; j < 28 - strlen(boards[i].name); j++)
printf(" ");
- if (b[i].lb_vendor != NULL)
- printf("-m %s:%s\n", b[i].lb_vendor, b[i].lb_part);
+ if(boards[i].working == OK)
+ printf(" good ");
else
- printf("(none, board is autodetected)\n");
- }
+ printf(" BAD! ");
+
+ k = 1;
+ for (j = 0; b[j].vendor_name != NULL; j++) {
+ if ((strcmp(b[j].vendor_name, boards[i].vendor) == 0) && (strcmp(b[j].board_name, boards[i].name) == 0)){
+ k = 0;
+ if (b[j].lb_vendor != NULL)
+ printf("-m %s:%s", b[j].lb_vendor, b[j].lb_part);
+ else
+ printf("(none, board is autodetected)");
+ }
+ }
+ if (k)
+ printf(" -");
- print_supported_boards_helper(boards_ok,
- "Supported boards which don't need write-enable code");
- print_supported_boards_helper(boards_bad,
- "Boards which have been verified to NOT work yet");
- print_supported_boards_helper(laptops_ok,
- "Laptops which have been verified to work");
- print_supported_boards_helper(laptops_bad,
- "Laptops which have been verified to NOT work yet");
+ printf("\n");
+ }
}
#endif
@@ -229,7 +216,8 @@ void print_supported(void)
print_supported_chips();
#if INTERNAL_SUPPORT == 1
print_supported_chipsets();
- print_supported_boards();
+ print_supported_boards_helper(boards_known, "boards");
+ print_supported_boards_helper(laptops_known, "laptops");
#endif
#if (NIC3COM_SUPPORT == 1) || (GFXNVIDIA_SUPPORT == 1) || (DRKAISER_SUPPORT == 1) || (SATASII_SUPPORT == 1)
printf("\nSupported PCI devices flashrom can use "
@@ -256,183 +244,221 @@ void print_supported(void)
#endif
}
-
#if INTERNAL_SUPPORT == 1
/* Please keep this list alphabetically ordered by vendor/board. */
-const struct board_info boards_ok[] = {
- /* Verified working boards that don't need write-enables. */
+const struct board_info boards_known[] = {
#if defined(__i386__) || defined(__x86_64__)
- { "Abit", "AX8", },
- { "Abit", "Fatal1ty F-I90HD", },
- { "Advantech", "PCM-5820", },
- { "ASI", "MB-5BLMP", },
- { "ASRock", "A770CrossFire", },
- { "ASRock", "K8S8X", },
- { "ASRock", "M3A790GXH/128M" },
- { "ASUS", "A7N8X Deluxe", },
- { "ASUS", "A7N8X-E Deluxe", },
- { "ASUS", "A7V133", },
- { "ASUS", "A7V400-MX", },
- { "ASUS", "A7V8X-MX", },
- { "ASUS", "A8N-E", },
- { "ASUS", "A8NE-FM/S", },
- { "ASUS", "A8N-SLI", },
- { "ASUS", "A8N-SLI Premium", },
- { "ASUS", "A8V Deluxe", },
- { "ASUS", "A8V-E Deluxe", },
- { "ASUS", "A8V-E SE", },
- { "ASUS", "K8V", },
- { "ASUS", "K8V SE Deluxe", },
- { "ASUS", "K8V-X SE", },
- { "ASUS", "M2A-MX", },
- { "ASUS", "M2A-VM", },
- { "ASUS", "M2N-E", },
- { "ASUS", "M2V", },
- { "ASUS", "M3A78-EM", },
- { "ASUS", "P2B", },
- { "ASUS", "P2B-D", },
- { "ASUS", "P2B-DS", },
- { "ASUS", "P2B-F", },
- { "ASUS", "P2L97-S", },
- { "ASUS", "P5B", },
- { "ASUS", "P5B-Deluxe", },
- { "ASUS", "P5KC", },
- { "ASUS", "P5L-MX", },
- { "ASUS", "P6T Deluxe", },
- { "ASUS", "P6T Deluxe V2", },
- { "A-Trend", "ATC-6220", },
- { "BCOM", "WinNET100", },
- { "DFI", "Blood-Iron P35 T2RL", },
- { "Elitegroup", "K7S5A", },
- { "Elitegroup", "P6VAP-A+", },
- { "GIGABYTE", "GA-2761GXDK", },
- { "GIGABYTE", "GA-6BXC", },
- { "GIGABYTE", "GA-6BXDU", },
- { "GIGABYTE", "GA-6ZMA", },
- { "GIGABYTE", "GA-7ZM", },
- { "GIGABYTE", "GA-965P-DS4", },
- { "GIGABYTE", "GA-EP35-DS3L", },
- { "GIGABYTE", "GA-EX58-UD4P", },
- { "GIGABYTE", "GA-M57SLI-S4", },
- { "GIGABYTE", "GA-M61P-S3", },
- { "GIGABYTE", "GA-MA69VM-S2", },
- { "GIGABYTE", "GA-MA770T-UD3P", },
- { "GIGABYTE", "GA-MA78G-DS3H", },
- { "GIGABYTE", "GA-MA78GM-S2H", },
- { "GIGABYTE", "GA-MA78GPM-DS2H", },
- { "GIGABYTE", "GA-MA790FX-DQ6", },
- { "GIGABYTE", "GA-MA790GP-DS4H", },
- { "Intel", "EP80759", },
- { "Jetway", "J7F4K1G5D-PB", },
- { "MSI", "MS-6153", },
- { "MSI", "MS-6156", },
- { "MSI", "MS-6330 (K7T Turbo)", },
- { "MSI", "MS-6570 (K7N2)", },
- { "MSI", "MS-7065", },
- { "MSI", "MS-7168 (Orion)", },
- { "MSI", "MS-7236 (945PL Neo3)", },
- { "MSI", "MS-7255 (P4M890M)", },
- { "MSI", "MS-7312 (K9MM-V)", },
- { "MSI", "MS-7345 (P35 Neo2-FIR)", },
- { "MSI", "MS-7368 (K9AG Neo2-Digital)", },
- { "MSI", "MS-7376 (K9A2 Platinum)", },
- { "NEC", "PowerMate 2000", },
- { "PC Engines", "Alix.1c", },
- { "PC Engines", "Alix.2c2", },
- { "PC Engines", "Alix.2c3", },
- { "PC Engines", "Alix.3c3", },
- { "PC Engines", "Alix.3d3", },
- { "PC Engines", "WRAP.2E", },
- { "RCA", "RM4100", },
- { "Shuttle", "FD37", },
- { "Sun", "Blade x6250", },
- { "Supermicro", "H8QC8", },
- { "Supermicro", "X8DTT-F", },
- { "Thomson", "IP1000", },
- { "TriGem", "Lomita", },
- { "T-Online", "S-100", },
- { "Tyan", "iS5375-1U", },
- { "Tyan", "S1846", },
- { "Tyan", "S2466", },
- { "Tyan", "S2881", },
- { "Tyan", "S2882", },
- { "Tyan", "S2882-D", },
- { "Tyan", "S2891", },
- { "Tyan", "S2892", },
- { "Tyan", "S2895", },
- { "Tyan", "S3095", },
- { "Tyan", "S5180", },
- { "Tyan", "S5191", },
- { "Tyan", "S5197", },
- { "Tyan", "S5211", },
- { "Tyan", "S5211-1U", },
- { "Tyan", "S5220", },
- { "Tyan", "S5375", },
- { "Tyan", "S5376G2NR/S5376WAG2NR", },
- { "Tyan", "S5377", },
- { "Tyan", "S5382 (Tempest i5000PW)", },
- { "Tyan", "S5397", },
- { "VIA", "EPIA-CN", },
- { "VIA", "EPIA-EX15000G", },
- { "VIA", "EPIA-LN", },
- { "VIA", "EPIA-M700", },
- { "VIA", "EPIA-NX15000G", },
- { "VIA", "EPIA-SP", },
- { "VIA", "NAB74X0", },
- { "VIA", "pc2500e", },
- { "VIA", "PC3500G", },
- { "VIA", "VB700X", },
-#endif
- {},
-};
+ BOARD_ENTRY( "A-Trend", "ATC-6220", OK, "http://www.motherboard.cz/mb/atrend/atc6220.htm", NULL ),
+ BOARD_ENTRY( "Abit", "AX8", OK, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?DEFTITLE=…", NULL ),
+ BOARD_ENTRY( "Abit", "Fatal1ty F-I90HD", OK, "http://www.abit.com.tw/page/de/motherboard/motherboard_detail.php?pMODEL_NA…", NULL ),
+ BOARD_ENTRY( "Abit", "IP35", OK, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?fMTYPE=LG…", NULL ),
+ BOARD_ENTRY( "Abit", "IP35 Pro", OK, "http://www.abit.com.tw/page/de/motherboard/motherboard_detail.php?fMTYPE=LG…", NULL ),
+ BOARD_ENTRY( "Abit", "IS-10", NT, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?pMODEL_NA…", NULL ),
+ BOARD_ENTRY( "Abit", "NF7-S", OK, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?fMTYPE=So…", NULL ),
+ BOARD_ENTRY( "Abit", "VT6X4", OK, "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?fMTYPE=Sl…", NULL ),
+ BOARD_ENTRY( "Acorp", "6A815EPD", OK, "http://web.archive.org/web/20021206163652/www.acorp.com.tw/English/default.…", NULL ),
+ BOARD_ENTRY( "Advantech", "PCM-5820", OK, "http://www.emacinc.com/sbc_pc_compatible/pcm_5820.htm", NULL ),
+ BOARD_ENTRY( "agami", "Aruma", OK, "http://web.archive.org/web/20080212111524/http://www.agami.com/site/ais-600…", NULL ),
+ BOARD_ENTRY( "Albatron", "PM266A Pro", OK, "http://www.albatron.com.tw/English/Product/MB/pro_detail.asp?rlink=Overview…", NULL ), /* FIXME */
+ BOARD_ENTRY( "AOpen", "vKM400Am-S", OK, "http://usa.aopen.com/products_detail.aspx?Auno=824", NULL ),
+ BOARD_ENTRY( "Artec Group", "DBE61", OK, "http://wiki.thincan.org/DBE61", NULL ),
+ BOARD_ENTRY( "Artec Group", "DBE62", OK, "http://wiki.thincan.org/DBE62", NULL ),
+ BOARD_ENTRY( "ASI", "MB-5BLMP", OK, "http://www.hojerteknik.com/winnet.htm", "Used in the IGEL WinNET III thin client." ),
+ BOARD_ENTRY( "ASRock", "A770CrossFire", OK, "http://www.asrock.com/mb/overview.asp?Model=A770CrossFire&s=AM2\%2b", NULL ),
+ BOARD_ENTRY( "ASRock", "K7VT4A+", NT, "http://www.asrock.com/mb/overview.asp?Model=K7VT4A%%2b&s=", NULL ),
+ BOARD_ENTRY( "ASRock", "K8S8X", OK, "http://www.asrock.com/mb/overview.asp?Model=K8S8X", "The Super I/O isn't found on this board. See http://www.flashrom.org/pipermail/flashrom/2009-November/000937.html." ),
+ BOARD_ENTRY( "ASRock", "P4i65GV", OK, NULL, NULL ),
+ BOARD_ENTRY( "ASRock", "M3A790GXH/128M", OK, "http://www.asrock.com/MB/overview.asp?Model=M3A790GXH/128M", NULL ),
+ BOARD_ENTRY( "ASUS", "A7N8X Deluxe", OK, "http://www.asus.com/product.aspx?P_ID=wAsRYm41KTp78MFC", NULL ),
+ BOARD_ENTRY( "ASUS", "A7N8X-E Deluxe", OK, "http://www.asus.com/product.aspx?P_ID=TmQtPJv4jIxmL9C2", NULL ),
+ BOARD_ENTRY( "ASUS", "A7V133", OK, "ftp://ftp.asus.com.tw/pub/ASUS/mb/socka/kt133a/a7v133/", NULL ),
+ BOARD_ENTRY( "ASUS", "A7V400-MX", OK, "http://www.asus.com/product.aspx?P_ID=hORgEHRBDLMfwAwx", NULL ),
+ BOARD_ENTRY( "ASUS", "A7V600-X", OK, "http://www.asus.com/product.aspx?P_ID=L2XYS0rmtCjeOr4k", NULL ),
+ BOARD_ENTRY( "ASUS", "A7V8X", OK, "http://www.asus.com/product.aspx?P_ID=qfpaGrAy2kLVo0f2", NULL ),
+ BOARD_ENTRY( "ASUS", "A7V8X-MX", OK, "http://www.asus.com/product.aspx?P_ID=SEJOOYqfuQPitx2H", NULL ),
+ BOARD_ENTRY( "ASUS", "A7V8X-MX SE", OK, "http://www.asus.com/product.aspx?P_ID=1guVBT1qV5oqhHyZ", NULL ),
+ BOARD_ENTRY( "ASUS", "A7V8X-X", OK, "http://www.asus.com/product.aspx?P_ID=YcXfRrWHZ9RKoVmw", NULL ),
+ BOARD_ENTRY( "ASUS", "A8N-E", OK, "http://www.asus.com/product.aspx?P_ID=DzbA8hgqchMBOVRz", NULL ),
+ BOARD_ENTRY( "ASUS", "A8N-SLI", OK, "http://www.asus.com/product.aspx?P_ID=J9FKa8z2xVId3pDK", NULL ),
+ BOARD_ENTRY( "ASUS", "A8N-SLI Premium", OK, "http://www.asus.com/product.aspx?P_ID=nbulqxniNmzf0mH1", NULL ),
+ BOARD_ENTRY( "ASUS", "A8NE-FM/S", OK, "http://www.hardwareschotte.de/hardware/preise/proid_1266090/preis_ASUS+A8NE…", NULL ),
+ BOARD_ENTRY( "ASUS", "A8V Deluxe", OK, "http://www.asus.com/product.aspx?P_ID=tvpdgPNCPaABZRVU", NULL ),
+ BOARD_ENTRY( "ASUS", "A8V-E Deluxe", OK, "http://www.asus.com/product.aspx?P_ID=hQBPIJWEZnnGAZEh", NULL ),
+ BOARD_ENTRY( "ASUS", "A8V-E SE", OK, "http://www.asus.com/product.aspx?P_ID=VMfiJJRYTHM4gXIi", "See http://www.coreboot.org/pipermail/coreboot/2007-October/026496.html." ),
+ BOARD_ENTRY( "ASUS", "K8V", OK, "http://www.asus.com/product.aspx?P_ID=fG2KZOWF7v6MRFRm", NULL ),
+ BOARD_ENTRY( "ASUS", "K8V SE Deluxe", OK, "http://www.asus.com/product.aspx?P_ID=65HeDI8XM1u6Uy6o", NULL ),
+ BOARD_ENTRY( "ASUS", "K8V-X SE", OK, "http://www.asus.com/product.aspx?P_ID=lzDXlbBVHkdckHVr", NULL ),
+ BOARD_ENTRY( "ASUS", "M2A-MX", OK, "http://www.asus.com/product.aspx?P_ID=BmaOnPewi1JgltOZ", NULL ),
+ BOARD_ENTRY( "ASUS", "M2A-VM", OK, "http://www.asus.com/product.aspx?P_ID=St3pWpym8xXpROQS", "See http://www.coreboot.org/pipermail/coreboot/2007-September/025281.html." ),
+ BOARD_ENTRY( "ASUS", "M2N-E", OK, "http://www.asus.com/product.aspx?P_ID=NFlvt10av3F7ayQ9", "If the machine doesn't come up again after flashing, try resetting the NVRAM(CMOS). The MAC address of the onboard network card will change to the value stored in the new image, so backup the old address first. See http://www.flashrom.org/pipermail/flashrom/2009-November/000879.html" ),
+ BOARD_ENTRY( "ASUS", "M2NBP-VM CSM", OK, "http://www.asus.com/product.aspx?P_ID=MnOfzTGd2KkwG0rF", NULL ),
+ BOARD_ENTRY( "ASUS", "M2V", OK, "http://www.asus.com/product.aspx?P_ID=OqYlEDFfF6ZqZGvp", NULL ),
+ BOARD_ENTRY( "ASUS", "M2V-MX", OK, "http://www.asus.com/product.aspx?P_ID=7grf8Ci4yxnqzt3z", NULL ),
+ BOARD_ENTRY( "ASUS", "M3A78-EM", OK, "http://www.asus.com/product.aspx?P_ID=KjpYqzmAd9vsTM2D", NULL ),
+ BOARD_ENTRY( "ASUS", "MEW-AM", NT, "ftp://ftp.asus.com.tw/pub/ASUS/mb/sock370/810/mew-am/", NULL ),
+ BOARD_ENTRY( "ASUS", "MEW-VM", NT, "http://www.elhvb.com/mboards/OEM/HP/manual/ASUS%20MEW-VM.htm", NULL ),
+ BOARD_ENTRY( "ASUS", "P2B", OK, "ftp://ftp.asus.com.tw/pub/ASUS/mb/slot1/440bx/p2b/", NULL ),
+ BOARD_ENTRY( "ASUS", "P2B-D", OK, "ftp://ftp.asus.com.tw/pub/ASUS/mb/slot1/440bx/p2b-d/", NULL ),
+ BOARD_ENTRY( "ASUS", "P2B-DS", OK, "ftp://ftp.asus.com.tw/pub/ASUS/mb/slot1/440bx/p2b-ds/", NULL ),
+ BOARD_ENTRY( "ASUS", "P2B-F", OK, "ftp://ftp.asus.com.tw/pub/ASUS/mb/slot1/440bx/p2b-d/", NULL ),
+ BOARD_ENTRY( "ASUS", "P2L97-S", OK, "ftp://ftp.asus.com.tw/pub/ASUS/mb/slot1/440lx/p2l97-s/", NULL ),
+ BOARD_ENTRY( "ASUS", "P3B-F", NT, "ftp://ftp.asus.com.tw/pub/ASUS/mb/slot1/440bx/p3b-f/", NULL ),
+ BOARD_ENTRY( "ASUS", "P4B266", OK, "ftp://ftp.asus.com.tw/pub/ASUS/mb/sock478/p4b266/", NULL ),
+ BOARD_ENTRY( "ASUS", "P4B266-LM", OK, "http://esupport.sony.com/US/perl/swu-list.pl?mdl=PCVRX650", NULL ),
+ BOARD_ENTRY( "ASUS", "P4C800-E Deluxe", OK, "http://www.asus.com/product.aspx?P_ID=cFuVCr9bXXCckmcK", NULL ),
+ BOARD_ENTRY( "ASUS", "P4P800-E Deluxe", OK, "http://www.asus.com/product.aspx?P_ID=INIJUvLlif7LHp3g", NULL ),
+ BOARD_ENTRY( "ASUS", "P5A", OK, "ftp://ftp.asus.com.tw/pub/ASUS/mb/sock7/ali/p5a/", NULL ),
+ BOARD_ENTRY( "ASUS", "P5B", OK, "ftp://ftp.asus.com.tw/pub/ASUS/mb/socket775/P5B/", NULL ),
+ BOARD_ENTRY( "ASUS", "P5B-Deluxe", OK, "http://www.asus.com/product.aspx?P_ID=bswT66IBSb2rEWNa", NULL ),
+ BOARD_ENTRY( "ASUS", "P5BV-M", NT, "ftp://ftp.asus.com.tw/pub/ASUS/mb/socket775/P5B-VM/", NULL ),
+ BOARD_ENTRY( "ASUS", "P5KC", OK, "http://www.asus.com/product.aspx?P_ID=fFZ8oUIGmLpwNMjj", NULL ),
+ BOARD_ENTRY( "ASUS", "P5L-MX", OK, "http://www.asus.com/product.aspx?P_ID=X70d3NCzH2DE9vWH", NULL ),
+ BOARD_ENTRY( "ASUS", "P5ND2-SLI Deluxe", OK, "http://www.asus.com/product.aspx?P_ID=WY7XroDuUImVbgp5", NULL ),
+ BOARD_ENTRY( "ASUS", "P6T Deluxe", OK, "http://www.asus.com/product.aspx?P_ID=vXixf82co6Q5v0BZ", NULL ),
+ BOARD_ENTRY( "ASUS", "P6T Deluxe V2", OK, "http://www.asus.com/product.aspx?P_ID=iRlP8RG9han6saZx", NULL ),
+ BOARD_ENTRY( "BCOM", "WinNET100", OK, "http://www.coreboot.org/BCOM_WINNET100", "Used in the IGEL-316 thin client." ),
+ BOARD_ENTRY( "Biostar", "M6TBA", NT, "ftp://ftp.biostar-usa.com/manuals/M6TBA/", NULL ),
+ BOARD_ENTRY( "Biostar", "P4M80-M4", OK, "http://www.biostar-usa.com/mbdetails.asp?model=p4m80-m4", NULL ),
+ BOARD_ENTRY( "Boser", "HS-6637", NT, "http://www.boser.com.tw/manual/HS-62376637v3.4.pdf", NULL ),
+ BOARD_ENTRY( "Dell", "PowerEdge 1850", OK, "http://support.dell.com/support/edocs/systems/pe1850/en/index.htm", NULL ),
+ BOARD_ENTRY( "DFI", "855GME-MGF", NT, "http://www.dfi.com.tw/portal/CM/cmproduct/XX_cmproddetail/XX_WbProdsWindow?…", NULL ),
+ BOARD_ENTRY( "DFI", "Blood-Iron P35 T2RL", OK, "http://lp.lanparty.com.tw/portal/CM/cmproduct/XX_cmproddetail/XX_WbProdsWin…", NULL ),
+ BOARD_ENTRY( "Elitegroup", "K7S5A", OK, "http://www.ecs.com.tw/ECSWebSite/Products/ProductsDetail.aspx?detailid=279&…", NULL ),
+ BOARD_ENTRY( "Elitegroup", "K7S6A", OK, "http://www.ecs.com.tw/ECSWebSite/Products/ProductsDetail.aspx?detailid=77&C…", NULL ),
+ BOARD_ENTRY( "Elitegroup", "K7VTA3", OK, "http://www.ecs.com.tw/ECSWebSite/Products/ProductsDetail.aspx?detailid=264&…", NULL ),
+ BOARD_ENTRY( "Elitegroup", "P6VAP-A+", OK, "http://www.ecs.com.tw/ECSWebSite/Products/ProductsDetail.aspx?detailid=117&…", NULL ),
+ BOARD_ENTRY( "EPoX", "EP-8K5A2", OK, "http://www.epox.com/product.asp?ID=EP-8K5A2", NULL ),
+ BOARD_ENTRY( "EPoX", "EP-8RDA3+", OK, "http://www.epox.com/product.asp?ID=EP-8RDA3plus", NULL ),
+ BOARD_ENTRY( "EPoX", "EP-BX3", OK, "http://www.epox.com/product.asp?ID=EP-BX3", NULL ),
+ BOARD_ENTRY( "FIC", "VA-502", NT, "ftp://ftp.fic.com.tw/motherboard/manual/socket7/va-502/", NULL ),
+ BOARD_ENTRY( "GIGABYTE", "GA-2761GXDK", OK, "http://www.computerbase.de/news/hardware/mainboards/amd-systeme/2007/mai/gi…", NULL ),
+ BOARD_ENTRY( "GIGABYTE", "GA-6BXC", OK, "http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductI…", NULL ),
+ BOARD_ENTRY( "GIGABYTE", "GA-6BXDU", OK, "http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductI…", NULL ),
+ BOARD_ENTRY( "GIGABYTE", "GA-6ZMA", OK, "http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductI…", NULL ),
+ BOARD_ENTRY( "GIGABYTE", "GA-7VT600", OK, "http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductI…", NULL ),
+ BOARD_ENTRY( "GIGABYTE", "GA-7ZM", OK, "http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductI…", "Works fine if you remove jumper JP9 on the board and disable the flash protection BIOS option." ),
+ BOARD_ENTRY( "GIGABYTE", "GA-965P-DS4", OK, "http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductI…", NULL ),
+ BOARD_ENTRY( "GIGABYTE", "GA-EP35-DS3L", OK, "http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductI…", NULL ),
+ BOARD_ENTRY( "GIGABYTE", "GA-EX58-UD4P", OK, "http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductI…", NULL ),
+ BOARD_ENTRY( "GIGABYTE", "GA-K8N-SLI", OK, "http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductI…", NULL ),
+ BOARD_ENTRY( "GIGABYTE", "GA-M57SLI-S4", OK, "http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductI…", NULL ),
+ BOARD_ENTRY( "GIGABYTE", "GA-M61P-S3", OK, "http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductI…", NULL ),
+ BOARD_ENTRY( "GIGABYTE", "GA-MA69VM-S2", OK, "http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductI…", NULL ),
+ BOARD_ENTRY( "GIGABYTE", "GA-MA770T-UD3P", OK, "http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductI…", NULL ),
+ BOARD_ENTRY( "GIGABYTE", "GA-MA78G-DS3H", OK, "http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductI…", NULL ), /* TODO: Rev 1.x or 2.x? */
+ BOARD_ENTRY( "GIGABYTE", "GA-MA78GM-S2H", OK, "http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductI…", NULL ), /* TODO: Rev. 1.0, 1.1, or 2.x? */
+ BOARD_ENTRY( "GIGABYTE", "GA-MA78GPM-DS2H", OK, "http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductI…", NULL ),
+ BOARD_ENTRY( "GIGABYTE", "GA-MA790FX-DQ6", OK, "http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductI…", NULL ),
+ BOARD_ENTRY( "GIGABYTE", "GA-MA790GP-DS4H", OK, "http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductI…", NULL ),
+ BOARD_ENTRY( "HP", "DL145 G3", OK, "http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=c008…", NULL ),
+ BOARD_ENTRY( "HP", "Vectra VL400 PC", OK, "http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=c000…", NULL ),
+ BOARD_ENTRY( "HP", "Vectra VL420 SFF PC", OK, "http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=c000…", NULL ),
+ BOARD_ENTRY( "IBM", "x3455", OK, "http://www-03.ibm.com/systems/x/hardware/rack/x3455/index.html", NULL ),
+ BOARD_ENTRY( "Intel", "D201GLY", OK, "http://www.intel.com/support/motherboards/desktop/d201gly/index.htm", NULL ),
+ BOARD_ENTRY( "Intel", "EP80759", OK, NULL, NULL ),
+ BOARD_ENTRY( "IWILL", "DK8-HTX", OK, "http://web.archive.org/web/20060507170150/http://www.iwill.net/product_2.as…", NULL ),
+ BOARD_ENTRY( "Jetway", "J7F4K1G5D-PB", OK, "http://www.jetway.com.tw/jetway/system/productshow2.asp?id=389&proname=J7F4…", NULL ),
+ BOARD_ENTRY( "Kontron", "986LCD-M", OK, "http://de.kontron.com/products/boards+and+mezzanines/embedded+motherboards/…", NULL ),
+ BOARD_ENTRY( "Mitac", "6513WU", OK, "http://web.archive.org/web/20050313054828/http://www.mitac.com/micweb/produ…", NULL ),
+ BOARD_ENTRY( "MSI", "MS-6153", OK, "http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=336", NULL ),
+ BOARD_ENTRY( "MSI", "MS-6156", OK, "http://uk.ts.fujitsu.com/rl/servicesupport/techsupport/boards/Motherboards/…", NULL ),
+ BOARD_ENTRY( "MSI", "MS-6178", NT, "http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=343", "Immediately powers off if you try to hot-plug the chip. However, this does '''not''' happen if you use coreboot." ),
+ BOARD_ENTRY( "MSI", "MS-6330 (K7T Turbo)", OK, "http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=327", NULL ),
+ BOARD_ENTRY( "MSI", "MS-6570 (K7N2)", OK, "http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=519", NULL ),
+ BOARD_ENTRY( "MSI", "MS-6590 (KT4 Ultra)", OK, "http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=502", NULL ),
+ BOARD_ENTRY( "MSI", "MS-6702E (K8T Neo2-F)", OK, "http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=588", NULL ),
+ BOARD_ENTRY( "MSI", "MS-6712 (KT4V)", OK, "http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=505", NULL ),
+ BOARD_ENTRY( "MSI", "MS-7005 (651M-L)", OK, "http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=559", NULL ),
+ BOARD_ENTRY( "MSI", "MS-7046", OK, "http://www.heimir.de/ms7046/", NULL ),
+ BOARD_ENTRY( "MSI", "MS-7065", OK, "http://browse.geekbench.ca/geekbench2/view/53114", NULL ),
+ BOARD_ENTRY( "MSI", "MS-7135 (K8N Neo3)", OK, "http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=170", NULL ),
+ BOARD_ENTRY( "MSI", "MS-7168 (Orion)", OK, "http://support.packardbell.co.uk/uk/item/index.php?i=spec_orion&pi=platform…", NULL ),
+ BOARD_ENTRY( "MSI", "MS-7236 (945PL Neo3)", OK, "http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=1173", NULL ),
+ BOARD_ENTRY( "MSI", "MS-7255 (P4M890M)", OK, "http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=1082", NULL ),
+ BOARD_ENTRY( "MSI", "MS-7260 (K9N Neo)", NT, "http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=255", "Interestingly flashrom does not work when the vendor BIOS is booted, but it ''does'' work flawlessly when the machine is booted with coreboot." ),
+ BOARD_ENTRY( "MSI", "MS-7312 (K9MM-V)", OK, "http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=1104", NULL ),
+ BOARD_ENTRY( "MSI", "MS-7345 (P35 Neo2-FIR)", OK, "http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=1261", NULL ),
+ BOARD_ENTRY( "MSI", "MS-7368 (K9AG Neo2-Digital)", OK, "http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=1241", NULL ),
+ BOARD_ENTRY( "MSI", "MS-7376 (K9A2 Platinum)", OK, "http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=1332", NULL ),
+ BOARD_ENTRY( "NEC", "PowerMate 2000", OK, "http://support.necam.com/mobilesolutions/hardware/Desktops/pm2000/celeron/", NULL ),
+ BOARD_ENTRY( "Nokia", "IP530", OK, NULL, NULL ),
+ BOARD_ENTRY( "PC Engines", "Alix.1c", OK, "http://pcengines.ch/alix1c.htm", NULL ),
+ BOARD_ENTRY( "PC Engines", "Alix.2c2", OK, "http://pcengines.ch/alix2c2.htm", NULL ),
+ BOARD_ENTRY( "PC Engines", "Alix.2c3", OK, "http://pcengines.ch/alix2c3.htm", NULL ),
+ BOARD_ENTRY( "PC Engines", "Alix.3c3", OK, "http://pcengines.ch/alix3c3.htm", NULL ),
+ BOARD_ENTRY( "PC Engines", "Alix.3d3", OK, "http://pcengines.ch/alix3d3.htm", NULL ),
+ BOARD_ENTRY( "PC Engines", "WRAP.2E", OK, "http://pcengines.ch/wrap2e1.htm", NULL ),
+ BOARD_ENTRY( "RCA", "RM4100", OK, "http://www.settoplinux.org/index.php?title=RCA_RM4100", NULL ),
+ BOARD_ENTRY( "Shuttle", "AK31", OK, "http://www.motherboard.cz/mb/shuttle/AK31.htm", NULL ),
+ BOARD_ENTRY( "Shuttle", "AK38N", OK, "http://eu.shuttle.com/en/desktopdefault.aspx/tabid-36/558_read-9889/", NULL ),
+ BOARD_ENTRY( "Shuttle", "FD37", OK, "http://www.shuttle.eu/products/discontinued/barebones/sd37p2/", NULL ),
+ BOARD_ENTRY( "Shuttle", "FN25", OK, "http://www.shuttle.eu/products/discontinued/barebones/sn25p/?0=", NULL ),
+ BOARD_ENTRY( "Soyo", "SY-5VD", NT, "http://www.soyo.com/content/Downloads/163/&c=80&p=464&l=English", NULL ),
+ BOARD_ENTRY( "Soyo", "SY-7VCA", OK, "http://www.tomshardware.com/reviews/12-socket-370-motherboards,196-15.html", NULL ),
+ BOARD_ENTRY( "Sun", "Blade x6250", OK, "http://www.sun.com/servers/blades/x6250/", NULL ),
+ BOARD_ENTRY( "Sun", "Fire x4150", NT, "http://www.sun.com/servers/x64/x4150/", NULL ),
+ BOARD_ENTRY( "Sun", "Fire x4200", NT, "http://www.sun.com/servers/entry/x4200/", NULL ),
+ BOARD_ENTRY( "Sun", "Fire x4540", NT, "http://www.sun.com/servers/x64/x4540/", NULL ),
+ BOARD_ENTRY( "Sun", "Fire x4600", NT, "http://www.sun.com/servers/x64/x4600/", NULL ),
+ BOARD_ENTRY( "Supermicro", "H8QC8", OK, "http://www.supermicro.com/Aplus/motherboard/Opteron/nforce/H8QC8.cfm", NULL ),
+ BOARD_ENTRY( "Supermicro", "X8DTT-F", OK, "http://www.supermicro.com/products/motherboard/QPI/5500/X8DTT-F.cfm", NULL ),
+ BOARD_ENTRY( "T-Online", "S-100", OK, "http://wiki.freifunk-hannover.de/T-Online_S_100", NULL ),
+ BOARD_ENTRY( "Tekram", "P6Pro-A5", OK, "http://www.motherboard.cz/mb/tekram/P6Pro-A5.htm", NULL ),
+ BOARD_ENTRY( "Termtek", "TK-3370 (Rev:2.5B)", OK, NULL, NULL ),
+ BOARD_ENTRY( "Thomson", "IP1000", OK, "http://www.settoplinux.org/index.php?title=Thomson_IP1000", NULL ),
+ BOARD_ENTRY( "TriGem", "Lomita", OK, "http://www.e4allupgraders.info/dir1/motherboards/socket370/lomita.shtml", NULL ),
+ BOARD_ENTRY( "Tyan", "iS5375-1U", OK, "http://www.tyan.com/product_board_detail.aspx?pid=610", NULL ),
+ BOARD_ENTRY( "Tyan", "S1846", OK, "http://www.tyan.com/archive/products/html/tsunamiatx.html", NULL ),
+ BOARD_ENTRY( "Tyan", "S2466", OK, "http://www.tyan.com/product_board_detail.aspx?pid=461", NULL ),
+ BOARD_ENTRY( "Tyan", "S2498 (Tomcat K7M)", OK, "http://www.tyan.com/archive/products/html/tomcatk7m.html", NULL ),
+ BOARD_ENTRY( "Tyan", "S2881", OK, "http://www.tyan.com/product_board_detail.aspx?pid=115", NULL ),
+ BOARD_ENTRY( "Tyan", "S2882", OK, "http://www.tyan.com/product_board_detail.aspx?pid=121", NULL ),
+ BOARD_ENTRY( "Tyan", "S2882-D", OK, "http://www.tyan.com/product_board_detail.aspx?pid=127", NULL ),
+ BOARD_ENTRY( "Tyan", "S2891", OK, "http://www.tyan.com/product_board_detail.aspx?pid=144", NULL ),
+ BOARD_ENTRY( "Tyan", "S2892", OK, "http://www.tyan.com/product_board_detail.aspx?pid=145", NULL ),
+ BOARD_ENTRY( "Tyan", "S2895", OK, "http://www.tyan.com/archive/products/html/thunderk8we.html", NULL ),
+ BOARD_ENTRY( "Tyan", "S3095", OK, "http://www.tyan.com/product_board_detail.aspx?pid=181", NULL ),
+ BOARD_ENTRY( "Tyan", "S5180", OK, "http://www.tyan.com/product_board_detail.aspx?pid=456", NULL ),
+ BOARD_ENTRY( "Tyan", "S5191", OK, "http://www.tyan.com/product_board_detail.aspx?pid=343", NULL ),
+ BOARD_ENTRY( "Tyan", "S5197", OK, "http://www.tyan.com/product_board_detail.aspx?pid=349", NULL ),
+ BOARD_ENTRY( "Tyan", "S5211", OK, "http://www.tyan.com/product_board_detail.aspx?pid=591", NULL ),
+ BOARD_ENTRY( "Tyan", "S5211-1U", OK, "http://www.tyan.com/product_board_detail.aspx?pid=593", NULL ),
+ BOARD_ENTRY( "Tyan", "S5220", OK, "http://www.tyan.com/product_board_detail.aspx?pid=597", NULL ),
+ BOARD_ENTRY( "Tyan", "S5375", OK, "http://www.tyan.com/product_board_detail.aspx?pid=566", NULL ),
+ BOARD_ENTRY( "Tyan", "S5376G2NR/S5376WAG2NR", OK, "http://www.tyan.com/product_board_detail.aspx?pid=605", NULL ),
+ BOARD_ENTRY( "Tyan", "S5377", OK, "http://www.tyan.com/product_SKU_spec.aspx?ProductType=MB&pid=642&SKU=600000…", NULL ),
+ BOARD_ENTRY( "Tyan", "S5382 (Tempest i5000PW)", OK, "http://www.tyan.com/product_board_detail.aspx?pid=439", NULL ),
+ BOARD_ENTRY( "Tyan", "S5397", OK, "http://www.tyan.com/product_board_detail.aspx?pid=560", NULL ),
+ BOARD_ENTRY( "VIA", "EPIA M/MII/...", OK, "http://www.via.com.tw/en/products/embedded/ProductDetail.jsp?productLine=1&…", NULL ), /* EPIA-MII link for now */
+ BOARD_ENTRY( "VIA", "EPIA SP", OK, "http://www.via.com.tw/en/products/embedded/ProductDetail.jsp?productLine=1&…", NULL ),
+ BOARD_ENTRY( "VIA", "EPIA-CN", OK, "http://www.via.com.tw/en/products/mainboards/motherboards.jsp?motherboard_i…", NULL ),
+ BOARD_ENTRY( "VIA", "EPIA-EX15000G", OK, "http://www.via.com.tw/en/products/embedded/ProductDetail.jsp?productLine=1&…", NULL ),
+ BOARD_ENTRY( "VIA", "EPIA-LN", OK, "http://www.via.com.tw/en/products/mainboards/motherboards.jsp?motherboard_i…", NULL ),
+ BOARD_ENTRY( "VIA", "EPIA-M700", OK, "http://via.com.tw/servlet/downloadSvl?motherboard_id=670&download_file_id=3…", NULL ),
+ BOARD_ENTRY( "VIA", "EPIA-N/NL", OK, "http://www.via.com.tw/en/products/embedded/ProductDetail.jsp?productLine=1&…", NULL ), /* EPIA-N link for now */
+ BOARD_ENTRY( "VIA", "EPIA-NX15000G", OK, "http://www.via.com.tw/en/products/embedded/ProductDetail.jsp?productLine=1&…", NULL ),
+ BOARD_ENTRY( "VIA", "NAB74X0", OK, "http://www.via.com.tw/en/products/mainboards/motherboards.jsp?motherboard_i…", NULL ),
+ BOARD_ENTRY( "VIA", "pc2500e", OK, "http://www.via.com.tw/en/initiatives/empowered/pc2500_mainboard/index.jsp", NULL ),
+ BOARD_ENTRY( "VIA", "PC3500G", OK, "http://www.via.com.tw/en/initiatives/empowered/pc3500_mainboard/index.jsp", NULL ),
+ BOARD_ENTRY( "VIA", "VB700X", OK, "http://www.via.com.tw/en/products/mainboards/motherboards.jsp?motherboard_i…", NULL ),
+#endif /* defined(__i386__) || defined(__x86_64__) */
-/* Please keep this list alphabetically ordered by vendor/board. */
-const struct board_info boards_bad[] = {
- /* Verified non-working boards (for now). */
-#if defined(__i386__) || defined(__x86_64__)
- { "Abit", "IS-10", },
- { "ASRock", "K7VT4A+", },
- { "ASUS", "MEW-AM", },
- { "ASUS", "MEW-VM", },
- { "ASUS", "P3B-F", },
- { "ASUS", "P5BV-M", },
- { "Biostar", "M6TBA", },
- { "Boser", "HS-6637", },
- { "DFI", "855GME-MGF", },
- { "FIC", "VA-502", },
- { "MSI", "MS-6178", },
- { "MSI", "MS-7260 (K9N Neo)", },
- { "Soyo", "SY-5VD", },
- { "Sun", "Fire x4150", },
- { "Sun", "Fire x4200", },
- { "Sun", "Fire x4540", },
- { "Sun", "Fire x4600", },
-#endif
{},
};
/* Please keep this list alphabetically ordered by vendor/board. */
-const struct board_info laptops_ok[] = {
- /* Verified working laptops. */
+const struct board_info laptops_known[] = {
#if defined(__i386__) || defined(__x86_64__)
- { "Lenovo", "3000 V100 TF05Cxx", },
- { "Acer", "Aspire 1520", },
-#endif
- {},
-};
+ BOARD_ENTRY( "Acer", "Aspire 1520", OK, "http://support.acer.com/us/en/acerpanam/notebook/0000/Acer/Aspire1520/Aspir…", NULL ),
+ BOARD_ENTRY( "Acer", "Aspire One", NT, NULL, "http://www.coreboot.org/pipermail/coreboot/2009-May/048041.html" ),
+ BOARD_ENTRY( "ASUS", "Eee PC 701 4G", NT, "http://www.asus.com/product.aspx?P_ID=h6SPd3tEzLEsrEiS", "It seems the chip (25X40VSIG) is behind some SPI flash translation layer (likely in the EC, the ENE KB331NT )." ),
+ BOARD_ENTRY( "Dell", "Latitude CPi A366XT", NT, "http://www.coreboot.org/Dell_Latitude_CPi_A366XT", "The laptop immediately powers off if you try to hot-swap the chip. It's not yet tested if write/erase would work on this laptop." ),
+ BOARD_ENTRY( "HP/Compaq", "nx9010", NT, "http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?lang=en&cc=us…", "Hangs upon '''flashrom -V''' (needs hard power-cycle then)." ),
+ BOARD_ENTRY( "IBM/Lenovo", "Thinkpad T40p", NT, "http://www.thinkwiki.org/wiki/Category:T40p", NULL ),
+ BOARD_ENTRY( "IBM/Lenovo", "240", NT, "http://www.stanford.edu/~bresnan//tp240.html", "Seems to (partially) work at first, but one block/sector cannot be written which then leaves you with a bricked laptop. Maybe this can be investigated and fixed in software later." ),
+ BOARD_ENTRY( "Lenovo", "3000 V100 TF05Cxx", OK, "http://www5.pc.ibm.com/europe/products.nsf/products?openagent&brand=Lenovo3…", NULL ),
+#endif /* defined(__i386__) || defined(__x86_64__) */
-/* Please keep this list alphabetically ordered by vendor/board. */
-const struct board_info laptops_bad[] = {
- /* Verified non-working laptops (for now). */
-#if defined(__i386__) || defined(__x86_64__)
- { "Acer", "Aspire One", },
- { "ASUS", "Eee PC 701 4G", },
- { "Dell", "Latitude CPi A366XT", },
- { "HP/Compaq", "nx9010", },
- { "IBM/Lenovo", "Thinkpad T40p", },
- { "IBM/Lenovo", "240", },
-#endif
{},
};
-#endif
-
+#endif /* INTERNAL_SUPPORT == 1 */
diff --git a/print_wiki.c b/print_wiki.c
index 3d51bfa..cb90919 100644
--- a/print_wiki.c
+++ b/print_wiki.c
@@ -25,20 +25,6 @@
#include "flash.h"
#include "flashchips.h"
-#if INTERNAL_SUPPORT == 1
-struct board_info_url {
- const char *vendor;
- const char *name;
- const char *url;
-};
-
-struct board_info_notes {
- const char *vendor;
- const char *name;
- const char *note;
-};
-#endif
-
const char *wiki_header = "= Supported devices =\n\n\
<div style=\"margin-top:0.5em; padding:0.5em 0.5em 0.5em 0.5em; \
background-color:#eeeeee; align:right; border:1px solid #aabbcc;\"><small>\n\
@@ -56,11 +42,6 @@ const char *board_th = "{| border=\"0\" style=\"font-size: smaller\" \
valign=\"top\"\n|- bgcolor=\"#6699dd\"\n! align=\"left\" | Vendor\n\
! align=\"left\" | Mainboard\n! align=\"left\" | Status\n\n";
-const char *board_th2 = "{| border=\"0\" style=\"font-size: smaller\" \
-valign=\"top\"\n|- bgcolor=\"#6699dd\"\n! align=\"left\" | Vendor\n\
-! align=\"left\" | Mainboard\n! align=\"left\" | Required option\n\
-! align=\"left\" | Status\n\n";
-
const char *board_intro = "\
\n== Supported mainboards ==\n\n\
In general, it is very likely that flashrom works out of the box even if your \
@@ -101,292 +82,6 @@ background-color:#ff6666; align:right; border:1px solid #000000;\">\n\
untested laptops unless you have a means to recover from a flashing that goes \
wrong (a working backup flash chip and/or good soldering skills).\n</div>\n";
-/* Please keep these lists alphabetically ordered by vendor/board. */
-const struct board_info_url boards_url[] = {
- /* Verified working boards that don't need write-enables. */
-#if defined(__i386__) || defined(__x86_64__)
- { "Abit", "AX8", "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?DEFTITLE=…" },
- { "Abit", "Fatal1ty F-I90HD", "http://www.abit.com.tw/page/de/motherboard/motherboard_detail.php?pMODEL_NA…" },
- { "Advantech", "PCM-5820", "http://www.emacinc.com/sbc_pc_compatible/pcm_5820.htm" },
- { "ASI", "MB-5BLMP", "http://www.hojerteknik.com/winnet.htm" },
- { "ASRock", "A770CrossFire", "http://www.asrock.com/mb/overview.asp?Model=A770CrossFire&s=AM2\%2b" },
- { "ASRock", "K8S8X", "http://www.asrock.com/mb/overview.asp?Model=K8S8X" },
- { "ASRock", "M3A790GXH/128M" "http://www.asrock.com/MB/overview.asp?Model=M3A790GXH/128M" },
- { "ASUS", "A7N8X Deluxe", "http://www.asus.com/product.aspx?P_ID=wAsRYm41KTp78MFC" },
- { "ASUS", "A7N8X-E Deluxe", "http://www.asus.com/product.aspx?P_ID=TmQtPJv4jIxmL9C2" },
- { "ASUS", "A7V133", "ftp://ftp.asus.com.tw/pub/ASUS/mb/socka/kt133a/a7v133/" },
- { "ASUS", "A7V400-MX", "http://www.asus.com/product.aspx?P_ID=hORgEHRBDLMfwAwx" },
- { "ASUS", "A7V8X-MX", "http://www.asus.com/product.aspx?P_ID=SEJOOYqfuQPitx2H" },
- { "ASUS", "A8N-E", "http://www.asus.com/product.aspx?P_ID=DzbA8hgqchMBOVRz" },
- { "ASUS", "A8NE-FM/S", "http://www.hardwareschotte.de/hardware/preise/proid_1266090/preis_ASUS+A8NE…" },
- { "ASUS", "A8N-SLI", "http://www.asus.com/product.aspx?P_ID=J9FKa8z2xVId3pDK" },
- { "ASUS", "A8N-SLI Premium", "http://www.asus.com/product.aspx?P_ID=nbulqxniNmzf0mH1" },
- { "ASUS", "A8V Deluxe", "http://www.asus.com/product.aspx?P_ID=tvpdgPNCPaABZRVU" },
- { "ASUS", "A8V-E Deluxe", "http://www.asus.com/product.aspx?P_ID=hQBPIJWEZnnGAZEh" },
- { "ASUS", "A8V-E SE", "http://www.asus.com/product.aspx?P_ID=VMfiJJRYTHM4gXIi" },
- { "ASUS", "K8V", "http://www.asus.com/product.aspx?P_ID=fG2KZOWF7v6MRFRm" },
- { "ASUS", "K8V SE Deluxe", "http://www.asus.com/product.aspx?P_ID=65HeDI8XM1u6Uy6o" },
- { "ASUS", "K8V-X SE", "http://www.asus.com/product.aspx?P_ID=lzDXlbBVHkdckHVr" },
- { "ASUS", "M2A-MX", "http://www.asus.com/product.aspx?P_ID=BmaOnPewi1JgltOZ" },
- { "ASUS", "M2A-VM", "http://www.asus.com/product.aspx?P_ID=St3pWpym8xXpROQS" },
- { "ASUS", "M2N-E", "http://www.asus.com/product.aspx?P_ID=NFlvt10av3F7ayQ9" },
- { "ASUS", "M2V", "http://www.asus.com/product.aspx?P_ID=OqYlEDFfF6ZqZGvp" },
- { "ASUS", "M3A78-EM", "http://www.asus.com/product.aspx?P_ID=KjpYqzmAd9vsTM2D" },
- { "ASUS", "P2B", "ftp://ftp.asus.com.tw/pub/ASUS/mb/slot1/440bx/p2b/" },
- { "ASUS", "P2B-D", "ftp://ftp.asus.com.tw/pub/ASUS/mb/slot1/440bx/p2b-d/" },
- { "ASUS", "P2B-DS", "ftp://ftp.asus.com.tw/pub/ASUS/mb/slot1/440bx/p2b-ds/" },
- { "ASUS", "P2B-F", "ftp://ftp.asus.com.tw/pub/ASUS/mb/slot1/440bx/p2b-d/" },
- { "ASUS", "P2L97-S", "ftp://ftp.asus.com.tw/pub/ASUS/mb/slot1/440lx/p2l97-s/" },
- { "ASUS", "P5B", "ftp://ftp.asus.com.tw/pub/ASUS/mb/socket775/P5B/" },
- { "ASUS", "P5B-Deluxe", "http://www.asus.com/product.aspx?P_ID=bswT66IBSb2rEWNa" },
- { "ASUS", "P5KC", "http://www.asus.com/product.aspx?P_ID=fFZ8oUIGmLpwNMjj" },
- { "ASUS", "P5L-MX", "http://www.asus.com/product.aspx?P_ID=X70d3NCzH2DE9vWH" },
- { "ASUS", "P6T Deluxe", "http://www.asus.com/product.aspx?P_ID=vXixf82co6Q5v0BZ" },
- { "ASUS", "P6T Deluxe V2", "http://www.asus.com/product.aspx?P_ID=iRlP8RG9han6saZx" },
- { "A-Trend", "ATC-6220", "http://www.motherboard.cz/mb/atrend/atc6220.htm" },
- { "BCOM", "WinNET100", "http://www.coreboot.org/BCOM_WINNET100" },
- { "DFI", "Blood-Iron P35 T2RL", "http://lp.lanparty.com.tw/portal/CM/cmproduct/XX_cmproddetail/XX_WbProdsWin…" },
- { "Elitegroup", "K7S5A", "http://www.ecs.com.tw/ECSWebSite/Products/ProductsDetail.aspx?detailid=279&…" },
- { "Elitegroup", "P6VAP-A+", "http://www.ecs.com.tw/ECSWebSite/Products/ProductsDetail.aspx?detailid=117&…" },
- { "GIGABYTE", "GA-6BXC", "http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductI…" },
- { "GIGABYTE", "GA-6BXDU", "http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductI…" },
- { "GIGABYTE", "GA-6ZMA", "http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductI…" },
- { "GIGABYTE", "GA-965P-DS4", "http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductI…" },
- { "GIGABYTE", "GA-EX58-UD4P", "http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductI…" },
- { "GIGABYTE", "GA-EP35-DS3L", "http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductI…" },
- { "GIGABYTE", "GA-MA69VM-S2", "http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductI…" },
- { "GIGABYTE", "GA-MA790GP-DS4H", "http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductI…" },
- { "GIGABYTE", "GA-MA78GPM-DS2H", "http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductI…" },
- { "GIGABYTE", "GA-MA770T-UD3P", "http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductI…" },
- { "Intel", "EP80759", NULL },
- { "Jetway", "J7F4K1G5D-PB", "http://www.jetway.com.tw/jetway/system/productshow2.asp?id=389&proname=J7F4…" },
- { "MSI", "MS-6153", "http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=336" },
- { "MSI", "MS-6156", "http://uk.ts.fujitsu.com/rl/servicesupport/techsupport/boards/Motherboards/…" },
- { "MSI", "MS-6330 (K7T Turbo)", "http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=327" },
- { "MSI", "MS-6570 (K7N2)", "http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=519" },
- { "MSI", "MS-7065", "http://browse.geekbench.ca/geekbench2/view/53114" },
- { "MSI", "MS-7168 (Orion)", "http://support.packardbell.co.uk/uk/item/index.php?i=spec_orion&pi=platform…" },
- { "MSI", "MS-7236 (945PL Neo3)", "http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=1173" },
- { "MSI", "MS-7255 (P4M890M)", "http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=1082" },
- { "MSI", "MS-7345 (P35 Neo2-FIR)","http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=1261" },
- { "MSI", "MS-7312 (K9MM-V)", "http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=1104" },
- { "MSI", "MS-7368 (K9AG Neo2-Digital)", "http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=1241" },
- { "MSI", "MS-7376 (K9A2 Platinum)", "http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=1332" },
- { "NEC", "PowerMate 2000", "http://support.necam.com/mobilesolutions/hardware/Desktops/pm2000/celeron/" },
- { "PC Engines", "Alix.1c", "http://pcengines.ch/alix1c.htm" },
- { "PC Engines", "Alix.2c2", "http://pcengines.ch/alix2c2.htm" },
- { "PC Engines", "Alix.2c3", "http://pcengines.ch/alix2c3.htm" },
- { "PC Engines", "Alix.3c3", "http://pcengines.ch/alix3c3.htm" },
- { "PC Engines", "Alix.3d3", "http://pcengines.ch/alix3d3.htm" },
- { "PC Engines", "WRAP.2E", "http://pcengines.ch/wrap2e1.htm" },
- { "RCA", "RM4100", "http://www.settoplinux.org/index.php?title=RCA_RM4100" },
- { "Shuttle", "FD37", "http://www.shuttle.eu/products/discontinued/barebones/sd37p2/" },
- { "Sun", "Blade x6250", "http://www.sun.com/servers/blades/x6250/" },
- { "Supermicro", "H8QC8", "http://www.supermicro.com/Aplus/motherboard/Opteron/nforce/H8QC8.cfm" },
- { "Supermicro", "X8DTT-F", "http://www.supermicro.com/products/motherboard/QPI/5500/X8DTT-F.cfm" },
- { "Tekram", "P6Pro-A5", "http://www.motherboard.cz/mb/tekram/P6Pro-A5.htm" },
- { "Thomson", "IP1000", "http://www.settoplinux.org/index.php?title=Thomson_IP1000" },
- { "TriGem", "Lomita", "http://www.e4allupgraders.info/dir1/motherboards/socket370/lomita.shtml" },
- { "T-Online", "S-100", "http://wiki.freifunk-hannover.de/T-Online_S_100" },
- { "Tyan", "iS5375-1U", "http://www.tyan.com/product_board_detail.aspx?pid=610" },
- { "Tyan", "S1846", "http://www.tyan.com/archive/products/html/tsunamiatx.html" },
- { "Tyan", "S2466", "http://www.tyan.com/product_board_detail.aspx?pid=461" },
- { "Tyan", "S2881", "http://www.tyan.com/product_board_detail.aspx?pid=115" },
- { "Tyan", "S2882", "http://www.tyan.com/product_board_detail.aspx?pid=121" },
- { "Tyan", "S2882-D", "http://www.tyan.com/product_board_detail.aspx?pid=127" },
- { "Tyan", "S2891", "http://www.tyan.com/product_board_detail.aspx?pid=144" },
- { "Tyan", "S2892", "http://www.tyan.com/product_board_detail.aspx?pid=145" },
- { "Tyan", "S2895", "http://www.tyan.com/archive/products/html/thunderk8we.html" },
- { "Tyan", "S3095", "http://www.tyan.com/product_board_detail.aspx?pid=181" },
- { "Tyan", "S5180", "http://www.tyan.com/product_board_detail.aspx?pid=456" },
- { "Tyan", "S5191", "http://www.tyan.com/product_board_detail.aspx?pid=343" },
- { "Tyan", "S5197", "http://www.tyan.com/product_board_detail.aspx?pid=349" },
- { "Tyan", "S5211", "http://www.tyan.com/product_board_detail.aspx?pid=591" },
- { "Tyan", "S5211-1U", "http://www.tyan.com/product_board_detail.aspx?pid=593" },
- { "Tyan", "S5220", "http://www.tyan.com/product_board_detail.aspx?pid=597" },
- { "Tyan", "S5375", "http://www.tyan.com/product_board_detail.aspx?pid=566" },
- { "Tyan", "S5376G2NR/S5376WAG2NR","http://www.tyan.com/product_board_detail.aspx?pid=605" },
- { "Tyan", "S5377", "http://www.tyan.com/product_SKU_spec.aspx?ProductType=MB&pid=642&SKU=600000…" },
- { "Tyan", "S5382 (Tempest i5000PW)", "http://www.tyan.com/product_board_detail.aspx?pid=439" },
- { "Tyan", "S5397", "http://www.tyan.com/product_board_detail.aspx?pid=560" },
- { "VIA", "EPIA-EX15000G", "http://www.via.com.tw/en/products/embedded/ProductDetail.jsp?productLine=1&…" },
- { "VIA", "EPIA-LN", "http://www.via.com.tw/en/products/mainboards/motherboards.jsp?motherboard_i…" },
- { "VIA", "EPIA-M700", "http://via.com.tw/servlet/downloadSvl?motherboard_id=670&download_file_id=3…" },
- { "VIA", "EPIA-NX15000G", "http://www.via.com.tw/en/products/embedded/ProductDetail.jsp?productLine=1&…" },
- { "VIA", "NAB74X0", "http://www.via.com.tw/en/products/mainboards/motherboards.jsp?motherboard_i…" },
- { "VIA", "pc2500e", "http://www.via.com.tw/en/initiatives/empowered/pc2500_mainboard/index.jsp" },
- { "VIA", "VB700X", "http://www.via.com.tw/en/products/mainboards/motherboards.jsp?motherboard_i…" },
-
- /* Verified working boards that DO need write-enables. */
- { "Abit", "VT6X4", "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?fMTYPE=Sl…" },
- { "Abit", "IP35", "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?fMTYPE=LG…" },
- { "Abit", "IP35 Pro", "http://www.abit.com.tw/page/de/motherboard/motherboard_detail.php?fMTYPE=LG…" },
- { "Abit", "NF7-S", "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?fMTYPE=So…"},
- { "Acorp", "6A815EPD", "http://web.archive.org/web/20021206163652/www.acorp.com.tw/English/default.…" },
- { "agami", "Aruma", "http://web.archive.org/web/20080212111524/http://www.agami.com/site/ais-600…" },
- { "Albatron", "PM266A Pro", "http://www.albatron.com.tw/English/Product/MB/pro_detail.asp?rlink=Overview…" }, /* FIXME */
- { "AOpen", "vKM400Am-S", "http://usa.aopen.com/products_detail.aspx?Auno=824" },
- { "Artec Group", "DBE61", "http://wiki.thincan.org/DBE61" },
- { "Artec Group", "DBE62", "http://wiki.thincan.org/DBE62" },
- { "ASUS", "A7V600-X", "http://www.asus.com/product.aspx?P_ID=L2XYS0rmtCjeOr4k" },
- { "ASUS", "A7V8X", "http://www.asus.com/product.aspx?P_ID=qfpaGrAy2kLVo0f2" },
- { "ASUS", "A7V8X-MX SE", "http://www.asus.com/product.aspx?P_ID=1guVBT1qV5oqhHyZ" },
- { "ASUS", "A7V8X-X", "http://www.asus.com/product.aspx?P_ID=YcXfRrWHZ9RKoVmw" },
- { "ASUS", "M2NBP-VM CSM", "http://www.asus.com/product.aspx?P_ID=MnOfzTGd2KkwG0rF" },
- { "ASUS", "M2V-MX", "http://www.asus.com/product.aspx?P_ID=7grf8Ci4yxnqzt3z" },
- { "ASUS", "P4B266", "ftp://ftp.asus.com.tw/pub/ASUS/mb/sock478/p4b266/" },
- { "ASUS", "P4C800-E Deluxe", "http://www.asus.com/product.aspx?P_ID=cFuVCr9bXXCckmcK" },
- { "ASUS", "P4B266-LM", "http://esupport.sony.com/US/perl/swu-list.pl?mdl=PCVRX650" },
- { "ASUS", "P4P800-E Deluxe", "http://www.asus.com/product.aspx?P_ID=INIJUvLlif7LHp3g" },
- { "ASUS", "P5ND2-SLI Deluxe", "http://www.asus.com/product.aspx?P_ID=WY7XroDuUImVbgp5" },
- { "ASUS", "P5A", "ftp://ftp.asus.com.tw/pub/ASUS/mb/sock7/ali/p5a/" },
- { "Biostar", "P4M80-M4", "http://www.biostar-usa.com/mbdetails.asp?model=p4m80-m4" },
- { "Dell", "PowerEdge 1850", "http://support.dell.com/support/edocs/systems/pe1850/en/index.htm" },
- { "Elitegroup", "K7S6A", "http://www.ecs.com.tw/ECSWebSite/Products/ProductsDetail.aspx?detailid=77&C…" },
- { "Elitegroup", "K7VTA3", "http://www.ecs.com.tw/ECSWebSite/Products/ProductsDetail.aspx?detailid=264&…" },
- { "EPoX", "EP-8K5A2", "http://www.epox.com/product.asp?ID=EP-8K5A2" },
- { "EPoX", "EP-8RDA3+", "http://www.epox.com/product.asp?ID=EP-8RDA3plus" },
- { "EPoX", "EP-BX3", "http://www.epox.com/product.asp?ID=EP-BX3" },
- { "GIGABYTE", "GA-2761GXDK", "http://www.computerbase.de/news/hardware/mainboards/amd-systeme/2007/mai/gi…" },
- { "GIGABYTE", "GA-7VT600", "http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductI…" },
- { "GIGABYTE", "GA-7ZM", "http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductI…" },
- { "GIGABYTE", "GA-K8N-SLI", "http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductI…" },
- { "GIGABYTE", "GA-M57SLI-S4", "http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductI…" },
- { "GIGABYTE", "GA-M61P-S3", "http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductI…" },
- { "GIGABYTE", "GA-MA78G-DS3H", "http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductI…" }, /* TODO: Rev 1.x or 2.x? */
- { "GIGABYTE", "GA-MA78GM-S2H", "http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductI…" }, /* TODO: Rev. 1.0, 1.1, or 2.x? */
- { "GIGABYTE", "GA-MA790FX-DQ6", "http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductI…" },
- { "HP", "DL145 G3", "http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=c008…" },
- { "HP", "Vectra VL400 PC", "http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=c000…" },
- { "HP", "Vectra VL420 SFF PC", "http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=c000…" },
- { "IBM", "x3455", "http://www-03.ibm.com/systems/x/hardware/rack/x3455/index.html" },
- { "Intel", "D201GLY", "http://www.intel.com/support/motherboards/desktop/d201gly/index.htm" },
- { "IWILL", "DK8-HTX", "http://web.archive.org/web/20060507170150/http://www.iwill.net/product_2.as…" },
- { "Kontron", "986LCD-M", "http://de.kontron.com/products/boards+and+mezzanines/embedded+motherboards/…" },
- { "Mitac", "6513WU", "http://web.archive.org/web/20050313054828/http://www.mitac.com/micweb/produ…" },
- { "MSI", "MS-6590 (KT4 Ultra)", "http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=502" },
- { "MSI", "MS-6702E (K8T Neo2-F)","http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=588" },
- { "MSI", "MS-6712 (KT4V)", "http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=505" },
- { "MSI", "MS-7005 (651M-L)", "http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=559" },
- { "MSI", "MS-7046", "http://www.heimir.de/ms7046/" },
- { "MSI", "MS-7135 (K8N Neo3)", "http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=170" },
- { "Shuttle", "AK31", "http://www.motherboard.cz/mb/shuttle/AK31.htm" },
- { "Shuttle", "AK38N", "http://eu.shuttle.com/en/desktopdefault.aspx/tabid-36/558_read-9889/" },
- { "Shuttle", "FN25", "http://www.shuttle.eu/products/discontinued/barebones/sn25p/?0=" },
- { "Soyo", "SY-7VCA", "http://www.tomshardware.com/reviews/12-socket-370-motherboards,196-15.html" },
- { "Tyan", "S2498 (Tomcat K7M)", "http://www.tyan.com/archive/products/html/tomcatk7m.html" },
- { "VIA", "EPIA-CN", "http://www.via.com.tw/en/products/mainboards/motherboards.jsp?motherboard_i…" },
- { "VIA", "EPIA M/MII/...", "http://www.via.com.tw/en/products/embedded/ProductDetail.jsp?productLine=1&…" }, /* EPIA-MII link for now */
- { "VIA", "EPIA-N/NL", "http://www.via.com.tw/en/products/embedded/ProductDetail.jsp?productLine=1&…" }, /* EPIA-N link for now */
- { "VIA", "EPIA SP", "http://www.via.com.tw/en/products/embedded/ProductDetail.jsp?productLine=1&…" },
- { "VIA", "PC3500G", "http://www.via.com.tw/en/initiatives/empowered/pc3500_mainboard/index.jsp" },
-#endif
-
- /* Verified non-working boards (for now). */
-#if defined(__i386__) || defined(__x86_64__)
- { "Abit", "IS-10", "http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?pMODEL_NA…" },
- { "ASRock", "K7VT4A+", "http://www.asrock.com/mb/overview.asp?Model=K7VT4A%%2b&s=" },
- { "ASUS", "MEW-AM", "ftp://ftp.asus.com.tw/pub/ASUS/mb/sock370/810/mew-am/" },
- { "ASUS", "MEW-VM", "http://www.elhvb.com/mboards/OEM/HP/manual/ASUS%20MEW-VM.htm" },
- { "ASUS", "P3B-F", "ftp://ftp.asus.com.tw/pub/ASUS/mb/slot1/440bx/p3b-f/" },
- { "ASUS", "P5BV-M", "ftp://ftp.asus.com.tw/pub/ASUS/mb/socket775/P5B-VM/" },
- { "Biostar", "M6TBA", "ftp://ftp.biostar-usa.com/manuals/M6TBA/" },
- { "Boser", "HS-6637", "http://www.boser.com.tw/manual/HS-62376637v3.4.pdf" },
- { "DFI", "855GME-MGF", "http://www.dfi.com.tw/portal/CM/cmproduct/XX_cmproddetail/XX_WbProdsWindow?…" },
- { "FIC", "VA-502", "ftp://ftp.fic.com.tw/motherboard/manual/socket7/va-502/" },
- { "MSI", "MS-6178", "http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=343" },
- { "MSI", "MS-7260 (K9N Neo)", "http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=255" },
- { "Soyo", "SY-5VD", "http://www.soyo.com/content/Downloads/163/&c=80&p=464&l=English" },
- { "Sun", "Fire x4540", "http://www.sun.com/servers/x64/x4540/" },
- { "Sun", "Fire x4150", "http://www.sun.com/servers/x64/x4150/" },
- { "Sun", "Fire x4200", "http://www.sun.com/servers/entry/x4200/" },
- { "Sun", "Fire x4600", "http://www.sun.com/servers/x64/x4600/" },
-#endif
-
- /* Verified working laptops. */
-#if defined(__i386__) || defined(__x86_64__)
- { "Acer", "Aspire 1520", "http://support.acer.com/us/en/acerpanam/notebook/0000/Acer/Aspire1520/Aspir…" },
- { "Lenovo", "3000 V100 TF05Cxx", "http://www5.pc.ibm.com/europe/products.nsf/products?openagent&brand=Lenovo3…" },
-#endif
-
- /* Verified non-working laptops (for now). */
-#if defined(__i386__) || defined(__x86_64__)
- { "Acer", "Aspire One", NULL },
- { "ASUS", "Eee PC 701 4G", "http://www.asus.com/product.aspx?P_ID=h6SPd3tEzLEsrEiS" },
- { "Dell", "Latitude CPi A366XT", "http://www.coreboot.org/Dell_Latitude_CPi_A366XT" },
- { "HP/Compaq", "nx9010", "http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?lang=en&cc=us…" },
- { "IBM/Lenovo", "Thinkpad T40p", "http://www.thinkwiki.org/wiki/Category:T40p" },
- { "IBM/Lenovo", "240", "http://www.stanford.edu/~bresnan//tp240.html" },
-#endif
-
- { NULL, NULL, 0 },
-};
-
-/* Please keep these lists alphabetically ordered by vendor/board. */
-const struct board_info_notes boards_notes[] = {
- /* Verified working boards that don't need write-enables. */
-#if defined(__i386__) || defined(__x86_64__)
- { "ASI", "MB-5BLMP", "Used in the IGEL WinNET III thin client." },
- { "ASRock", "K8S8X", "The Super I/O isn't found on this board. See http://www.flashrom.org/pipermail/flashrom/2009-November/000937.html." },
- { "ASUS", "A8V-E SE", "See http://www.coreboot.org/pipermail/coreboot/2007-October/026496.html." },
- { "ASUS", "M2A-VM", "See http://www.coreboot.org/pipermail/coreboot/2007-September/025281.html." },
- { "BCOM", "WinNET100", "Used in the IGEL-316 thin client." },
- { "GIGABYTE", "GA-7ZM", "Works fine if you remove jumper JP9 on the board and disable the flash protection BIOS option." },
- { "ASUS", "M2N-E", "If the machine doesn't come up again after flashing, try resetting the NVRAM(CMOS). The MAC address of the onboard network card will change to the value stored in the new image, so backup the old address first. See http://www.flashrom.org/pipermail/flashrom/2009-November/000879.html" },
-#endif
-
- /* Verified working boards that DO need write-enables. */
-#if defined(__i386__) || defined(__x86_64__)
- { "Acer", "Aspire One", "See http://www.coreboot.org/pipermail/coreboot/2009-May/048041.html." },
-#endif
-
- /* Verified non-working boards (for now). */
-#if defined(__i386__) || defined(__x86_64__)
- { "MSI", "MS-6178", "Immediately powers off if you try to hot-plug the chip. However, this does '''not''' happen if you use coreboot." },
- { "MSI", "MS-7260 (K9N Neo)", "Interestingly flashrom does not work when the vendor BIOS is booted, but it ''does'' work flawlessly when the machine is booted with coreboot." },
-#endif
-
- /* Verified working laptops. */
- /* None which need comments, yet... */
-
- /* Verified non-working laptops (for now). */
-#if defined(__i386__) || defined(__x86_64__)
- { "Acer", "Aspire One", "http://www.coreboot.org/pipermail/coreboot/2009-May/048041.html" },
- { "ASUS", "Eee PC 701 4G", "It seems the chip (25X40VSIG) is behind some SPI flash translation layer (likely in the EC, the ENE KB3310)." },
- { "Dell", "Latitude CPi A366XT", "The laptop immediately powers off if you try to hot-swap the chip. It's not yet tested if write/erase would work on this laptop." },
- { "HP/Compaq", "nx9010", "Hangs upon '''flashrom -V''' (needs hard power-cycle then)." },
- { "IBM/Lenovo", "Thinkpad T40p", "Seems to (partially) work at first, but one block/sector cannot be written which then leaves you with a bricked laptop. Maybe this can be investigated and fixed in software later." },
-#endif
-
- { NULL, NULL, 0 },
-};
-
-static int url(const char *vendor, const char *board)
-{
- int i;
- const struct board_info_url *b = boards_url;
-
- for (i = 0; b[i].vendor != NULL; i++) {
- if (!strcmp(vendor, b[i].vendor) && !strcmp(board, b[i].name))
- return i;
- }
-
- return -1;
-}
-
-static int note(const char *vendor, const char *board)
-{
- int i;
- const struct board_info_notes *n = boards_notes;
-
- for (i = 0; n[i].vendor != NULL; i++) {
- if (!strcmp(vendor, n[i].vendor) && !strcmp(board, n[i].name))
- return i;
- }
-
- return -1;
-}
-
static void print_supported_chipsets_wiki(int cols)
{
int i, j, enablescount = 0, color = 1;
@@ -421,40 +116,49 @@ static void print_supported_chipsets_wiki(int cols)
printf("\n|}\n\n|}\n");
}
-static void wiki_helper(const char *heading, const char *status,
- int cols, const struct board_info boards[])
+static void wiki_helper(const char *devicetype, int cols, const struct board_info boards[])
{
- int i, j, k, c, boardcount = 0, color = 1, num_notes = 0;
- const struct board_info *b;
- const struct board_info_url *u = boards_url;
+ int i, j, k = 0, boardcount = 0, color = 1, num_notes = 0;
char *notes = calloc(1, 1);
char tmp[900 + 1];
+ struct board_pciid_enable *b = board_pciid_enables;
+
- for (b = boards; b->vendor != NULL; b++)
+ for (i = 0; boards[i].vendor != NULL; i++)
boardcount++;
- printf("\n'''%s'''\n\nTotal amount of boards: '''%d'''\n\n"
+ printf("\n\nTotal amount of known %s: '''%d'''\n\n"
"{| border=\"0\" valign=\"top\"\n| valign=\"top\"|\n\n%s",
- heading, boardcount, board_th);
+ devicetype, boardcount, board_th);
+
+ for (i = 0, j = 0; boards[i].vendor != NULL; i++, j++) {
- for (i = 0, j = 0, b = boards; b[i].vendor != NULL; i++, j++) {
/* Alternate colors if the vendor changes. */
- if (i > 0 && strcmp(b[i].vendor, b[i - 1].vendor))
+ if (i > 0 && strcmp(boards[i].vendor, boards[i - 1].vendor))
color = !color;
- k = url(b[i].vendor, b[i].name);
- c = note(b[i].vendor, b[i].name);
-
- printf("|- bgcolor=\"#%s\"\n| %s || %s%s %s%s ||"
- " {{%s}}", (color) ? "eeeeee" : "dddddd", b[i].vendor,
- (k != -1 && u[k].url) ? "[" : "",
- (k != -1 && u[k].url) ? u[k].url : "",
- b[i].name, (k != -1 && u[k].url) ? "]" : "", status);
+ k = 0;
+ while ((b[k].vendor_name != NULL) && (strcmp(b[k].vendor_name, boards[i].vendor) != 0) && (strcmp(b[k].board_name, boards[i].name) != 0)){
+ k++;
+ }
- if (c != -1) {
+ printf("|- bgcolor=\"#%s\"\n| %s || %s%s %s%s || %s%s%s%s || {{%s}}\n",
+ (color) ? "eeeeee" : "dddddd",
+ boards[i].vendor,
+ boards[i].url ? "[" : "",
+ boards[i].url ? boards[i].url : "",
+ boards[i].name,
+ boards[i].url ? "]" : "",
+ b[k].lb_vendor ? "-m " : "—",
+ b[k].lb_vendor ? b[k].lb_vendor : "",
+ b[k].lb_vendor ? ":" : "",
+ b[k].lb_vendor ? b[k].lb_part : "",
+ (boards[i].working == OK) ? "OK" : "No");
+
+ if (boards[i].note){
printf("<sup>%d</sup>\n", num_notes + 1);
snprintf((char *)&tmp, 900, "<sup>%d</sup> %s<br />\n",
- 1 + num_notes++, boards_notes[c].note);
+ 1 + num_notes++, boards[i].note);
notes = strcat_realloc(notes, (char *)&tmp);
} else {
printf("\n");
@@ -474,58 +178,14 @@ static void wiki_helper(const char *heading, const char *status,
free(notes);
}
-static void wiki_helper2(const char *heading, int cols)
-{
- int i, j, k, boardcount = 0, color = 1;
- struct board_pciid_enable *b;
- const struct board_info_url *u = boards_url;
-
- for (b = board_pciid_enables; b->vendor_name != NULL; b++)
- boardcount++;
-
- printf("\n'''%s'''\n\nTotal amount of boards: '''%d'''\n\n"
- "{| border=\"0\" valign=\"top\"\n| valign=\"top\"|\n\n%s",
- heading, boardcount, board_th2);
-
- b = board_pciid_enables;
- for (i = 0, j = 0; b[i].vendor_name != NULL; i++, j++) {
- /* Alternate colors if the vendor changes. */
- if (i > 0 && strcmp(b[i].vendor_name, b[i - 1].vendor_name))
- color = !color;
-
- k = url(b[i].vendor_name, b[i].board_name);
-
- printf("|- bgcolor=\"#%s\"\n| %s || %s%s %s%s "
- "|| %s%s%s%s || {{%s}}\n", (color) ? "eeeeee" : "dddddd",
- b[i].vendor_name, (k != -1 && u[k].url) ? "[" : "",
- (k != -1 && u[k].url) ? u[k].url : "", b[i].board_name,
- (k != -1 && u[k].url) ? "]" : "",
- (b[i].lb_vendor) ? "-m " : "—",
- (b[i].lb_vendor) ? b[i].lb_vendor : "",
- (b[i].lb_vendor) ? ":" : "",
- (b[i].lb_vendor) ? b[i].lb_part : "",
- (b[i].status == OK) ? "OK" : "?3");
-
- /* Split table in 'cols' columns. */
- if (j >= (boardcount / cols + 1)) {
- printf("\n|}\n\n| valign=\"top\"|\n\n%s", board_th2);
- j = 0;
- }
- }
-
- printf("\n|}\n\n|}\n");
-}
-
static void print_supported_boards_wiki(void)
{
printf("%s", board_intro);
- wiki_helper("Known good (worked out of the box)", "OK", 3, boards_ok);
- wiki_helper2("Known good (with write-enable code in flashrom)", 2);
- wiki_helper("Not supported (yet)", "No", 3, boards_bad);
+ wiki_helper("boards", 3, boards_known);
printf("%s", laptop_intro);
- wiki_helper("Known good (worked out of the box)", "OK", 1, laptops_ok);
- wiki_helper("Not supported (yet)", "No", 1, laptops_bad);
+ wiki_helper("laptops", 1, laptops_known);
+
}
#endif
--
1.6.6.1
4
8
Hello,
I tried out flashrom on an ASUS A8N-VM CSM board: read seemed to go fine, but
write failed. Information about the board:
http://www.asus.com/product.aspx?P_ID=JBqqlpj4cspbSa3s
flashrom -V, lspci -nnvvxxx, superiotool -deV, flashrom -rV and flashrom -wV
output is attached. The BIOS I was trying to write was the rev 1001 one
available from the above ASUS page.
Per agaran's and roysjosh's friendly help on IRC I checked the BIOS I read
with -r with -v and it says VERIFIED so I suppose I'll go ahead and reboot
later today.
One note about the board testing Wiki page you may want to clarify:
"To check if you can read the existing BIOS image from the chip, run flashrom
-r backup.bin. Make sure that backup.bin contains a useful BIOS image. (Some
chipsets will return 0xff for large areas of flash without any error
messages.)"
For a BIOS newbie like me, the remark in parenthesis doesn't tell much - is it
a good or a bad sign if a chipset returns 0xff for large areas of flash
without any error messages? (Bad, I guess ;))
2
4
June 4, 2010
The internal programmer needs correct information about flash_base and
chip window top/bottom alignment on non-x86 before it can be used. Abort
any internal programmer action for now until the code is fixed.
Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006(a)gmx.net>
Index: flashrom-disable_internal_nonx86/internal.c
===================================================================
--- flashrom-disable_internal_nonx86/internal.c (Revision 1013)
+++ flashrom-disable_internal_nonx86/internal.c (Arbeitskopie)
@@ -165,16 +165,22 @@
pci_init(pacc); /* Initialize the PCI library */
pci_scan_bus(pacc); /* We want to get the list of devices */
- /* We look at the lbtable first to see if we need a
+#if defined(__i386__) || defined(__x86_64__)
+ /* We look at the cbtable first to see if we need a
* mainboard specific flash enable sequence.
*/
coreboot_init();
-#if defined(__i386__) || defined(__x86_64__)
dmi_init();
/* Probe for the Super I/O chip and fill global struct superio. */
probe_superio();
+#else
+ /* FIXME: Enable cbtable searching on all non-x86 platforms supported
+ * by coreboot.
+ * FIXME: Find a replacement for DMI on non-x86.
+ * FIXME: Enable SuperI/O probing once port I/O is possible.
+ */
#endif
/* Warn if a laptop is detected. */
@@ -200,6 +206,7 @@
}
}
+#if __FLASHROM_LITTLE_ENDIAN__
/* try to enable it. Failure IS an option, since not all motherboards
* really need this to be done, etc., etc.
*/
@@ -220,7 +227,25 @@
* The error code might have been a warning only.
* Besides that, we don't check the board enable return code either.
*/
+#if defined(__i386__) || defined(__x86_64__)
return 0;
+#else
+ msg_perr("Your platform is not supported yet for the internal "
+ "programmer due to missing flash_base and top/bottom "
+ "alignment information.\n"
+ "Aborting.\n");
+ return 1;
+#endif
+#else
+ /* FIXME: Remove this unconditional abort once all PCI drivers are
+ * converted to use little-endian accesses for memory BARs.
+ */
+ msg_perr("Your platform is not supported yet for the internal "
+ "programmer because it has not been converted from native "
+ "endian to little endian access yet.\n"
+ "Aborting.\n");
+ return 1;
+#endif
}
int internal_shutdown(void)
--
http://www.hailfinger.org/
3
7
See patch.
Uwe.
--
http://hermann-uwe.de | http://sigrok.org
http://randomprojects.org | http://unmaintained-free-software.org
2
2
Hi,
I separated the direct io access code from the flashrom changes, to make
this code easily available for the other coreboot utilities, too.
The remaining windows patch is rather small.
I'll clean up the directio code some more and make a release asap.
Best regards,
Stefan
--
coresystems GmbH • Brahmsstr. 16 • D-79104 Freiburg i. Br.
Tel.: +49 761 7668825 • Fax: +49 761 7664613
Email: info(a)coresystems.de • http://www.coresystems.de/
Registergericht: Amtsgericht Freiburg • HRB 7656
Geschäftsführer: Stefan Reinauer • Ust-IdNr.: DE245674866
3
9
Handle insufficient DOS timer precision by measuring a 100 ms delay
instead of a 100 us delay. This should reduce the likelihood of flashrom
timer complaints from 100% to 50%. If you want less complaints, use 1000
ms instead. This is mostly a proof of concept and I'd appreciate tests.
Once I know which #defines to look for on MinGW and Cygwin, I can modify
the #if to cover them as well.
Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006(a)gmx.net>
Index: flashrom-measure_delay_precision_dos/udelay.c
===================================================================
--- flashrom-measure_delay_precision_dos/udelay.c (Revision 1008)
+++ flashrom-measure_delay_precision_dos/udelay.c (Arbeitskopie)
@@ -93,7 +93,19 @@
* a scheduler delay or something similar.
*/
for (i = 0; i < 4; i++) {
- if (measure_delay(100) < 90) {
+#if !defined(__DJGPP__)
+ timeusec = measure_delay(100);
+#else
+ /* This zero delay workaround should be active for
+ * DOS and Windows and maybe libpayload. The criterion
+ * here is insufficient (worse than 100 us) OS timer
+ * resolution which will result in measure_delay(100)=0
+ * whereas a longer delay (100 ms) will be sufficient
+ * to get a nonzero time measurement.
+ */
+ timeusec = measure_delay(100000) / 1000;
+#endif
+ if (timeusec < 90) {
msg_pdbg("delay more than 10%% too short, "
"recalculating... ");
goto recalibrate;
--
http://www.hailfinger.org/
3
5