mirror of
https://review.coreboot.org/flashrom.git
synced 2025-04-30 16:33:41 +02:00
dummyflasher.c: Allow filling with either 0x00 or 0xff
This upstreams a ChromiumOS feature that allows the user of the dummyflasher spi master to either fill with 0x00 or 0xff in the fake flash content by way of a spi master param. BUG=b:140394053 BRANCH=none TEST=none Change-Id: I37c6dee932e449201d8bbfb03ca6d139da3cb6a2 Signed-off-by: Edward O'Callaghan <quasisec@google.com> Reviewed-on: https://review.coreboot.org/c/flashrom/+/47859 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Sam McNally <sammc@google.com>
This commit is contained in:
parent
f280797060
commit
3d300cb797
@ -52,6 +52,7 @@ struct emu_data {
|
||||
enum emu_chip emu_chip;
|
||||
char *emu_persistent_image;
|
||||
unsigned int emu_chip_size;
|
||||
int erase_to_zero;
|
||||
int emu_modified; /* is the image modified since reading it? */
|
||||
uint8_t emu_status;
|
||||
/* If "freq" parameter is passed in from command line, commands will delay
|
||||
@ -455,6 +456,23 @@ int dummy_init(void)
|
||||
return 1;
|
||||
}
|
||||
free(tmp);
|
||||
|
||||
/* Should emulated flash erase to zero (yes/no)? */
|
||||
tmp = extract_programmer_param("erase_to_zero");
|
||||
if (tmp) {
|
||||
if (!strcmp(tmp, "yes")) {
|
||||
msg_pdbg("Emulated chip will erase to 0x00\n");
|
||||
data->erase_to_zero = 1;
|
||||
} else if (!strcmp(tmp, "no")) {
|
||||
msg_pdbg("Emulated chip will erase to 0xff\n");
|
||||
} else {
|
||||
msg_perr("erase_to_zero can be \"yes\" or \"no\"\n");
|
||||
free(tmp);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
free(tmp);
|
||||
|
||||
flashchip_contents = malloc(data->emu_chip_size);
|
||||
if (!flashchip_contents) {
|
||||
msg_perr("Out of memory!\n");
|
||||
@ -478,8 +496,9 @@ int dummy_init(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
msg_pdbg("Filling fake flash chip with 0xff, size %i\n", data->emu_chip_size);
|
||||
memset(flashchip_contents, 0xff, data->emu_chip_size);
|
||||
msg_pdbg("Filling fake flash chip with 0x%02x, size %i\n",
|
||||
data->erase_to_zero ? 0x00 : 0xff, data->emu_chip_size);
|
||||
memset(flashchip_contents, data->erase_to_zero ? 0x00 : 0xff, data->emu_chip_size);
|
||||
|
||||
/* Will be freed by shutdown function if necessary. */
|
||||
data->emu_persistent_image = extract_programmer_param("image");
|
||||
@ -1052,6 +1071,9 @@ int probe_variable_size(struct flashctx *flash)
|
||||
msg_cdbg("%s: set flash->total_size to %dK bytes.\n", __func__,
|
||||
flash->chip->total_size);
|
||||
|
||||
if (emu_data->erase_to_zero)
|
||||
flash->chip->feature_bits |= FEATURE_ERASED_ZERO;
|
||||
|
||||
/* Update the first count of each of the block_erasers. */
|
||||
for (i = 0; i < NUM_ERASEFUNCTIONS; i++) {
|
||||
struct block_eraser *eraser = &flash->chip->block_erasers[i];
|
||||
|
Loading…
x
Reference in New Issue
Block a user