Patchwork A quick hack to support AMD Family 16h SOC

login
register
about
Submitter Carl-Daniel Hailfinger
Date 2013-07-30 20:59:20
Message ID <51F82928.60507@gmx.net>
Download mbox | patch
Permalink /patch/3998/
State Superseded
Headers show

Comments

Carl-Daniel Hailfinger - 2013-07-30 20:59:20
Am 30.07.2013 20:55 schrieb Wei Hu:
> Attached is a log from flashrom -VVV -p internal -o /tmp/flashrom.log.
> Please let me know what else you want to collect.

Thanks!


> On Sun, Jul 28, 2013 at 3:38 PM, Carl-Daniel Hailfinger 
> <c-d.hailfinger.devel.2006@gmx.net> wrote:
>> Am 26.07.2013 23:31 schrieb Stefan Tauner:
>>> On Fri, 26 Jul 2013 12:28:48 -0700
>>> Wei Hu <wei@aristanetworks.com> wrote:
>>>> On Fri, Jul 26, 2013 at 12:18 AM, Carl-Daniel Hailfinger
>>>> <c-d.hailfinger.devel.2006@gmx.net> wrote:
>>>>>> I'll give you modified patch a test tomorrow.
>>>>> Please note that I expect problems with my patch. Not all of the FIFO
>>>>> management has been changed, and this might be the cause of error
>>>>> messages. Updated patch with more debugging at the end of this mail.
>>>> After changing the device ID to match 0x780e, your patch works for
>>>> both reading and writing. Writing is extremely slow though. I feel
>>>> like on this new FCH we should ditch the SB600 interface and
>>>> investigate the new programming interface. My current patch is more
>>>> like a band aid workaround.
>>> I plan to do that but for now it would be better than nothing, *but*
>>> this will break Hudson-2... I talked to Martin Roth from sage and he
>>> confirmed that although AMD changed PCI IDs with Hudson-1 the
>>> interface did only really change with Kabini/Temash.
>>>
>>> That explains also why Hudson-2 worked fine previously:
>>> http://marc.info/?l=flashrom&m=131853263731000
>>> Wang Qing Pei has tested his Hudson patch too probably before sending
>>> it to us but I don't know which system he used exactly.
>>>
>>> I'll try to get the Hudson-2 datasheets, but ATM I don't have them.
>>> We need a way to distinguish Kabini from the rest... since it is a SoC,
>>> we could match the pci ids of the root complex
>>> (00:00.0 Host bridge [0600]: Advanced Micro Devices [AMD] Family 16h
>>> Processor Root Complex [1022:1536] in my case), but we would need to
>>> maintain that for future models... Martin told me that they just read
>>> if the new registers are (non-)0xff and infer from that if they need to
>>> use the new interface.
>> New patch. Better heuristic (Martin's variant) for Kabini, more debug
>> prints.
>> The big challenge is to check whether this breaks Hudson variants before
>> Kabini.
>>
>> Please get some -VVV logs for a simple probe. Thanks!
>> # flashrom -o logfile.txt -VVV
>>
>> Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>

This patch should work at normal speed and use the correct FIFO pointer
registers on Kabini.
The code is not exactly pretty, but functional and should (in theory)
need no functional changes before commit.

Please check if read/write works at the expected speed. -VV is
sufficient this time.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Wei Hu - 2013-07-30 21:22:36
On Tue, Jul 30, 2013 at 1:59 PM, Carl-Daniel Hailfinger
<c-d.hailfinger.devel.2006@gmx.net> wrote:
> This patch should work at normal speed and use the correct FIFO pointer
> registers on Kabini.
> The code is not exactly pretty, but functional and should (in theory)
> need no functional changes before commit.
>
> Please check if read/write works at the expected speed. -VV is
> sufficient this time.


Reading the 4MB flash took 18 seconds, whereas writing took almost 3
minutes. Is it normal? On another system with Intel PCH writes were
way faster. There's another FIFO register at offset 0x80 in the new
Kabini interface, which can hopefully speed up things, but the
description is quite dense.

I'm attaching two -VV logs, one from reading and the other from writing.
flashrom v0.9.6.1-runknown on Linux 2.6.38.8.Ar-1355148.2013camerge (x86_64)
flashrom was built with libpci 3.1.7, GCC 4.5.1 20100924 (Red Hat 4.5.1-4), little endian
Command line (7 args): /root/flashrom -w /mnt/flash/amd.bin -p internal -VV -o /tmp/write.log
Calibrating delay loop... OS timer resolution is 1 usecs, 998M loops per second, 10 myus = 10 us, 100 myus = 100 us, 1000 myus = 1005 us, 10000 myus = 10039 us, 4 myus = 4 us, OK.
Initializing internal programmer
Found candidate at: 00000500-00000510
Found coreboot table at 0x00000500.
Found candidate at: 00000000-0000020c
Found coreboot table at 0x00000000.
coreboot table found at 0xbffee000.
coreboot header(24) checksum: 237f table(524) checksum: 48b9 entries: 14
Vendor ID: AMD, part ID: Olivehill
dmidecode execution unsuccessful - continuing without DMI info
Found chipset "AMD Hudson" with PCI ID 1022:780e. Enabling flash write... SPI base address is at 0xf0b6b700
Checking for AMD Kabini or later... using AMD Kabini SPI access method.
AltSpiCSEnable=0, SpiRomEnable=1, AbortEnable=0
PrefetchEnSPIFromIMC=0, PrefetchEnSPIFromHost=1, SpiOpEnInLpcMode=1
(0x4fcc8303) SpiReadMode/FastReadEnable=5, SpiArbEnable=1, SpiAccessMacRomEn=1, SpiHostAccessRomEn=1, ArbWaitCount=7, SpiBridgeDisable=1, SpiClkGate/DropOneClkOnRd=0
UseSpi100 is 1 (unsupported)
TpmSpeedNew is 16.6 MHz
AltSpeedNew is 16.6 MHz
FastSpeedNew is 66 MHz
NormSpeedNew is 33 MHz
GPIO11 used for SPI_DO
GPIO12 used for SPI_DI
GPIO31 used for SPI_HOLD
GPIO32 used for SPI_CS
GPIO47 used for SPI_CLK
IMC is not active.
ROM strap override is not active
OK.
No board enable found matching coreboot IDs vendor="AMD", model="Olivehill".
The following protocols are supported: LPC, FWH, SPI.
Probing for AMIC A25L05PT, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25L05PU, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25L10PT, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25L10PU, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25L20PT, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25L20PU, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25L40PT, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25L40PU, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25L80P, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25L16PT, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25L16PU, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25L512, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25L010, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25L020, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25L040, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25L080, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25L016, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25L032, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25LQ16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25LQ032/A25LQ32A, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25LQ64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT25DF021, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT25DF041A, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT25DF081, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT25DF081A, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT25DF161, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT25DF321, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT25DF321A, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT25DF641(A), 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT25DQ161, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT25F512, 64 kB: probe_spi_at25f: id1 0x60, id2 0x60
Probing for Atmel AT25F512A, 64 kB: probe_spi_at25f: id1 0x60, id2 0x60
Probing for Atmel AT25F512B, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT25F1024(A), 128 kB: probe_spi_at25f: id1 0x60, id2 0x60
Probing for Atmel AT25F2048, 256 kB: probe_spi_at25f: id1 0x60, id2 0x60
Probing for Atmel AT25F4096, 512 kB: probe_spi_at25f: id1 0x60, id2 0x60
Probing for Atmel AT25FS010, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT25FS040, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT26DF041, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT26DF081A, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT26DF161, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT26DF161A, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT26F004, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT45CS1282, 16896 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT45DB011D, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT45DB021D, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT45DB041D, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT45DB081D, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT45DB161D, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT45DB321C, 4224 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT45DB321D, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT45DB642D, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for ESMT F25L008A, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25B05, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25B05T, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25B10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25B10T, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25B20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25B20T, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25B40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25B40T, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25B80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25B80T, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25B16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25B16T, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25B32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25B32T, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25B64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25B64T, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25F05, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25F10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25F20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25F40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25F80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25F16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25F32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25F64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25Q40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25Q80(A), 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25Q16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25Q32(A/B), 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25Q64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25Q128, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25QH16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25QH32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25QH64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25QH128, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25S10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25S20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25S40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25S80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25S16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25S32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25S64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for GigaDevice GD25LQ32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for GigaDevice GD25Q512, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for GigaDevice GD25Q10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for GigaDevice GD25Q20(B), 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for GigaDevice GD25Q40(B), 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for GigaDevice GD25Q80(B), 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for GigaDevice GD25Q16(B), 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for GigaDevice GD25Q32(B), 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for GigaDevice GD25Q64(B), 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for GigaDevice GD25Q128B, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for GigaDevice GD25T80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Intel 25F160S33B8, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Intel 25F160S33T8, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Intel 25F320S33B8, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Intel 25F320S33T8, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Intel 25F640S33B8, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Intel 25F640S33T8, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25L512(E)/MX25V512(C), 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25L1005(C)/MX25L1006E, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25L2005(C), 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25L4005(A/C), 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25L8005/MX25V8005, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25L1605, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25L1605A/MX25L1606E, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25L1605D/MX25L1608D, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25L1635D, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25L1635E, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25L3205(A), 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25L3205D/MX25L3208D, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25L3206E, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25L3235D, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25L6405(D), 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25L6406E/MX25L6436E, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25L6445E, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25L12805(D), 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25U1635E, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25U3235E/F, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25U6435E/F, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M25P05-A, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M25P05, 64 kB: Ignoring RES in favour of RDID.
Probing for Micron/Numonyx/ST M25P10-A, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M25P10, 128 kB: Ignoring RES in favour of RDID.
Probing for Micron/Numonyx/ST M25P20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M25P20-old, 256 kB: Ignoring RES in favour of RDID.
Probing for Micron/Numonyx/ST M25P40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M25P40-old, 512 kB: Ignoring RES in favour of RDID.
Probing for Micron/Numonyx/ST M25P80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M25P16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M25P32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M25P64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M25P128, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M25PE10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M25PE20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M25PE40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M25PE80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M25PE16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M25PX80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M25PX16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M25PX32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M25PX64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M45PE10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M45PE20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M45PE40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M45PE80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M45PE16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST N25Q016, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST N25Q032..1E, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST N25Q032..3E, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST N25Q064..1E, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST N25Q064..3E, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST N25Q128..1E, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST N25Q128..3E, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Nantronics N25S10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Nantronics N25S20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Nantronics N25S40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Nantronics N25S80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Nantronics N25S16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for PMC Pm25LD256C, 32 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for PMC Pm25LD512(C), 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for PMC Pm25LD010(C), 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for PMC Pm25LD020(C), 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for PMC Pm25LD040(C), 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for PMC Pm25LV512(A), 64 kB: probe_spi_res3: id1 0x1515, id2 0x15
Probing for PMC Pm25LV010, 128 kB: probe_spi_res3: id1 0x1515, id2 0x15
Probing for PMC Pm25LV010A, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for PMC Pm25LV020, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for PMC Pm25LV040, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for PMC Pm25LV080B, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for PMC Pm25LV016B, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Sanyo LE25FW203A, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Sanyo LE25FW403A, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Sanyo LE25FW418A, 512 kB: probe_spi_res2: id1 0x15, id2 0x15
Probing for Sanyo LE25FW806, 1024 kB: probe_spi_res2: id1 0x15, id2 0x15
Probing for Sanyo LE25FW808, 1024 kB: probe_spi_res2: id1 0x15, id2 0x15
Probing for Spansion S25FL004A, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Spansion S25FL008A, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Spansion S25FL016A, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Spansion S25FL032A/P, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Spansion S25FL064A/P, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Spansion S25FL204K, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Spansion S25FL208K, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Spansion S25FL116K/S25FL216K, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Spansion S25FL128S......0, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for SST SST25LF040A, 512 kB: probe_spi_res2: id1 0x15, id2 0x15
Probing for SST SST25LF080(A), 1024 kB: probe_spi_res2: id1 0x15, id2 0x15
Probing for SST SST25VF010, 128 kB: probe_spi_rems: id1 0xef, id2 0x15
Probing for SST SST25VF016B, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for SST SST25VF032B, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for SST SST25VF064C, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for SST SST25VF040, 512 kB: probe_spi_rems: id1 0xef, id2 0x15
Probing for SST SST25VF040B, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for SST SST25VF040B.REMS, 512 kB: probe_spi_rems: id1 0xef, id2 0x15
Probing for SST SST25VF080B, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for SST SST25WF512, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for SST SST25WF010, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for SST SST25WF020, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for SST SST25WF040, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Winbond W25Q80.V, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Winbond W25Q16.V, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Winbond W25Q32.V, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Found Winbond flash chip "W25Q32.V" (4096 kB, SPI) at physical address 0xffc00000.
Chip status register is 0x00.
Probing for Winbond W25Q64.V, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Winbond W25Q128.V, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Winbond W25Q20.W, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Winbond W25Q40.W, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Winbond W25Q80.W, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Winbond W25Q16.W, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Winbond W25Q32.W, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Winbond W25Q64.W, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Winbond W25X10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Winbond W25X20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Winbond W25X40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Winbond W25X80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Winbond W25X16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Winbond W25X32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Winbond W25X64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Unknown SFDP-capable chip, 0 kB: SFDP revision = 1.0
SFDP number of parameter headers is 1 (NPH = 0).

SFDP parameter table header 0/0:
  ID 0x00, version 1.0
  Length 36 B, Parameter Table Pointer 0x000080
Parsing JEDEC flash parameter table... 
  3-Byte only addressing.
  Status register is non-volatile and the standard does not allow vendors to tell us whether EWSR/WREN is needed for status register writes - assuming EWSR.
  Write chunk size is at least 64 B.
  Flash chip size is 4096 kB.
  Block eraser 0: 1024 x 4096 B with opcode 0x20
  Tried to add a duplicate block eraser: 1024 x 4096 B with opcode 0x20.
  Block eraser 1: 128 x 32768 B with opcode 0x52
  Block eraser 2: 64 x 65536 B with opcode 0xd8
done.
Probing for AMIC unknown AMIC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel unknown Atmel SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon unknown Eon SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix unknown Macronix SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for PMC unknown PMC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for SST unknown SST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for ST unknown ST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Sanyo unknown Sanyo SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Winbond unknown Winbond (ex Nexcom) SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Generic unknown SPI chip (RDID), 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Generic unknown SPI chip (REMS), 0 kB: probe_spi_rems: id1 0xef, id2 0x15
Probing for AMIC A49LF040A, 512 kB: probe_jedec_common: id1 0x6a, id2 0xc0, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for Atmel AT49LH002, 256 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for Intel 82802AB, 512 kB: probe_82802ab: id1 0x6a, id2 0xc0, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for Intel 82802AC, 1024 kB: probe_82802ab: id1 0xeb, id2 0x4c, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for PMC Pm49FL002, 256 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for PMC Pm49FL004, 512 kB: probe_jedec_common: id1 0x6a, id2 0xc0, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for Sharp LHF00L04, 1024 kB: probe_82802ab: id1 0xeb, id2 0x4c, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF002A/B, 256 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF003A/B, 384 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF004A/B, 512 kB: probe_jedec_common: id1 0x6a, id2 0xc0, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF004C, 512 kB: probe_82802ab: id1 0x6a, id2 0xc0, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF008A, 1024 kB: probe_jedec_common: id1 0xeb, id2 0x4c, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF008C, 1024 kB: probe_82802ab: id1 0xeb, id2 0x4c, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF016C, 2048 kB: probe_82802ab: id1 0x17, id2 0x01, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF020, 256 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF020A, 256 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF040, 512 kB: probe_jedec_common: id1 0x6a, id2 0xc0, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF040B, 512 kB: probe_jedec_common: id1 0x6a, id2 0xc0, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF080A, 1024 kB: Chip lacks correct probe timing information, using default 10mS/40uS. probe_jedec_common: id1 0xeb, id2 0x4c, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF160C, 2048 kB: probe_82802ab: id1 0x17, id2 0x01, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for ST M50FLW040A, 512 kB: probe_82802ab: id1 0x6a, id2 0xc0, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for ST M50FLW040B, 512 kB: probe_82802ab: id1 0x6a, id2 0xc0, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for ST M50FLW080A, 1024 kB: probe_82802ab: id1 0xeb, id2 0x4c, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for ST M50FLW080B, 1024 kB: probe_82802ab: id1 0xeb, id2 0x4c, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for ST M50FW002, 256 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for ST M50FW016, 2048 kB: probe_82802ab: id1 0x17, id2 0x01, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for ST M50FW040, 512 kB: probe_82802ab: id1 0x6a, id2 0xc0, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for ST M50FW080, 1024 kB: probe_82802ab: id1 0xeb, id2 0x4c, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for ST M50LPW116, 2048 kB: probe_82802ab: id1 0x17, id2 0x01, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for Winbond W39V040A, 512 kB: probe_jedec_common: id1 0x6a, id2 0xc0, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for Winbond W39V040B, 512 kB: probe_jedec_common: id1 0x6a, id2 0xc0, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for Winbond W39V040C, 512 kB: probe_jedec_common: id1 0x6a, id2 0xc0, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for Winbond W39V040FA, 512 kB: probe_jedec_common: id1 0x6a, id2 0xc0, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for Winbond W39V040FB, 512 kB: probe_jedec_common: id1 0x6a, id2 0xc0, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for Winbond W39V040FC, 512 kB: probe_jedec_common: id1 0x6a, id2 0xc0, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for Winbond W39V080A, 1024 kB: probe_jedec_common: id1 0xeb, id2 0x4c, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for Winbond W49V002A, 256 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for Winbond W49V002FA, 256 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for Winbond W39V080FA, 1024 kB: probe_jedec_common: id1 0xeb, id2 0x4c, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for Winbond W39V080FA (dual mode), 512 kB: probe_jedec_common: id1 0x6a, id2 0xc0, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Found Winbond flash chip "W25Q32.V" (4096 kB, SPI).
This chip may contain one-time programmable memory. flashrom cannot read
and may never be able to write it, hence it may not be able to completely
clone the contents of this chip (see man page for details).
Block protection is disabled.
Flash image seems to be a legacy BIOS. Disabling coreboot-related checks.
Reading old flash chip contents... done.
Erasing and writing flash chip... Trying erase function 0... 0x000000-0x000fff:E, 0x001000-0x001fff:E, 0x002000-0x002fff:E, 0x003000-0x003fff:E, 0x004000-0x004fff:E, 0x005000-0x005fff:E, 0x006000-0x006fff:E, 0x007000-0x007fff:E, 0x008000-0x008fff:E, 0x009000-0x009fff:E, 0x00a000-0x00afff:E, 0x00b000-0x00bfff:E, 0x00c000-0x00cfff:E, 0x00d000-0x00dfff:E, 0x00e000-0x00efff:E, 0x00f000-0x00ffff:E, 0x010000-0x010fff:E, 0x011000-0x011fff:E, 0x012000-0x012fff:E, 0x013000-0x013fff:E, 0x014000-0x014fff:E, 0x015000-0x015fff:E, 0x016000-0x016fff:E, 0x017000-0x017fff:E, 0x018000-0x018fff:E, 0x019000-0x019fff:E, 0x01a000-0x01afff:E, 0x01b000-0x01bfff:E, 0x01c000-0x01cfff:E, 0x01d000-0x01dfff:E, 0x01e000-0x01efff:E, 0x01f000-0x01ffff:E, 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:E, 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:E, 0x044000-0x044fff:E, 0x045000-0x045fff:E, 0x046000-0x046fff:E, 0x047000-0x047fff:E, 0x048000-0x048fff:E, 0x049000-0x049fff:E, 0x04a000-0x04afff:E, 0x04b000-0x04bfff:E, 0x04c000-0x04cfff:E, 0x04d000-0x04dfff:E, 0x04e000-0x04efff:E, 0x04f000-0x04ffff:EW, 0x050000-0x050fff:EW, 0x051000-0x051fff:EW, 0x052000-0x052fff:EW, 0x053000-0x053fff:EW, 0x054000-0x054fff:EW, 0x055000-0x055fff:EW, 0x056000-0x056fff:EW, 0x057000-0x057fff:EW, 0x058000-0x058fff:EW, 0x059000-0x059fff:EW, 0x05a000-0x05afff:EW, 0x05b000-0x05bfff:EW, 0x05c000-0x05cfff:EW, 0x05d000-0x05dfff:EW, 0x05e000-0x05efff:EW, 0x05f000-0x05ffff:EW, 0x060000-0x060fff:EW, 0x061000-0x061fff:EW, 0x062000-0x062fff:EW, 0x063000-0x063fff:EW, 0x064000-0x064fff:EW, 0x065000-0x065fff:EW, 0x066000-0x066fff:EW, 0x067000-0x067fff:EW, 0x068000-0x068fff:EW, 0x069000-0x069fff:EW, 0x06a000-0x06afff:E, 0x06b000-0x06bfff:E, 0x06c000-0x06cfff:E, 0x06d000-0x06dfff:E, 0x06e000-0x06efff:E, 0x06f000-0x06ffff:EW, 0x070000-0x070fff:E, 0x071000-0x071fff:E, 0x072000-0x072fff:E, 0x073000-0x073fff:E, 0x074000-0x074fff:E, 0x075000-0x075fff:E, 0x076000-0x076fff:E, 0x077000-0x077fff:E, 0x078000-0x078fff:E, 0x079000-0x079fff:E, 0x07a000-0x07afff:E, 0x07b000-0x07bfff:E, 0x07c000-0x07cfff:E, 0x07d000-0x07dfff:E, 0x07e000-0x07efff:E, 0x07f000-0x07ffff:E, 0x080000-0x080fff:EW, 0x081000-0x081fff:EW, 0x082000-0x082fff:EW, 0x083000-0x083fff:EW, 0x084000-0x084fff:EW, 0x085000-0x085fff:EW, 0x086000-0x086fff:EW, 0x087000-0x087fff:EW, 0x088000-0x088fff:EW, 0x089000-0x089fff:EW, 0x08a000-0x08afff:EW, 0x08b000-0x08bfff:EW, 0x08c000-0x08cfff:EW, 0x08d000-0x08dfff:EW, 0x08e000-0x08efff:EW, 0x08f000-0x08ffff:EW, 0x090000-0x090fff:EW, 0x091000-0x091fff:EW, 0x092000-0x092fff:EW, 0x093000-0x093fff:EW, 0x094000-0x094fff:EW, 0x095000-0x095fff:EW, 0x096000-0x096fff:EW, 0x097000-0x097fff:EW, 0x098000-0x098fff:EW, 0x099000-0x099fff:EW, 0x09a000-0x09afff:EW, 0x09b000-0x09bfff:EW, 0x09c000-0x09cfff:EW, 0x09d000-0x09dfff:EW, 0x09e000-0x09efff:EW, 0x09f000-0x09ffff:EW, 0x0a0000-0x0a0fff:EW, 0x0a1000-0x0a1fff:EW, 0x0a2000-0x0a2fff:EW, 0x0a3000-0x0a3fff:EW, 0x0a4000-0x0a4fff:EW, 0x0a5000-0x0a5fff:EW, 0x0a6000-0x0a6fff:EW, 0x0a7000-0x0a7fff:EW, 0x0a8000-0x0a8fff:EW, 0x0a9000-0x0a9fff:EW, 0x0aa000-0x0aafff:EW, 0x0ab000-0x0abfff:EW, 0x0ac000-0x0acfff:EW, 0x0ad000-0x0adfff:EW, 0x0ae000-0x0aefff:EW, 0x0af000-0x0affff:EW, 0x0b0000-0x0b0fff:EW, 0x0b1000-0x0b1fff:EW, 0x0b2000-0x0b2fff:EW, 0x0b3000-0x0b3fff:EW, 0x0b4000-0x0b4fff:EW, 0x0b5000-0x0b5fff:EW, 0x0b6000-0x0b6fff:EW, 0x0b7000-0x0b7fff:EW, 0x0b8000-0x0b8fff:EW, 0x0b9000-0x0b9fff:EW, 0x0ba000-0x0bafff:EW, 0x0bb000-0x0bbfff:EW, 0x0bc000-0x0bcfff:EW, 0x0bd000-0x0bdfff:EW, 0x0be000-0x0befff:EW, 0x0bf000-0x0bffff:EW, 0x0c0000-0x0c0fff:EW, 0x0c1000-0x0c1fff:EW, 0x0c2000-0x0c2fff:EW, 0x0c3000-0x0c3fff:EW, 0x0c4000-0x0c4fff:EW, 0x0c5000-0x0c5fff:EW, 0x0c6000-0x0c6fff:EW, 0x0c7000-0x0c7fff:EW, 0x0c8000-0x0c8fff:EW, 0x0c9000-0x0c9fff:EW, 0x0ca000-0x0cafff:EW, 0x0cb000-0x0cbfff:EW, 0x0cc000-0x0ccfff:EW, 0x0cd000-0x0cdfff:EW, 0x0ce000-0x0cefff:EW, 0x0cf000-0x0cffff:EW, 0x0d0000-0x0d0fff:EW, 0x0d1000-0x0d1fff:EW, 0x0d2000-0x0d2fff:EW, 0x0d3000-0x0d3fff:EW, 0x0d4000-0x0d4fff:EW, 0x0d5000-0x0d5fff:EW, 0x0d6000-0x0d6fff:EW, 0x0d7000-0x0d7fff:EW, 0x0d8000-0x0d8fff:EW, 0x0d9000-0x0d9fff:EW, 0x0da000-0x0dafff:EW, 0x0db000-0x0dbfff:EW, 0x0dc000-0x0dcfff:EW, 0x0dd000-0x0ddfff:EW, 0x0de000-0x0defff:EW, 0x0df000-0x0dffff:EW, 0x0e0000-0x0e0fff:EW, 0x0e1000-0x0e1fff:EW, 0x0e2000-0x0e2fff:EW, 0x0e3000-0x0e3fff:EW, 0x0e4000-0x0e4fff:EW, 0x0e5000-0x0e5fff:EW, 0x0e6000-0x0e6fff:EW, 0x0e7000-0x0e7fff:EW, 0x0e8000-0x0e8fff:EW, 0x0e9000-0x0e9fff:EW, 0x0ea000-0x0eafff:EW, 0x0eb000-0x0ebfff:EW, 0x0ec000-0x0ecfff:EW, 0x0ed000-0x0edfff:EW, 0x0ee000-0x0eefff:EW, 0x0ef000-0x0effff:EW, 0x0f0000-0x0f0fff:EW, 0x0f1000-0x0f1fff:EW, 0x0f2000-0x0f2fff:EW, 0x0f3000-0x0f3fff:EW, 0x0f4000-0x0f4fff:EW, 0x0f5000-0x0f5fff:EW, 0x0f6000-0x0f6fff:EW, 0x0f7000-0x0f7fff:EW, 0x0f8000-0x0f8fff:EW, 0x0f9000-0x0f9fff:EW, 0x0fa000-0x0fafff:EW, 0x0fb000-0x0fbfff:EW, 0x0fc000-0x0fcfff:EW, 0x0fd000-0x0fdfff:EW, 0x0fe000-0x0fefff:EW, 0x0ff000-0x0fffff:EW, 0x100000-0x100fff:EW, 0x101000-0x101fff:EW, 0x102000-0x102fff:EW, 0x103000-0x103fff:EW, 0x104000-0x104fff:EW, 0x105000-0x105fff:EW, 0x106000-0x106fff:EW, 0x107000-0x107fff:EW, 0x108000-0x108fff:EW, 0x109000-0x109fff:EW, 0x10a000-0x10afff:EW, 0x10b000-0x10bfff:EW, 0x10c000-0x10cfff:EW, 0x10d000-0x10dfff:EW, 0x10e000-0x10efff:EW, 0x10f000-0x10ffff:EW, 0x110000-0x110fff:EW, 0x111000-0x111fff:EW, 0x112000-0x112fff:EW, 0x113000-0x113fff:EW, 0x114000-0x114fff:EW, 0x115000-0x115fff:EW, 0x116000-0x116fff:EW, 0x117000-0x117fff:EW, 0x118000-0x118fff:EW, 0x119000-0x119fff:EW, 0x11a000-0x11afff:EW, 0x11b000-0x11bfff:EW, 0x11c000-0x11cfff:EW, 0x11d000-0x11dfff:EW, 0x11e000-0x11efff:EW, 0x11f000-0x11ffff:EW, 0x120000-0x120fff:EW, 0x121000-0x121fff:EW, 0x122000-0x122fff:EW, 0x123000-0x123fff:EW, 0x124000-0x124fff:EW, 0x125000-0x125fff:EW, 0x126000-0x126fff:EW, 0x127000-0x127fff:EW, 0x128000-0x128fff:EW, 0x129000-0x129fff:EW, 0x12a000-0x12afff:EW, 0x12b000-0x12bfff:EW, 0x12c000-0x12cfff:EW, 0x12d000-0x12dfff:EW, 0x12e000-0x12efff:EW, 0x12f000-0x12ffff:EW, 0x130000-0x130fff:EW, 0x131000-0x131fff:EW, 0x132000-0x132fff:EW, 0x133000-0x133fff:EW, 0x134000-0x134fff:EW, 0x135000-0x135fff:EW, 0x136000-0x136fff:EW, 0x137000-0x137fff:EW, 0x138000-0x138fff:EW, 0x139000-0x139fff:EW, 0x13a000-0x13afff:EW, 0x13b000-0x13bfff:EW, 0x13c000-0x13cfff:EW, 0x13d000-0x13dfff:EW, 0x13e000-0x13efff:EW, 0x13f000-0x13ffff:EW, 0x140000-0x140fff:EW, 0x141000-0x141fff:EW, 0x142000-0x142fff:EW, 0x143000-0x143fff:EW, 0x144000-0x144fff:EW, 0x145000-0x145fff:EW, 0x146000-0x146fff:EW, 0x147000-0x147fff:EW, 0x148000-0x148fff:EW, 0x149000-0x149fff:EW, 0x14a000-0x14afff:EW, 0x14b000-0x14bfff:EW, 0x14c000-0x14cfff:EW, 0x14d000-0x14dfff:EW, 0x14e000-0x14efff:EW, 0x14f000-0x14ffff:EW, 0x150000-0x150fff:EW, 0x151000-0x151fff:EW, 0x152000-0x152fff:EW, 0x153000-0x153fff:EW, 0x154000-0x154fff:EW, 0x155000-0x155fff:EW, 0x156000-0x156fff:EW, 0x157000-0x157fff:EW, 0x158000-0x158fff:EW, 0x159000-0x159fff:EW, 0x15a000-0x15afff:EW, 0x15b000-0x15bfff:EW, 0x15c000-0x15cfff:EW, 0x15d000-0x15dfff:EW, 0x15e000-0x15efff:EW, 0x15f000-0x15ffff:EW, 0x160000-0x160fff:EW, 0x161000-0x161fff:EW, 0x162000-0x162fff:EW, 0x163000-0x163fff:EW, 0x164000-0x164fff:EW, 0x165000-0x165fff:EW, 0x166000-0x166fff:EW, 0x167000-0x167fff:EW, 0x168000-0x168fff:EW, 0x169000-0x169fff:EW, 0x16a000-0x16afff:EW, 0x16b000-0x16bfff:EW, 0x16c000-0x16cfff:EW, 0x16d000-0x16dfff:EW, 0x16e000-0x16efff:EW, 0x16f000-0x16ffff:EW, 0x170000-0x170fff:EW, 0x171000-0x171fff:EW, 0x172000-0x172fff:EW, 0x173000-0x173fff:EW, 0x174000-0x174fff:EW, 0x175000-0x175fff:EW, 0x176000-0x176fff:EW, 0x177000-0x177fff:EW, 0x178000-0x178fff:EW, 0x179000-0x179fff:EW, 0x17a000-0x17afff:EW, 0x17b000-0x17bfff:EW, 0x17c000-0x17cfff:EW, 0x17d000-0x17dfff:EW, 0x17e000-0x17efff:EW, 0x17f000-0x17ffff:EW, 0x180000-0x180fff:EW, 0x181000-0x181fff:EW, 0x182000-0x182fff:EW, 0x183000-0x183fff:EW, 0x184000-0x184fff:EW, 0x185000-0x185fff:EW, 0x186000-0x186fff:EW, 0x187000-0x187fff:EW, 0x188000-0x188fff:EW, 0x189000-0x189fff:EW, 0x18a000-0x18afff:EW, 0x18b000-0x18bfff:EW, 0x18c000-0x18cfff:EW, 0x18d000-0x18dfff:EW, 0x18e000-0x18efff:EW, 0x18f000-0x18ffff:EW, 0x190000-0x190fff:EW, 0x191000-0x191fff:EW, 0x192000-0x192fff:EW, 0x193000-0x193fff:EW, 0x194000-0x194fff:EW, 0x195000-0x195fff:EW, 0x196000-0x196fff:EW, 0x197000-0x197fff:EW, 0x198000-0x198fff:EW, 0x199000-0x199fff:EW, 0x19a000-0x19afff:EW, 0x19b000-0x19bfff:EW, 0x19c000-0x19cfff:EW, 0x19d000-0x19dfff:EW, 0x19e000-0x19efff:EW, 0x19f000-0x19ffff:EW, 0x1a0000-0x1a0fff:EW, 0x1a1000-0x1a1fff:EW, 0x1a2000-0x1a2fff:EW, 0x1a3000-0x1a3fff:EW, 0x1a4000-0x1a4fff:EW, 0x1a5000-0x1a5fff:EW, 0x1a6000-0x1a6fff:EW, 0x1a7000-0x1a7fff:EW, 0x1a8000-0x1a8fff:EW, 0x1a9000-0x1a9fff:EW, 0x1aa000-0x1aafff:EW, 0x1ab000-0x1abfff:EW, 0x1ac000-0x1acfff:EW, 0x1ad000-0x1adfff:EW, 0x1ae000-0x1aefff:EW, 0x1af000-0x1affff:EW, 0x1b0000-0x1b0fff:EW, 0x1b1000-0x1b1fff:EW, 0x1b2000-0x1b2fff:EW, 0x1b3000-0x1b3fff:EW, 0x1b4000-0x1b4fff:EW, 0x1b5000-0x1b5fff:EW, 0x1b6000-0x1b6fff:EW, 0x1b7000-0x1b7fff:E, 0x1b8000-0x1b8fff:E, 0x1b9000-0x1b9fff:E, 0x1ba000-0x1bafff:E, 0x1bb000-0x1bbfff:E, 0x1bc000-0x1bcfff:E, 0x1bd000-0x1bdfff:E, 0x1be000-0x1befff:E, 0x1bf000-0x1bffff:E, 0x1c0000-0x1c0fff:E, 0x1c1000-0x1c1fff:E, 0x1c2000-0x1c2fff:E, 0x1c3000-0x1c3fff:E, 0x1c4000-0x1c4fff:E, 0x1c5000-0x1c5fff:E, 0x1c6000-0x1c6fff:E, 0x1c7000-0x1c7fff:E, 0x1c8000-0x1c8fff:E, 0x1c9000-0x1c9fff:E, 0x1ca000-0x1cafff:E, 0x1cb000-0x1cbfff:E, 0x1cc000-0x1ccfff:E, 0x1cd000-0x1cdfff:E, 0x1ce000-0x1cefff:E, 0x1cf000-0x1cffff:E, 0x1d0000-0x1d0fff:E, 0x1d1000-0x1d1fff:E, 0x1d2000-0x1d2fff:E, 0x1d3000-0x1d3fff:E, 0x1d4000-0x1d4fff:E, 0x1d5000-0x1d5fff:E, 0x1d6000-0x1d6fff:E, 0x1d7000-0x1d7fff:E, 0x1d8000-0x1d8fff:E, 0x1d9000-0x1d9fff:E, 0x1da000-0x1dafff:E, 0x1db000-0x1dbfff:E, 0x1dc000-0x1dcfff:E, 0x1dd000-0x1ddfff:E, 0x1de000-0x1defff:E, 0x1df000-0x1dffff:E, 0x1e0000-0x1e0fff:E, 0x1e1000-0x1e1fff:E, 0x1e2000-0x1e2fff:E, 0x1e3000-0x1e3fff:E, 0x1e4000-0x1e4fff:E, 0x1e5000-0x1e5fff:E, 0x1e6000-0x1e6fff:E, 0x1e7000-0x1e7fff:E, 0x1e8000-0x1e8fff:E, 0x1e9000-0x1e9fff:E, 0x1ea000-0x1eafff:E, 0x1eb000-0x1ebfff:E, 0x1ec000-0x1ecfff:E, 0x1ed000-0x1edfff:E, 0x1ee000-0x1eefff:E, 0x1ef000-0x1effff:E, 0x1f0000-0x1f0fff:E, 0x1f1000-0x1f1fff:E, 0x1f2000-0x1f2fff:E, 0x1f3000-0x1f3fff:E, 0x1f4000-0x1f4fff:E, 0x1f5000-0x1f5fff:E, 0x1f6000-0x1f6fff:E, 0x1f7000-0x1f7fff:E, 0x1f8000-0x1f8fff:E, 0x1f9000-0x1f9fff:E, 0x1fa000-0x1fafff:E, 0x1fb000-0x1fbfff:E, 0x1fc000-0x1fcfff:E, 0x1fd000-0x1fdfff:E, 0x1fe000-0x1fefff:E, 0x1ff000-0x1fffff:E, 0x200000-0x200fff:E, 0x201000-0x201fff:E, 0x202000-0x202fff:E, 0x203000-0x203fff:E, 0x204000-0x204fff:E, 0x205000-0x205fff:E, 0x206000-0x206fff:E, 0x207000-0x207fff:E, 0x208000-0x208fff:E, 0x209000-0x209fff:E, 0x20a000-0x20afff:E, 0x20b000-0x20bfff:E, 0x20c000-0x20cfff:E, 0x20d000-0x20dfff:E, 0x20e000-0x20efff:E, 0x20f000-0x20ffff:E, 0x210000-0x210fff:E, 0x211000-0x211fff:E, 0x212000-0x212fff:E, 0x213000-0x213fff:E, 0x214000-0x214fff:E, 0x215000-0x215fff:E, 0x216000-0x216fff:E, 0x217000-0x217fff:E, 0x218000-0x218fff:E, 0x219000-0x219fff:E, 0x21a000-0x21afff:E, 0x21b000-0x21bfff:E, 0x21c000-0x21cfff:E, 0x21d000-0x21dfff:E, 0x21e000-0x21efff:E, 0x21f000-0x21ffff:E, 0x220000-0x220fff:E, 0x221000-0x221fff:E, 0x222000-0x222fff:E, 0x223000-0x223fff:E, 0x224000-0x224fff:E, 0x225000-0x225fff:E, 0x226000-0x226fff:E, 0x227000-0x227fff:E, 0x228000-0x228fff:E, 0x229000-0x229fff:E, 0x22a000-0x22afff:E, 0x22b000-0x22bfff:E, 0x22c000-0x22cfff:E, 0x22d000-0x22dfff:E, 0x22e000-0x22efff:E, 0x22f000-0x22ffff:E, 0x230000-0x230fff:E, 0x231000-0x231fff:E, 0x232000-0x232fff:E, 0x233000-0x233fff:E, 0x234000-0x234fff:E, 0x235000-0x235fff:E, 0x236000-0x236fff:E, 0x237000-0x237fff:E, 0x238000-0x238fff:E, 0x239000-0x239fff:E, 0x23a000-0x23afff:E, 0x23b000-0x23bfff:E, 0x23c000-0x23cfff:E, 0x23d000-0x23dfff:E, 0x23e000-0x23efff:E, 0x23f000-0x23ffff:E, 0x240000-0x240fff:E, 0x241000-0x241fff:E, 0x242000-0x242fff:E, 0x243000-0x243fff:E, 0x244000-0x244fff:E, 0x245000-0x245fff:E, 0x246000-0x246fff:E, 0x247000-0x247fff:E, 0x248000-0x248fff:E, 0x249000-0x249fff:E, 0x24a000-0x24afff:E, 0x24b000-0x24bfff:E, 0x24c000-0x24cfff:E, 0x24d000-0x24dfff:E, 0x24e000-0x24efff:E, 0x24f000-0x24ffff:E, 0x250000-0x250fff:E, 0x251000-0x251fff:E, 0x252000-0x252fff:E, 0x253000-0x253fff:E, 0x254000-0x254fff:E, 0x255000-0x255fff:E, 0x256000-0x256fff:E, 0x257000-0x257fff:E, 0x258000-0x258fff:E, 0x259000-0x259fff:E, 0x25a000-0x25afff:E, 0x25b000-0x25bfff:E, 0x25c000-0x25cfff:E, 0x25d000-0x25dfff:E, 0x25e000-0x25efff:E, 0x25f000-0x25ffff:E, 0x260000-0x260fff:E, 0x261000-0x261fff:E, 0x262000-0x262fff:E, 0x263000-0x263fff:E, 0x264000-0x264fff:E, 0x265000-0x265fff:E, 0x266000-0x266fff:E, 0x267000-0x267fff:E, 0x268000-0x268fff:E, 0x269000-0x269fff:E, 0x26a000-0x26afff:E, 0x26b000-0x26bfff:E, 0x26c000-0x26cfff:E, 0x26d000-0x26dfff:E, 0x26e000-0x26efff:E, 0x26f000-0x26ffff:E, 0x270000-0x270fff:E, 0x271000-0x271fff:E, 0x272000-0x272fff:E, 0x273000-0x273fff:E, 0x274000-0x274fff:E, 0x275000-0x275fff:E, 0x276000-0x276fff:E, 0x277000-0x277fff:E, 0x278000-0x278fff:E, 0x279000-0x279fff:E, 0x27a000-0x27afff:E, 0x27b000-0x27bfff:E, 0x27c000-0x27cfff:E, 0x27d000-0x27dfff:E, 0x27e000-0x27efff:E, 0x27f000-0x27ffff:E, 0x280000-0x280fff:E, 0x281000-0x281fff:E, 0x282000-0x282fff:E, 0x283000-0x283fff:E, 0x284000-0x284fff:E, 0x285000-0x285fff:E, 0x286000-0x286fff:E, 0x287000-0x287fff:E, 0x288000-0x288fff:E, 0x289000-0x289fff:E, 0x28a000-0x28afff:E, 0x28b000-0x28bfff:E, 0x28c000-0x28cfff:E, 0x28d000-0x28dfff:E, 0x28e000-0x28efff:E, 0x28f000-0x28ffff:E, 0x290000-0x290fff:E, 0x291000-0x291fff:E, 0x292000-0x292fff:E, 0x293000-0x293fff:E, 0x294000-0x294fff:E, 0x295000-0x295fff:E, 0x296000-0x296fff:E, 0x297000-0x297fff:E, 0x298000-0x298fff:E, 0x299000-0x299fff:E, 0x29a000-0x29afff:E, 0x29b000-0x29bfff:E, 0x29c000-0x29cfff:E, 0x29d000-0x29dfff:E, 0x29e000-0x29efff:E, 0x29f000-0x29ffff:E, 0x2a0000-0x2a0fff:E, 0x2a1000-0x2a1fff:E, 0x2a2000-0x2a2fff:E, 0x2a3000-0x2a3fff:E, 0x2a4000-0x2a4fff:E, 0x2a5000-0x2a5fff:E, 0x2a6000-0x2a6fff:E, 0x2a7000-0x2a7fff:E, 0x2a8000-0x2a8fff:E, 0x2a9000-0x2a9fff:E, 0x2aa000-0x2aafff:E, 0x2ab000-0x2abfff:E, 0x2ac000-0x2acfff:E, 0x2ad000-0x2adfff:E, 0x2ae000-0x2aefff:E, 0x2af000-0x2affff:E, 0x2b0000-0x2b0fff:E, 0x2b1000-0x2b1fff:E, 0x2b2000-0x2b2fff:E, 0x2b3000-0x2b3fff:E, 0x2b4000-0x2b4fff:E, 0x2b5000-0x2b5fff:E, 0x2b6000-0x2b6fff:E, 0x2b7000-0x2b7fff:E, 0x2b8000-0x2b8fff:E, 0x2b9000-0x2b9fff:E, 0x2ba000-0x2bafff:E, 0x2bb000-0x2bbfff:E, 0x2bc000-0x2bcfff:E, 0x2bd000-0x2bdfff:E, 0x2be000-0x2befff:E, 0x2bf000-0x2bffff:E, 0x2c0000-0x2c0fff:E, 0x2c1000-0x2c1fff:E, 0x2c2000-0x2c2fff:E, 0x2c3000-0x2c3fff:E, 0x2c4000-0x2c4fff:E, 0x2c5000-0x2c5fff:E, 0x2c6000-0x2c6fff:E, 0x2c7000-0x2c7fff:E, 0x2c8000-0x2c8fff:E, 0x2c9000-0x2c9fff:E, 0x2ca000-0x2cafff:E, 0x2cb000-0x2cbfff:E, 0x2cc000-0x2ccfff:E, 0x2cd000-0x2cdfff:E, 0x2ce000-0x2cefff:E, 0x2cf000-0x2cffff:E, 0x2d0000-0x2d0fff:E, 0x2d1000-0x2d1fff:E, 0x2d2000-0x2d2fff:E, 0x2d3000-0x2d3fff:E, 0x2d4000-0x2d4fff:E, 0x2d5000-0x2d5fff:E, 0x2d6000-0x2d6fff:E, 0x2d7000-0x2d7fff:E, 0x2d8000-0x2d8fff:E, 0x2d9000-0x2d9fff:E, 0x2da000-0x2dafff:E, 0x2db000-0x2dbfff:E, 0x2dc000-0x2dcfff:E, 0x2dd000-0x2ddfff:E, 0x2de000-0x2defff:E, 0x2df000-0x2dffff:E, 0x2e0000-0x2e0fff:E, 0x2e1000-0x2e1fff:E, 0x2e2000-0x2e2fff:E, 0x2e3000-0x2e3fff:E, 0x2e4000-0x2e4fff:E, 0x2e5000-0x2e5fff:E, 0x2e6000-0x2e6fff:E, 0x2e7000-0x2e7fff:E, 0x2e8000-0x2e8fff:E, 0x2e9000-0x2e9fff:E, 0x2ea000-0x2eafff:E, 0x2eb000-0x2ebfff:E, 0x2ec000-0x2ecfff:E, 0x2ed000-0x2edfff:E, 0x2ee000-0x2eefff:E, 0x2ef000-0x2effff:E, 0x2f0000-0x2f0fff:E, 0x2f1000-0x2f1fff:E, 0x2f2000-0x2f2fff:E, 0x2f3000-0x2f3fff:E, 0x2f4000-0x2f4fff:E, 0x2f5000-0x2f5fff:E, 0x2f6000-0x2f6fff:E, 0x2f7000-0x2f7fff:E, 0x2f8000-0x2f8fff:E, 0x2f9000-0x2f9fff:E, 0x2fa000-0x2fafff:E, 0x2fb000-0x2fbfff:E, 0x2fc000-0x2fcfff:E, 0x2fd000-0x2fdfff:E, 0x2fe000-0x2fefff:E, 0x2ff000-0x2fffff:E, 0x300000-0x300fff:E, 0x301000-0x301fff:E, 0x302000-0x302fff:E, 0x303000-0x303fff:E, 0x304000-0x304fff:E, 0x305000-0x305fff:E, 0x306000-0x306fff:E, 0x307000-0x307fff:E, 0x308000-0x308fff:E, 0x309000-0x309fff:E, 0x30a000-0x30afff:E, 0x30b000-0x30bfff:E, 0x30c000-0x30cfff:E, 0x30d000-0x30dfff:E, 0x30e000-0x30efff:E, 0x30f000-0x30ffff:E, 0x310000-0x310fff:E, 0x311000-0x311fff:E, 0x312000-0x312fff:E, 0x313000-0x313fff:E, 0x314000-0x314fff:E, 0x315000-0x315fff:E, 0x316000-0x316fff:E, 0x317000-0x317fff:E, 0x318000-0x318fff:E, 0x319000-0x319fff:E, 0x31a000-0x31afff:E, 0x31b000-0x31bfff:E, 0x31c000-0x31cfff:E, 0x31d000-0x31dfff:E, 0x31e000-0x31efff:E, 0x31f000-0x31ffff:E, 0x320000-0x320fff:E, 0x321000-0x321fff:E, 0x322000-0x322fff:E, 0x323000-0x323fff:E, 0x324000-0x324fff:E, 0x325000-0x325fff:E, 0x326000-0x326fff:E, 0x327000-0x327fff:E, 0x328000-0x328fff:E, 0x329000-0x329fff:E, 0x32a000-0x32afff:E, 0x32b000-0x32bfff:E, 0x32c000-0x32cfff:E, 0x32d000-0x32dfff:E, 0x32e000-0x32efff:E, 0x32f000-0x32ffff:E, 0x330000-0x330fff:E, 0x331000-0x331fff:E, 0x332000-0x332fff:E, 0x333000-0x333fff:E, 0x334000-0x334fff:E, 0x335000-0x335fff:E, 0x336000-0x336fff:E, 0x337000-0x337fff:E, 0x338000-0x338fff:E, 0x339000-0x339fff:E, 0x33a000-0x33afff:E, 0x33b000-0x33bfff:E, 0x33c000-0x33cfff:E, 0x33d000-0x33dfff:E, 0x33e000-0x33efff:E, 0x33f000-0x33ffff:E, 0x340000-0x340fff:E, 0x341000-0x341fff:E, 0x342000-0x342fff:E, 0x343000-0x343fff:E, 0x344000-0x344fff:E, 0x345000-0x345fff:E, 0x346000-0x346fff:E, 0x347000-0x347fff:E, 0x348000-0x348fff:E, 0x349000-0x349fff:E, 0x34a000-0x34afff:E, 0x34b000-0x34bfff:E, 0x34c000-0x34cfff:E, 0x34d000-0x34dfff:E, 0x34e000-0x34efff:E, 0x34f000-0x34ffff:E, 0x350000-0x350fff:E, 0x351000-0x351fff:E, 0x352000-0x352fff:E, 0x353000-0x353fff:E, 0x354000-0x354fff:E, 0x355000-0x355fff:E, 0x356000-0x356fff:E, 0x357000-0x357fff:E, 0x358000-0x358fff:E, 0x359000-0x359fff:E, 0x35a000-0x35afff:E, 0x35b000-0x35bfff:E, 0x35c000-0x35cfff:E, 0x35d000-0x35dfff:E, 0x35e000-0x35efff:E, 0x35f000-0x35ffff:E, 0x360000-0x360fff:EW, 0x361000-0x361fff:EW, 0x362000-0x362fff:EW, 0x363000-0x363fff:EW, 0x364000-0x364fff:EW, 0x365000-0x365fff:EW, 0x366000-0x366fff:EW, 0x367000-0x367fff:EW, 0x368000-0x368fff:EW, 0x369000-0x369fff:EW, 0x36a000-0x36afff:EW, 0x36b000-0x36bfff:EW, 0x36c000-0x36cfff:EW, 0x36d000-0x36dfff:EW, 0x36e000-0x36efff:EW, 0x36f000-0x36ffff:EW, 0x370000-0x370fff:EW, 0x371000-0x371fff:EW, 0x372000-0x372fff:EW, 0x373000-0x373fff:EW, 0x374000-0x374fff:EW, 0x375000-0x375fff:EW, 0x376000-0x376fff:EW, 0x377000-0x377fff:EW, 0x378000-0x378fff:EW, 0x379000-0x379fff:EW, 0x37a000-0x37afff:EW, 0x37b000-0x37bfff:EW, 0x37c000-0x37cfff:EW, 0x37d000-0x37dfff:EW, 0x37e000-0x37efff:EW, 0x37f000-0x37ffff:EW, 0x380000-0x380fff:EW, 0x381000-0x381fff:EW, 0x382000-0x382fff:EW, 0x383000-0x383fff:EW, 0x384000-0x384fff:EW, 0x385000-0x385fff:EW, 0x386000-0x386fff:EW, 0x387000-0x387fff:EW, 0x388000-0x388fff:EW, 0x389000-0x389fff:EW, 0x38a000-0x38afff:EW, 0x38b000-0x38bfff:EW, 0x38c000-0x38cfff:EW, 0x38d000-0x38dfff:EW, 0x38e000-0x38efff:EW, 0x38f000-0x38ffff:EW, 0x390000-0x390fff:EW, 0x391000-0x391fff:EW, 0x392000-0x392fff:EW, 0x393000-0x393fff:W, 0x394000-0x394fff:W, 0x395000-0x395fff:W, 0x396000-0x396fff:W, 0x397000-0x397fff:W, 0x398000-0x398fff:W, 0x399000-0x399fff:W, 0x39a000-0x39afff:W, 0x39b000-0x39bfff:W, 0x39c000-0x39cfff:W, 0x39d000-0x39dfff:W, 0x39e000-0x39efff:W, 0x39f000-0x39ffff:W, 0x3a0000-0x3a0fff:W, 0x3a1000-0x3a1fff:W, 0x3a2000-0x3a2fff:W, 0x3a3000-0x3a3fff:W, 0x3a4000-0x3a4fff:W, 0x3a5000-0x3a5fff:W, 0x3a6000-0x3a6fff:W, 0x3a7000-0x3a7fff:W, 0x3a8000-0x3a8fff:W, 0x3a9000-0x3a9fff:W, 0x3aa000-0x3aafff:W, 0x3ab000-0x3abfff:W, 0x3ac000-0x3acfff:W, 0x3ad000-0x3adfff:W, 0x3ae000-0x3aefff:W, 0x3af000-0x3affff:W, 0x3b0000-0x3b0fff:W, 0x3b1000-0x3b1fff:W, 0x3b2000-0x3b2fff:W, 0x3b3000-0x3b3fff:W, 0x3b4000-0x3b4fff:W, 0x3b5000-0x3b5fff:W, 0x3b6000-0x3b6fff:W, 0x3b7000-0x3b7fff:W, 0x3b8000-0x3b8fff:W, 0x3b9000-0x3b9fff:W, 0x3ba000-0x3bafff:W, 0x3bb000-0x3bbfff:W, 0x3bc000-0x3bcfff:W, 0x3bd000-0x3bdfff:W, 0x3be000-0x3befff:W, 0x3bf000-0x3bffff:W, 0x3c0000-0x3c0fff:W, 0x3c1000-0x3c1fff:W, 0x3c2000-0x3c2fff:W, 0x3c3000-0x3c3fff:W, 0x3c4000-0x3c4fff:W, 0x3c5000-0x3c5fff:W, 0x3c6000-0x3c6fff:W, 0x3c7000-0x3c7fff:W, 0x3c8000-0x3c8fff:W, 0x3c9000-0x3c9fff:W, 0x3ca000-0x3cafff:W, 0x3cb000-0x3cbfff:W, 0x3cc000-0x3ccfff:W, 0x3cd000-0x3cdfff:W, 0x3ce000-0x3cefff:W, 0x3cf000-0x3cffff:W, 0x3d0000-0x3d0fff:W, 0x3d1000-0x3d1fff:W, 0x3d2000-0x3d2fff:W, 0x3d3000-0x3d3fff:W, 0x3d4000-0x3d4fff:W, 0x3d5000-0x3d5fff:W, 0x3d6000-0x3d6fff:W, 0x3d7000-0x3d7fff:W, 0x3d8000-0x3d8fff:W, 0x3d9000-0x3d9fff:W, 0x3da000-0x3dafff:W, 0x3db000-0x3dbfff:W, 0x3dc000-0x3dcfff:W, 0x3dd000-0x3ddfff:W, 0x3de000-0x3defff:W, 0x3df000-0x3dffff:W, 0x3e0000-0x3e0fff:W, 0x3e1000-0x3e1fff:W, 0x3e2000-0x3e2fff:W, 0x3e3000-0x3e3fff:W, 0x3e4000-0x3e4fff:W, 0x3e5000-0x3e5fff:W, 0x3e6000-0x3e6fff:W, 0x3e7000-0x3e7fff:W, 0x3e8000-0x3e8fff:W, 0x3e9000-0x3e9fff:W, 0x3ea000-0x3eafff:W, 0x3eb000-0x3ebfff:W, 0x3ec000-0x3ecfff:S, 0x3ed000-0x3edfff:S, 0x3ee000-0x3eefff:S, 0x3ef000-0x3effff:E, 0x3f0000-0x3f0fff:E, 0x3f1000-0x3f1fff:E, 0x3f2000-0x3f2fff:E, 0x3f3000-0x3f3fff:E, 0x3f4000-0x3f4fff:E, 0x3f5000-0x3f5fff:E, 0x3f6000-0x3f6fff:E, 0x3f7000-0x3f7fff:E, 0x3f8000-0x3f8fff:E, 0x3f9000-0x3f9fff:S, 0x3fa000-0x3fafff:S, 0x3fb000-0x3fbfff:S, 0x3fc000-0x3fcfff:S, 0x3fd000-0x3fdfff:W, 0x3fe000-0x3fefff:W, 0x3ff000-0x3fffff:EW
Erase/write done.
Verifying flash... VERIFIED.
flashrom v0.9.6.1-runknown on Linux 2.6.38.8.Ar-1355148.2013camerge (x86_64)
flashrom was built with libpci 3.1.7, GCC 4.5.1 20100924 (Red Hat 4.5.1-4), little endian
Command line (7 args): /root/flashrom -r /tmp/rom.bin -p internal -VV -o /tmp/read.log
Calibrating delay loop... OS timer resolution is 1 usecs, 998M loops per second, 10 myus = 10 us, 100 myus = 100 us, 1000 myus = 1006 us, 10000 myus = 10036 us, 4 myus = 4 us, OK.
Initializing internal programmer
Found candidate at: 00000500-00000510
Found coreboot table at 0x00000500.
Found candidate at: 00000000-0000020c
Found coreboot table at 0x00000000.
coreboot table found at 0xbffee000.
coreboot header(24) checksum: 237f table(524) checksum: 48b9 entries: 14
Vendor ID: AMD, part ID: Olivehill
dmidecode execution unsuccessful - continuing without DMI info
Found chipset "AMD Hudson" with PCI ID 1022:780e. Enabling flash write... SPI base address is at 0xf0b6b700
Checking for AMD Kabini or later... using AMD Kabini SPI access method.
AltSpiCSEnable=0, SpiRomEnable=1, AbortEnable=0
PrefetchEnSPIFromIMC=0, PrefetchEnSPIFromHost=1, SpiOpEnInLpcMode=1
(0x4fcc8303) SpiReadMode/FastReadEnable=5, SpiArbEnable=1, SpiAccessMacRomEn=1, SpiHostAccessRomEn=1, ArbWaitCount=7, SpiBridgeDisable=1, SpiClkGate/DropOneClkOnRd=0
UseSpi100 is 1 (unsupported)
TpmSpeedNew is 16.6 MHz
AltSpeedNew is 16.6 MHz
FastSpeedNew is 66 MHz
NormSpeedNew is 33 MHz
GPIO11 used for SPI_DO
GPIO12 used for SPI_DI
GPIO31 used for SPI_HOLD
GPIO32 used for SPI_CS
GPIO47 used for SPI_CLK
IMC is not active.
ROM strap override is not active
OK.
No board enable found matching coreboot IDs vendor="AMD", model="Olivehill".
The following protocols are supported: LPC, FWH, SPI.
Probing for AMIC A25L05PT, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25L05PU, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25L10PT, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25L10PU, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25L20PT, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25L20PU, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25L40PT, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25L40PU, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25L80P, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25L16PT, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25L16PU, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25L512, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25L010, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25L020, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25L040, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25L080, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25L016, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25L032, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25LQ16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25LQ032/A25LQ32A, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for AMIC A25LQ64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT25DF021, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT25DF041A, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT25DF081, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT25DF081A, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT25DF161, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT25DF321, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT25DF321A, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT25DF641(A), 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT25DQ161, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT25F512, 64 kB: probe_spi_at25f: id1 0x60, id2 0x60
Probing for Atmel AT25F512A, 64 kB: probe_spi_at25f: id1 0x60, id2 0x60
Probing for Atmel AT25F512B, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT25F1024(A), 128 kB: probe_spi_at25f: id1 0x60, id2 0x60
Probing for Atmel AT25F2048, 256 kB: probe_spi_at25f: id1 0x60, id2 0x60
Probing for Atmel AT25F4096, 512 kB: probe_spi_at25f: id1 0x60, id2 0x60
Probing for Atmel AT25FS010, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT25FS040, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT26DF041, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT26DF081A, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT26DF161, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT26DF161A, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT26F004, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT45CS1282, 16896 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT45DB011D, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT45DB021D, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT45DB041D, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT45DB081D, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT45DB161D, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT45DB321C, 4224 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT45DB321D, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel AT45DB642D, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for ESMT F25L008A, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25B05, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25B05T, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25B10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25B10T, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25B20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25B20T, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25B40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25B40T, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25B80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25B80T, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25B16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25B16T, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25B32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25B32T, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25B64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25B64T, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25F05, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25F10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25F20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25F40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25F80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25F16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25F32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25F64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25Q40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25Q80(A), 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25Q16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25Q32(A/B), 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25Q64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25Q128, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25QH16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25QH32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25QH64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25QH128, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25S10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25S20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25S40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25S80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25S16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25S32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon EN25S64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for GigaDevice GD25LQ32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for GigaDevice GD25Q512, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for GigaDevice GD25Q10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for GigaDevice GD25Q20(B), 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for GigaDevice GD25Q40(B), 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for GigaDevice GD25Q80(B), 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for GigaDevice GD25Q16(B), 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for GigaDevice GD25Q32(B), 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for GigaDevice GD25Q64(B), 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for GigaDevice GD25Q128B, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for GigaDevice GD25T80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Intel 25F160S33B8, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Intel 25F160S33T8, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Intel 25F320S33B8, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Intel 25F320S33T8, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Intel 25F640S33B8, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Intel 25F640S33T8, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25L512(E)/MX25V512(C), 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25L1005(C)/MX25L1006E, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25L2005(C), 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25L4005(A/C), 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25L8005/MX25V8005, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25L1605, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25L1605A/MX25L1606E, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25L1605D/MX25L1608D, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25L1635D, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25L1635E, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25L3205(A), 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25L3205D/MX25L3208D, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25L3206E, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25L3235D, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25L6405(D), 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25L6406E/MX25L6436E, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25L6445E, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25L12805(D), 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25U1635E, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25U3235E/F, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix MX25U6435E/F, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M25P05-A, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M25P05, 64 kB: Ignoring RES in favour of RDID.
Probing for Micron/Numonyx/ST M25P10-A, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M25P10, 128 kB: Ignoring RES in favour of RDID.
Probing for Micron/Numonyx/ST M25P20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M25P20-old, 256 kB: Ignoring RES in favour of RDID.
Probing for Micron/Numonyx/ST M25P40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M25P40-old, 512 kB: Ignoring RES in favour of RDID.
Probing for Micron/Numonyx/ST M25P80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M25P16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M25P32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M25P64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M25P128, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M25PE10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M25PE20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M25PE40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M25PE80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M25PE16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M25PX80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M25PX16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M25PX32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M25PX64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M45PE10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M45PE20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M45PE40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M45PE80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST M45PE16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST N25Q016, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST N25Q032..1E, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST N25Q032..3E, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST N25Q064..1E, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST N25Q064..3E, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST N25Q128..1E, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Micron/Numonyx/ST N25Q128..3E, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Nantronics N25S10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Nantronics N25S20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Nantronics N25S40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Nantronics N25S80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Nantronics N25S16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for PMC Pm25LD256C, 32 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for PMC Pm25LD512(C), 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for PMC Pm25LD010(C), 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for PMC Pm25LD020(C), 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for PMC Pm25LD040(C), 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for PMC Pm25LV512(A), 64 kB: probe_spi_res3: id1 0x1515, id2 0x15
Probing for PMC Pm25LV010, 128 kB: probe_spi_res3: id1 0x1515, id2 0x15
Probing for PMC Pm25LV010A, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for PMC Pm25LV020, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for PMC Pm25LV040, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for PMC Pm25LV080B, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for PMC Pm25LV016B, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Sanyo LE25FW203A, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Sanyo LE25FW403A, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Sanyo LE25FW418A, 512 kB: probe_spi_res2: id1 0x15, id2 0x15
Probing for Sanyo LE25FW806, 1024 kB: probe_spi_res2: id1 0x15, id2 0x15
Probing for Sanyo LE25FW808, 1024 kB: probe_spi_res2: id1 0x15, id2 0x15
Probing for Spansion S25FL004A, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Spansion S25FL008A, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Spansion S25FL016A, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Spansion S25FL032A/P, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Spansion S25FL064A/P, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Spansion S25FL204K, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Spansion S25FL208K, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Spansion S25FL116K/S25FL216K, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Spansion S25FL128S......0, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for SST SST25LF040A, 512 kB: probe_spi_res2: id1 0x15, id2 0x15
Probing for SST SST25LF080(A), 1024 kB: probe_spi_res2: id1 0x15, id2 0x15
Probing for SST SST25VF010, 128 kB: probe_spi_rems: id1 0xef, id2 0x15
Probing for SST SST25VF016B, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for SST SST25VF032B, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for SST SST25VF064C, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for SST SST25VF040, 512 kB: probe_spi_rems: id1 0xef, id2 0x15
Probing for SST SST25VF040B, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for SST SST25VF040B.REMS, 512 kB: probe_spi_rems: id1 0xef, id2 0x15
Probing for SST SST25VF080B, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for SST SST25WF512, 64 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for SST SST25WF010, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for SST SST25WF020, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for SST SST25WF040, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Winbond W25Q80.V, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Winbond W25Q16.V, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Winbond W25Q32.V, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Found Winbond flash chip "W25Q32.V" (4096 kB, SPI) at physical address 0xffc00000.
Chip status register is 0x00.
Probing for Winbond W25Q64.V, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Winbond W25Q128.V, 16384 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Winbond W25Q20.W, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Winbond W25Q40.W, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Winbond W25Q80.W, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Winbond W25Q16.W, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Winbond W25Q32.W, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Winbond W25Q64.W, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Winbond W25X10, 128 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Winbond W25X20, 256 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Winbond W25X40, 512 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Winbond W25X80, 1024 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Winbond W25X16, 2048 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Winbond W25X32, 4096 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Winbond W25X64, 8192 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Unknown SFDP-capable chip, 0 kB: SFDP revision = 1.0
SFDP number of parameter headers is 1 (NPH = 0).

SFDP parameter table header 0/0:
  ID 0x00, version 1.0
  Length 36 B, Parameter Table Pointer 0x000080
Parsing JEDEC flash parameter table... 
  3-Byte only addressing.
  Status register is non-volatile and the standard does not allow vendors to tell us whether EWSR/WREN is needed for status register writes - assuming EWSR.
  Write chunk size is at least 64 B.
  Flash chip size is 4096 kB.
  Block eraser 0: 1024 x 4096 B with opcode 0x20
  Tried to add a duplicate block eraser: 1024 x 4096 B with opcode 0x20.
  Block eraser 1: 128 x 32768 B with opcode 0x52
  Block eraser 2: 64 x 65536 B with opcode 0xd8
done.
Probing for AMIC unknown AMIC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Atmel unknown Atmel SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Eon unknown Eon SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Macronix unknown Macronix SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for PMC unknown PMC SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for SST unknown SST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for ST unknown ST SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Sanyo unknown Sanyo SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Winbond unknown Winbond (ex Nexcom) SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Generic unknown SPI chip (RDID), 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4016
Probing for Generic unknown SPI chip (REMS), 0 kB: probe_spi_rems: id1 0xef, id2 0x15
Probing for AMIC A49LF040A, 512 kB: probe_jedec_common: id1 0x6a, id2 0xc0, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for Atmel AT49LH002, 256 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for Intel 82802AB, 512 kB: probe_82802ab: id1 0x6a, id2 0xc0, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for Intel 82802AC, 1024 kB: probe_82802ab: id1 0xeb, id2 0x4c, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for PMC Pm49FL002, 256 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for PMC Pm49FL004, 512 kB: probe_jedec_common: id1 0x6a, id2 0xc0, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for Sharp LHF00L04, 1024 kB: probe_82802ab: id1 0xeb, id2 0x4c, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF002A/B, 256 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF003A/B, 384 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF004A/B, 512 kB: probe_jedec_common: id1 0x6a, id2 0xc0, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF004C, 512 kB: probe_82802ab: id1 0x6a, id2 0xc0, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF008A, 1024 kB: probe_jedec_common: id1 0xeb, id2 0x4c, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF008C, 1024 kB: probe_82802ab: id1 0xeb, id2 0x4c, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF016C, 2048 kB: probe_82802ab: id1 0x17, id2 0x01, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF020, 256 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF020A, 256 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF040, 512 kB: probe_jedec_common: id1 0x6a, id2 0xc0, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF040B, 512 kB: probe_jedec_common: id1 0x6a, id2 0xc0, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF080A, 1024 kB: Chip lacks correct probe timing information, using default 10mS/40uS. probe_jedec_common: id1 0xeb, id2 0x4c, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for SST SST49LF160C, 2048 kB: probe_82802ab: id1 0x17, id2 0x01, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for ST M50FLW040A, 512 kB: probe_82802ab: id1 0x6a, id2 0xc0, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for ST M50FLW040B, 512 kB: probe_82802ab: id1 0x6a, id2 0xc0, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for ST M50FLW080A, 1024 kB: probe_82802ab: id1 0xeb, id2 0x4c, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for ST M50FLW080B, 1024 kB: probe_82802ab: id1 0xeb, id2 0x4c, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for ST M50FW002, 256 kB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for ST M50FW016, 2048 kB: probe_82802ab: id1 0x17, id2 0x01, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for ST M50FW040, 512 kB: probe_82802ab: id1 0x6a, id2 0xc0, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for ST M50FW080, 1024 kB: probe_82802ab: id1 0xeb, id2 0x4c, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for ST M50LPW116, 2048 kB: probe_82802ab: id1 0x17, id2 0x01, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for Winbond W39V040A, 512 kB: probe_jedec_common: id1 0x6a, id2 0xc0, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for Winbond W39V040B, 512 kB: probe_jedec_common: id1 0x6a, id2 0xc0, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for Winbond W39V040C, 512 kB: probe_jedec_common: id1 0x6a, id2 0xc0, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for Winbond W39V040FA, 512 kB: probe_jedec_common: id1 0x6a, id2 0xc0, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for Winbond W39V040FB, 512 kB: probe_jedec_common: id1 0x6a, id2 0xc0, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for Winbond W39V040FC, 512 kB: probe_jedec_common: id1 0x6a, id2 0xc0, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for Winbond W39V080A, 1024 kB: probe_jedec_common: id1 0xeb, id2 0x4c, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for Winbond W49V002A, 256 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for Winbond W49V002FA, 256 kB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for Winbond W39V080FA, 1024 kB: probe_jedec_common: id1 0xeb, id2 0x4c, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Probing for Winbond W39V080FA (dual mode), 512 kB: probe_jedec_common: id1 0x6a, id2 0xc0, id1 parity violation, id1 is normal flash content, id2 is normal flash content
Found Winbond flash chip "W25Q32.V" (4096 kB, SPI).
This chip may contain one-time programmable memory. flashrom cannot read
and may never be able to write it, hence it may not be able to completely
clone the contents of this chip (see man page for details).
Block protection is disabled.
Reading flash... done.
Carl-Daniel Hailfinger - 2013-07-30 22:08:28
Am 30.07.2013 23:22 schrieb Wei Hu:
> On Tue, Jul 30, 2013 at 1:59 PM, Carl-Daniel Hailfinger
> <c-d.hailfinger.devel.2006@gmx.net> wrote:
>> This patch should work at normal speed and use the correct FIFO pointer
>> registers on Kabini.
>> The code is not exactly pretty, but functional and should (in theory)
>> need no functional changes before commit.
>>
>> Please check if read/write works at the expected speed. -VV is
>> sufficient this time.
>
> Reading the 4MB flash took 18 seconds, whereas writing took almost 3
> minutes. Is it normal? On another system with Intel PCH writes were
> way faster. There's another FIFO register at offset 0x80 in the new
> Kabini interface, which can hopefully speed up things, but the
> description is quite dense.
>
> I'm attaching two -VV logs, one from reading and the other from writing.

Thanks! This means my code works well.

The following timings are straight from the W25Q32BV datasheet. They may
be completely unrealistic. Typical erase time for that chip is around 30
seconds for a sectorwise chip erase (without overhead). The typical
write time for that chip (using 5-byte chunks due to the short FIFO for
SB600) would be around 600 seconds. Typical write time for that chip
with the long Kabini FIFO would be 45 seconds.
Add initial read time, sectorwise chip erase time, erase-verify time
(full chip read), write time, write-verify time (full chip read) and the
write time suddenly looks pretty reasonable.

Most important for me was to get the FIFO pointers right for Kabini.
Speed issues can be dealt with after the flashrom 0.9.7 release (right
now I'm just trying to fix things).

That said, the datasheet is rather unclear about the effect of
UseSpi100=1, and I'd like to set it to 0.

By the way, the data which enabled me to fix the FIFO stuff for Kabini
(because the datasheets have room for improvement) is here:
http://paste.flashrom.org/view.php?id=1718

Regards,
Carl-Daniel
Wei Hu - 2013-07-30 22:10:37
On Tue, Jul 30, 2013 at 3:08 PM, Carl-Daniel Hailfinger
<c-d.hailfinger.devel.2006@gmx.net> wrote:
> The following timings are straight from the W25Q32BV datasheet. They may
> be completely unrealistic. Typical erase time for that chip is around 30
> seconds for a sectorwise chip erase (without overhead). The typical
> write time for that chip (using 5-byte chunks due to the short FIFO for
> SB600) would be around 600 seconds. Typical write time for that chip
> with the long Kabini FIFO would be 45 seconds.
> Add initial read time, sectorwise chip erase time, erase-verify time
> (full chip read), write time, write-verify time (full chip read) and the
> write time suddenly looks pretty reasonable.

Thanks for looking up the datasheet! I totally forgot the differences
between flash chips.

Patch

Index: flashrom-kabini/sb600spi.c
===================================================================
--- flashrom-kabini/sb600spi.c	(Revision 1704)
+++ flashrom-kabini/sb600spi.c	(Arbeitskopie)
@@ -4,7 +4,7 @@ 
  * Copyright (C) 2008 Wang Qingpei <Qingpei.Wang@amd.com>
  * Copyright (C) 2008 Joe Bao <Zheng.Bao@amd.com>
  * Copyright (C) 2008 Advanced Micro Devices, Inc.
- * Copyright (C) 2009, 2010 Carl-Daniel Hailfinger
+ * Copyright (C) 2009, 2010, 2013 Carl-Daniel Hailfinger
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -45,6 +45,8 @@ 
 
 static uint8_t *sb600_spibar = NULL;
 
+static int kabini_method = 0;
+
 static void reset_internal_fifo_pointer(void)
 {
 	mmio_writeb(mmio_readb(sb600_spibar + 2) | 0x10, sb600_spibar + 2);
@@ -54,33 +56,67 @@ 
 		msg_pspew("reset\n");
 }
 
-static int compare_internal_fifo_pointer(uint8_t want)
+static int check_internal_fifo_pointer(uint8_t have, uint8_t want)
 {
+	if (have != want) {
+		msg_perr("AMD SPI FIFO pointer corruption! Pointer is %d, wanted %d\n", have, want);
+		msg_perr("Something else is accessing the flash chip and causes random corruption.\n"
+			 "Please stop all applications and drivers and IPMI which access the flash chip.\n");
+		return 1;
+	}
+	msg_pspew("AMD SPI FIFO pointer is %d, wanted %d\n", have, want);
+	return 0;
+}
+
+static int compare_internal_kabini_fifo_write_pointer(uint8_t want)
+{
 	uint8_t tmp;
 
+	tmp = mmio_readb(sb600_spibar + 0x4d) & 0x7f;
+	return check_internal_fifo_pointer(tmp, want);
+}
+
+static int compare_internal_kabini_fifo_read_pointer(uint8_t want)
+{
+	uint8_t tmp;
+
+	tmp = mmio_readb(sb600_spibar + 0x4e) & 0x7f;
+	return check_internal_fifo_pointer(tmp, want);
+}
+
+static int compare_internal_sb600_fifo_pointer(uint8_t want)
+{
+	uint8_t tmp;
+
 	tmp = mmio_readb(sb600_spibar + 0xd) & 0x07;
 	want &= 0x7;
-	if (want != tmp) {
-		msg_perr("FIFO pointer corruption! Pointer is %d, wanted %d\n", tmp, want);
-		msg_perr("Something else is accessing the flash chip and "
-			 "causes random corruption.\nPlease stop all "
-			 "applications and drivers and IPMI which access the "
-			 "flash chip.\n");
-		return 1;
-	} else {
-		msg_pspew("SB600 FIFO pointer is %d, wanted %d\n", tmp, want);
-		return 0;
-	}
+	return check_internal_fifo_pointer(tmp, want);
 }
 
+#if 0
 static int reset_compare_internal_fifo_pointer(uint8_t want)
 {
 	int ret;
 
+#if 0
+	if (kabini_method) {
+		uint8_t tmp1;
+		mmio_writeb(7, sb600_spibar + 0x1e);
+		tmp = mmio_readb(sb600_spibar + 0x1f);
+		msg_pspew("Kabini SPIDataFifoPtr %d/%d, ", tmp, want);
+		tmp = mmio_readb(sb600_spibar + 0xd) & 0x07;
+		msg_pspew("FifoPtr %d/%d, ", tmp, want & 0x07);
+		tmp = mmio_readb(sb600_spibar + 0x4d) & 0x7f;
+		tmp1 = mmio_readb(sb600_spibar + 0x4e) & 0x7f;
+		msg_pspew("FifoWrPtr/FifoRdPtr %d/%d\n", tmp, tmp1);
+	}
+#endif
+	
 	ret = compare_internal_fifo_pointer(want);
 	reset_internal_fifo_pointer();
 	return ret;
 }
+#endif
 
 static void execute_command(void)
 {
@@ -99,7 +135,7 @@ 
 	/* First byte is cmd which can not being sent through FIFO. */
 	unsigned char cmd = *writearr++;
 	unsigned int readoffby1;
-	unsigned char readwrite;
+	unsigned char readwrite = 0;
 
 	writecnt--;
 
@@ -118,15 +154,21 @@ 
 		return SPI_INVALID_LENGTH;
 	}
 
-	/* This is a workaround for a bug in SB600 and SB700. If we only send
-	 * an opcode and no additional data/address, the SPI controller will
-	 * read one byte too few from the chip. Basically, the last byte of
-	 * the chip response is discarded and will not end up in the FIFO.
-	 * It is unclear if the CS# line is set high too early as well.
-	 */
-	readoffby1 = (writecnt) ? 0 : 1;
-	readwrite = (readcnt + readoffby1) << 4 | (writecnt);
-	mmio_writeb(readwrite, sb600_spibar + 1);
+	if (kabini_method) {
+		/* Use the extended TxByteCount and RxByteCount register. */
+		mmio_writeb(writecnt, sb600_spibar + 0x48);
+		mmio_writeb(readcnt, sb600_spibar + 0x4b);
+	} else {
+		/* This is a workaround for a bug in SB600 and SB700. If we only send
+		 * an opcode and no additional data/address, the SPI controller will
+		 * read one byte too few from the chip. Basically, the last byte of
+		 * the chip response is discarded and will not end up in the FIFO.
+		 * It is unclear if the CS# line is set high too early as well.
+		 */
+		readoffby1 = (writecnt) ? 0 : 1;
+		readwrite = (readcnt + readoffby1) << 4 | (writecnt);
+		mmio_writeb(readwrite, sb600_spibar + 1);
+	}
 	mmio_writeb(cmd, sb600_spibar + 0);
 
 	/* Before we use the FIFO, reset it first. */
@@ -139,16 +181,29 @@ 
 		mmio_writeb(*writearr, sb600_spibar + 0xC);
 	}
 	msg_pspew("\n");
+	if (kabini_method) {
+		if (compare_internal_kabini_fifo_write_pointer(writecnt))
+			return SPI_PROGRAMMER_ERROR;
+	} else {
+		if (compare_internal_sb600_fifo_pointer(writecnt))
+			return SPI_PROGRAMMER_ERROR;
+	}
 
 	/*
 	 * We should send the data by sequence, which means we need to reset
 	 * the FIFO pointer to the first byte we want to send.
 	 */
-	if (reset_compare_internal_fifo_pointer(writecnt))
-		return SPI_PROGRAMMER_ERROR;
+	reset_internal_fifo_pointer();
 
 	msg_pspew("Executing: \n");
 	execute_command();
+	if (kabini_method) {
+		if (compare_internal_kabini_fifo_write_pointer(writecnt + readcnt))
+			return SPI_PROGRAMMER_ERROR;
+	} else {
+		if (compare_internal_sb600_fifo_pointer(writecnt + readcnt))
+			return SPI_PROGRAMMER_ERROR;
+	}
 
 	/*
 	 * After the command executed, we should find out the index of the
@@ -161,8 +216,7 @@ 
 	 * the opcode, the FIFO already stores the response from the chip.
 	 * Usually, the chip will respond with 0x00 or 0xff.
 	 */
-	if (reset_compare_internal_fifo_pointer(writecnt + readcnt))
-		return SPI_PROGRAMMER_ERROR;
+	reset_internal_fifo_pointer();
 
 	/* Skip the bytes we sent. */
 	msg_pspew("Skipping: ");
@@ -171,27 +225,53 @@ 
 		msg_pspew("[%02x]", cmd);
 	}
 	msg_pspew("\n");
