flashrom
Threads by month
- ----- 2025 -----
- 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
June 2011
- 50 participants
- 297 discussions
The output of the read is followed by write output.
# flashrom -Vr A7529IMS.250old
flashrom v0.9.3-r1322 on Linux 2.6.38.5-25-desktop (x86_64), built with libpci 3.1.7, GCC 4.5.1 20101208 [gcc-4_5-branch revision 167585],
little endian
flashrom is free software, get the source code at http://www.flashrom.org
Calibrating delay loop... OS timer resolution is 1 usecs, 1996M loops per second, 10 myus = 10 us, 100 myus = 100 us, 1000 myus = 1013 us,
10000 myus = 9996 us, 4 myus = 4 us, OK.
Initializing internal programmer
No coreboot table found.
DMI string system-manufacturer: "MICRO-STAR INTERNATIONAL CO.,LTD"
DMI string system-product-name: "MS-7529"
DMI string system-version: "1.0"
DMI string baseboard-manufacturer: "MICRO-STAR INTERNATIONAL CO.,LTD"
DMI string baseboard-product-name: "G31M3-L V2(MS-7529)"
DMI string baseboard-version: "1.0"
DMI string chassis-type: "Desktop"
Found chipset "Intel ICH7/ICH7R", enabling flash write... chipset PCI ID is 8086:27b8,
0xfff80000/0xffb80000 FWH IDSEL: 0x0
0xfff00000/0xffb00000 FWH IDSEL: 0x0
0xffe80000/0xffa80000 FWH IDSEL: 0x1
0xffe00000/0xffa00000 FWH IDSEL: 0x1
0xffd80000/0xff980000 FWH IDSEL: 0x2
0xffd00000/0xff900000 FWH IDSEL: 0x2
0xffc80000/0xff880000 FWH IDSEL: 0x3
0xffc00000/0xff800000 FWH IDSEL: 0x3
0xff700000/0xff300000 FWH IDSEL: 0x4
0xff600000/0xff200000 FWH IDSEL: 0x5
0xff500000/0xff100000 FWH IDSEL: 0x6
0xff400000/0xff000000 FWH IDSEL: 0x7
0xfff80000/0xffb80000 FWH decode enabled
0xfff00000/0xffb00000 FWH decode disabled
0xffe80000/0xffa80000 FWH decode disabled
0xffe00000/0xffa00000 FWH decode disabled
0xffd80000/0xff980000 FWH decode disabled
0xffd00000/0xff900000 FWH decode disabled
0xffc80000/0xff880000 FWH decode disabled
0xffc00000/0xff800000 FWH decode disabled
0xff700000/0xff300000 FWH decode disabled
0xff600000/0xff200000 FWH decode disabled
0xff500000/0xff100000 FWH decode disabled
0xff400000/0xff000000 FWH decode disabled
Maximum FWH chip size: 0x80000 bytes
BIOS Lock Enable: disabled, BIOS Write Enable: disabled, BIOS_CNTL is 0x0
Root Complex Register Block address = 0xfed1c000
GCS = 0x465: BIOS Interface Lock-Down: enabled, BOOT BIOS Straps: 0x1 (SPI)
Top Swap : not enabled
SPIBAR = 0xfed1c000 + 0x3020
0x00: 0x0004 (SPIS)
0x02: 0x7f10 (SPIC)
0x04: 0x0007ffc0 (SPIA)
0x08: 0x00000000 (SPID0)
0x0c: 0x00000000 (SPID0+4)
0x10: 0x00000000 (SPID1)
0x14: 0x00000000 (SPID1+4)
0x18: 0x00000000 (SPID2)
0x1c: 0x4d494924 (SPID2+4)
0x20: 0x000dfe68 (SPID3)
0x24: 0x53544224 (SPID3+4)
0x28: 0x32353741 (SPID4)
0x2c: 0x30303239 (SPID4+4)
0x30: 0x02060920 (SPID5)
0x34: 0x00324211 (SPID5+4)
0x38: 0x00ffaaea (SPID6)
0x3c: 0x2f3630f0 (SPID6+4)
0x40: 0x302f3230 (SPID7)
0x44: 0x00fc0039 (SPID7+4)
0x50: 0x00000000 (BBAR)
0x54: 0x5006 (PREOP)
0x56: 0x462b (OPTYPE)
0x58: 0x05ab0302 (OPMENU)
0x5c: 0xc79f0190 (OPMENU+4)
0x60: 0x00000000 (PBR0)
0x64: 0x00000000 (PBR1)
0x68: 0x00000000 (PBR2)
0x6c: 0x00000000 (PBR3)
Programming OPCODES...
program_opcodes: preop=5006 optype=463b opmenu=05d80302c79f0190
done
SPI Read Configuration: prefetching disabled, caching enabled, OK.
This chipset supports the following protocols: SPI.
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 Am29LV001BB, 128 kB: skipped.
Probing for AMD Am29LV001BT, 128 kB: skipped.
Probing for AMD Am29LV002BB, 256 kB: skipped.
Probing for AMD Am29LV002BT, 256 kB: skipped.
Probing for AMD Am29LV004BB, 512 kB: skipped.
Probing for AMD Am29LV004BT, 512 kB: skipped.
Probing for AMD Am29LV008BB, 1024 kB: skipped.
Probing for AMD Am29LV008BT, 1024 kB: skipped.
Probing for AMD Am29LV040B, 512 kB: skipped.
Probing for AMD Am29LV081B, 1024 kB: skipped.
Probing for AMIC A25L05PT, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for AMIC A25L05PU, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for AMIC A25L10PT, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for AMIC A25L10PU, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for AMIC A25L20PT, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for AMIC A25L20PU, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for AMIC A25L40PT, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for AMIC A25L40PU, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for AMIC A25L80P, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for AMIC A25L16PT, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for AMIC A25L16PU, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for AMIC A25L512, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for AMIC A25L010, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for AMIC A25L020, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for AMIC A25L040, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for AMIC A25L080, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for AMIC A25L016, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for AMIC A25L032, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for AMIC A25LQ032, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
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: skipped.
Probing for Atmel AT25DF021, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT25DF041A, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT25DF081, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT25DF081A, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT25DF161, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT25DF321, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT25DF321A, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT25DF641, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT25DQ161, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT25F512B, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT25FS010, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT25FS040, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT26DF041, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT26DF081A, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT26DF161, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT26DF161A, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT26F004, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
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 0xc2, id2 0x2013
Probing for Atmel AT45DB011D, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT45DB021D, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT45DB041D, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT45DB081D, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT45DB161D, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT45DB321C, 4224 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT45DB321D, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT45DB642D, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT49BV512, 64 kB: skipped.
Probing for Atmel AT49F020, 256 kB: skipped.
Probing for Atmel AT49F002(N), 256 kB: skipped.
Probing for Atmel AT49F002(N)T, 256 kB: skipped.
Probing for Bright BM29F040, 512 kB: skipped.
Probing for EMST F49B002UA, 256 kB: skipped.
Probing for EMST F25L008A, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25B05, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25B05T, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25B10, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25B10T, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25B20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25B20T, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25B40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25B40T, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25B80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25B80T, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25B16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25B16T, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25B32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25B32T, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25B64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25B64T, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25D16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25F05, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25F10, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25F20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25F40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25F80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25F16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25F32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
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 Hyundai HY29F002T, 256 kB: skipped.
Probing for Hyundai HY29F002B, 256 kB: skipped.
Probing for Hyundai HY29F040A, 512 kB: skipped.
Probing for Intel 28F001BN/BX-B, 128 kB: skipped.
Probing for Intel 28F001BN/BX-T, 128 kB: skipped.
Probing for Intel 28F002BC/BL/BV/BX-T, 256 kB: skipped.
Probing for Intel 28F008S3/S5/SC, 512 kB: skipped.
Probing for Intel 28F004B5/BE/BV/BX-B, 512 kB: skipped.
Probing for Intel 28F004B5/BE/BV/BX-T, 512 kB: skipped.
Probing for Intel 28F400BV/BX/CE/CV-B, 512 kB: skipped.
Probing for Intel 28F400BV/BX/CE/CV-T, 512 kB: skipped.
Probing for Intel 82802AB, 512 kB: skipped.
Probing for Intel 82802AC, 1024 kB: skipped.
Probing for Macronix MX25L512, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Macronix MX25L1005, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Macronix MX25L2005, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Macronix MX25L4005, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Chip status register is 00
Chip status register: Status Register Write Disable (SRWD) is not set
Chip status register: Bit 6 is not set
Chip status register: Bit 5 / Block Protect 3 (BP3) is not set
Chip status register: Bit 4 / Block Protect 2 (BP2) is not set
Chip status register: Bit 3 / Block Protect 1 (BP1) is not set
Chip status register: Bit 2 / Block Protect 0 (BP0) is not set
Chip status register: Write Enable Latch (WEL) is not set
Chip status register: Write In Progress (WIP/BUSY) is not set
Found chip "Macronix MX25L4005" (512 kB, SPI) at physical address 0xfff80000.
Probing for Macronix MX25L8005, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Macronix MX25L1605, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Macronix MX25L1635D, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Macronix MX25L1635E, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Macronix MX25L3205, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Macronix MX25L3235D, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Macronix MX25L6405, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Macronix MX25L12805, 16384 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
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 MX29F040, 512 kB: skipped.
Probing for Macronix MX29LV040, 512 kB: skipped.
Probing for MoselVitelic V29C51000B, 64 kB: skipped.
Probing for MoselVitelic V29C51000T, 64 kB: skipped.
Probing for MoselVitelic V29C51400B, 512 kB: skipped.
Probing for MoselVitelic V29C51400T, 512 kB: skipped.
Probing for MoselVitelic V29LC51000, 64 kB: skipped.
Probing for MoselVitelic V29LC51001, 128 kB: skipped.
Probing for MoselVitelic V29LC51002, 256 kB: skipped.
Probing for Numonyx M25PE10, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Numonyx M25PE20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Numonyx M25PE40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Numonyx M25PE80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Numonyx M25PE16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for PMC Pm25LV010, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for PMC Pm25LV016B, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for PMC Pm25LV020, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for PMC Pm25LV040, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for PMC Pm25LV080B, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for PMC Pm25LV512, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
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: skipped.
Probing for PMC Pm49FL004, 512 kB: skipped.
Probing for Sanyo LF25FW203A, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Sharp LHF00L04, 1024 kB: skipped.
Probing for Spansion S25FL004A, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Spansion S25FL008A, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Spansion S25FL016A, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Spansion S25FL032A, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Spansion S25FL064A, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for SST SST25VF010.REMS, 128 kB: probe_spi_rems: id1 0xc2, id2 0x12
Probing for SST SST25VF016B, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for SST SST25VF032B, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for SST SST25VF064C, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for SST SST25VF040.REMS, 512 kB: probe_spi_rems: id1 0xc2, id2 0x12
Probing for SST SST25VF040B, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for SST SST25LF040A.RES, 512 kB:
program_opcodes: preop=5006 optype=462b opmenu=05ab0302c79f0190
on-the-fly OPCODE (0xAB) re-programmed, op-pos=2
probe_spi_res2: id1 0x12, id2 0x12
Probing for SST SST25VF040B.REMS, 512 kB: probe_spi_rems: id1 0xc2, id2 0x12
Probing for SST SST25VF080B, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
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: skipped.
Probing for SST SST49LF003A/B, 384 kB: skipped.
Probing for SST SST49LF004A/B, 512 kB: skipped.
Probing for SST SST49LF004C, 512 kB: skipped.
Probing for SST SST49LF008A, 1024 kB: skipped.
Probing for SST SST49LF008C, 1024 kB: skipped.
Probing for SST SST49LF016C, 2048 kB: skipped.
Probing for SST SST49LF020, 256 kB: skipped.
Probing for SST SST49LF020A, 256 kB: skipped.
Probing for SST SST49LF040, 512 kB: skipped.
Probing for SST SST49LF040B, 512 kB: skipped.
Probing for SST SST49LF080A, 1024 kB: skipped.
Probing for SST SST49LF160C, 2048 kB: skipped.
Probing for ST M25P05-A, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
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 0xc2, id2 0x2013
Probing for ST M25P10.RES, 128 kB: Ignoring RES in favour of RDID.
Probing for ST M25P20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for ST M25P40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for ST M25P40-old, 512 kB: Ignoring RES in favour of RDID.
Probing for ST M25P80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for ST M25P16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for ST M25P32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for ST M25P64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for ST M25P128, 16384 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for ST M25PX16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for ST M25PX32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for ST M25PX64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
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 M29F400BB, 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: skipped.
Probing for ST M50FLW040B, 512 kB: skipped.
Probing for ST M50FLW080A, 1024 kB: skipped.
Probing for ST M50FLW080B, 1024 kB: skipped.
Probing for ST M50FW002, 256 kB: skipped.
Probing for ST M50FW016, 2048 kB: skipped.
Probing for ST M50FW040, 512 kB: skipped.
Probing for ST M50FW080, 1024 kB: skipped.
Probing for ST M50LPW116, 2048 kB: skipped.
Probing for SyncMOS/MoselVitelic {F,S,V}29C51001B, 128 kB: skipped.
Probing for SyncMOS/MoselVitelic {F,S,V}29C51001T, 128 kB: skipped.
Probing for SyncMOS/MoselVitelic {F,S,V}29C51002B, 256 kB: skipped.
Probing for SyncMOS/MoselVitelic {F,S,V}29C51002T, 256 kB: skipped.
Probing for SyncMOS/MoselVitelic {F,S,V}29C51004B, 512 kB: skipped.
Probing for SyncMOS/MoselVitelic {F,S,V}29C51004T, 512 kB: skipped.
Probing for SyncMOS/MoselVitelic {S,V}29C31004B, 512 kB: skipped.
Probing for SyncMOS/MoselVitelic {S,V}29C31004T, 512 kB: skipped.
Probing for TI TMS29F002RB, 256 kB: skipped.
Probing for TI TMS29F002RT, 256 kB: skipped.
Probing for Winbond W25Q80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Winbond W25Q16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Winbond W25Q32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Winbond W25Q64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Winbond W25Q128, 16384 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Winbond W25x10, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Winbond W25x20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Winbond W25x40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Winbond W25x80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Winbond W25x16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Winbond W25x32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Winbond W25x64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Winbond W29C010(M)/W29C011A/W29EE011/W29EE012, 128 kB: skipped.
Probing for Winbond W29C020(C)/W29C022, 256 kB: skipped.
Probing for Winbond W29C040/P, 512 kB: skipped.
Probing for Winbond W29C010(M)/W29C011A/W29EE011/W29EE012, 128 kB: skipped.
Probing for Winbond W39L040, 512 kB: skipped.
Probing for Winbond W39V040A, 512 kB: skipped.
Probing for Winbond W39V040B, 512 kB: skipped.
Probing for Winbond W39V040C, 512 kB: skipped.
Probing for Winbond W39V040FA, 512 kB: skipped.
Probing for Winbond W39V040FB, 512 kB: skipped.
Probing for Winbond W39V040FC, 512 kB: skipped.
Probing for Winbond W39V080A, 1024 kB: skipped.
Probing for Winbond W49F002U/N, 256 kB: skipped.
Probing for Winbond W49F020, 256 kB: skipped.
Probing for Winbond W49V002A, 256 kB: skipped.
Probing for Winbond W49V002FA, 256 kB: skipped.
Probing for Winbond W39V080FA, 1024 kB: skipped.
Probing for Winbond W39V080FA (dual mode), 512 kB: skipped.
Probing for AMIC unknown AMIC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel unknown Atmel SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon unknown Eon SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Macronix unknown Macronix SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for PMC unknown PMC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for SST unknown SST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for ST unknown ST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Sanyo unknown Sanyo SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Generic unknown SPI chip (RDID), 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Generic unknown SPI chip (REMS), 0 kB: probe_spi_rems: id1 0xc2, id2 0x12
===
This flash part has status UNTESTED for operations: WRITE
The test status of this chip may have been updated in the latest development
version of flashrom. If you are running the latest development version,
please email a report to flashrom(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, -Vr,
-Vw, -VE), and mention which mainboard or programmer you tested.
Please mention your board in the subject line. Thanks for your help!
Reading flash... done.
Restoring MMIO space at 0x7f009c89c070
Restoring MMIO space at 0x7f009c89c07c
Restoring MMIO space at 0x7f009c89c078
Restoring MMIO space at 0x7f009c89c076
Restoring MMIO space at 0x7f009c89c074
Restoring PCI config space for 00:1f:0 reg 0xdc
Now the write opperation :
# flashrom -Vw A7529IMS.280
flashrom v0.9.3-r1322 on Linux 2.6.38.5-25-desktop (x86_64), built with libpci 3.1.7, GCC 4.5.1 20101208 [gcc-4_5-branch revision 167585],
little endian
flashrom is free software, get the source code at http://www.flashrom.org
Calibrating delay loop... OS timer resolution is 1 usecs, 1994M loops per second, 10 myus = 10 us, 100 myus = 100 us, 1000 myus = 1011 us,
10000 myus = 9973 us, 4 myus = 4 us, OK.
Initializing internal programmer
No coreboot table found.
DMI string system-manufacturer: "MICRO-STAR INTERNATIONAL CO.,LTD"
DMI string system-product-name: "MS-7529"
DMI string system-version: "1.0"
DMI string baseboard-manufacturer: "MICRO-STAR INTERNATIONAL CO.,LTD"
DMI string baseboard-product-name: "G31M3-L V2(MS-7529)"
DMI string baseboard-version: "1.0"
DMI string chassis-type: "Desktop"
Found chipset "Intel ICH7/ICH7R", enabling flash write... chipset PCI ID is 8086:27b8,
0xfff80000/0xffb80000 FWH IDSEL: 0x0
0xfff00000/0xffb00000 FWH IDSEL: 0x0
0xffe80000/0xffa80000 FWH IDSEL: 0x1
0xffe00000/0xffa00000 FWH IDSEL: 0x1
0xffd80000/0xff980000 FWH IDSEL: 0x2
0xffd00000/0xff900000 FWH IDSEL: 0x2
0xffc80000/0xff880000 FWH IDSEL: 0x3
0xffc00000/0xff800000 FWH IDSEL: 0x3
0xff700000/0xff300000 FWH IDSEL: 0x4
0xff600000/0xff200000 FWH IDSEL: 0x5
0xff500000/0xff100000 FWH IDSEL: 0x6
0xff400000/0xff000000 FWH IDSEL: 0x7
0xfff80000/0xffb80000 FWH decode enabled
0xfff00000/0xffb00000 FWH decode disabled
0xffe80000/0xffa80000 FWH decode disabled
0xffe00000/0xffa00000 FWH decode disabled
0xffd80000/0xff980000 FWH decode disabled
0xffd00000/0xff900000 FWH decode disabled
0xffc80000/0xff880000 FWH decode disabled
0xffc00000/0xff800000 FWH decode disabled
0xff700000/0xff300000 FWH decode disabled
0xff600000/0xff200000 FWH decode disabled
0xff500000/0xff100000 FWH decode disabled
0xff400000/0xff000000 FWH decode disabled
Maximum FWH chip size: 0x80000 bytes
BIOS Lock Enable: disabled, BIOS Write Enable: disabled, BIOS_CNTL is 0x0
Root Complex Register Block address = 0xfed1c000
GCS = 0x465: BIOS Interface Lock-Down: enabled, BOOT BIOS Straps: 0x1 (SPI)
Top Swap : not enabled
SPIBAR = 0xfed1c000 + 0x3020
0x00: 0x0004 (SPIS)
0x02: 0x7f10 (SPIC)
0x04: 0x0007ffc0 (SPIA)
0x08: 0x00000000 (SPID0)
0x0c: 0x00000000 (SPID0+4)
0x10: 0x00000000 (SPID1)
0x14: 0x00000000 (SPID1+4)
0x18: 0x00000000 (SPID2)
0x1c: 0x4d494924 (SPID2+4)
0x20: 0x000dfe68 (SPID3)
0x24: 0x53544224 (SPID3+4)
0x28: 0x32353741 (SPID4)
0x2c: 0x30303239 (SPID4+4)
0x30: 0x02060920 (SPID5)
0x34: 0x00324211 (SPID5+4)
0x38: 0x00ffaaea (SPID6)
0x3c: 0x2f3630f0 (SPID6+4)
0x40: 0x302f3230 (SPID7)
0x44: 0x00fc0039 (SPID7+4)
0x50: 0x00000000 (BBAR)
0x54: 0x5006 (PREOP)
0x56: 0x462b (OPTYPE)
0x58: 0x05ab0302 (OPMENU)
0x5c: 0xc79f0190 (OPMENU+4)
0x60: 0x00000000 (PBR0)
0x64: 0x00000000 (PBR1)
0x68: 0x00000000 (PBR2)
0x6c: 0x00000000 (PBR3)
Programming OPCODES...
program_opcodes: preop=5006 optype=463b opmenu=05d80302c79f0190
done
SPI Read Configuration: prefetching disabled, caching enabled, OK.
This chipset supports the following protocols: SPI.
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 Am29LV001BB, 128 kB: skipped.
Probing for AMD Am29LV001BT, 128 kB: skipped.
Probing for AMD Am29LV002BB, 256 kB: skipped.
Probing for AMD Am29LV002BT, 256 kB: skipped.
Probing for AMD Am29LV004BB, 512 kB: skipped.
Probing for AMD Am29LV004BT, 512 kB: skipped.
Probing for AMD Am29LV008BB, 1024 kB: skipped.
Probing for AMD Am29LV008BT, 1024 kB: skipped.
Probing for AMD Am29LV040B, 512 kB: skipped.
Probing for AMD Am29LV081B, 1024 kB: skipped.
Probing for AMIC A25L05PT, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for AMIC A25L05PU, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for AMIC A25L10PT, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for AMIC A25L10PU, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for AMIC A25L20PT, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for AMIC A25L20PU, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for AMIC A25L40PT, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for AMIC A25L40PU, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for AMIC A25L80P, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for AMIC A25L16PT, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for AMIC A25L16PU, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for AMIC A25L512, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for AMIC A25L010, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for AMIC A25L020, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for AMIC A25L040, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for AMIC A25L080, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for AMIC A25L016, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for AMIC A25L032, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for AMIC A25LQ032, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
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: skipped.
Probing for Atmel AT25DF021, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT25DF041A, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT25DF081, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT25DF081A, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT25DF161, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT25DF321, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT25DF321A, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT25DF641, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT25DQ161, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT25F512B, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT25FS010, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT25FS040, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT26DF041, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT26DF081A, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT26DF161, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT26DF161A, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT26F004, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
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 0xc2, id2 0x2013
Probing for Atmel AT45DB011D, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT45DB021D, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT45DB041D, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT45DB081D, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT45DB161D, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT45DB321C, 4224 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT45DB321D, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT45DB642D, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel AT49BV512, 64 kB: skipped.
Probing for Atmel AT49F020, 256 kB: skipped.
Probing for Atmel AT49F002(N), 256 kB: skipped.
Probing for Atmel AT49F002(N)T, 256 kB: skipped.
Probing for Bright BM29F040, 512 kB: skipped.
Probing for EMST F49B002UA, 256 kB: skipped.
Probing for EMST F25L008A, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25B05, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25B05T, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25B10, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25B10T, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25B20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25B20T, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25B40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25B40T, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25B80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25B80T, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25B16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25B16T, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25B32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25B32T, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25B64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25B64T, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25D16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25F05, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25F10, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25F20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25F40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25F80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25F16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon EN25F32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
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 Hyundai HY29F002T, 256 kB: skipped.
Probing for Hyundai HY29F002B, 256 kB: skipped.
Probing for Hyundai HY29F040A, 512 kB: skipped.
Probing for Intel 28F001BN/BX-B, 128 kB: skipped.
Probing for Intel 28F001BN/BX-T, 128 kB: skipped.
Probing for Intel 28F002BC/BL/BV/BX-T, 256 kB: skipped.
Probing for Intel 28F008S3/S5/SC, 512 kB: skipped.
Probing for Intel 28F004B5/BE/BV/BX-B, 512 kB: skipped.
Probing for Intel 28F004B5/BE/BV/BX-T, 512 kB: skipped.
Probing for Intel 28F400BV/BX/CE/CV-B, 512 kB: skipped.
Probing for Intel 28F400BV/BX/CE/CV-T, 512 kB: skipped.
Probing for Intel 82802AB, 512 kB: skipped.
Probing for Intel 82802AC, 1024 kB: skipped.
Probing for Macronix MX25L512, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Macronix MX25L1005, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Macronix MX25L2005, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Macronix MX25L4005, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Chip status register is 00
Chip status register: Status Register Write Disable (SRWD) is not set
Chip status register: Bit 6 is not set
Chip status register: Bit 5 / Block Protect 3 (BP3) is not set
Chip status register: Bit 4 / Block Protect 2 (BP2) is not set
Chip status register: Bit 3 / Block Protect 1 (BP1) is not set
Chip status register: Bit 2 / Block Protect 0 (BP0) is not set
Chip status register: Write Enable Latch (WEL) is not set
Chip status register: Write In Progress (WIP/BUSY) is not set
Found chip "Macronix MX25L4005" (512 kB, SPI) at physical address 0xfff80000.
Probing for Macronix MX25L8005, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Macronix MX25L1605, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Macronix MX25L1635D, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Macronix MX25L1635E, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Macronix MX25L3205, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Macronix MX25L3235D, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Macronix MX25L6405, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Macronix MX25L12805, 16384 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
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 MX29F040, 512 kB: skipped.
Probing for Macronix MX29LV040, 512 kB: skipped.
Probing for MoselVitelic V29C51000B, 64 kB: skipped.
Probing for MoselVitelic V29C51000T, 64 kB: skipped.
Probing for MoselVitelic V29C51400B, 512 kB: skipped.
Probing for MoselVitelic V29C51400T, 512 kB: skipped.
Probing for MoselVitelic V29LC51000, 64 kB: skipped.
Probing for MoselVitelic V29LC51001, 128 kB: skipped.
Probing for MoselVitelic V29LC51002, 256 kB: skipped.
Probing for Numonyx M25PE10, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Numonyx M25PE20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Numonyx M25PE40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Numonyx M25PE80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Numonyx M25PE16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for PMC Pm25LV010, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for PMC Pm25LV016B, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for PMC Pm25LV020, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for PMC Pm25LV040, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for PMC Pm25LV080B, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for PMC Pm25LV512, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
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: skipped.
Probing for PMC Pm49FL004, 512 kB: skipped.
Probing for Sanyo LF25FW203A, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Sharp LHF00L04, 1024 kB: skipped.
Probing for Spansion S25FL004A, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Spansion S25FL008A, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Spansion S25FL016A, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Spansion S25FL032A, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Spansion S25FL064A, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for SST SST25VF010.REMS, 128 kB: probe_spi_rems: id1 0xc2, id2 0x12
Probing for SST SST25VF016B, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for SST SST25VF032B, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for SST SST25VF064C, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for SST SST25VF040.REMS, 512 kB: probe_spi_rems: id1 0xc2, id2 0x12
Probing for SST SST25VF040B, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for SST SST25LF040A.RES, 512 kB:
program_opcodes: preop=5006 optype=462b opmenu=05ab0302c79f0190
on-the-fly OPCODE (0xAB) re-programmed, op-pos=2
probe_spi_res2: id1 0x12, id2 0x12
Probing for SST SST25VF040B.REMS, 512 kB: probe_spi_rems: id1 0xc2, id2 0x12
Probing for SST SST25VF080B, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
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: skipped.
Probing for SST SST49LF003A/B, 384 kB: skipped.
Probing for SST SST49LF004A/B, 512 kB: skipped.
Probing for SST SST49LF004C, 512 kB: skipped.
Probing for SST SST49LF008A, 1024 kB: skipped.
Probing for SST SST49LF008C, 1024 kB: skipped.
Probing for SST SST49LF016C, 2048 kB: skipped.
Probing for SST SST49LF020, 256 kB: skipped.
Probing for SST SST49LF020A, 256 kB: skipped.
Probing for SST SST49LF040, 512 kB: skipped.
Probing for SST SST49LF040B, 512 kB: skipped.
Probing for SST SST49LF080A, 1024 kB: skipped.
Probing for SST SST49LF160C, 2048 kB: skipped.
Probing for ST M25P05-A, 64 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
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 0xc2, id2 0x2013
Probing for ST M25P10.RES, 128 kB: Ignoring RES in favour of RDID.
Probing for ST M25P20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for ST M25P40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for ST M25P40-old, 512 kB: Ignoring RES in favour of RDID.
Probing for ST M25P80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for ST M25P16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for ST M25P32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for ST M25P64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for ST M25P128, 16384 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for ST M25PX16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for ST M25PX32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for ST M25PX64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
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 M29F400BB, 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: skipped.
Probing for ST M50FLW040B, 512 kB: skipped.
Probing for ST M50FLW080A, 1024 kB: skipped.
Probing for ST M50FLW080B, 1024 kB: skipped.
Probing for ST M50FW002, 256 kB: skipped.
Probing for ST M50FW016, 2048 kB: skipped.
Probing for ST M50FW040, 512 kB: skipped.
Probing for ST M50FW080, 1024 kB: skipped.
Probing for ST M50LPW116, 2048 kB: skipped.
Probing for SyncMOS/MoselVitelic {F,S,V}29C51001B, 128 kB: skipped.
Probing for SyncMOS/MoselVitelic {F,S,V}29C51001T, 128 kB: skipped.
Probing for SyncMOS/MoselVitelic {F,S,V}29C51002B, 256 kB: skipped.
Probing for SyncMOS/MoselVitelic {F,S,V}29C51002T, 256 kB: skipped.
Probing for SyncMOS/MoselVitelic {F,S,V}29C51004B, 512 kB: skipped.
Probing for SyncMOS/MoselVitelic {F,S,V}29C51004T, 512 kB: skipped.
Probing for SyncMOS/MoselVitelic {S,V}29C31004B, 512 kB: skipped.
Probing for SyncMOS/MoselVitelic {S,V}29C31004T, 512 kB: skipped.
Probing for TI TMS29F002RB, 256 kB: skipped.
Probing for TI TMS29F002RT, 256 kB: skipped.
Probing for Winbond W25Q80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Winbond W25Q16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Winbond W25Q32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Winbond W25Q64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Winbond W25Q128, 16384 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Winbond W25x10, 128 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Winbond W25x20, 256 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Winbond W25x40, 512 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Winbond W25x80, 1024 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Winbond W25x16, 2048 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Winbond W25x32, 4096 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Winbond W25x64, 8192 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Winbond W29C010(M)/W29C011A/W29EE011/W29EE012, 128 kB: skipped.
Probing for Winbond W29C020(C)/W29C022, 256 kB: skipped.
Probing for Winbond W29C040/P, 512 kB: skipped.
Probing for Winbond W29C010(M)/W29C011A/W29EE011/W29EE012, 128 kB: skipped.
Probing for Winbond W39L040, 512 kB: skipped.
Probing for Winbond W39V040A, 512 kB: skipped.
Probing for Winbond W39V040B, 512 kB: skipped.
Probing for Winbond W39V040C, 512 kB: skipped.
Probing for Winbond W39V040FA, 512 kB: skipped.
Probing for Winbond W39V040FB, 512 kB: skipped.
Probing for Winbond W39V040FC, 512 kB: skipped.
Probing for Winbond W39V080A, 1024 kB: skipped.
Probing for Winbond W49F002U/N, 256 kB: skipped.
Probing for Winbond W49F020, 256 kB: skipped.
Probing for Winbond W49V002A, 256 kB: skipped.
Probing for Winbond W49V002FA, 256 kB: skipped.
Probing for Winbond W39V080FA, 1024 kB: skipped.
Probing for Winbond W39V080FA (dual mode), 512 kB: skipped.
Probing for AMIC unknown AMIC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Atmel unknown Atmel SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Eon unknown Eon SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Macronix unknown Macronix SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for PMC unknown PMC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for SST unknown SST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for ST unknown ST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Sanyo unknown Sanyo SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Generic unknown SPI chip (RDID), 0 kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2013
Probing for Generic unknown SPI chip (REMS), 0 kB: probe_spi_rems: id1 0xc2, id2 0x12
===
This flash part has status UNTESTED for operations: WRITE
The test status of this chip may have been updated in the latest development
version of flashrom. If you are running the latest development version,
please email a report to flashrom(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, -Vr,
-Vw, -VE), and mention which mainboard or programmer you tested.
Please mention your board in the subject line. Thanks for your help!
Flash image seems to be a legacy BIOS. Disabling coreboot-related checks.
Reading old flash chip contents...
Erasing and writing flash chip... Looking at blockwise erase function 0... trying... 0x000000-0x000fff:E
program_opcodes: preop=5006 optype=463b opmenu=05200302c79f0190
on-the-fly OPCODE (0x20) re-programmed, op-pos=2
W, 0x001000-0x001fff:EW, 0x002000-0x002fff:EW, 0x003000-0x003fff:EW, 0x004000-0x004fff:EW, 0x005000-0x005fff:EW, 0x006000-0x006fff:EW,
0x007000-0x007fff:EW, 0x008000-0x008fff:EW, 0x009000-0x009fff:EW, 0x00a000-0x00afff:EW, 0x00b000-0x00bfff:EW, 0x00c000-0x00cfff:EW,
0x00d000-0x00dfff:EW, 0x00e000-0x00efff:EW, 0x00f000-0x00ffff:EW, 0x010000-0x010fff:EW, 0x011000-0x011fff:EW, 0x012000-0x012fff:EW,
0x013000-0x013fff:EW, 0x014000-0x014fff:EW, 0x015000-0x015fff:EW, 0x016000-0x016fff:EW, 0x017000-0x017fff:EW, 0x018000-0x018fff:EW,
0x019000-0x019fff:EW, 0x01a000-0x01afff:EW, 0x01b000-0x01bfff:EW, 0x01c000-0x01cfff:EW, 0x01d000-0x01dfff:EW, 0x01e000-0x01efff:EW,
0x01f000-0x01ffff:EW, 0x020000-0x020fff:EW, 0x021000-0x021fff:EW, 0x022000-0x022fff:EW, 0x023000-0x023fff:EW, 0x024000-0x024fff:EW,
0x025000-0x025fff:EW, 0x026000-0x026fff:EW, 0x027000-0x027fff:EW, 0x028000-0x028fff:EW, 0x029000-0x029fff:EW, 0x02a000-0x02afff:EW,
0x02b000-0x02bfff:EW, 0x02c000-0x02cfff:EW, 0x02d000-0x02dfff:EW, 0x02e000-0x02efff:EW, 0x02f000-0x02ffff:EW, 0x030000-0x030fff:EW,
0x031000-0x031fff:EW, 0x032000-0x032fff:EW, 0x033000-0x033fff:EW, 0x034000-0x034fff:EW, 0x035000-0x035fff:EW, 0x036000-0x036fff:EW,
0x037000-0x037fff:EW, 0x038000-0x038fff:EW, 0x039000-0x039fff:EW, 0x03a000-0x03afff:EW, 0x03b000-0x03bfff:EW, 0x03c000-0x03cfff:EW,
0x03d000-0x03dfff:EW, 0x03e000-0x03efff:EW, 0x03f000-0x03ffff:EW, 0x040000-0x040fff:EW, 0x041000-0x041fff:EW, 0x042000-0x042fff:EW,
0x043000-0x043fff:EW, 0x044000-0x044fff:EW, 0x045000-0x045fff:EW, 0x046000-0x046fff:EW, 0x047000-0x047fff:EW, 0x048000-0x048fff:EW,
0x049000-0x049fff:EW, 0x04a000-0x04afff:W, 0x04b000-0x04bfff:W, 0x04c000-0x04cfff:W, 0x04d000-0x04dfff:W, 0x04e000-0x04efff:W,
0x04f000-0x04ffff:EW, 0x050000-0x050fff:S, 0x051000-0x051fff:S, 0x052000-0x052fff:S, 0x053000-0x053fff:S, 0x054000-0x054fff:S,
0x055000-0x055fff:S, 0x056000-0x056fff:S, 0x057000-0x057fff:S, 0x058000-0x058fff:S, 0x059000-0x059fff:S, 0x05a000-0x05afff:S,
0x05b000-0x05bfff:EW, 0x05c000-0x05cfff:EW, 0x05d000-0x05dfff:EW, 0x05e000-0x05efff:E, 0x05f000-0x05ffff:EW, 0x060000-0x060fff:S,
0x061000-0x061fff:S, 0x062000-0x062fff:E, 0x063000-0x063fff:S, 0x064000-0x064fff:S, 0x065000-0x065fff:S, 0x066000-0x066fff:S,
0x067000-0x067fff:S, 0x068000-0x068fff:S, 0x069000-0x069fff:S, 0x06a000-0x06afff:S, 0x06b000-0x06bfff:S, 0x06c000-0x06cfff:S,
0x06d000-0x06dfff:S, 0x06e000-0x06efff:S, 0x06f000-0x06ffff:S, 0x070000-0x070fff:EW, 0x071000-0x071fff:EW, 0x072000-0x072fff:EW,
0x073000-0x073fff:EW, 0x074000-0x074fff:EW, 0x075000-0x075fff:EW, 0x076000-0x076fff:EW, 0x077000-0x077fff:EW, 0x078000-0x078fff:EW,
0x079000-0x079fff:S, 0x07a000-0x07afff:S, 0x07b000-0x07bfff:S, 0x07c000-0x07cfff:S, 0x07d000-0x07dfff:S, 0x07e000-0x07efff:S,
0x07f000-0x07ffff:EW
Done.
Verifying flash... VERIFIED.
Restoring MMIO space at 0x7fd97c556070
Restoring MMIO space at 0x7fd97c55607c
Restoring MMIO space at 0x7fd97c556078
Restoring MMIO space at 0x7fd97c556076
Restoring MMIO space at 0x7fd97c556074
Restoring PCI config space for 00:1f:0 reg 0xdc
Regards
Dave Plater
2
1
we had broken laptops in the past that were not detected as such because their DMI chassis-type was either undefined/out-of-spec, or set to 'other' or 'unknown'.
this patch tries to mitigate this problem as follows:
- if the DMI chassis-type clearly identifies the system as laptop/notebook/mobile platform then nothing changes: the user gets the laptop warning without a hint to the force switch.
- if the DMI chassis-type is not specific enough, we warn the user similarly, but tell them the switch.
to reduce the number of false positives i have added a few new chassis types that we have encountered in the last months to the list.
Signed-off-by: Stefan Tauner <stefan.tauner(a)student.tuwien.ac.at>
---
dmi.c | 37 ++++++++++++++++++++++++++-----------
internal.c | 21 +++++++++++++++------
2 files changed, 41 insertions(+), 17 deletions(-)
diff --git a/dmi.c b/dmi.c
index cda6656..5d37b76 100644
--- a/dmi.c
+++ b/dmi.c
@@ -54,7 +54,13 @@ static const char *dmidecode_names[] = {
"baseboard-version",
};
-/* A full list of chassis types can be found in the System Management BIOS
+/* This list is used to identify supposed laptops. The is_laptop field has the
+ * following meaning:
+ * - 0: in all likelihood not a laptop
+ * - 1: in all likelihood a laptop
+ * - 2: chassis-type is not specific enough (these do not need to be listed
+ * in the table, because it is the default anyway)
+ * A full list of chassis types can be found in the System Management BIOS
* (SMBIOS) Reference Specification 2.7.0 section 7.4.1 "Chassis Types" at
* http://www.dmtf.org/sites/default/files/standards/documents/DSP0134_2.7.0.p…
* The types below are the most common ones.
@@ -64,14 +70,16 @@ static const struct {
unsigned char is_laptop;
const char *name;
} dmi_chassis_types[] = {
- {0x01, 0, "Other"},
- {0x02, 0, "Unknown"},
{0x03, 0, "Desktop",},
+ {0x06, 0, "Mini Tower"},
+ {0x07, 0, "Tower"},
{0x08, 1, "Portable"},
{0x09, 1, "Laptop"},
{0x0a, 1, "Notebook"},
{0x0b, 1, "Hand Held"},
{0x0e, 1, "Sub Notebook"},
+ {0x11, 0, "Main Server Chassis"},
+ {0x17, 0, "Rack Mount Chassis"},
};
#define DMI_COMMAND_LEN_MAX 260
@@ -152,16 +160,23 @@ void dmi_init(void)
}
chassis_type = get_dmi_string("chassis-type");
- if (chassis_type) {
- for (i = 0; i < ARRAY_SIZE(dmi_chassis_types); i++) {
- if (!strcasecmp(chassis_type,
- dmi_chassis_types[i].name) &&
- dmi_chassis_types[i].is_laptop) {
- msg_pdbg("Laptop detected via DMI\n");
- is_laptop = 1;
- }
+ if (chassis_type == NULL)
+ return;
+
+ for (i = 0; i < ARRAY_SIZE(dmi_chassis_types); i++) {
+ if (strcasecmp(chassis_type, dmi_chassis_types[i].name) == 0) {
+ is_laptop = dmi_chassis_types[i].is_laptop;
+ if (is_laptop == 1) {
+ msg_pdbg("Laptop detected via DMI.\n");
+ free(chassis_type);
+ return;
+ } else
+ break; /* first match breaks loop */
}
}
+
+ msg_pdbg("DMI chassis-type is not specific enough.\n");
+ is_laptop = 2;
free(chassis_type);
}
diff --git a/internal.c b/internal.c
index c9f62c1..bbcdc5b 100644
--- a/internal.c
+++ b/internal.c
@@ -124,7 +124,7 @@ int register_superio(struct superio s)
#endif
-int is_laptop = 0;
+int is_laptop = -1;
int laptop_ok = 0;
int internal_init(void)
@@ -222,11 +222,19 @@ int internal_init(void)
/* Warn if a non-whitelisted laptop is detected. */
if (is_laptop && !laptop_ok) {
- msg_perr("========================================================================\n"
- "WARNING! You seem to be running flashrom on an unsupported laptop.\n"
- "Laptops, notebooks and netbooks are difficult to support and we recommend\n"
- "to use the vendor flashing utility. The embedded controller (EC) in these\n"
- "machines often interacts badly with flashing.\n"
+ msg_perr("========================================================================\n");
+ if (is_laptop == 1) {
+ msg_perr("WARNING! You seem to be running flashrom on an unsupported laptop.\n");
+ } else {
+ msg_perr("WARNING! You may be running flashrom on an unsupported laptop. We could\n"
+ "not detect this for sure because your vendor has not setup the SMBIOS\n"
+ "tables correctly. You can enforce execution by adding\n"
+ "'-p internal:laptop=force_I_want_a_brick' to the command line, but\n"
+ "please read the following warning if you are not sure.\n\n");
+ }
+ msg_perr("Laptops, notebooks and netbooks are difficult to support and we\n"
+ "recommend to use the vendor flashing utility. The embedded controller\n"
+ "(EC) in these machines often interacts badly with flashing.\n"
"See http://www.flashrom.org/Laptops for details.\n\n"
"If flash is shared with the EC, erase is guaranteed to brick your laptop\n"
"and write may brick your laptop.\n"
@@ -234,6 +242,7 @@ int internal_init(void)
"failure and sudden poweroff.\n"
"You have been warned.\n"
"========================================================================\n");
+
if (force_laptop) {
msg_perr("Proceeding anyway because user specified "
"laptop=force_I_want_a_brick\n");
--
1.7.1
1
0

June 4, 2011
- additional vendor tokens below the values
- debug output removed
Signed-off-by: Stefan Tauner <stefan.tauner(a)student.tuwien.ac.at>
---
print.c | 19 ++++++++++---------
1 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/print.c b/print.c
index 35af208..840ccae 100644
--- a/print.c
+++ b/print.c
@@ -78,12 +78,8 @@ static void print_supported_chips(void)
chipcount++;
tmp_ven_str = (char *)f->vendor;
do {
-
- msg_gspew("tmp_ven_str=%s, ", tmp_ven_str);
tmp_ven_len = strcspn(tmp_ven_str, delim);
- msg_gspew("tmp_ven_len=%d, ", tmp_ven_len);
maxvendorlen = max(maxvendorlen, tmp_ven_len);
- msg_gspew("new maxvendorlen=%d\n", maxvendorlen);
tmp_ven_str += tmp_ven_len;
} while (tmp_ven_len != 0);
@@ -140,14 +136,14 @@ static void print_supported_chips(void)
strcpy(tmp_ven_str, f->vendor);
tmp_ven_str = strtok(tmp_ven_str, delim);
- msg_ginfo("%s", tmp_ven_str);
tmp_ven_len = strlen(tmp_ven_str);
+ msg_ginfo("%s", tmp_ven_str);
tmp_ven_str = strtok(NULL, delim);
- while (tmp_ven_str != NULL) {
- msg_ginfo("%s\n%s", delim, tmp_ven_str);
- tmp_ven_len = strlen(tmp_ven_str);
- tmp_ven_str = strtok(NULL, delim);
+ if (tmp_ven_str != NULL) {
+ msg_ginfo("%s", delim);
+ tmp_ven_len++;
}
+
for (i = tmp_ven_len; i < maxvendorlen; i++)
msg_ginfo(" ");
@@ -211,6 +207,11 @@ static void print_supported_chips(void)
msg_gdbg("%0.02f;%0.02f",
f->voltage.min/(double)1000,
f->voltage.max/(double)1000);
+
+ while (tmp_ven_str != NULL) {
+ msg_ginfo("\n%s", tmp_ven_str);
+ tmp_ven_str = strtok(NULL, delim);
+ }
msg_ginfo("\n");
}
}
--
1.7.1
1
0
carldani made a suggestion for the -L output:
instead of this:
SyncMOS/
MoselVitelic {S,V}29C31004T 512 Parallel 3.00;3.60
it would be nice to have:
SyncMOS/ {S,V}29C31004T 512 Parallel 3.00;3.60
MoselVitelic
the patch does it as shown on the top, because it is easier to
implement, but i am working on the second one. (just forgot about it
before sending)
--
Kind regards/Mit freundlichen Grüßen, Stefan Tauner
1
0

June 4, 2011
- add voltage ranges
- center some headers (test values OK, No, ? are centered via wiki templates)
- fix style error in header (align:right -> text-align:right)
Signed-off-by: Stefan Tauner <stefan.tauner(a)student.tuwien.ac.at>
---
print_wiki.c | 46 ++++++++++++++++++++++++++++++++--------------
1 files changed, 32 insertions(+), 14 deletions(-)
diff --git a/print_wiki.c b/print_wiki.c
index 0fcc32a..6601bd7 100644
--- a/print_wiki.c
+++ b/print_wiki.c
@@ -29,7 +29,8 @@
static 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\
+background-color:#eeeeee; text-align:right; border:1px solid #aabbcc;\">\
+<small>\n\
Please do '''not''' edit these tables in the wiki directly, they are \
generated by pasting '''flashrom -z''' output.<br />\
'''Last update:''' %s(generated by flashrom %s)\n</small></div>\n";
@@ -37,12 +38,13 @@ generated by pasting '''flashrom -z''' output.<br />\
#if CONFIG_INTERNAL == 1
static const char chipset_th[] = "{| border=\"0\" style=\"font-size: smaller\"\n\
|- bgcolor=\"#6699dd\"\n! align=\"left\" | Vendor\n\
-! align=\"left\" | Southbridge\n! align=\"left\" | PCI IDs\n\
-! align=\"left\" | Status\n\n";
+! align=\"left\" | Southbridge\n! align=\"center\" | PCI IDs\n\
+! align=\"center\" | Status\n\n";
static 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\" | Required option\n! align=\"left\" | Status\n\n";
+! align=\"left\" | Mainboard\n! align=\"left\" | Required option\n\
+! align=\"center\" | Status\n\n";
static const char board_intro[] = "\
\n== Supported mainboards ==\n\n\
@@ -57,20 +59,26 @@ know, someone has to give it a try). Please report any further verified \
mainboards on the [[Mailinglist|mailing list]].\n";
#endif
-static const char chip_th[] = "{| border=\"0\" style=\"font-size: smaller\" \
-valign=\"top\"\n|- bgcolor=\"#6699dd\"\n! align=\"left\" | Vendor\n\
-! align=\"left\" | Device\n! align=\"left\" | Size / kB\n\
-! align=\"left\" | Type\n! align=\"left\" colspan=\"4\" | Status\n\n\
+static const char chip_th[] = "{\
+| border=\"0\" style=\"font-size: smaller\"valign=\"top\"\n\
+|- bgcolor=\"#6699dd\"\n\
+! align=\"left\" | Vendor\n\
+! align=\"left\" | Device\n\
+! align=\"center\" | Size [kB]\n\
+! align=\"center\" | Type\n\
+! align=\"center\" colspan=\"4\" | Status\n\
+! align=\"center\" colspan=\"2\" | Voltage [V]\n\n\
|- bgcolor=\"#6699ff\"\n| colspan=\"4\" | \n\
-| Probe\n| Read\n| Erase\n| Write\n\n";
+| Probe\n| Read\n| Erase\n| Write\n\
+| align=\"center\" | min \n| align=\"center\" | max\n\n";
static const char programmer_section[] = "\
\n== Supported programmers ==\n\nThis is a list \
of supported PCI devices flashrom can use as programmer:\n\n{| border=\"0\" \
valign=\"top\"\n| valign=\"top\"|\n\n{| border=\"0\" style=\"font-size: \
smaller\" valign=\"top\"\n|- bgcolor=\"#6699dd\"\n! align=\"left\" | Vendor\n\
-! align=\"left\" | Device\n! align=\"left\" | PCI IDs\n\
-! align=\"left\" | Status\n\n";
+! align=\"left\" | Device\n! align=\"center\" | PCI IDs\n\
+! align=\"center\" | Status\n\n";
#if CONFIG_INTERNAL == 1
static const char laptop_intro[] = "\n== Supported laptops/notebooks ==\n\n\
@@ -204,6 +212,9 @@ static void print_supported_chips_wiki(int cols)
const struct flashchip *f, *old = NULL;
uint32_t t;
char *tmp_bus_str;
+ char tmp_max_str[6];
+ char tmp_min_str[6];
+ const char *na = "N/A";
for (f = flashchips; f->name != NULL; f++)
chipcount++;
@@ -223,8 +234,13 @@ static void print_supported_chips_wiki(int cols)
t = f->tested;
tmp_bus_str = flashbuses_to_text(f->bustype);
- printf("|- bgcolor=\"#%s\"\n| %s || %s || %d "
- "|| %s || {{%s}} || {{%s}} || {{%s}} || {{%s}}\n",
+ sprintf(tmp_min_str, "%0.03f", f->voltage.min/(double)1000);
+ sprintf(tmp_max_str, "%0.03f", f->voltage.max/(double)1000);
+ /* '{{%s}}' is used in combination with 'OK', 'No' and '?3' to
+ * select special formatting templates for the bg color. */
+ printf("|- bgcolor=\"#%s\"\n| %s || %s || align=\"right\" | %d "
+ "|| %s || {{%s}} || {{%s}} || {{%s}} || {{%s}}"
+ "|| %s || %s \n",
(c == 1) ? "eeeeee" : "dddddd", f->vendor, f->name,
f->total_size, tmp_bus_str,
(t & TEST_OK_PROBE) ? "OK" :
@@ -234,7 +250,9 @@ static void print_supported_chips_wiki(int cols)
(t & TEST_OK_ERASE) ? "OK" :
(t & TEST_BAD_ERASE) ? "No" : "?3",
(t & TEST_OK_WRITE) ? "OK" :
- (t & TEST_BAD_WRITE) ? "No" : "?3");
+ (t & TEST_BAD_WRITE) ? "No" : "?3",
+ f->voltage.min ? tmp_min_str : na,
+ f->voltage.min ? tmp_max_str : na);
free(tmp_bus_str);
/* Split table into 'cols' columns. */
--
1.7.1
1
0

June 4, 2011
besides adding output for the voltage ranges, this patch also changes
various aspects of the -L output:
- sizes are right aligned now with a fixed length of 5
- test results are always shown in the same column ("PR" and " R"
instead of "PR" and "R ")
- get rid of POS_PRINT and digits
- wideness reductions on the whole with a remarkable detail:
vendor names are split on '/' and spread over mutliple lines
Signed-off-by: Stefan Tauner <stefan.tauner(a)student.tuwien.ac.at>
---
print.c | 148 +++++++++++++++++++++++++++++++++++++++++++--------------------
1 files changed, 101 insertions(+), 47 deletions(-)
diff --git a/print.c b/print.c
index 5d1b449..35af208 100644
--- a/print.c
+++ b/print.c
@@ -59,27 +59,16 @@ char *flashbuses_to_text(enum chipbustype bustype)
return ret;
}
-#define POS_PRINT(x) do { pos += strlen(x); msg_ginfo(x); } while (0)
-
-static int digits(int n)
-{
- int i;
-
- if (!n)
- return 1;
-
- for (i = 0; n; ++i)
- n /= 10;
-
- return i;
-}
-
static void print_supported_chips(void)
{
- int okcol = 0, pos = 0, i, chipcount = 0;
+ int i, chipcount = 0;
int maxvendorlen = strlen("Vendor") + 1;
int maxchiplen = strlen("Device") + 1;
+ int maxtypelen = strlen("Type") + 1;
const struct flashchip *f;
+ const char *delim ="/";
+ char *tmp_ven_str;
+ int tmp_ven_len;
char *tmp_bus_str;
for (f = flashchips; f->name != NULL; f++) {
@@ -87,12 +76,26 @@ static void print_supported_chips(void)
if (!strncmp(f->name, "unknown", 7))
continue;
chipcount++;
- maxvendorlen = max(maxvendorlen, strlen(f->vendor));
+ tmp_ven_str = (char *)f->vendor;
+ do {
+
+ msg_gspew("tmp_ven_str=%s, ", tmp_ven_str);
+ tmp_ven_len = strcspn(tmp_ven_str, delim);
+ msg_gspew("tmp_ven_len=%d, ", tmp_ven_len);
+ maxvendorlen = max(maxvendorlen, tmp_ven_len);
+ msg_gspew("new maxvendorlen=%d\n", maxvendorlen);
+ tmp_ven_str += tmp_ven_len;
+ } while (tmp_ven_len != 0);
+
maxchiplen = max(maxchiplen, strlen(f->name));
+ tmp_bus_str = flashbuses_to_text(f->bustype);
+ maxtypelen = max(maxtypelen,
+ strlen(flashbuses_to_text(f->bustype)));
+ free(tmp_bus_str);
}
- maxvendorlen++;
- maxchiplen++;
- okcol = maxvendorlen + maxchiplen;
+ maxvendorlen += 1;
+ maxchiplen += 1;
+ maxtypelen += 1;
msg_ginfo("Supported flash chips (total: %d):\n\n", chipcount);
msg_ginfo("Vendor");
@@ -102,10 +105,21 @@ static void print_supported_chips(void)
for (i = strlen("Device"); i < maxchiplen; i++)
msg_ginfo(" ");
- msg_ginfo("Tested Known Size/kB: Type:\n");
- for (i = 0; i < okcol; i++)
+ msg_ginfo("Test Known Size ");
+
+ msg_ginfo("Type");
+ for (i = strlen("Type"); i < maxtypelen; i++)
+ msg_ginfo(" ");
+ msg_gdbg("Voltage");
+ msg_ginfo("\n");
+
+ for (i = 0; i < maxvendorlen + maxchiplen; i++)
msg_ginfo(" ");
- msg_ginfo("OK Broken\n\n");
+ msg_ginfo("OK Broken [kB]");
+ for (i = 0; i < maxtypelen; i++)
+ msg_ginfo(" ");
+ msg_gdbg("range [V]");
+ msg_ginfo("\n\n");
msg_ginfo("(P = PROBE, R = READ, E = ERASE, W = WRITE)\n\n");
for (f = flashchips; f->name != NULL; f++) {
@@ -113,50 +127,90 @@ static void print_supported_chips(void)
if (!strncmp(f->name, "unknown", 7))
continue;
- msg_ginfo("%s", f->vendor);
- for (i = strlen(f->vendor); i < maxvendorlen; i++)
+ /* support for multiline vendor names:
+ * - make a copy of the original vendor name
+ * - use strok to put the next token in tmp_ven_str repeatedly
+ * - keep track of the last token's length for ' '-padding
+ */
+ tmp_ven_str = malloc(strlen(f->vendor) + 1);
+ if (tmp_ven_str == NULL) {
+ msg_gerr("Out of memory!\n");
+ exit(1);
+ }
+ strcpy(tmp_ven_str, f->vendor);
+
+ tmp_ven_str = strtok(tmp_ven_str, delim);
+ msg_ginfo("%s", tmp_ven_str);
+ tmp_ven_len = strlen(tmp_ven_str);
+ tmp_ven_str = strtok(NULL, delim);
+ while (tmp_ven_str != NULL) {
+ msg_ginfo("%s\n%s", delim, tmp_ven_str);
+ tmp_ven_len = strlen(tmp_ven_str);
+ tmp_ven_str = strtok(NULL, delim);
+ }
+ for (i = tmp_ven_len; i < maxvendorlen; i++)
msg_ginfo(" ");
+
msg_ginfo("%s", f->name);
for (i = strlen(f->name); i < maxchiplen; i++)
msg_ginfo(" ");
- pos = maxvendorlen + maxchiplen;
if ((f->tested & TEST_OK_MASK)) {
if ((f->tested & TEST_OK_PROBE))
- POS_PRINT("P ");
+ msg_ginfo("P");
+ else
+ msg_ginfo(" ");
if ((f->tested & TEST_OK_READ))
- POS_PRINT("R ");
+ msg_ginfo("R");
+ else
+ msg_ginfo(" ");
if ((f->tested & TEST_OK_ERASE))
- POS_PRINT("E ");
+ msg_ginfo("E");
+ else
+ msg_ginfo(" ");
if ((f->tested & TEST_OK_WRITE))
- POS_PRINT("W ");
- }
- while (pos < okcol + 9) {
- msg_ginfo(" ");
- pos++;
- }
+ msg_ginfo("W ");
+ else
+ msg_ginfo(" ");
+ } else
+ msg_ginfo(" ");
+
if ((f->tested & TEST_BAD_MASK)) {
if ((f->tested & TEST_BAD_PROBE))
- POS_PRINT("P ");
+ msg_ginfo("P");
+ else
+ msg_ginfo(" ");
if ((f->tested & TEST_BAD_READ))
- POS_PRINT("R ");
+ msg_ginfo("R");
+ else
+ msg_ginfo(" ");
if ((f->tested & TEST_BAD_ERASE))
- POS_PRINT("E ");
+ msg_ginfo("E");
+ else
+ msg_ginfo(" ");
if ((f->tested & TEST_BAD_WRITE))
- POS_PRINT("W ");
- }
+ msg_ginfo("W ");
+ else
+ msg_ginfo(" ");
+ } else
+ msg_ginfo(" ");
- while (pos < okcol + 18) {
- msg_ginfo(" ");
- pos++;
- }
- msg_ginfo("%d", f->total_size);
- for (i = 0; i < 10 - digits(f->total_size); i++)
- msg_ginfo(" ");
+ msg_ginfo("%5d ", f->total_size);
tmp_bus_str = flashbuses_to_text(f->bustype);
msg_ginfo("%s", tmp_bus_str);
+ for (i = strlen(tmp_bus_str);
+ i < maxtypelen;
+ i++)
+ msg_ginfo(" ");
free(tmp_bus_str);
+
+ if (f->voltage.min == 0 && f->voltage.max == 0)
+ msg_gdbg("no info");
+ else
+ msg_gdbg("%0.02f;%0.02f",
+ f->voltage.min/(double)1000,
+ f->voltage.max/(double)1000);
msg_ginfo("\n");
}
}
--
1.7.1
1
0

