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;
|
enum emu_chip emu_chip;
|
||||||
char *emu_persistent_image;
|
char *emu_persistent_image;
|
||||||
unsigned int emu_chip_size;
|
unsigned int emu_chip_size;
|
||||||
|
int erase_to_zero;
|
||||||
int emu_modified; /* is the image modified since reading it? */
|
int emu_modified; /* is the image modified since reading it? */
|
||||||
uint8_t emu_status;
|
uint8_t emu_status;
|
||||||
/* If "freq" parameter is passed in from command line, commands will delay
|
/* If "freq" parameter is passed in from command line, commands will delay
|
||||||
@ -455,6 +456,23 @@ int dummy_init(void)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
free(tmp);
|
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);
|
flashchip_contents = malloc(data->emu_chip_size);
|
||||||
if (!flashchip_contents) {
|
if (!flashchip_contents) {
|
||||||
msg_perr("Out of memory!\n");
|
msg_perr("Out of memory!\n");
|
||||||
@ -478,8 +496,9 @@ int dummy_init(void)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
msg_pdbg("Filling fake flash chip with 0xff, size %i\n", data->emu_chip_size);
|
msg_pdbg("Filling fake flash chip with 0x%02x, size %i\n",
|
||||||
memset(flashchip_contents, 0xff, data->emu_chip_size);
|
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. */
|
/* Will be freed by shutdown function if necessary. */
|
||||||
data->emu_persistent_image = extract_programmer_param("image");
|
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__,
|
msg_cdbg("%s: set flash->total_size to %dK bytes.\n", __func__,
|
||||||
flash->chip->total_size);
|
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. */
|
/* Update the first count of each of the block_erasers. */
|
||||||
for (i = 0; i < NUM_ERASEFUNCTIONS; i++) {
|
for (i = 0; i < NUM_ERASEFUNCTIONS; i++) {
|
||||||
struct block_eraser *eraser = &flash->chip->block_erasers[i];
|
struct block_eraser *eraser = &flash->chip->block_erasers[i];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user