-	if (compare_internal_fifo_pointer(writecnt))
-		return SPI_PROGRAMMER_ERROR;
 
+	if (kabini_method) {
+		if (compare_internal_kabini_fifo_read_pointer(writecnt))
+			return SPI_PROGRAMMER_ERROR;
+	} else {
+		if (compare_internal_sb600_fifo_pointer(writecnt))
+			return SPI_PROGRAMMER_ERROR;
+	}
+
 	msg_pspew("Reading: ");
 	for (count = 0; count < readcnt; count++, readarr++) {
 		*readarr = mmio_readb(sb600_spibar + 0xC);
 		msg_pspew("[%02x]", *readarr);
 	}
 	msg_pspew("\n");
-	if (reset_compare_internal_fifo_pointer(readcnt + writecnt))
-		return SPI_PROGRAMMER_ERROR;
 
-	if (mmio_readb(sb600_spibar + 1) != readwrite) {
-		msg_perr("Unexpected change in SB600 read/write count!\n");
-		msg_perr("Something else is accessing the flash chip and "
-			 "causes random corruption.\nPlease stop all "
-			 "applications and drivers and IPMI which access the "
-			 "flash chip.\n");
-		return SPI_PROGRAMMER_ERROR;
+	if (kabini_method) {
+		if (compare_internal_kabini_fifo_read_pointer(writecnt + readcnt))
+			return SPI_PROGRAMMER_ERROR;
+	} else {
+		if (compare_internal_sb600_fifo_pointer(writecnt + readcnt))
+			return SPI_PROGRAMMER_ERROR;
 	}
+	reset_internal_fifo_pointer();
 
+	if (kabini_method) {
+		uint8_t tmp_wc = mmio_readb(sb600_spibar + 0x48);
+		uint8_t tmp_rc = mmio_readb(sb600_spibar + 0x4b);
+		if ((tmp_rc != readcnt) || (tmp_wc != writecnt)) {
+			msg_perr("Unexpected change in Kabini read/write count: %i/%i instead of %i/%i!\n",
+				 tmp_rc, tmp_wc, readcnt, writecnt);
+			msg_perr("Something else is accessing the flash chip and causes random corruption.\n"
+				 "Please stop all applications and drivers and IPMI which access the flash "
+				 "chip.\n");
+			return SPI_PROGRAMMER_ERROR;
+		}
+	} else {
+		uint8_t tmp_rw = mmio_readb(sb600_spibar + 1);
+		if (tmp_rw != readwrite) {
+			msg_perr("Unexpected change in SB600 read/write count: %i instead of %i!\n", tmp_rw,
+				 readwrite);
+			msg_perr("Something else is accessing the flash chip and causes random corruption.\n"
+				 "Please stop all applications and drivers and IPMI which access the flash "
+				 "chip.\n");
+			return SPI_PROGRAMMER_ERROR;
+		}
+	}
 	return 0;
 }
 
