xref: /aosp_15_r20/external/flashrom/doc/release_notes/v_1_4.rst (revision 0d6140be3aa665ecc836e8907834fcd3e3b018fc)
1================
2v1.4 (July 2024)
3================
4
5This document describes the major changes in flashrom version 1.4.0,
6from more than 400 patches contributed by more than 70 authors (thank you!)
7in the 18 months since version 1.3.0 was branched.
8
9Download
10========
11
12flashrom 1.4 can be downloaded in various ways:
13
14Anonymous checkout from the git repository at https://review.coreboot.org/flashrom.git
15(tag v1.4.0)
16
17A tarball is available for download at
18https://download.flashrom.org/releases/flashrom-1.4.0.tar.xz
19(signature https://download.flashrom.org/releases/flashrom-1.4.0.tar.xz.asc)
20
21fingerprint: 6E6E F9A0 BA47 8006 E277 6E4C C037 BB41 3134 D111
22
23Known issue
24===========
25
26AMD-based PCs with FCH are unable to read flash contents for internal (BIOS flash)
27chips larger than 16 MB, and attempting to do so may crash the system.
28Systems with AMD "Promontory" IO extenders (mostly "Zen" desktop platforms) are not currently
29supported.
30
31https://ticket.coreboot.org/issues/370
32
33Major updates
34=============
35
36Optimised erase and write logic
37-------------------------------
38
39Significant performance improvements with new logic which is based on:
40the optimal selection of erase blocks for the given logical layout,
41available erase functions, and size of memory area to erase/write.
42
43**Legacy code path still exists in the source tree, but it will be deleted by the next release.**
44
45Optimised delays logic
46----------------------
47
48Optimised logic and refactorings of delays functionality, in particular for SPI chips.
49
50* Flashrom now sleeps more aggressively when a delay is required, rather than
51  polling in a loop. This should reduce power consumption significantly, but
52  may require more time to complete operations on systems experiencing high
53  CPU load.
54* An unconditional 1-second delay was removed for SPI flashes. This is not
55  believed to be needed for any SPI flashes, but may be needed for some old
56  parallel flashes (where it remains in use).
57* Cycle-counting busy loops are now only used on DOS builds of flashrom. All
58  other platforms use OS timers for timed delays, which are expected to be
59  more accurate.
60* Tree-wide refactorings around programmer_delay and internal_delay
61
62Documentation is in the git tree
63--------------------------------
64
65Docs are available in the same repository as the code, in ``doc/`` directory.
66
67Website content is automatically generated from docs in the git tree.
68
69**Patches with code changes and new features can (and should) update documentation
70in the same patch, which makes it a lot easier to maintain up-to-date docs.**
71
72Note: the migration process for documents from flashrom wiki to the git tree is half way.
73Wiki is deprecated now, and will go away once the migration process complete.
74
75Makefile scheduled for removal
76------------------------------
77
78**Future versions of flashrom will drop support for building via Makefile**:
79Meson will become the only supported build system.
80
81The Makefile and meson build systems are currently at feature parity,
82except automated testing is supported only with meson.
83To reduce the maintenance burden, we plan to remove the Makefile after this release.
84
85Write-protect updates
86---------------------
87
88* Support reading security register
89* Support reading/writing configuration register
90* More range functions (with different block sizes and handling of CMP bit)
91
92Protected regions support
93-------------------------
94
95* Support to allow programmers to handle protected regions on the flash.
96* get_region() function is added so that programmers can expose access permissions
97  for multiple regions within the flash.
98* A get_region() implementation is added for the ichspi driver
99
100Chipset support added
101=====================
102
103* Tiger Lake
104* Emmitsburg Chipset SKU
105* Meteor Lake-P/M
106* Panther Lake-U/H 12Xe
107* Panther Lake-H 4Xe
108
109Chip models support added or updated
110====================================
111
112New models support
113------------------
114
115* AT25DF011
116
117* B.25D80A
118* B25Q64AS
119
120* GD25LB128E/GD25LR128E
121* GD25LB256E
122* GD25LF128E
123* GD25Q127C/GD25Q128E
124* GD25LQ255E
125* GD25LR256E
126* GD251R512ME
127
128* IS25LP016
129* IS25LQ016
130* IS25WP016
131* IS25WP020
132* IS25WP040
133* IS25WP080
134* IS25WQ040
135
136* MX25L1633E
137* MX25L1636E
138* MX25L3239E
139* MX25L3255E
140* MX25L3273F
141* MX25L6473F
142* MX25L6436E/MX25L6445E/MX25L6465E
143* MX25L6473E
144* MX25L12850F
145* MX77L25650F
146* MX25R2035F
147* MX25R4035F
148* MX25R8035F
149* MX25U25643G
150* MX25V16066
151
152* P25Q06H
153* P25Q11H
154* P25Q21H
155
156* W25Q16JV_M
157
158* XM25QH128A
159* XM25QH80B
160* XM25QH16C/XM25QH16D
161* XM25QU80B
162* XM25RU256C
163
164* XT25F02E
165* XT25F64B
166* XT25F128B
167
168* ZD25D20
169
170Added write-protect support
171---------------------------
172
173* EN25QH32
174* EN25QH64
175
176* MX25L3206E/MX25L3208E
177* MX25L6405
178* MX25L6405D
179* MX25L6406E/MX25L6408E
180* MX25L12833F
181* MT25QL512
182* MX25R1635F
183* MX25R1635F
184* MX25U25643G
185* MX25V1635F
186* MX25V4035F
187* MX25V8035F
188
189* N25Q032..1E
190* N25Q032..3E
191* N25Q064..1E
192* N25Q064..3E
193
194* W25Q16.V
195* W25Q32BV/W25Q32CV/W25Q32DV
196* W25Q32FV
197* W25Q32JV
198* W25Q32BW/W25Q32CW/W25Q32DW
199* W25Q32FW
200* W25Q32JW...Q
201* W25Q32JW...M
202* W25Q64JW...M
203* W25Q256JW_DTR
204* W25Q512NW-IM
205* W25X05
206* W25X10
207* W25X16
208* W25X20
209* W25X32
210* W25X40
211* W25X64
212* W25X80
213
214Marked as tested
215----------------
216
217* AM29LV040B
218
219* AT29C010A
220
221* FM25F01
222* FM25Q16
223
224* MT25QL128
225
226* S25FL128L
227
228* W25Q128.V
229
230* XM25QH64C
231* XM25QH256C
232* XM25QU256C
233
234Programmers support added or updated
235====================================
236
237* New programmer for ASM106x SATA controllers
238* New programmer for WCH CH347, supports CH347T and CH347F packaging.
239
240* buspirate: Add option for setting the aux pin
241* jlink_spi: add cs=tms option to jlink_spi programmer
242* raiden: Support target index with generic REQ_ENABLE
243* buspirate_spi: add support for hiz output with pullups=off
244* serprog: Add support for multiple SPI chip selects
245
246Utilities
247=========
248
249* Bash completion (enabled by default with command line interface)
250
251* CI checks for Signed-off-by line in commit message
252
253* CI builds documentation
254
255Unit tests
256==========
257
258Added coverage for erase and write logic
259----------------------------------------
260
26120 test cases for each operation, with various logical layouts and chip memory states,
262and additional 6 for each, with protected regions configured.
263The test for erase and write is set up so that new test cases can be added whenever needed.
264
265selfcheck
266---------
267
268selfcheck is now also implemented as a unit test.
269
270selfcheck provides critical sanity checks for the programmer table, board matches table,
271and array of flashchip definitions.
272
273Note that selfcheck currently, by default, still runs on flashrom init,
274because at the moment we can't run unit tests on all supported platforms,
275and we don't have continuous integration for all platforms.
276
277This gives an opportunity for performance improvement for developers or companies
278who build their own flashrom binary and, importantly,
279can run unit tests with the build (Linux, BSD).
280For their own binary, it is possible to disable selfcheck on init and save some time
281(**under their own responsibility to run unit tests**).
282
283Coverage report
284---------------
285
286Unit tests coverage report can be generated with gcov or lcov / llvm.
287
288ch341a_spi test
289---------------
290
291Unit test which covers initialization-probing-shutdown of ch341a_spi.
292
293Reduces the risk of breakage for the very popular programmer.
294
295Write-protect
296-------------
297
298Added coverage for write-protect operation
299
300Some of the other misc fixes and improvements
301=============================================
302
303* bitbang_spi.c: Fix unchecked heap allocation
304* writeprotect.c: skip unnecessary writes
305* writeprotect.c: refuse to work with chip if OTP WPS == 1
306* flashrom.c: Drop redundant chip read validation in verify_range()
307* ichspi: Clear Fast SPI HSFC register before HW seq operation
308* ichspi: Fix number of bytes for HW seq operations
309* writeprotect,ichspi,spi25: handle register access constraints
310* tree/: Make heap alloc checks err msg consistent
311* flashrom.c: Replace 'exit(1)' leaks with return codes on err paths
312* flashrom: Check for flash access restricitons in read_flash()
313* flashrom: Check for flash access restricitons in verify_range()
314* flashrom: Check for flash access restricitons in write_flash()
315* flashrom: Check for flash access restrictions in erase path
316* flashrom: Use WP-based unlocking on opaque masters
317* ni845x_spi: Fix signed - unsigned comparisons
318* flashrom: only perform WP unlock for write/erase operations
319* tree: Rename master branch to main
320* serial: Fix sp_flush_incoming for serprog TCP connections
321* Makefile,meson.build: Add support for Sphinx versions prior to 4.x
322* Makefile: Fix cleanup for Sphinx versions prior to 4.x
323* Makefile: Fix version string for non-Git builds
324* serprog protocol: Add SPI Mode and CS Mode commands
325* util/list_yet_unsupported_chips.h: Fix path
326* flashrom_udev.rules: Add rule for CH347
327* Add documentation for pico-serprog
328* cli_classic: Defer flashrom_init calibration until after options parsing
329* hwaccess_x86_io: Fix Android compilation with bionic libc
330