Patchwork Support for S25FL127S

login
register
about
Submitter Jernej Škrabec
Date 2014-11-24 22:59:15
Message ID <1196251334.54290.1416869955832.JavaMail.root@planet.si>
Download mbox | patch
Permalink /patch/4250/
State Changes Requested
Headers show

Comments

Jernej Škrabec - 2014-11-24 22:59:15
Hi!

I'm attaching a patch which adds support for Spansion S25FL127S flash chip in 64KiB and 256KiB mode. I also tested 64KiB mode with FT4232H Mini Module which works fine (please see attached logs).

Best regards,
Jernej Skrabec
flashrom v0.9.7-r1854 on Linux 3.16.0-24-generic (x86_64)
flashrom was built with libpci 3.2.1, GCC 4.9.1, little endian
Command line (8 args): ./flashrom -p ft2232_spi:type=4232H,port=A -c S25FL127S......0 -V -E -o S25FL127S......0_erase.txt
Calibrating delay loop... OS timer resolution is 1 usecs, 1512M loops per second, 10 myus = 10 us, 100 myus = 110 us, 1000 myus = 1060 us, 10000 myus = 9607 us, 4 myus = 4 us, OK.
Initializing ft2232_spi programmer
Using device type FTDI FT4232H channel A.
Disable divide-by-5 front stage
Set clock divisor
MPSSE clock: 60.000000 MHz, divisor: 2, SPI clock: 30.000000 MHz
No loopback of TDI/DO TDO/DI
Set data bits
The following protocols are supported: SPI.
Probing for Spansion S25FL127S......0, 16384 kB: probe_spi_rdid_generic: id1 0x01, id2 0x2018
Found Spansion flash chip "S25FL127S......0" (16384 kB, SPI) on ft2232_spi.
Chip status register is 0x00.
Chip status register: Status Register Write Disable (SRWD, SRP, ...) is not set
Chip status register: Bit 6 is not set
Chip status register: Bit 5 is not set
Chip status register: Block Protect 2 (BP2) is not set
Chip status register: Block Protect 1 (BP1) is not set
Chip status register: Block Protect 0 (BP0) is not set
Chip status register: Write Enable Latch (WEL) is not set
Chip status register: Write In Progress (WIP/BUSY) is not set
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.
Erasing and writing flash chip... Trying erase function 0... 0x000000-0x00ffff:E, 0x010000-0x01ffff:E, 0x020000-0x02ffff:E, 0x030000-0x03ffff:E, 0x040000-0x04ffff:E, 0x050000-0x05ffff:E, 0x060000-0x06ffff:E, 0x070000-0x07ffff:E, 0x080000-0x08ffff:E, 0x090000-0x09ffff:E, 0x0a0000-0x0affff:E, 0x0b0000-0x0bffff:E, 0x0c0000-0x0cffff:E, 0x0d0000-0x0dffff:E, 0x0e0000-0x0effff:E, 0x0f0000-0x0fffff:E, 0x100000-0x10ffff:E, 0x110000-0x11ffff:E, 0x120000-0x12ffff:E, 0x130000-0x13ffff:E, 0x140000-0x14ffff:E, 0x150000-0x15ffff:E, 0x160000-0x16ffff:E, 0x170000-0x17ffff:E, 0x180000-0x18ffff:E, 0x190000-0x19ffff:E, 0x1a0000-0x1affff:E, 0x1b0000-0x1bffff:E, 0x1c0000-0x1cffff:E, 0x1d0000-0x1dffff:E, 0x1e0000-0x1effff:E, 0x1f0000-0x1fffff:E, 0x200000-0x20ffff:E, 0x210000-0x21ffff:E, 0x220000-0x22ffff:E, 0x230000-0x23ffff:E, 0x240000-0x24ffff:E, 0x250000-0x25ffff:E, 0x260000-0x26ffff:E, 0x270000-0x27ffff:E, 0x280000-0x28ffff:E, 0x290000-0x29ffff:E, 0x2a0000-0x2affff:E, 0x2b0000-0x2bffff:E, 0x2c0000-0x2cffff:E, 0x2d0000-0x2dffff:E, 0x2e0000-0x2effff:E, 0x2f0000-0x2fffff:E, 0x300000-0x30ffff:E, 0x310000-0x31ffff:E, 0x320000-0x32ffff:E, 0x330000-0x33ffff:E, 0x340000-0x34ffff:E, 0x350000-0x35ffff:E, 0x360000-0x36ffff:E, 0x370000-0x37ffff:E, 0x380000-0x38ffff:E, 0x390000-0x39ffff:E, 0x3a0000-0x3affff:E, 0x3b0000-0x3bffff:E, 0x3c0000-0x3cffff:E, 0x3d0000-0x3dffff:E, 0x3e0000-0x3effff:E, 0x3f0000-0x3fffff:E, 0x400000-0x40ffff:E, 0x410000-0x41ffff:E, 0x420000-0x42ffff:E, 0x430000-0x43ffff:E, 0x440000-0x44ffff:E, 0x450000-0x45ffff:E, 0x460000-0x46ffff:E, 0x470000-0x47ffff:E, 0x480000-0x48ffff:E, 0x490000-0x49ffff:E, 0x4a0000-0x4affff:E, 0x4b0000-0x4bffff:E, 0x4c0000-0x4cffff:E, 0x4d0000-0x4dffff:E, 0x4e0000-0x4effff:E, 0x4f0000-0x4fffff:E, 0x500000-0x50ffff:E, 0x510000-0x51ffff:E, 0x520000-0x52ffff:E, 0x530000-0x53ffff:E, 0x540000-0x54ffff:E, 0x550000-0x55ffff:E, 0x560000-0x56ffff:E, 0x570000-0x57ffff:E, 0x580000-0x58ffff:E, 0x590000-0x59ffff:E, 0x5a0000-0x5affff:E, 0x5b0000-0x5bffff:E, 0x5c0000-0x5cffff:E, 0x5d0000-0x5dffff:E, 0x5e0000-0x5effff:E, 0x5f0000-0x5fffff:E, 0x600000-0x60ffff:E, 0x610000-0x61ffff:E, 0x620000-0x62ffff:E, 0x630000-0x63ffff:E, 0x640000-0x64ffff:E, 0x650000-0x65ffff:E, 0x660000-0x66ffff:E, 0x670000-0x67ffff:E, 0x680000-0x68ffff:E, 0x690000-0x69ffff:E, 0x6a0000-0x6affff:E, 0x6b0000-0x6bffff:E, 0x6c0000-0x6cffff:E, 0x6d0000-0x6dffff:E, 0x6e0000-0x6effff:E, 0x6f0000-0x6fffff:E, 0x700000-0x70ffff:E, 0x710000-0x71ffff:E, 0x720000-0x72ffff:E, 0x730000-0x73ffff:E, 0x740000-0x74ffff:E, 0x750000-0x75ffff:E, 0x760000-0x76ffff:E, 0x770000-0x77ffff:E, 0x780000-0x78ffff:E, 0x790000-0x79ffff:E, 0x7a0000-0x7affff:E, 0x7b0000-0x7bffff:E, 0x7c0000-0x7cffff:E, 0x7d0000-0x7dffff:E, 0x7e0000-0x7effff:E, 0x7f0000-0x7fffff:E, 0x800000-0x80ffff:E, 0x810000-0x81ffff:E, 0x820000-0x82ffff:E, 0x830000-0x83ffff:E, 0x840000-0x84ffff:E, 0x850000-0x85ffff:E, 0x860000-0x86ffff:E, 0x870000-0x87ffff:E, 0x880000-0x88ffff:E, 0x890000-0x89ffff:E, 0x8a0000-0x8affff:E, 0x8b0000-0x8bffff:E, 0x8c0000-0x8cffff:E, 0x8d0000-0x8dffff:E, 0x8e0000-0x8effff:E, 0x8f0000-0x8fffff:E, 0x900000-0x90ffff:E, 0x910000-0x91ffff:E, 0x920000-0x92ffff:E, 0x930000-0x93ffff:E, 0x940000-0x94ffff:E, 0x950000-0x95ffff:E, 0x960000-0x96ffff:E, 0x970000-0x97ffff:E, 0x980000-0x98ffff:E, 0x990000-0x99ffff:E, 0x9a0000-0x9affff:E, 0x9b0000-0x9bffff:E, 0x9c0000-0x9cffff:E, 0x9d0000-0x9dffff:E, 0x9e0000-0x9effff:E, 0x9f0000-0x9fffff:E, 0xa00000-0xa0ffff:E, 0xa10000-0xa1ffff:E, 0xa20000-0xa2ffff:E, 0xa30000-0xa3ffff:E, 0xa40000-0xa4ffff:E, 0xa50000-0xa5ffff:E, 0xa60000-0xa6ffff:E, 0xa70000-0xa7ffff:E, 0xa80000-0xa8ffff:E, 0xa90000-0xa9ffff:E, 0xaa0000-0xaaffff:E, 0xab0000-0xabffff:E, 0xac0000-0xacffff:E, 0xad0000-0xadffff:E, 0xae0000-0xaeffff:E, 0xaf0000-0xafffff:E, 0xb00000-0xb0ffff:E, 0xb10000-0xb1ffff:E, 0xb20000-0xb2ffff:E, 0xb30000-0xb3ffff:E, 0xb40000-0xb4ffff:E, 0xb50000-0xb5ffff:E, 0xb60000-0xb6ffff:E, 0xb70000-0xb7ffff:E, 0xb80000-0xb8ffff:E, 0xb90000-0xb9ffff:E, 0xba0000-0xbaffff:E, 0xbb0000-0xbbffff:E, 0xbc0000-0xbcffff:E, 0xbd0000-0xbdffff:E, 0xbe0000-0xbeffff:E, 0xbf0000-0xbfffff:E, 0xc00000-0xc0ffff:E, 0xc10000-0xc1ffff:E, 0xc20000-0xc2ffff:E, 0xc30000-0xc3ffff:E, 0xc40000-0xc4ffff:E, 0xc50000-0xc5ffff:E, 0xc60000-0xc6ffff:E, 0xc70000-0xc7ffff:E, 0xc80000-0xc8ffff:E, 0xc90000-0xc9ffff:E, 0xca0000-0xcaffff:E, 0xcb0000-0xcbffff:E, 0xcc0000-0xccffff:E, 0xcd0000-0xcdffff:E, 0xce0000-0xceffff:E, 0xcf0000-0xcfffff:E, 0xd00000-0xd0ffff:E, 0xd10000-0xd1ffff:E, 0xd20000-0xd2ffff:E, 0xd30000-0xd3ffff:E, 0xd40000-0xd4ffff:E, 0xd50000-0xd5ffff:E, 0xd60000-0xd6ffff:E, 0xd70000-0xd7ffff:E, 0xd80000-0xd8ffff:E, 0xd90000-0xd9ffff:E, 0xda0000-0xdaffff:E, 0xdb0000-0xdbffff:E, 0xdc0000-0xdcffff:E, 0xdd0000-0xddffff:E, 0xde0000-0xdeffff:E, 0xdf0000-0xdfffff:E, 0xe00000-0xe0ffff:E, 0xe10000-0xe1ffff:E, 0xe20000-0xe2ffff:E, 0xe30000-0xe3ffff:E, 0xe40000-0xe4ffff:E, 0xe50000-0xe5ffff:E, 0xe60000-0xe6ffff:E, 0xe70000-0xe7ffff:E, 0xe80000-0xe8ffff:E, 0xe90000-0xe9ffff:E, 0xea0000-0xeaffff:E, 0xeb0000-0xebffff:E, 0xec0000-0xecffff:E, 0xed0000-0xedffff:E, 0xee0000-0xeeffff:E, 0xef0000-0xefffff:E, 0xf00000-0xf0ffff:E, 0xf10000-0xf1ffff:E, 0xf20000-0xf2ffff:E, 0xf30000-0xf3ffff:E, 0xf40000-0xf4ffff:E, 0xf50000-0xf5ffff:E, 0xf60000-0xf6ffff:E, 0xf70000-0xf7ffff:E, 0xf80000-0xf8ffff:E, 0xf90000-0xf9ffff:E, 0xfa0000-0xfaffff:E, 0xfb0000-0xfbffff:E, 0xfc0000-0xfcffff:E, 0xfd0000-0xfdffff:E, 0xfe0000-0xfeffff:E, 0xff0000-0xffffff:E
Erase/write done.
flashrom v0.9.7-r1854 on Linux 3.16.0-24-generic (x86_64)
flashrom was built with libpci 3.2.1, GCC 4.9.1, little endian
Command line (7 args): ./flashrom -p ft2232_spi:type=4232H,port=A -c S25FL127S......0 -V -o S25FL127S......0_probe.txt
Calibrating delay loop... OS timer resolution is 1 usecs, 1407M loops per second, 10 myus = 10 us, 100 myus = 137 us, 1000 myus = 1113 us, 10000 myus = 9318 us, 4 myus = 3 us, OK.
Initializing ft2232_spi programmer
Using device type FTDI FT4232H channel A.
Disable divide-by-5 front stage
Set clock divisor
MPSSE clock: 60.000000 MHz, divisor: 2, SPI clock: 30.000000 MHz
No loopback of TDI/DO TDO/DI
Set data bits
The following protocols are supported: SPI.
Probing for Spansion S25FL127S......0, 16384 kB: probe_spi_rdid_generic: id1 0x01, id2 0x2018
Found Spansion flash chip "S25FL127S......0" (16384 kB, SPI) on ft2232_spi.
Chip status register is 0x00.
Chip status register: Status Register Write Disable (SRWD, SRP, ...) is not set
Chip status register: Bit 6 is not set
Chip status register: Bit 5 is not set
Chip status register: Block Protect 2 (BP2) is not set
Chip status register: Block Protect 1 (BP1) is not set
Chip status register: Block Protect 0 (BP0) is not set
Chip status register: Write Enable Latch (WEL) is not set
Chip status register: Write In Progress (WIP/BUSY) is not set
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).
No operations were specified.
flashrom v0.9.7-r1854 on Linux 3.16.0-24-generic (x86_64)
flashrom was built with libpci 3.2.1, GCC 4.9.1, little endian
Command line (9 args): ./flashrom -p ft2232_spi:type=4232H,port=A -c S25FL127S......0 -r testdump.bin -V -o S25FL127L......0_read.txt
Calibrating delay loop... OS timer resolution is 1 usecs, 1466M loops per second, 10 myus = 10 us, 100 myus = 122 us, 1000 myus = 1111 us, 10000 myus = 9857 us, 4 myus = 4 us, OK.
Initializing ft2232_spi programmer
Using device type FTDI FT4232H channel A.
Disable divide-by-5 front stage
Set clock divisor
MPSSE clock: 60.000000 MHz, divisor: 2, SPI clock: 30.000000 MHz
No loopback of TDI/DO TDO/DI
Set data bits
The following protocols are supported: SPI.
Probing for Spansion S25FL127S......0, 16384 kB: probe_spi_rdid_generic: id1 0x01, id2 0x2018
Found Spansion flash chip "S25FL127S......0" (16384 kB, SPI) on ft2232_spi.
Chip status register is 0x00.
Chip status register: Status Register Write Disable (SRWD, SRP, ...) is not set
Chip status register: Bit 6 is not set
Chip status register: Bit 5 is not set
Chip status register: Block Protect 2 (BP2) is not set
Chip status register: Block Protect 1 (BP1) is not set
Chip status register: Block Protect 0 (BP0) is not set
Chip status register: Write Enable Latch (WEL) is not set
Chip status register: Write In Progress (WIP/BUSY) is not set
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).
===
This flash part has status UNTESTED for operations: PROBE READ ERASE WRITE
The test status of this chip may have been updated in the latest development
version of flashrom. If you are running the latest development version,
please email a report to flashrom@flashrom.org if any of the above operations
work correctly for you with this flash chip. Please include the flashrom log
file for all operations you tested (see the man page for details), and mention
which mainboard or programmer you tested in the subject line.
Thanks for your help!
Block protection is disabled.
Reading flash... done.
flashrom v0.9.7-r1854 on Linux 3.16.0-24-generic (x86_64)
flashrom was built with libpci 3.2.1, GCC 4.9.1, little endian
Command line (9 args): ./flashrom -p ft2232_spi:type=4232H,port=A -c S25FL127S......0 -V -w newimage.bin -o S25FL127S......0_write.txt
Calibrating delay loop... OS timer resolution is 1 usecs, 1485M loops per second, 10 myus = 11 us, 100 myus = 106 us, 1000 myus = 995 us, 10000 myus = 9965 us, 4 myus = 5 us, OK.
Initializing ft2232_spi programmer
Using device type FTDI FT4232H channel A.
Disable divide-by-5 front stage
Set clock divisor
MPSSE clock: 60.000000 MHz, divisor: 2, SPI clock: 30.000000 MHz
No loopback of TDI/DO TDO/DI
Set data bits
The following protocols are supported: SPI.
Probing for Spansion S25FL127S......0, 16384 kB: probe_spi_rdid_generic: id1 0x01, id2 0x2018
Found Spansion flash chip "S25FL127S......0" (16384 kB, SPI) on ft2232_spi.
Chip status register is 0x00.
Chip status register: Status Register Write Disable (SRWD, SRP, ...) is not set
Chip status register: Bit 6 is not set
Chip status register: Bit 5 is not set
Chip status register: Block Protect 2 (BP2) is not set
Chip status register: Block Protect 1 (BP1) is not set
Chip status register: Block Protect 0 (BP0) is not set
Chip status register: Write Enable Latch (WEL) is not set
Chip status register: Write In Progress (WIP/BUSY) is not set
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 old flash chip contents... done.
Erasing and writing flash chip... Trying erase function 0... 0x000000-0x00ffff:W, 0x010000-0x01ffff:W, 0x020000-0x02ffff:W, 0x030000-0x03ffff:W, 0x040000-0x04ffff:W, 0x050000-0x05ffff:W, 0x060000-0x06ffff:W, 0x070000-0x07ffff:W, 0x080000-0x08ffff:W, 0x090000-0x09ffff:W, 0x0a0000-0x0affff:W, 0x0b0000-0x0bffff:W, 0x0c0000-0x0cffff:W, 0x0d0000-0x0dffff:W, 0x0e0000-0x0effff:W, 0x0f0000-0x0fffff:W, 0x100000-0x10ffff:W, 0x110000-0x11ffff:W, 0x120000-0x12ffff:W, 0x130000-0x13ffff:W, 0x140000-0x14ffff:W, 0x150000-0x15ffff:W, 0x160000-0x16ffff:W, 0x170000-0x17ffff:W, 0x180000-0x18ffff:W, 0x190000-0x19ffff:W, 0x1a0000-0x1affff:W, 0x1b0000-0x1bffff:W, 0x1c0000-0x1cffff:W, 0x1d0000-0x1dffff:W, 0x1e0000-0x1effff:W, 0x1f0000-0x1fffff:W, 0x200000-0x20ffff:W, 0x210000-0x21ffff:W, 0x220000-0x22ffff:W, 0x230000-0x23ffff:W, 0x240000-0x24ffff:W, 0x250000-0x25ffff:W, 0x260000-0x26ffff:W, 0x270000-0x27ffff:W, 0x280000-0x28ffff:W, 0x290000-0x29ffff:W, 0x2a0000-0x2affff:W, 0x2b0000-0x2bffff:W, 0x2c0000-0x2cffff:W, 0x2d0000-0x2dffff:W, 0x2e0000-0x2effff:W, 0x2f0000-0x2fffff:W, 0x300000-0x30ffff:W, 0x310000-0x31ffff:W, 0x320000-0x32ffff:W, 0x330000-0x33ffff:W, 0x340000-0x34ffff:W, 0x350000-0x35ffff:W, 0x360000-0x36ffff:W, 0x370000-0x37ffff:W, 0x380000-0x38ffff:W, 0x390000-0x39ffff:W, 0x3a0000-0x3affff:W, 0x3b0000-0x3bffff:W, 0x3c0000-0x3cffff:W, 0x3d0000-0x3dffff:W, 0x3e0000-0x3effff:W, 0x3f0000-0x3fffff:W, 0x400000-0x40ffff:W, 0x410000-0x41ffff:W, 0x420000-0x42ffff:W, 0x430000-0x43ffff:W, 0x440000-0x44ffff:W, 0x450000-0x45ffff:W, 0x460000-0x46ffff:W, 0x470000-0x47ffff:W, 0x480000-0x48ffff:W, 0x490000-0x49ffff:W, 0x4a0000-0x4affff:W, 0x4b0000-0x4bffff:W, 0x4c0000-0x4cffff:W, 0x4d0000-0x4dffff:W, 0x4e0000-0x4effff:W, 0x4f0000-0x4fffff:W, 0x500000-0x50ffff:W, 0x510000-0x51ffff:W, 0x520000-0x52ffff:W, 0x530000-0x53ffff:W, 0x540000-0x54ffff:W, 0x550000-0x55ffff:W, 0x560000-0x56ffff:W, 0x570000-0x57ffff:W, 0x580000-0x58ffff:W, 0x590000-0x59ffff:W, 0x5a0000-0x5affff:W, 0x5b0000-0x5bffff:W, 0x5c0000-0x5cffff:W, 0x5d0000-0x5dffff:W, 0x5e0000-0x5effff:W, 0x5f0000-0x5fffff:W, 0x600000-0x60ffff:W, 0x610000-0x61ffff:W, 0x620000-0x62ffff:W, 0x630000-0x63ffff:W, 0x640000-0x64ffff:W, 0x650000-0x65ffff:W, 0x660000-0x66ffff:W, 0x670000-0x67ffff:W, 0x680000-0x68ffff:W, 0x690000-0x69ffff:W, 0x6a0000-0x6affff:W, 0x6b0000-0x6bffff:W, 0x6c0000-0x6cffff:W, 0x6d0000-0x6dffff:W, 0x6e0000-0x6effff:W, 0x6f0000-0x6fffff:W, 0x700000-0x70ffff:W, 0x710000-0x71ffff:W, 0x720000-0x72ffff:W, 0x730000-0x73ffff:W, 0x740000-0x74ffff:W, 0x750000-0x75ffff:W, 0x760000-0x76ffff:W, 0x770000-0x77ffff:W, 0x780000-0x78ffff:W, 0x790000-0x79ffff:W, 0x7a0000-0x7affff:W, 0x7b0000-0x7bffff:W, 0x7c0000-0x7cffff:W, 0x7d0000-0x7dffff:W, 0x7e0000-0x7effff:W, 0x7f0000-0x7fffff:W, 0x800000-0x80ffff:W, 0x810000-0x81ffff:W, 0x820000-0x82ffff:W, 0x830000-0x83ffff:W, 0x840000-0x84ffff:W, 0x850000-0x85ffff:W, 0x860000-0x86ffff:W, 0x870000-0x87ffff:W, 0x880000-0x88ffff:W, 0x890000-0x89ffff:W, 0x8a0000-0x8affff:W, 0x8b0000-0x8bffff:W, 0x8c0000-0x8cffff:W, 0x8d0000-0x8dffff:W, 0x8e0000-0x8effff:W, 0x8f0000-0x8fffff:W, 0x900000-0x90ffff:W, 0x910000-0x91ffff:W, 0x920000-0x92ffff:W, 0x930000-0x93ffff:W, 0x940000-0x94ffff:W, 0x950000-0x95ffff:W, 0x960000-0x96ffff:W, 0x970000-0x97ffff:W, 0x980000-0x98ffff:W, 0x990000-0x99ffff:W, 0x9a0000-0x9affff:W, 0x9b0000-0x9bffff:W, 0x9c0000-0x9cffff:W, 0x9d0000-0x9dffff:W, 0x9e0000-0x9effff:W, 0x9f0000-0x9fffff:W, 0xa00000-0xa0ffff:W, 0xa10000-0xa1ffff:W, 0xa20000-0xa2ffff:W, 0xa30000-0xa3ffff:W, 0xa40000-0xa4ffff:W, 0xa50000-0xa5ffff:W, 0xa60000-0xa6ffff:W, 0xa70000-0xa7ffff:W, 0xa80000-0xa8ffff:W, 0xa90000-0xa9ffff:W, 0xaa0000-0xaaffff:W, 0xab0000-0xabffff:W, 0xac0000-0xacffff:W, 0xad0000-0xadffff:W, 0xae0000-0xaeffff:W, 0xaf0000-0xafffff:W, 0xb00000-0xb0ffff:W, 0xb10000-0xb1ffff:W, 0xb20000-0xb2ffff:W, 0xb30000-0xb3ffff:W, 0xb40000-0xb4ffff:W, 0xb50000-0xb5ffff:W, 0xb60000-0xb6ffff:W, 0xb70000-0xb7ffff:W, 0xb80000-0xb8ffff:W, 0xb90000-0xb9ffff:W, 0xba0000-0xbaffff:W, 0xbb0000-0xbbffff:W, 0xbc0000-0xbcffff:W, 0xbd0000-0xbdffff:W, 0xbe0000-0xbeffff:W, 0xbf0000-0xbfffff:W, 0xc00000-0xc0ffff:W, 0xc10000-0xc1ffff:W, 0xc20000-0xc2ffff:W, 0xc30000-0xc3ffff:W, 0xc40000-0xc4ffff:W, 0xc50000-0xc5ffff:W, 0xc60000-0xc6ffff:W, 0xc70000-0xc7ffff:W, 0xc80000-0xc8ffff:W, 0xc90000-0xc9ffff:W, 0xca0000-0xcaffff:W, 0xcb0000-0xcbffff:W, 0xcc0000-0xccffff:W, 0xcd0000-0xcdffff:W, 0xce0000-0xceffff:W, 0xcf0000-0xcfffff:W, 0xd00000-0xd0ffff:W, 0xd10000-0xd1ffff:W, 0xd20000-0xd2ffff:W, 0xd30000-0xd3ffff:W, 0xd40000-0xd4ffff:W, 0xd50000-0xd5ffff:W, 0xd60000-0xd6ffff:W, 0xd70000-0xd7ffff:W, 0xd80000-0xd8ffff:W, 0xd90000-0xd9ffff:W, 0xda0000-0xdaffff:W, 0xdb0000-0xdbffff:W, 0xdc0000-0xdcffff:W, 0xdd0000-0xddffff:W, 0xde0000-0xdeffff:W, 0xdf0000-0xdfffff:W, 0xe00000-0xe0ffff:W, 0xe10000-0xe1ffff:W, 0xe20000-0xe2ffff:W, 0xe30000-0xe3ffff:W, 0xe40000-0xe4ffff:W, 0xe50000-0xe5ffff:W, 0xe60000-0xe6ffff:W, 0xe70000-0xe7ffff:W, 0xe80000-0xe8ffff:W, 0xe90000-0xe9ffff:W, 0xea0000-0xeaffff:W, 0xeb0000-0xebffff:W, 0xec0000-0xecffff:W, 0xed0000-0xedffff:W, 0xee0000-0xeeffff:W, 0xef0000-0xefffff:W, 0xf00000-0xf0ffff:W, 0xf10000-0xf1ffff:W, 0xf20000-0xf2ffff:W, 0xf30000-0xf3ffff:W, 0xf40000-0xf4ffff:W, 0xf50000-0xf5ffff:W, 0xf60000-0xf6ffff:W, 0xf70000-0xf7ffff:W, 0xf80000-0xf8ffff:W, 0xf90000-0xf9ffff:W, 0xfa0000-0xfaffff:W, 0xfb0000-0xfbffff:W, 0xfc0000-0xfcffff:W, 0xfd0000-0xfdffff:W, 0xfe0000-0xfeffff:W, 0xff0000-0xffffff:W
Erase/write done.
Verifying flash... VERIFIED.
Stefan Tauner - 2014-11-29 20:03:26
On Mon, 24 Nov 2014 23:59:15 +0100 (CET)
Jernej Škrabec <jernej.skrabec@planet.si> wrote:

