Nico Huber has submitted this change and it was merged. ( https://review.coreboot.org/23262 )
Change subject: Add a SPI command class to `struct flashchip` ......................................................................
Add a SPI command class to `struct flashchip`
By default, we want to probe for SPI25 chips only. Other SPI use cases, like the ENE/EDI protocol, might use commands that can confuse these common chips.
Now, flashrom will probe for a chip only if one of these conditions is true: 1) no chip has been specified AND the chip uses the SPI25 commands 2) this chip has been specified by -c | --chip <chipname>
The CLI can later be extended to probe for a specific class of chips.
Change-Id: I89a53ccaef2791a2ac32904d7ab813da7478a6f0 Signed-off-by: Mike Banon mikebdp2@gmail.com Signed-off-by: Nico Huber nico.h@gmx.de Reviewed-on: https://review.coreboot.org/23262 Tested-by: build bot (Jenkins) no-reply@coreboot.org Reviewed-by: Paul Kocialkowski contact@paulk.fr --- M flash.h M flashrom.c 2 files changed, 14 insertions(+), 0 deletions(-)
Approvals: build bot (Jenkins): Verified Paul Kocialkowski: Looks good to me, approved
diff --git a/flash.h b/flash.h index d31b256..a71fec1 100644 --- a/flash.h +++ b/flash.h @@ -183,6 +183,17 @@ enum test_state write; } tested;
+ /* + * Group chips that have common command sets. This should ensure that + * no chip gets confused by a probing command for a very different class + * of chips. + */ + enum { + /* SPI25 is very common. Keep it at zero so we don't have + to specify it for each and every chip in the database.*/ + SPI25 = 0, + } spi_cmd_set; + int (*probe) (struct flashctx *flash);
/* Delay after "enter/exit ID mode" commands in microseconds. diff --git a/flashrom.c b/flashrom.c index ac987fd..a7de995 100644 --- a/flashrom.c +++ b/flashrom.c @@ -1209,6 +1209,9 @@ buses_common = mst->buses_supported & chip->bustype; if (!buses_common) continue; + /* Only probe for SPI25 chips by default. */ + if (chip->bustype == BUS_SPI && !chip_to_probe && chip->spi_cmd_set != SPI25) + continue; msg_gdbg("Probing for %s %s, %d kB: ", chip->vendor, chip->name, chip->total_size); if (!chip->probe && !force) { msg_gdbg("failed! flashrom has no probe function for this flash chip.\n");