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$