From edcea80d68e0f029b79bc273ba622dc4a3e6cb2b Mon Sep 17 00:00:00 2001 From: Aarya Chaumal Date: Mon, 4 Jul 2022 18:21:50 +0530 Subject: spi: Add function to probe erase command opcode for all spi_master Add a field, probe_opcode, to struct spi_master which points to a function returning a bool by checking if a given command is supported by the programmer in use. This is used for getting a whitelist of commands supported by the programmer, as some programmers like ichspi don't support all opcodes. Most programmers use the default function, which just returns true. ICHSPI and dummyflasher use their specialized function. Change-Id: I6852ef92788221f471a859c879f8aff42558d36d Signed-off-by: Aarya Chaumal Reviewed-on: https://review.coreboot.org/c/flashrom/+/65183 Reviewed-by: Thomas Heijligen Reviewed-by: Anastasia Klimchuk Reviewed-by: Nico Huber Reviewed-by: Felix Singer Tested-by: build bot (Jenkins) --- dummyflasher.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'dummyflasher.c') diff --git a/dummyflasher.c b/dummyflasher.c index 3d3cbf38..96d43d34 100644 --- a/dummyflasher.c +++ b/dummyflasher.c @@ -121,6 +121,17 @@ static int dummy_spi_write_256(struct flashctx *flash, const uint8_t *buf, unsig emu_data->spi_write_256_chunksize); } +static bool dummy_spi_probe_opcode(struct flashctx *flash, uint8_t opcode) +{ + size_t i; + struct emu_data *emu_data = flash->mst->spi.data; + for (i = 0; i < emu_data->spi_blacklist_size; i++) { + if (emu_data->spi_blacklist[i] == opcode) + return false; + } + return true; +} + static int probe_variable_size(struct flashctx *flash) { const struct emu_data *emu_data = flash->mst->opaque.data; @@ -916,6 +927,7 @@ static const struct spi_master spi_master_dummyflasher = { .read = default_spi_read, .write_256 = dummy_spi_write_256, .write_aai = default_spi_write_aai, + .probe_opcode = dummy_spi_probe_opcode, }; static const struct par_master par_master_dummyflasher = { -- cgit v1.2.3