#1: flashRom doesn't work on MotherBoard with ICH9 + MP2532
--------------------------------------------------+-------------------------
Reporter: annyvonne.le_coq@… | Owner: hailfinger
Type: defect | Status: new
Priority: major | Milestone: flashrom 0.9.1
Component: flashrom | Version:
Keywords: | Dependencies:
Patchstatus: there is no patch |
--------------------------------------------------+-------------------------
Hi all,
I have a mother board equipped with ICH9 chipset and M25P32 flash device.
I can't use flashrom to re-program my BIOS.
1) The ICH9 is not recognized. So, I add its device ID (2910) in
chipset_enable.c file.
2) Then, M25P32 flash device is recognized, but OPCODE 06 is not in the
list OPCODESS OS_ST_M25P.
ich_spi_command try to find the command 06 in the list, The list contains
only following values: 2, 3, 216, 5, 171, 1, 159, 199.
The M25P32 has been tested with flashrom. So, I imagine that the problem
is due to the caller.
Have you got an idea about this issue.
Thanks
Anne
--
Ticket URL: <http://www.flashrom.org/trac/flashrom/ticket/1>
flashrom <http://www.flashrom.org/>
Hello!
I tested flashrom reading with my motherboard. Currently I do not get a
updated version for my board and I'm not brave enough to flash the
current again.
Thanks for your work on flashrom!
Oliver
(Germany)
flashrom v0.9.1-r736
No coreboot table found.
Found chipset "Intel ICH8/ICH8R", enabling flash write...
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 enabled
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
BIOS Lock Enable: disabled, BIOS Write Enable: enabled, BIOS_CNTL is 0x1
Root Complex Register Block address = 0xfed1c000
GCS = 0xa0464: BIOS Interface Lock-Down: disabled, BOOT BIOS Straps: 0x1 (SPI)
Top Swap : not enabled
SPIBAR = 0xfed1c000 + 0x3020
0x04: 0x6008 (HSFS)
FLOCKDN 0, FDV 1, FDOPSS 1, SCIP 0, BERASE 1, AEL 0, FCERR 0, FDONE 0
0x50: 0x0000ffff (FRAP)
BMWAG 0, BMRAG 0, BRWA 255, BRRA 255
0x54: 0x00000000 (FREG0)
0x58: 0x00ff0040 (FREG1)
0x5C: 0x003f0001 (FREG2)
0x60: 0x00000fff (FREG3)
0x64: 0x00000000 (FREG4)
0x74: 0x00000000 (PR0)
0x78: 0x00000000 (PR1)
0x7C: 0x00000000 (PR2)
0x80: 0x00000000 (PR3)
0x84: 0x00000000 (PR4)
0x90: 0x007f1004 (SSFS, SSFC)
0x94: 0x0006 (PREOP)
0x96: 0x463b (OPTYPE)
0x98: 0x05d80302 (OPMENU)
0x9C: 0xc79f0190 (OPMENU+4)
0xA0: 0x00000000 (BBAR)
0xB0: 0x00004000 (FDOC)
Programming OPCODES...
program_opcodes: preop=0006 optype=463b opmenu=05d80302c79f0190
done
SPI Read Configuration: prefetching disabled, caching enabled, OK.
This chipset supports the following protocols: LPC,FWH,SPI.
Calibrating delay loop... 434M loops per second, 100 myus = 190 us. OK.
Probing for AMD Am29F010A/B, 128 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for AMD Am29F002(N)BB, 256 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for AMD Am29F002(N)BT, 256 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for AMD Am29F016D, 2048 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for AMD Am29F040B, 512 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for AMD Am29F080B, 1024 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for AMD Am29LV040B, 512 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for AMD Am29LV081B, 1024 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for ASD AE49F2008, 256 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for Atmel AT25DF021, 256 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Atmel AT25DF041A, 512 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Atmel AT25DF081, 1024 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Atmel AT25DF161, 2048 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Atmel AT25DF321, 4096 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Atmel AT25DF321A, 4096 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Atmel AT25DF641, 8192 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Atmel AT25F512B, 64 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Atmel AT25FS010, 128 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Atmel AT25FS040, 512 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Atmel AT26DF041, 512 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Atmel AT26DF081A, 1024 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Chip status register is 00
Found chip "Atmel AT26DF081A" (1024 KB, SPI) at physical address 0xfff00000.
Probing for Atmel AT26DF161, 2048 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Atmel AT26DF161A, 2048 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Atmel AT26F004, 512 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Atmel AT29C512, 64 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for Atmel AT29C010A, 128 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for Atmel AT29C020, 256 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for Atmel AT29C040A, 512 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for Atmel AT45CS1282, 16896 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Atmel AT45DB011D, 128 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Atmel AT45DB021D, 256 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Atmel AT45DB041D, 512 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Atmel AT45DB081D, 1024 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Atmel AT45DB161D, 2048 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Atmel AT45DB321C, 4224 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Atmel AT45DB321D, 4096 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Atmel AT45DB642D, 8192 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Atmel AT49BV512, 64 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for Atmel AT49F002(N), 256 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for Atmel AT49F002(N)T, 256 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for AMIC A25L40P, 512 KB: RDID returned 0x1f 0x45 0x01 0x00. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for AMIC A29002B, 256 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for AMIC A29002T, 256 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for AMIC A29040B, 512 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for AMIC A49LF040A, 512 KB: probe_jedec: id1 0xc4, id2 0x9a, id1 is normal flash content, id2 is normal flash content
Probing for EMST F49B002UA, 256 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for Eon EN25B05, 64 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Eon EN25B10, 128 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Eon EN25B20, 256 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Eon EN25B40, 512 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Eon EN25B80, 1024 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Eon EN25B16, 2048 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Eon EN25B32, 4096 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Eon EN25B64, 8192 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Eon EN25D16, 2048 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Eon EN25F05, 64 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Eon EN25F10, 128 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Eon EN25F20, 256 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Eon EN25F40, 512 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Eon EN25F80, 1024 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Eon EN25F16, 2048 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Eon EN25F32, 4096 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for EON EN29F002(A)(N)B, 256 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for EON EN29F002(A)(N)T, 256 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for Fujitsu MBM29F004BC, 512 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for Fujitsu MBM29F004TC, 512 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for Fujitsu MBM29F400BC, 512 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for Fujitsu MBM29F400TC, 512 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for Intel 28F001BX-B, 128 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for Intel 28F001BX-T, 128 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for Intel 82802AB, 512 KB: probe_82802ab: id1 0xc4, id2 0x9a
Probing for Intel 82802AC, 1024 KB: probe_82802ab: id1 0xff, id2 0xff
Probing for Macronix MX25L512, 64 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Macronix MX25L1005, 128 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Macronix MX25L2005, 256 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Macronix MX25L4005, 512 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Macronix MX25L8005, 1024 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Macronix MX25L1605, 2048 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Macronix MX25L1635D, 2048 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Macronix MX25L3205, 4096 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Macronix MX25L3235D, 4096 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Macronix MX25L6405, 8192 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Macronix MX25L12805, 16384 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Macronix MX29F001B, 128 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for Macronix MX29F001T, 128 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for Macronix MX29F002B, 256 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for Macronix MX29F002T, 256 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for Macronix MX29LV040, 512 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for Numonyx M25PE10, 128 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Numonyx M25PE20, 256 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Numonyx M25PE40, 256 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Numonyx M25PE80, 1024 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Numonyx M25PE16, 2048 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for PMC Pm25LV010, 128 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for PMC Pm25LV016B, 2048 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for PMC Pm25LV020, 256 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for PMC Pm25LV040, 512 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for PMC Pm25LV080B, 1024 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for PMC Pm25LV512, 64 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for PMC Pm29F0002T, 256 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for PMC Pm29F0002B, 256 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for PMC Pm39LV010, 128 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for PMC Pm49FL002, 256 KB: probe_jedec: id1 0x53, id2 0x69, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for PMC Pm49FL004, 512 KB: probe_jedec: id1 0xc4, id2 0x9a, id1 is normal flash content, id2 is normal flash content
Probing for Sharp LHF00L04, 1024 KB: probe_lhf00l04: id1 0xff, id2 0xff
Probing for Spansion S25FL016A, 2048 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for SST SST25VF016B, 2048 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for SST SST25VF032B, 4096 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for SST SST25VF040B, 512 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for SST SST25VF040.REMS, 512 KB: REMS returned ff ff. probe_spi_rems: id1 0xff, id2 0xff
Probing for SST SST25VF040B.REMS, 512 KB: REMS returned ff ff. probe_spi_rems: id1 0xff, id2 0xff
Probing for SST SST25VF080B, 1024 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for SST SST28SF040A, 512 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for SST SST29EE010, 128 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for SST SST29LE010, 128 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for SST SST29EE020A, 256 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for SST SST29LE020, 256 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for SST SST39SF010A, 128 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for SST SST39SF020A, 256 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for SST SST39SF040, 512 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for SST SST39VF512, 64 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for SST SST39VF010, 128 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for SST SST39VF020, 256 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for SST SST39VF040, 512 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for SST SST39VF080, 1024 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for SST SST49LF002A/B, 256 KB: probe_jedec: id1 0x53, id2 0x69, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF003A/B, 384 KB: probe_jedec: id1 0x33, id2 0x33, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF004A/B, 512 KB: probe_jedec: id1 0xc4, id2 0x9a, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF004C, 512 KB: probe_49lfxxxc: id1 0xc4, id2 0x9a
Probing for SST SST49LF008A, 1024 KB: probe_jedec: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF008C, 1024 KB: probe_49lfxxxc: id1 0xff, id2 0xff
Probing for SST SST49LF016C, 2048 KB: probe_49lfxxxc: id1 0xff, id2 0xff
Probing for SST SST49LF020, 256 KB: probe_jedec: id1 0x53, id2 0x69, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF020A, 256 KB: probe_jedec: id1 0x53, id2 0x69, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF040, 512 KB: probe_jedec: id1 0xc4, id2 0x9a, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF040B, 512 KB: probe_jedec: id1 0xc4, id2 0x9a, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF080A, 1024 KB: Chip lacks correct probe timing information, using default 10mS/40uS. probe_jedec: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF160C, 2048 KB: probe_49lfxxxc: id1 0xff, id2 0xff
Probing for ST M25P05-A, 64 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for ST M25P05.RES, 64 KB: RDID returned 0x1f 0x45 0x01. Probing for ST M25P10-A, 128 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for ST M25P10.RES, 128 KB: RDID returned 0x1f 0x45 0x01. Probing for ST M25P20, 256 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for ST M25P40, 512 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for ST M25P40-old, 512 KB: RDID returned 0x1f 0x45 0x01. Probing for ST M25P80, 1024 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for ST M25P16, 2048 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for ST M25P32, 4096 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for ST M25P64, 8192 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for ST M25P128, 16384 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for ST M29F002B, 256 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for ST M29F002T/NT, 256 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for ST M29F040B, 512 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for ST M29F400BT, 512 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for ST M29W010B, 128 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for ST M29W040B, 512 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for ST M50FLW040A, 512 KB: Chip lacks correct probe timing information, using default 10mS/40uS. probe_jedec: id1 0xc4, id2 0x9a, id1 is normal flash content, id2 is normal flash content
Probing for ST M50FLW040B, 512 KB: Chip lacks correct probe timing information, using default 10mS/40uS. probe_jedec: id1 0xc4, id2 0x9a, id1 is normal flash content, id2 is normal flash content
Probing for ST M50FLW080A, 1024 KB: Chip lacks correct probe timing information, using default 10mS/40uS. probe_jedec: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for ST M50FLW080B, 1024 KB: Chip lacks correct probe timing information, using default 10mS/40uS. probe_jedec: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for ST M50FW002, 256 KB: probe_49lfxxxc: id1 0x53, id2 0x69
Probing for ST M50FW016, 2048 KB: probe_82802ab: id1 0xff, id2 0xff
Probing for ST M50FW040, 512 KB: probe_82802ab: id1 0xc4, id2 0x9a
Probing for ST M50FW080, 1024 KB: probe_82802ab: id1 0xff, id2 0xff
Probing for ST M50LPW116, 2048 KB: probe_jedec: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SyncMOS S29C31004T, 512 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for SyncMOS S29C51001T, 128 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for SyncMOS S29C51002T, 256 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for SyncMOS S29C51004T, 512 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for TI TMS29F002RB, 256 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for TI TMS29F002RT, 256 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for Winbond W25x10, 128 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Winbond W25x20, 256 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Winbond W25x40, 512 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Winbond W25x80, 1024 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Winbond W25x16, 2048 KB: RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Probing for Winbond W29C011, 128 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for Winbond W29C020C, 256 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for Winbond W29C040P, 512 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for Winbond W29EE011, 128 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for Winbond W39V040A, 512 KB: probe_jedec: id1 0xc4, id2 0x9a, id1 is normal flash content, id2 is normal flash content
Probing for Winbond W39V040B, 512 KB: probe_jedec: id1 0xc4, id2 0x9a, id1 is normal flash content, id2 is normal flash content
Probing for Winbond W39V040C, 512 KB: Chip lacks correct probe timing information, using default 10mS/40uS. probe_jedec: id1 0xc4, id2 0x9a, id1 is normal flash content, id2 is normal flash content
Probing for Winbond W39V040FA, 512 KB: probe_jedec: id1 0xc4, id2 0x9a, id1 is normal flash content, id2 is normal flash content
Probing for Winbond W39V080A, 1024 KB: probe_jedec: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for Winbond W49F002U, 256 KB: skipped. Host bus type LPC,FWH,SPI and chip bus type Parallel are incompatible.
Probing for Winbond W49V002A, 256 KB: probe_jedec: id1 0x53, id2 0x69, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for Winbond W49V002FA, 256 KB: probe_jedec: id1 0x53, id2 0x69, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for Winbond W39V080FA, 1024 KB: Chip lacks correct probe timing information, using default 10mS/40uS. probe_jedec: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for Winbond W39V080FA (dual mode), 512 KB: Chip lacks correct probe timing information, using default 10mS/40uS. probe_jedec: id1 0xc4, id2 0x9a, id1 is normal flash content, id2 is normal flash content
Probing for Atmel unknown Atmel SPI chip, 0 KB: Not mapping flash chip, zero size at 0x100000000.
RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Not unmapping zero size at (nil)
Probing for EON unknown EON SPI chip, 0 KB: Not mapping flash chip, zero size at 0x100000000.
RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Not unmapping zero size at (nil)
Probing for Macronix unknown Macronix SPI chip, 0 KB: Not mapping flash chip, zero size at 0x100000000.
RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Not unmapping zero size at (nil)
Probing for PMC unknown PMC SPI chip, 0 KB: Not mapping flash chip, zero size at 0x100000000.
RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Not unmapping zero size at (nil)
Probing for SST unknown SST SPI chip, 0 KB: Not mapping flash chip, zero size at 0x100000000.
RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Not unmapping zero size at (nil)
Probing for ST unknown ST SPI chip, 0 KB: Not mapping flash chip, zero size at 0x100000000.
RDID returned 0x1f 0x45 0x01. probe_spi_rdid_generic: id1 0x1f, id2 0x4501
Not unmapping zero size at (nil)
===
This flash part has status UNTESTED for operations: PROBE READ ERASE WRITE
Please email a report to flashrom(a)flashrom.org if any of the above operations
work correctly for you with this flash part. Please include the flashrom
output with the additional -V option for all operations you tested (-V, -rV,
-wV, -EV), and mention which mainboard you tested. Thanks for your help!
===
Reading flash... done.
Hi,
I separated the direct io access code from the flashrom changes, to make
this code easily available for the other coreboot utilities, too.
The remaining windows patch is rather small.
I'll clean up the directio code some more and make a release asap.
Best regards,
Stefan
--
coresystems GmbH • Brahmsstr. 16 • D-79104 Freiburg i. Br.
Tel.: +49 761 7668825 • Fax: +49 761 7664613
Email: info(a)coresystems.de • http://www.coresystems.de/
Registergericht: Amtsgericht Freiburg • HRB 7656
Geschäftsführer: Stefan Reinauer • Ust-IdNr.: DE245674866
For optimal partial reflashing, we have to find out which parts of the
chip can be written without erase. For that, the only criterion (except
a limit on the number of writes for very old chips) is whether the write
will only clear bits (set them to 0).
If (current&new==new) we can skip the erase.
If any bit would have to be set to 1, we need to erase.
Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006(a)gmx.net>
Index: flashrom-need_erase/flash.h
===================================================================
--- flashrom-need_erase/flash.h (Revision 725)
+++ flashrom-need_erase/flash.h (Arbeitskopie)
@@ -455,6 +455,7 @@
int max(int a, int b);
int check_erased_range(struct flashchip *flash, int start, int len);
int verify_range(struct flashchip *flash, uint8_t *cmpbuf, int start, int len, char *message);
+int need_erase(uint8_t *have, uint8_t *want, int len);
char *strcat_realloc(char *dest, const char *src);
#define OK 0
Index: flashrom-need_erase/flashrom.c
===================================================================
--- flashrom-need_erase/flashrom.c (Revision 725)
+++ flashrom-need_erase/flashrom.c (Arbeitskopie)
@@ -379,6 +379,26 @@
return ret;
}
+/**
+ * Check if the buffer have can be programmed to the content of want without
+ * erasing. This is only possible if no bit has to be set to 1.
+ *
+ * @have buffer with current content
+ * @want buffer with desired content
+ * @len length of the verified area
+ * @return 0 if no erase is needed, >0 otherwise
+ */
+int need_erase(uint8_t *have, uint8_t *want, int len)
+{
+ int failcount = 0;
+ int i;
+
+ for (i = 0; i < len; i++)
+ if ((have[i] & want[i]) != want[i])
+ failcount++;
+ return failcount;
+}
+
struct flashchip *probe_flash(struct flashchip *first_flash, int force)
{
struct flashchip *flash;
--
http://www.hailfinger.org/
This is a resend of the previous patch, now using the
intel_ich_gpio_raise function.
I have now created a separate function, instead of hooking this code
onto another board enable that also raises gpio21 (but with a different
ICH).
Allan, i know you have given an Ack already, but this is now based on
more general infrastructure. Can you give this patch a whirl too?
You will have to apply this patch here first though:
http://patchwork.coreboot.org/patch/467/raw/
Thanks,
Luc Verhaegen.
Hi Fabrício,
[Followup to flashrom(a)flashrom.org please]
some of us are interested in reverse engineering flashrom SPI support
for your chipset. Do you still have that board available?
On 15.01.2009 18:12, Fabrício Ceolin wrote:
> On Wed, Jan 14, 2009 at 9:36 PM, Peter Stuge <peter(a)stuge.se> wrote:
>
>> Fabrício Ceolin wrote:
>>
>>> We are trying to make flashrom work on http://www.ecs.com.tw/ECSWebSite/Products/ProductsDetail.aspx?detailid=858&…
>>>
>>> Chipset MCP73 / SPI chip Macronix MX25L8005.
>>>
>>> We made modifications using a enable_flash_mcp55 function, but
>>> does't work.
>>>
>> First you have to figure out what chip is the SPI bus master.
>>
> We made these tests. There are a superio, but the bios chip isn't connect to
> it.
> The bios chip is directly connected to the chipset MCP73.
>
> So, I need to the datasheet of MCP73 to implement it.
>
Did you get any datasheets from Nvidia?
Regards,
Carl-Daniel
--
Developer quote of the week:
"We are juggling too many chainsaws and flaming arrows and tigers."
Add infrastructure to check and report to the user the maximum supported
decode size for chipsets and tested mainboards.
The rationale is to warn users when they, for example, try to flash
a 512KB parallel flash chip but their chipset only supports 256KB,
or they try to flash 512KB and the chipset _does_ theoretically
support 512KB but their special board doesn't wire all address lines
and thus supports only 256 KB ROM chips at maximum.
This has cost Uwe hours of debugging on some board already, until he
figured out what was going on. We should try warn our users where
possible about this.
The chipset and the chip may have more than one bus in common (e.g.
SB600 and Pm49* can both speak LPC+FWH) and on SB600/SB7x0/SB8x0 there
are different limits for LPC and FWH. The only way to tell the user
about the exact circumstances is to spew error messages per bus.
The code will issue a warning during probe (which does fail for some
chips if the size is too big) and abort before the first real
read/write/erase action.
That way, a user can find out why probe might not have worked, and will
be stopped before he/she gets incorrect results.
Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006(a)gmx.net>
Index: flashrom-rom_decode_check_infrastructure/flash.h
===================================================================
--- flashrom-rom_decode_check_infrastructure/flash.h (Revision 753)
+++ flashrom-rom_decode_check_infrastructure/flash.h (Arbeitskopie)
@@ -352,9 +352,17 @@
void sio_mask(uint16_t port, uint8_t reg, uint8_t data, uint8_t mask);
int board_flash_enable(const char *vendor, const char *part);
+struct decode_sizes {
+ uint32_t parallel;
+ uint32_t lpc;
+ uint32_t fwh;
+ uint32_t spi;
+};
+
/* chipset_enable.c */
extern enum chipbustype buses_supported;
int chipset_flash_enable(void);
+extern struct decode_sizes max_rom_decode;
extern unsigned long flashbase;
Index: flashrom-rom_decode_check_infrastructure/chipset_enable.c
===================================================================
--- flashrom-rom_decode_check_infrastructure/chipset_enable.c (Revision 753)
+++ flashrom-rom_decode_check_infrastructure/chipset_enable.c (Arbeitskopie)
@@ -42,6 +42,17 @@
enum chipbustype buses_supported = CHIP_BUSTYPE_NONSPI;
+/**
+ * Programmers supporting multiple buses can have differing size limits on
+ * each bus. Store the limits for each bus in a common struct.
+ */
+struct decode_sizes max_rom_decode = {
+ .parallel = 0xffffffff,
+ .lpc = 0xffffffff,
+ .fwh = 0xffffffff,
+ .spi = 0xffffffff
+};
+
extern int ichspi_lock;
static int enable_flash_ali_m1533(struct pci_dev *dev, const char *name)
Index: flashrom-rom_decode_check_infrastructure/flashrom.c
===================================================================
--- flashrom-rom_decode_check_infrastructure/flashrom.c (Revision 753)
+++ flashrom-rom_decode_check_infrastructure/flashrom.c (Arbeitskopie)
@@ -299,6 +299,15 @@
return (a > b) ? a : b;
}
+int bitcount(unsigned long a)
+{
+ int i = 0;
+ for (; a != 0; a >>= 1)
+ if (a & 1)
+ i++;
+ return i;
+}
+
char *strcat_realloc(char *dest, const char *src)
{
dest = realloc(dest, strlen(dest) + strlen(src) + 1);
@@ -398,10 +407,63 @@
return ret;
}
+int check_max_decode(enum chipbustype buses, unsigned int size)
+{
+ int limitexceeded = 0;
+ if ((buses & CHIP_BUSTYPE_PARALLEL) &&
+ (max_rom_decode.parallel < size)) {
+ limitexceeded++;
+ printf_debug("Chip size %u is bigger than supported "
+ "size %u of chipset/board/programmer "
+ "for Parallel interface, "
+ "probe/read/erase/write may fail. ", size,
+ max_rom_decode.parallel);
+ }
+ if ((buses & CHIP_BUSTYPE_LPC) &&
+ (max_rom_decode.lpc < size)) {
+ limitexceeded++;
+ printf_debug("Chip size %u is bigger than supported "
+ "size %u of chipset/board/programmer "
+ "for LPC interface, "
+ "probe/read/erase/write may fail. ", size,
+ max_rom_decode.lpc);
+ }
+ if ((buses & CHIP_BUSTYPE_FWH) &&
+ (max_rom_decode.fwh < size)) {
+ limitexceeded++;
+ printf_debug("Chip size %u is bigger than supported "
+ "size %u of chipset/board/programmer "
+ "for FWH interface, "
+ "probe/read/erase/write may fail. ", size,
+ max_rom_decode.fwh);
+ }
+ if ((buses & CHIP_BUSTYPE_SPI) &&
+ (max_rom_decode.spi < size)) {
+ limitexceeded++;
+ printf_debug("Chip size %u is bigger than supported "
+ "size %u of chipset/board/programmer "
+ "for SPI interface, "
+ "probe/read/erase/write may fail. ", size,
+ max_rom_decode.spi);
+ }
+ if (!limitexceeded)
+ return 0;
+ /* Sometimes chip and programmer have more than one bus in common,
+ * and the limit is not exceeded on all buses. Tell the user.
+ */
+ if (bitcount(buses) > limitexceeded)
+ printf_debug("There is at least one common chip/programmer "
+ "interface which can support a chip of this size. "
+ "You can try --force at your own risk.\n");
+ return 1;
+}
+
struct flashchip *probe_flash(struct flashchip *first_flash, int force)
{
struct flashchip *flash;
- unsigned long base = 0, size;
+ unsigned long base = 0;
+ unsigned int size;
+ enum chipbustype buses_common;
char *tmp;
for (flash = first_flash; flash && flash->name; flash++) {
@@ -413,7 +475,8 @@
printf_debug("failed! flashrom has no probe function for this flash chip.\n");
continue;
}
- if (!(buses_supported & flash->bustype)) {
+ buses_common = buses_supported & flash->bustype;
+ if (!buses_common) {
tmp = flashbuses_to_text(buses_supported);
printf_debug("skipped. Host bus type %s ", tmp);
free(tmp);
@@ -424,6 +487,7 @@
}
size = flash->total_size * 1024;
+ check_max_decode(buses_common, size);
base = flashbase ? flashbase : (0xffffffff - size + 1);
flash->virtual_memory = (chipaddr)programmer_map_flash_region("flash chip", base, size);
@@ -975,6 +1039,14 @@
verify_it = 1;
size = flash->total_size * 1024;
+ if (check_max_decode((buses_supported & flash->bustype), size) &&
+ (!force)) {
+ fprintf(stderr, "This chip is too big for this programmer. "
+ "Details are given in verbose mode. You can override "
+ "this check with --force.");
+ programmer_shutdown();
+ return 1;
+ }
buf = (uint8_t *) calloc(size, sizeof(char));
if (erase_it) {
--
Developer quote of the week:
"We are juggling too many chainsaws and flaming arrows and tigers."
This is code from a an old board enable that i sent in 3 weeks ago. This
board enable was not necessary (as flashing worked just fine without it
too). But this function was also used to clean up the board enable for
the epox ep bx3.
I have tracked down the person for whom i wrote this board enable 2
years ago: irc user nyu, aka Robert Millan.
Robert, can you verify that this code is not a regression for you?
Uwe, in the original mail thread
(http://www.coreboot.org/pipermail/coreboot/2009-June/049789.html) you
had several suggestions. I have taken over unsigned int and the
bitshift, but i do mot like to put "PIIX4{,E,M}" everywhere.
"PIIX4{,E,M}" all over clutters up the place, and i fear that printing
this to the user will generate more confusion than it will ever remove.
Instead i have adjusted the initial function comment to mention this so
that developers can rest assured in future that this will also be valid
for their future board enables.
Luc Verhaegen.