June 4, 2011
Signed-off-by: Stefan Tauner <stefan.tauner(a)student.tuwien.ac.at>
---
chipset_enable.c | 5 ++++-
flashrom.c | 18 ++++++++++--------
print.c | 9 +++++++--
print_wiki.c | 5 ++++-
4 files changed, 25 insertions(+), 12 deletions(-)
diff --git a/chipset_enable.c b/chipset_enable.c
index 83b49ad..595e926 100644
--- a/chipset_enable.c
+++ b/chipset_enable.c
@@ -1177,6 +1177,7 @@ int chipset_flash_enable(void)
struct pci_dev *dev = NULL;
int ret = -2; /* Nothing! */
int i;
+ char *tmp_bus_str;
/* Now let's try to find the chipset we have... */
for (i = 0; chipset_enables[i].vendor_name != NULL; i++) {
@@ -1215,8 +1216,10 @@ int chipset_flash_enable(void)
msg_pinfo("PROBLEMS, continuing anyway\n");
}
+ tmp_bus_str = flashbuses_to_text(buses_supported);
msg_pinfo("This chipset supports the following protocols: %s.\n",
- flashbuses_to_text(buses_supported));
+ tmp_bus_str);
+ free(tmp_bus_str);
return ret;
}
diff --git a/flashrom.c b/flashrom.c
index e9e6a77..224524a 100644
--- a/flashrom.c
+++ b/flashrom.c
@@ -1135,7 +1135,7 @@ int probe_flash(int startchip, struct flashchip *fill_flash, int force)
char location[64];
uint32_t size;
enum chipbustype buses_common;
- char *tmp;
+ char *tmp_bus_str;
for (flash = flashchips + startchip; flash && flash->name; flash++) {
if (chip_to_probe && strcmp(flash->name, chip_to_probe) != 0)
@@ -1149,14 +1149,14 @@ int probe_flash(int startchip, struct flashchip *fill_flash, int force)
}
buses_common = buses_supported & flash->bustype;
if (!buses_common) {
- tmp = flashbuses_to_text(buses_supported);
+ tmp_bus_str = flashbuses_to_text(buses_supported);
msg_gdbg("skipped.");
- msg_gspew(" Host bus type %s ", tmp);
- free(tmp);
- tmp = flashbuses_to_text(flash->bustype);
+ msg_gspew(" Host bus type %s ", tmp_bus_str);
+ free(tmp_bus_str);
+ tmp_bus_str = flashbuses_to_text(flash->bustype);
msg_gspew("and chip bus type %s are incompatible.",
- tmp);
- free(tmp);
+ tmp_bus_str);
+ free(tmp_bus_str);
msg_gdbg("\n");
continue;
}
@@ -1201,10 +1201,12 @@ notfound:
#endif
snprintf(location, sizeof(location), "on %s", programmer_table[programmer].name);
+ tmp_bus_str = flashbuses_to_text(flash->bustype);
msg_cinfo("%s chip \"%s %s\" (%d kB, %s) %s.\n",
force ? "Assuming" : "Found",
flash->vendor, flash->name, flash->total_size,
- flashbuses_to_text(flash->bustype), location);
+ tmp_bus_str, location);
+ free(tmp_bus_str);
/* Flash registers will not be mapped if the chip was forced. Lock info
* may be stored in registers, so avoid lock info printing.
diff --git a/print.c b/print.c
index 830ee8a..5d1b449 100644
--- a/print.c
+++ b/print.c
@@ -28,7 +28,7 @@
/*
* Return a string corresponding to the bustype parameter.
- * Memory is obtained with malloc() and can be freed with free().
+ * Memory is obtained with malloc() and must be freed with free() by the caller.
*/
char *flashbuses_to_text(enum chipbustype bustype)
{
@@ -80,6 +80,7 @@ static void print_supported_chips(void)
int maxvendorlen = strlen("Vendor") + 1;
int maxchiplen = strlen("Device") + 1;
const struct flashchip *f;
+ char *tmp_bus_str;
for (f = flashchips; f->name != NULL; f++) {
/* Ignore "unknown XXXX SPI chip" entries. */
@@ -152,7 +153,11 @@ static void print_supported_chips(void)
msg_ginfo("%d", f->total_size);
for (i = 0; i < 10 - digits(f->total_size); i++)
msg_ginfo(" ");
- msg_ginfo("%s\n", flashbuses_to_text(f->bustype));
+
+ tmp_bus_str = flashbuses_to_text(f->bustype);
+ msg_ginfo("%s", tmp_bus_str);
+ free(tmp_bus_str);
+ msg_ginfo("\n");
}
}
diff --git a/print_wiki.c b/print_wiki.c
index dadba49..0fcc32a 100644
--- a/print_wiki.c
+++ b/print_wiki.c
@@ -203,6 +203,7 @@ static void print_supported_chips_wiki(int cols)
int i = 0, c = 1, chipcount = 0;
const struct flashchip *f, *old = NULL;
uint32_t t;
+ char *tmp_bus_str;
for (f = flashchips; f->name != NULL; f++)
chipcount++;
@@ -221,10 +222,11 @@ static void print_supported_chips_wiki(int cols)
c = !c;
t = f->tested;
+ tmp_bus_str = flashbuses_to_text(f->bustype);
printf("|- bgcolor=\"#%s\"\n| %s || %s || %d "
"|| %s || {{%s}} || {{%s}} || {{%s}} || {{%s}}\n",
(c == 1) ? "eeeeee" : "dddddd", f->vendor, f->name,
- f->total_size, flashbuses_to_text(f->bustype),
+ f->total_size, tmp_bus_str,
(t & TEST_OK_PROBE) ? "OK" :
(t & TEST_BAD_PROBE) ? "No" : "?3",
(t & TEST_OK_READ) ? "OK" :
@@ -233,6 +235,7 @@ static void print_supported_chips_wiki(int cols)
(t & TEST_BAD_ERASE) ? "No" : "?3",
(t & TEST_OK_WRITE) ? "OK" :
(t & TEST_BAD_WRITE) ? "No" : "?3");
+ free(tmp_bus_str);
/* Split table into 'cols' columns. */
if (i >= (chipcount / cols + 1)) {
--
1.7.1
1
0

June 4, 2011
Signed-off-by: Stefan Tauner <stefan.tauner(a)student.tuwien.ac.at>
---
print.c | 140 +++++++++++++++++++++++++++++++-------------------------------
1 files changed, 70 insertions(+), 70 deletions(-)
diff --git a/print.c b/print.c
index ac49e03..830ee8a 100644
--- a/print.c
+++ b/print.c
@@ -59,7 +59,7 @@ char *flashbuses_to_text(enum chipbustype bustype)
return ret;
}
-#define POS_PRINT(x) do { pos += strlen(x); printf(x); } while (0)
+#define POS_PRINT(x) do { pos += strlen(x); msg_ginfo(x); } while (0)
static int digits(int n)
{
@@ -93,31 +93,31 @@ static void print_supported_chips(void)
maxchiplen++;
okcol = maxvendorlen + maxchiplen;
- printf("Supported flash chips (total: %d):\n\n", chipcount);
- printf("Vendor");
+ msg_ginfo("Supported flash chips (total: %d):\n\n", chipcount);
+ msg_ginfo("Vendor");
for (i = strlen("Vendor"); i < maxvendorlen; i++)
- printf(" ");
- printf("Device");
+ msg_ginfo(" ");
+ msg_ginfo("Device");
for (i = strlen("Device"); i < maxchiplen; i++)
- printf(" ");
+ msg_ginfo(" ");
- printf("Tested Known Size/kB: Type:\n");
+ msg_ginfo("Tested Known Size/kB: Type:\n");
for (i = 0; i < okcol; i++)
- printf(" ");
- printf("OK Broken\n\n");
- printf("(P = PROBE, R = READ, E = ERASE, W = WRITE)\n\n");
+ msg_ginfo(" ");
+ msg_ginfo("OK Broken\n\n");
+ msg_ginfo("(P = PROBE, R = READ, E = ERASE, W = WRITE)\n\n");
for (f = flashchips; f->name != NULL; f++) {
/* Don't print "unknown XXXX SPI chip" entries. */
if (!strncmp(f->name, "unknown", 7))
continue;
- printf("%s", f->vendor);
+ msg_ginfo("%s", f->vendor);
for (i = strlen(f->vendor); i < maxvendorlen; i++)
- printf(" ");
- printf("%s", f->name);
+ msg_ginfo(" ");
+ msg_ginfo("%s", f->name);
for (i = strlen(f->name); i < maxchiplen; i++)
- printf(" ");
+ msg_ginfo(" ");
pos = maxvendorlen + maxchiplen;
if ((f->tested & TEST_OK_MASK)) {
@@ -131,7 +131,7 @@ static void print_supported_chips(void)
POS_PRINT("W ");
}
while (pos < okcol + 9) {
- printf(" ");
+ msg_ginfo(" ");
pos++;
}
if ((f->tested & TEST_BAD_MASK)) {
@@ -146,13 +146,13 @@ static void print_supported_chips(void)
}
while (pos < okcol + 18) {
- printf(" ");
+ msg_ginfo(" ");
pos++;
}
- printf("%d", f->total_size);
+ msg_ginfo("%d", f->total_size);
for (i = 0; i < 10 - digits(f->total_size); i++)
- printf(" ");
- printf("%s\n", flashbuses_to_text(f->bustype));
+ msg_ginfo(" ");
+ msg_ginfo("%s\n", flashbuses_to_text(f->bustype));
}
}
@@ -172,26 +172,26 @@ static void print_supported_chipsets(void)
maxvendorlen++;
maxchipsetlen++;
- printf("Supported chipsets (total: %d):\n\n", chipsetcount);
+ msg_ginfo("Supported chipsets (total: %d):\n\n", chipsetcount);
- printf("Vendor");
+ msg_ginfo("Vendor");
for (i = strlen("Vendor"); i < maxvendorlen; i++)
- printf(" ");
+ msg_ginfo(" ");
- printf("Chipset");
+ msg_ginfo("Chipset");
for (i = strlen("Chipset"); i < maxchipsetlen; i++)
- printf(" ");
+ msg_ginfo(" ");
- printf("PCI IDs State\n\n");
+ msg_ginfo("PCI IDs State\n\n");
for (c = chipset_enables; c->vendor_name != NULL; c++) {
- printf("%s", c->vendor_name);
+ msg_ginfo("%s", c->vendor_name);
for (i = 0; i < maxvendorlen - strlen(c->vendor_name); i++)
- printf(" ");
- printf("%s", c->device_name);
+ msg_ginfo(" ");
+ msg_ginfo("%s", c->device_name);
for (i = 0; i < maxchipsetlen - strlen(c->device_name); i++)
- printf(" ");
- printf("%04x:%04x%s\n", c->vendor_id, c->device_id,
+ msg_ginfo(" ");
+ msg_ginfo("%04x:%04x%s\n", c->vendor_id, c->device_id,
(c->status == OK) ? "" : " (untested)");
}
}
@@ -216,39 +216,39 @@ static void print_supported_boards_helper(const struct board_info *boards,
maxvendorlen++;
maxboardlen++;
- printf("Known %s (good: %d, bad: %d):\n\n",
+ msg_ginfo("Known %s (good: %d, bad: %d):\n\n",
devicetype, boardcount_good, boardcount_bad);
- printf("Vendor");
+ msg_ginfo("Vendor");
for (i = strlen("Vendor"); i < maxvendorlen; i++)
- printf(" ");
+ msg_ginfo(" ");
- printf("Board");
+ msg_ginfo("Board");
for (i = strlen("Board"); i < maxboardlen; i++)
- printf(" ");
+ msg_ginfo(" ");
- printf("Status Required option\n\n");
+ msg_ginfo("Status Required option\n\n");
for (b = boards; b->vendor != NULL; b++) {
- printf("%s", b->vendor);
+ msg_ginfo("%s", b->vendor);
for (i = 0; i < maxvendorlen - strlen(b->vendor); i++)
- printf(" ");
- printf("%s", b->name);
+ msg_ginfo(" ");
+ msg_ginfo("%s", b->name);
for (i = 0; i < maxboardlen - strlen(b->name); i++)
- printf(" ");
- printf((b->working) ? "OK " : "BAD ");
+ msg_ginfo(" ");
+ msg_ginfo((b->working) ? "OK " : "BAD ");
for (e = board_pciid_enables; e->vendor_name != NULL; e++) {
if (strcmp(e->vendor_name, b->vendor)
|| strcmp(e->board_name, b->name))
continue;
if (e->lb_vendor == NULL)
- printf("(autodetected)");
+ msg_ginfo("(autodetected)");
else
- printf("-m %s:%s", e->lb_vendor,
+ msg_ginfo("-m %s:%s", e->lb_vendor,
e->lb_part);
}
- printf("\n");
+ msg_ginfo("\n");
}
}
#endif
@@ -257,104 +257,104 @@ void print_supported(void)
{
print_supported_chips();
- printf("\nSupported programmers:\n");
+ msg_ginfo("\nSupported programmers:\n");
list_programmers_linebreak(0, 80, 0);
#if CONFIG_INTERNAL == 1
- printf("\nSupported devices for the %s programmer:\n\n",
+ msg_ginfo("\nSupported devices for the %s programmer:\n\n",
programmer_table[PROGRAMMER_INTERNAL].name);
print_supported_chipsets();
- printf("\n");
+ msg_ginfo("\n");
print_supported_boards_helper(boards_known, "boards");
- printf("\n");
+ msg_ginfo("\n");
print_supported_boards_helper(laptops_known, "laptops");
#endif
#if CONFIG_DUMMY == 1
- printf("\nSupported devices for the %s programmer:\n",
+ msg_ginfo("\nSupported devices for the %s programmer:\n",
programmer_table[PROGRAMMER_DUMMY].name);
/* FIXME */
- printf("Dummy device, does nothing and logs all accesses\n");
+ msg_ginfo("Dummy device, does nothing and logs all accesses\n");
#endif
#if CONFIG_NIC3COM == 1
- printf("\nSupported devices for the %s programmer:\n",
+ msg_ginfo("\nSupported devices for the %s programmer:\n",
programmer_table[PROGRAMMER_NIC3COM].name);
print_supported_pcidevs(nics_3com);
#endif
#if CONFIG_NICREALTEK == 1
- printf("\nSupported devices for the %s programmer:\n",
+ msg_ginfo("\nSupported devices for the %s programmer:\n",
programmer_table[PROGRAMMER_NICREALTEK].name);
print_supported_pcidevs(nics_realtek);
#endif
#if CONFIG_NICNATSEMI == 1
- printf("\nSupported devices for the %s programmer:\n",
+ msg_ginfo("\nSupported devices for the %s programmer:\n",
programmer_table[PROGRAMMER_NICNATSEMI].name);
print_supported_pcidevs(nics_natsemi);
#endif
#if CONFIG_GFXNVIDIA == 1
- printf("\nSupported devices for the %s programmer:\n",
+ msg_ginfo("\nSupported devices for the %s programmer:\n",
programmer_table[PROGRAMMER_GFXNVIDIA].name);
print_supported_pcidevs(gfx_nvidia);
#endif
#if CONFIG_DRKAISER == 1
- printf("\nSupported devices for the %s programmer:\n",
+ msg_ginfo("\nSupported devices for the %s programmer:\n",
programmer_table[PROGRAMMER_DRKAISER].name);
print_supported_pcidevs(drkaiser_pcidev);
#endif
#if CONFIG_SATASII == 1
- printf("\nSupported devices for the %s programmer:\n",
+ msg_ginfo("\nSupported devices for the %s programmer:\n",
programmer_table[PROGRAMMER_SATASII].name);
print_supported_pcidevs(satas_sii);
#endif
#if CONFIG_ATAHPT == 1
- printf("\nSupported devices for the %s programmer:\n",
+ msg_ginfo("\nSupported devices for the %s programmer:\n",
programmer_table[PROGRAMMER_ATAHPT].name);
print_supported_pcidevs(ata_hpt);
#endif
#if CONFIG_FT2232_SPI == 1
- printf("\nSupported devices for the %s programmer:\n",
+ msg_ginfo("\nSupported devices for the %s programmer:\n",
programmer_table[PROGRAMMER_FT2232_SPI].name);
print_supported_usbdevs(devs_ft2232spi);
#endif
#if CONFIG_SERPROG == 1
- printf("\nSupported devices for the %s programmer:\n",
+ msg_ginfo("\nSupported devices for the %s programmer:\n",
programmer_table[PROGRAMMER_SERPROG].name);
/* FIXME */
- printf("All programmer devices speaking the serprog protocol\n");
+ msg_ginfo("All programmer devices speaking the serprog protocol\n");
#endif
#if CONFIG_BUSPIRATE_SPI == 1
- printf("\nSupported devices for the %s programmer:\n",
+ msg_ginfo("\nSupported devices for the %s programmer:\n",
programmer_table[PROGRAMMER_BUSPIRATE_SPI].name);
/* FIXME */
- printf("Dangerous Prototypes Bus Pirate\n");
+ msg_ginfo("Dangerous Prototypes Bus Pirate\n");
#endif
#if CONFIG_DEDIPROG == 1
- printf("\nSupported devices for the %s programmer:\n",
+ msg_ginfo("\nSupported devices for the %s programmer:\n",
programmer_table[PROGRAMMER_DEDIPROG].name);
/* FIXME */
- printf("Dediprog SF100\n");
+ msg_ginfo("Dediprog SF100\n");
#endif
#if CONFIG_RAYER_SPI == 1
- printf("\nSupported devices for the %s programmer:\n",
+ msg_ginfo("\nSupported devices for the %s programmer:\n",
programmer_table[PROGRAMMER_RAYER_SPI].name);
/* FIXME */
- printf("RayeR parallel port programmer\n");
+ msg_ginfo("RayeR parallel port programmer\n");
#endif
#if CONFIG_NICINTEL == 1
- printf("\nSupported devices for the %s programmer:\n",
+ msg_ginfo("\nSupported devices for the %s programmer:\n",
programmer_table[PROGRAMMER_NICINTEL].name);
print_supported_pcidevs(nics_intel);
#endif
#if CONFIG_NICINTEL_SPI == 1
- printf("\nSupported devices for the %s programmer:\n",
+ msg_ginfo("\nSupported devices for the %s programmer:\n",
programmer_table[PROGRAMMER_NICINTEL_SPI].name);
print_supported_pcidevs(nics_intel_spi);
#endif
#if CONFIG_OGP_SPI == 1
- printf("\nSupported devices for the %s programmer:\n",
+ msg_ginfo("\nSupported devices for the %s programmer:\n",
programmer_table[PROGRAMMER_OGP_SPI].name);
print_supported_pcidevs(ogp_spi);
#endif
#if CONFIG_SATAMV == 1
- printf("\nSupported devices for the %s programmer:\n",
+ msg_ginfo("\nSupported devices for the %s programmer:\n",
programmer_table[PROGRAMMER_SATAMV].name);
print_supported_pcidevs(satas_mv);
#endif
--
1.7.1
1
0
Hello, some weeks ago I asked carldani what I could do to help the
flashrom project, and he mentioned that they could really use someone
to go thru all the chips in flashchips.c and get the voltage range and
form factor(s) for each chip listed there.
This is the result of that project: a spreadsheet with the chip name,
voltage range, form factors, connector type (pins, leads, etc). This
covers all the chips as of v1143.
If anyone else is interested, I also have a short text file with all
of the form factor acronyms I came across and what they mean (I
grabbed the definition from the datasheet).
There's a few missing chips, and some values that I wasn't quite sure
about. Comments would be greatly appreciated.
4
19
sudo flashrom -V
flashrom v0.9.2-r1028 on Linux 2.6.38-candela (i686), built with libpci
3.0.0, GCC 4.4.4, little endian
flashrom is free software, get the source code at
http://www.flashrom.org
Calibrating delay loop... OS timer resolution is 1 usecs, 1440M loops
per second, 10 myus = 9 us, 100 myus = 95 us, 1000 myus = 962 us, 10000
myus = 9622 us, 4 myus = 4 us, OK.
Initializing internal programmer
No coreboot table found.
DMI string system-manufacturer: "System manufacturer"
DMI string system-product-name: "System Product Name"
DMI string system-version: "System Version"
DMI string baseboard-manufacturer: "ASUSTeK Computer INC."
DMI string baseboard-product-name: "M4N68T-M-LE-V2"
DMI string baseboard-version: "Rev X.0x"
DMI string chassis-type: "Desktop"
Found ITE Super I/O, id 8721
Found chipset "NVIDIA MCP61", enabling flash write... chipset PCI ID is
10de:03e1, This chipset is not really supported yet. Guesswork...
ISA/LPC bridge reg 0x8a contents: 0x40, bit 6 is 1, bit 5 is 0
Guessed flash bus type is SPI
Found SMBus device 10de:03eb at 00:01:1
SPI BAR is at 0xfec80000, after clearing low bits BAR is at 0xfec80000
Mapping MCP67 SPI at 0xfec80000, unaligned size 0x544.
SPI control is 0x001a, enable=0, idle=0
Please send the output of "flashrom -V" to flashrom(a)flashrom.org to help
us finish support for your chipset. Thanks.
SPI on this chipset is not supported yet.
OK.
This chipset supports the following protocols: None.
SuperI/O ID 8721 is not on the controller list.
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: skipped.
Probing for Atmel AT25DF041A, 512 KB: skipped.
Probing for Atmel AT25DF081, 1024 KB: skipped.
Probing for Atmel AT25DF161, 2048 KB: skipped.
Probing for Atmel AT25DF321, 4096 KB: skipped.
Probing for Atmel AT25DF321A, 4096 KB: skipped.
Probing for Atmel AT25DF641, 8192 KB: skipped.
Probing for Atmel AT25F512B, 64 KB: skipped.
Probing for Atmel AT25FS010, 128 KB: skipped.
Probing for Atmel AT25FS040, 512 KB: skipped.
Probing for Atmel AT26DF041, 512 KB: skipped.
Probing for Atmel AT26DF081A, 1024 KB: skipped.
Probing for Atmel AT26DF161, 2048 KB: skipped.
Probing for Atmel AT26DF161A, 2048 KB: skipped.
Probing for Atmel AT26F004, 512 KB: skipped.
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: skipped.
Probing for Atmel AT45DB011D, 128 KB: skipped.
Probing for Atmel AT45DB021D, 256 KB: skipped.
Probing for Atmel AT45DB041D, 512 KB: skipped.
Probing for Atmel AT45DB081D, 1024 KB: skipped.
Probing for Atmel AT45DB161D, 2048 KB: skipped.
Probing for Atmel AT45DB321C, 4224 KB: skipped.
Probing for Atmel AT45DB321D, 4096 KB: skipped.
Probing for Atmel AT45DB642D, 8192 KB: skipped.
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: skipped.
Probing for AMIC A25L40PU, 512 KB: skipped.
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: skipped.
Probing for EMST F49B002UA, 256 KB: skipped.
Probing for Eon EN25B05, 64 KB: skipped.
Probing for Eon EN25B05T, 64 KB: skipped.
Probing for Eon EN25B10, 128 KB: skipped.
Probing for Eon EN25B10T, 128 KB: skipped.
Probing for Eon EN25B20, 256 KB: skipped.
Probing for Eon EN25B20T, 256 KB: skipped.
Probing for Eon EN25B40, 512 KB: skipped.
Probing for Eon EN25B40T, 512 KB: skipped.
Probing for Eon EN25B80, 1024 KB: skipped.
Probing for Eon EN25B80T, 1024 KB: skipped.
Probing for Eon EN25B16, 2048 KB: skipped.
Probing for Eon EN25B16T, 2048 KB: skipped.
Probing for Eon EN25B32, 4096 KB: skipped.
Probing for Eon EN25B32T, 4096 KB: skipped.
Probing for Eon EN25B64, 8192 KB: skipped.
Probing for Eon EN25B64T, 8192 KB: skipped.
Probing for Eon EN25D16, 2048 KB: skipped.
Probing for Eon EN25F05, 64 KB: skipped.
Probing for Eon EN25F10, 128 KB: skipped.
Probing for Eon EN25F20, 256 KB: skipped.
Probing for Eon EN25F40, 512 KB: skipped.
Probing for Eon EN25F80, 1024 KB: skipped.
Probing for Eon EN25F16, 2048 KB: skipped.
Probing for Eon EN25F32, 4096 KB: skipped.
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: skipped.
Probing for Intel 82802AC, 1024 KB: skipped.
Probing for Macronix MX25L512, 64 KB: skipped.
Probing for Macronix MX25L1005, 128 KB: skipped.
Probing for Macronix MX25L2005, 256 KB: skipped.
Probing for Macronix MX25L4005, 512 KB: skipped.
Probing for Macronix MX25L8005, 1024 KB: skipped.
Probing for Macronix MX25L1605, 2048 KB: skipped.
Probing for Macronix MX25L1635D, 2048 KB: skipped.
Probing for Macronix MX25L3205, 4096 KB: skipped.
Probing for Macronix MX25L3235D, 4096 KB: skipped.
Probing for Macronix MX25L6405, 8192 KB: skipped.
Probing for Macronix MX25L12805, 16384 KB: skipped.
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: skipped.
Probing for Numonyx M25PE20, 256 KB: skipped.
Probing for Numonyx M25PE40, 512 KB: skipped.
Probing for Numonyx M25PE80, 1024 KB: skipped.
Probing for Numonyx M25PE16, 2048 KB: skipped.
Probing for PMC Pm25LV010, 128 KB: skipped.
Probing for PMC Pm25LV016B, 2048 KB: skipped.
Probing for PMC Pm25LV020, 256 KB: skipped.
Probing for PMC Pm25LV040, 512 KB: skipped.
Probing for PMC Pm25LV080B, 1024 KB: skipped.
Probing for PMC Pm25LV512, 64 KB: skipped.
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: skipped.
Probing for PMC Pm49FL004, 512 KB: skipped.
Probing for Sanyo LF25FW203A, 2048 KB: skipped.
Probing for Sharp LHF00L04, 1024 KB: skipped.
Probing for Spansion S25FL008A, 1024 KB: skipped.
Probing for Spansion S25FL016A, 2048 KB: skipped.
Probing for SST SST25VF016B, 2048 KB: skipped.
Probing for SST SST25VF032B, 4096 KB: skipped.
Probing for SST SST25VF040.REMS, 512 KB: skipped.
Probing for SST SST25VF040B, 512 KB: skipped.
Probing for SST SST25VF040B.REMS, 512 KB: skipped.
Probing for SST SST25VF080B, 1024 KB: skipped.
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: skipped.
Probing for SST SST49LF003A/B, 384 KB: skipped.
Probing for SST SST49LF004A/B, 512 KB: skipped.
Probing for SST SST49LF004C, 512 KB: skipped.
Probing for SST SST49LF008A, 1024 KB: skipped.
Probing for SST SST49LF008C, 1024 KB: skipped.
Probing for SST SST49LF016C, 2048 KB: skipped.
Probing for SST SST49LF020, 256 KB: skipped.
Probing for SST SST49LF020A, 256 KB: skipped.
Probing for SST SST49LF040, 512 KB: skipped.
Probing for SST SST49LF040B, 512 KB: skipped.
Probing for SST SST49LF080A, 1024 KB: skipped.
Probing for SST SST49LF160C, 2048 KB: skipped.
Probing for ST M25P05-A, 64 KB: skipped.
Probing for ST M25P05.RES, 64 KB: skipped.
Probing for ST M25P10-A, 128 KB: skipped.
Probing for ST M25P10.RES, 128 KB: skipped.
Probing for ST M25P20, 256 KB: skipped.
Probing for ST M25P40, 512 KB: skipped.
Probing for ST M25P40-old, 512 KB: skipped.
Probing for ST M25P80, 1024 KB: skipped.
Probing for ST M25P16, 2048 KB: skipped.
Probing for ST M25P32, 4096 KB: skipped.
Probing for ST M25P64, 8192 KB: skipped.
Probing for ST M25P128, 16384 KB: skipped.
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: skipped.
Probing for ST M50FLW040B, 512 KB: skipped.
Probing for ST M50FLW080A, 1024 KB: skipped.
Probing for ST M50FLW080B, 1024 KB: skipped.
Probing for ST M50FW002, 256 KB: skipped.
Probing for ST M50FW016, 2048 KB: skipped.
Probing for ST M50FW040, 512 KB: skipped.
Probing for ST M50FW080, 1024 KB: skipped.
Probing for ST M50LPW116, 2048 KB: skipped.
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 W25Q80, 1024 KB: skipped.
Probing for Winbond W25Q16, 2048 KB: skipped.
Probing for Winbond W25Q32, 4096 KB: skipped.
Probing for Winbond W25x10, 128 KB: skipped.
Probing for Winbond W25x20, 256 KB: skipped.
Probing for Winbond W25x40, 512 KB: skipped.
Probing for Winbond W25x80, 1024 KB: skipped.
Probing for Winbond W25x16, 2048 KB: skipped.
Probing for Winbond W25x32, 4096 KB: skipped.
Probing for Winbond W25x64, 8192 KB: skipped.
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: skipped.
Probing for Winbond W39V040B, 512 KB: skipped.
Probing for Winbond W39V040C, 512 KB: skipped.
Probing for Winbond W39V040FA, 512 KB: skipped.
Probing for Winbond W39V080A, 1024 KB: skipped.
Probing for Winbond W49F002U, 256 KB: skipped.
Probing for Winbond W49V002A, 256 KB: skipped.
Probing for Winbond W49V002FA, 256 KB: skipped.
Probing for Winbond W39V080FA, 1024 KB: skipped.
Probing for Winbond W39V080FA (dual mode), 512 KB: skipped.
Probing for Atmel unknown Atmel SPI chip, 0 KB: skipped.
Probing for EON unknown EON SPI chip, 0 KB: skipped.
Probing for Macronix unknown Macronix SPI chip, 0 KB: skipped.
Probing for PMC unknown PMC SPI chip, 0 KB: skipped.
Probing for SST unknown SST SPI chip, 0 KB: skipped.
Probing for ST unknown ST SPI chip, 0 KB: skipped.
Probing for Sanyo unknown Sanyo SPI chip, 0 KB: skipped.
Probing for Generic unknown SPI chip (RDID), 0 KB: skipped.
Probing for Generic unknown SPI chip (REMS), 0 KB: skipped.
No EEPROM/flash device found.
Note: flashrom can never write if the flash chip isn't found
automatically.
2
1