@@ -245,8 +325,8 @@ 
 	uint32_t tmp;
 	uint8_t reg;
 	bool amd_imc_force = false;
-	static const char *const speed_names[4] = {
-		"66/reserved", "33", "22", "16.5"
+	static const char *const speed_names[8] = {
+		"66 MHz", "33 MHz", "22 MHz", "16.6 MHz", "100 MHz", "Reserved", "Reserved", "800 kHz"
 	};
 
 	char *arg = extract_programmer_param("amd_imc_force");
@@ -281,6 +361,30 @@ 
 	 */
 	sb600_spibar += tmp & 0xfff;
 
+	/* AMD Kabini has a different SPI interface. */
+	kabini_method = 0;
+	if (dev->device_id == 0x780e) {
+		/* The PCI ID of the LPC bridge doesn't change between Hudson-2 and Kabini (Hudson-3) although
+		 * they use different SPI interfaces. ID 0x780e is common for all Hudson variants. This
+		 * heuristic accesses the SPI interface MMIO BAR at locations beyond those supported by
+		 * Hudson-2 and earlier in the hope of getting 0xff readback on older chipsets and non-0xff
+		 * readback on Kabini and newer chipsets.
+		 */
+		int i;
+		msg_pdbg("Checking for AMD Kabini or later... ");
+		for (i = 0x20; i <= 0x4f; i++) {
+			if (mmio_readb(sb600_spibar + i) != 0xff) {
+				kabini_method = 1;
+				break;
+			}
+		}
+		if (kabini_method)
+			msg_pdbg("using AMD Kabini SPI access method.\n");
+		else
+			msg_pdbg("not found.\n");
+	}
+
+	/* FIXME: Check all accesses below for Kabini incompatibilities. */
 	tmp = pci_read_long(dev, 0xa0);
 	msg_pdbg("AltSpiCSEnable=%i, SpiRomEnable=%i, "
 		     "AbortEnable=%i\n", tmp & 0x1, (tmp & 0x2) >> 1,
@@ -300,15 +404,28 @@ 
 	 * SB700 or later, reads and writes will be corrupted. Abort in this
 	 * case. Make sure to avoid this check on SB600.
 	 */
-	msg_pdbg("(0x%08" PRIx32 ") fastReadEnable=%u, SpiArbEnable=%i, SpiAccessMacRomEn=%i, "
+	msg_pdbg("(0x%08" PRIx32 ") SpiReadMode/FastReadEnable=%i, SpiArbEnable=%i, SpiAccessMacRomEn=%i, "
 		     "SpiHostAccessRomEn=%i, ArbWaitCount=%i, "
-		     "SpiBridgeDisable=%i, DropOneClkOnRd=%i\n",
-		     tmp, (tmp >> 18) & 0x1,
+		     "SpiBridgeDisable=%i, SpiClkGate/DropOneClkOnRd=%i\n",
+		     tmp, ((tmp >> 28) & 0x6) | ((tmp >> 18) & 0x1),
 		     (tmp >> 19) & 0x1, (tmp >> 22) & 0x1,
 		     (tmp >> 23) & 0x1, (tmp >> 24) & 0x7,
 		     (tmp >> 27) & 0x1, (tmp >> 28) & 0x1);
-	tmp = (mmio_readb(sb600_spibar + 0xd) >> 4) & 0x3;
-	msg_pdbg("NormSpeed is %s MHz\n", speed_names[tmp]);
+	if (kabini_method) {
+		tmp = mmio_readb(sb600_spibar + 0x20) & 0x1;
+		msg_pdbg("UseSpi100 is %i (%s)\n", tmp, tmp ? "unsupported" : "OK");
+		tmp = mmio_readw(sb600_spibar + 0x22);
+		msg_pdbg("TpmSpeedNew is %s\n", speed_names[tmp & 0xf]);
+		tmp >>= 4;
+		msg_pdbg("AltSpeedNew is %s\n", speed_names[tmp & 0xf]);
+		tmp >>= 4;
+		msg_pdbg("FastSpeedNew is %s\n", speed_names[tmp & 0xf]);
+		tmp >>= 4;
+		msg_pdbg("NormSpeedNew is %s\n", speed_names[tmp & 0xf]);
+	} else {
+		tmp = (mmio_readb(sb600_spibar + 0xd) >> 4) & 0x3;
+		msg_pdbg("NormSpeed is %s MHz\n", speed_names[tmp]);
+	}
 
 	/* Look for the SMBus device. */
 	smbus_dev = pci_dev_find(0x1002, 0x4385);