On the most recent version of the Chromium flashrom effort, there was a patch for Apollo Lake. I have applied it to the latest, fixed up one issue in the get_target_bus_from_chipset() to return the right BBS strapping. It finds the Winbond chip and starts to read, and gets an error when reading the ROM using the HWSEQ style. I have tracked it down to the function that waits for complete, where it fails.
Any thoughts?
Thanks,
Tim Lewis
P.S. I have this working with other flash utilities, so I know that the hardware is working and the flash part is present and responds.
FAILED.p@p-desktop:~/Desktop/Blinkflash-Linux64-100.00.00.03$ sudo ./flashrom -p internal -r 123.bin -VV flashrom v0.9.7-unknown on Linux 4.4.0-21-generic (x86_64), built with libpci 3.2.1, GCC 4.8.4, little endian flashrom is free software, get the source code at http://www.flashrom.org
Initializing internal programmer No coreboot table found. get_target_bus_from_chipset() returns 0x10. Found chipset "Intel Apollolake" with PCI ID 8086:5af0. Enabling flash write... Vendor ID: 8086, Device ID: 5a96, BAR: fed01000
BIOS Lock Enable: disabled, BIOS Write Enable: enabled, BIOS_CNTL is 0x89 SPI BAR is = 0xfed01000 GCS = 0x89: BIOS Interface Lock-Down: enabled, Boot BIOS Straps: 0x0 (SPI) SPIBAR = 0xfed01000 + 0x0000 0x04: 0x3f00e000 (HSFSC) WARNING: SPI Configuration Lockdown activated. 0x08: 0x00000000 (FADDR) 0x50: 0x0000ffff (FRAP) BMWAG 0x00, BMRAG 0x00, BRWA 0xff, BRRA 0xff 0x54: 0x00000000 (FREG0: Flash Descriptor) 0x00000000-0x00000fff is read-write 0x58: 0x06fe0001 (FREG1: BIOS) 0x00001000-0x006fefff is read-write 0x5C: 0x00007fff (FREG2: Management Engine) Management Engine region is unused. 0x60: 0x00007fff (FREG3: Gigabit Ethernet) Gigabit Ethernet region is unused. 0x64: 0x00007fff (FREG4: Platform Data) Platform Data region is unused. 0x84: 0x00000000 (PR0, unused) 0x88: 0x00000000 (PR1, unused) 0x8C: 0x00000000 (PR2, unused) 0x90: 0x00000000 (PR3, unused) 0x94: 0x00000000 (PR4, unused) Reading flash descriptors mapped by the chipset via FDOC/FDOD... done. === Content Section === FLVALSIG 0x0ff0a55a FLMAP0 0x00040003 FLMAP1 0x13100208 FLMAP2 0x00000000
--- Details --- NR (Number of Regions): 1 FRBA (Flash Region Base Address): 0x040 NC (Number of Components): 1 FCBA (Flash Component Base Address): 0x030 ISL (ICH/PCH Strap Length): 19 FISBA/FPSBA (Flash ICH/PCH Strap Base Address): 0x100 NM (Number of Masters): 3 FMBA (Flash Master Base Address): 0x080 MSL/PSL (MCH/PROC Strap Length): 0 FMSBA (Flash MCH/PROC Strap Base Address): 0x000
=== Component Section === FLCOMP 0x649c02f4 FLILL 0xad604221
--- Details --- Component 1 density: 8 MB Component 2 is not used. Read Clock Frequency: reserved Read ID and Status Clock Freq.: 50 MHz Write and Erase Clock Freq.: 50 MHz Fast Read is supported. Fast Read Clock Frequency: 50 MHz Invalid instruction 0: 0x21 Invalid instruction 1: 0x42 Invalid instruction 2: 0x60 Invalid instruction 3: 0xad
=== Region Section === FLREG0 0x00000000 FLREG1 0x06fe0001
--- Details --- Region 0 (Descr.) 0x00000000 - 0x00000fff Region 1 (BIOS ) 0x00001000 - 0x006fefff
=== Master Section === FLMSTR1 0xffffff00 FLMSTR2 0xffffff00 FLMSTR3 0x7ff7ff00
--- Details --- Descr. BIOS ME GbE Platf. BIOS rw rw rw rw rw ME rw rw rw rw rw GbE rw rw rw w rw
SPI Read Configuration: prefetching enabled, caching enabled, OK. This programmer supports the following protocols: FWH, Programmer-specific. Probing for Winbond W25Q128.V, 0 kB: Found 1 attached SPI flash chip with a density of 8192 kB. There are 2048 erase blocks with 4096 B each. Found Winbond flash chip "W25Q128.V" (8192 kB, Programmer-specific) at physical address 0x0. Found Winbond flash chip "W25Q128.V" (8192 kB, Programmer-specific). === The test status of this chip may have been updated in the latest development version of flashrom. If you are running the latest development version, please email a report to flashrom@flashrom.org if any of the above operations work correctly for you with this flash part. Please include the flashrom output with the additional -V option for all operations you tested (-V, -Vr, -Vw, -VE), and mention which mainboard or programmer you tested. Please mention your board in the subject line. Thanks for your help! Reading flash... Reading 8388608 bytes starting at 0x000000. Transaction error between offset 0x00000000 and 0x0000003f (= 0x00000000 + 63) failed to read 0x0-0x7fffff Read operation failed! FAILED.p@p-desktop:~/Desktop/Blinkflash-Linux64-100.00.00.03$