> Hi!
> 
> I'm attaching a patch which adds support for Spansion S25FL127S flash chip in 64KiB and 256KiB mode. I also tested 64KiB mode with FT4232H Mini Module which works fine (please see attached logs).

Hello Jernej,

thanks for your patch! Please note that before we can include your
patch you need to sign the Developer's Certificate of Origin by
stating so in the patch/email. We can not include your patch as is!
Please read
http://flashrom.org/Development_Guidelines#Sign-off_Procedure
for details, thanks.

Apart from that the naming of the chip definitions does not make much
sense. The model number of the S25FL127S does not denote the sector
layout in any way (unlike other Spansion chips). It would be best to
write a custom probing function that checks for the flags in the
configuration register and alters struct flashchip accordingly (similar
to what we do for at45db chips).
But for now I would accept a simple suffix to the "S25FL127S" name and
propose S25FL127S-64kB and S25FL127S-256kB.

Also, the comment in the patch is not correct AFAICS. Quote from the
datasheet "A P4E command applied to a sector that is larger than
4 kbytes will not be executed and will not set the E_ERR status."
This contradicts the comment that states that a bit is changed.
There are some minor other things I'd like to change but I can make
these changes myself. Thank you very much for your effort. Please reply
with your sign-off so that I can integrate the patch soon.

