diff options
author | Thomas Heijligen <thomas.heijligen@secunet.com> | 2022-09-19 23:31:08 +0200 |
---|---|---|
committer | Thomas Heijligen <src@posteo.de> | 2022-12-14 10:54:08 +0000 |
commit | cb99e8a68bd0e5c91a97ed2b4a5bf0731ff983a8 (patch) | |
tree | 4b92d558bbac40e1b88192fbc326939570c2f24b /spi.c | |
parent | 76f28a3fc29b96c1c8cc76cba1279f92d2edc86e (diff) | |
download | flashrom-cb99e8a68bd0e5c91a97ed2b4a5bf0731ff983a8.tar.gz flashrom-cb99e8a68bd0e5c91a97ed2b4a5bf0731ff983a8.tar.bz2 flashrom-cb99e8a68bd0e5c91a97ed2b4a5bf0731ff983a8.zip |
spi25.c: Move spi_get_opcode_from_erasefn() to spi.c
Split spi_get_opcode_from_erasefn() out into spi.c to add support for
non spi25 flashes next.
Change-Id: Id654e998d0af2d3f5845336bb98b38d724519038
Signed-off-by: Thomas Heijligen <thomas.heijligen@secunet.com>
Reviewed-on: https://review.coreboot.org/c/flashrom/+/67715
Reviewed-by: Thomas Heijligen <src@posteo.de>
Reviewed-by: Edward O'Callaghan <quasisec@chromium.org>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'spi.c')
-rw-r--r-- | spi.c | 34 |
1 files changed, 34 insertions, 0 deletions
@@ -167,3 +167,37 @@ int register_spi_master(const struct spi_master *mst, void *data) rmst.spi.data = data; return register_master(&rmst); } + +static const struct { + enum block_erase_func func; + uint8_t opcode; +} function_opcode_list[] = { + {SPI_BLOCK_ERASE_20, 0x20}, + {SPI_BLOCK_ERASE_21, 0x21}, + {SPI_BLOCK_ERASE_50, 0x50}, + {SPI_BLOCK_ERASE_52, 0x52}, + {SPI_BLOCK_ERASE_53, 0x53}, + {SPI_BLOCK_ERASE_5C, 0x5c}, + {SPI_BLOCK_ERASE_60, 0x60}, + {SPI_BLOCK_ERASE_62, 0x62}, + {SPI_BLOCK_ERASE_81, 0x81}, + {SPI_BLOCK_ERASE_C4, 0xc4}, + {SPI_BLOCK_ERASE_C7, 0xc7}, + {SPI_BLOCK_ERASE_D7, 0xd7}, + {SPI_BLOCK_ERASE_D8, 0xd8}, + {SPI_BLOCK_ERASE_DB, 0xdb}, + {SPI_BLOCK_ERASE_DC, 0xdc}, +}; + +uint8_t spi_get_opcode_from_erasefn(enum block_erase_func func) +{ + size_t i; + for (i = 0; i < ARRAY_SIZE(function_opcode_list); i++) { + if (function_opcode_list[i].func == func) + return function_opcode_list[i].opcode; + } + msg_cinfo("%s: unknown erase function (0x%d). Please report " + "this at flashrom@flashrom.org\n", __func__, func); + return 0x00; //Assuming 0x00 is not a erase function opcode +} + |