diff options
author | Aarya Chaumal <aarya.chaumal@gmail.com> | 2022-08-14 23:16:44 +0530 |
---|---|---|
committer | Edward O'Callaghan <quasisec@chromium.org> | 2022-12-19 23:12:26 +0000 |
commit | 0f389aea9e630c3b21547a5dd8dbe572a8502853 (patch) | |
tree | e414e930cf2a3746a7d0ba4c7554a6dfde34627d | |
parent | ed1126fc42d7687243934aabb641feecdaea92b8 (diff) | |
download | flashrom-0f389aea9e630c3b21547a5dd8dbe572a8502853.tar.gz flashrom-0f389aea9e630c3b21547a5dd8dbe572a8502853.tar.bz2 flashrom-0f389aea9e630c3b21547a5dd8dbe572a8502853.zip |
flashrom.c: Update check_block_eraser function to use probe opcode
Update the check_block_eraser function to use probe_opcode to see if the
given block_eraser is supported by the spi master. This will help to get
a real count of usable block_erasers.
Change-Id: I6591a84ae1fe5bc1648051cc30b9393450033852
Signed-off-by: Aarya Chaumal <aarya.chaumal@gmail.com>
Reviewed-on: https://review.coreboot.org/c/flashrom/+/66717
Reviewed-by: Edward O'Callaghan <quasisec@chromium.org>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
-rw-r--r-- | flashrom.c | 12 |
1 files changed, 12 insertions, 0 deletions
@@ -446,6 +446,18 @@ static int check_block_eraser(const struct flashctx *flash, int k, int log) "eraseblock layout is not defined. "); return 1; } + + if (flash->mst->buses_supported & BUS_SPI) { + const uint8_t *opcode = spi_get_opcode_from_erasefn(eraser.block_erase); + for (int i = 0; opcode[i]; i++) { + if (!flash->mst->spi.probe_opcode(flash, opcode[i])) { + if (log) + msg_cdbg("block erase function and layout found " + "but SPI master doesn't support the function. "); + return 1; + } + } + } // TODO: Once erase functions are annotated with allowed buses, check that as well. return 0; } |