Patch

--- flashchips.c	2014-11-24 23:20:52.136499306 +0100
+++ flashchips.new.c	2014-11-24 23:15:32.000000000 +0100
@@ -10434,6 +10434,81 @@ 
 		.read		= spi_chip_read, /* Fast read (0x0B) and multi I/O supported */
 		.voltage	= {2700, 3600},
 	},
+	
+	{
+		.vendor		= "Spansion",
+		.name		= "S25FL127S......0", /* hybrid: 32 (top or bottom) 4 kB sub-sectors + 64 kB sectors */
+		.bustype	= BUS_SPI,
+		.manufacture_id	= SPANSION_ID,
+		.model_id	= SPANSION_S25FL128,
+		.total_size	= 16384,
+		.page_size	= 256,
+		/* supports 4B addressing */
+		/* OTP: 1024B total, 32B reserved; read 0x4B; write 0x42 */
+		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
+		.tested		= TEST_OK_PREW,
+		.probe		= probe_spi_rdid,
+		.probe_timing	= TIMING_ZERO,
+		.block_erasers	= {
+			{
+				/* This chip supports erasing of the 32 so-called "parameter sectors" with
+				 * opcode 0x20. Trying to access an address outside these 4kB blocks does
+				 * have no effect on the memory contents, but sets a flag in the SR.
+				.eraseblocks = {
+					{4 * 1024, 32},
+					{64 * 1024, 254} // inaccessible
+				},
+				.block_erase = spi_block_erase_20,
+			}, { */
+				.eraseblocks = { { 64 * 1024, 256} },
+				.block_erase = spi_block_erase_d8,
+			}, {
+				.eraseblocks = { { 16384 * 1024, 1} },
+				.block_erase = spi_block_erase_60,
+			}, {
+				.eraseblocks = { { 16384 * 1024, 1} },
+				.block_erase = spi_block_erase_c7,
+			}
+		},
+		.printlock	= spi_prettyprint_status_register_bp2_srwd,
+		.unlock		= spi_disable_blockprotect_bp2_srwd, /* #WP pin write-protects SRWP bit. */
+		.write		= spi_chip_write_256,
+		.read		= spi_chip_read, /* Fast read (0x0B) supported */
+		.voltage	= {2700, 3600},
+	},
+	
+	{
+		.vendor		= "Spansion",
+		.name		= "S25FL127S......1", /* uniform 256kB sectors */
+		.bustype	= BUS_SPI,
+		.manufacture_id	= SPANSION_ID,
+		.model_id	= SPANSION_S25FL128,
+		.total_size	= 16384,
+		.page_size	= 512,
+		/* supports 4B addressing */
+		/* OTP: 1024B total, 32B reserved; read 0x4B; write 0x42 */
+		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
+		.tested		= TEST_UNTESTED,
+		.probe		= probe_spi_rdid,
+		.probe_timing	= TIMING_ZERO,
+		.block_erasers	= {
+			{
+				.eraseblocks = { {256 * 1024, 64} },
+				.block_erase = spi_block_erase_d8,
+			}, {
+				.eraseblocks = { { 16384 * 1024, 1} },
+				.block_erase = spi_block_erase_60,
+			}, {
+				.eraseblocks = { { 16384 * 1024, 1} },
+				.block_erase = spi_block_erase_c7,
+			}
+		},
+		.printlock	= spi_prettyprint_status_register_bp2_srwd,
+		.unlock		= spi_disable_blockprotect_bp2_srwd, /* #WP pin write-protects SRWP bit. */
+		.write		= spi_chip_write_256,
+		.read		= spi_chip_read, /* Fast read (0x0B) supported */
+		.voltage	= {2700, 3600},
+	},
 
 	{
 		.vendor		= "Spansion",