mirror of
https://review.coreboot.org/flashrom.git
synced 2025-04-27 23:22:37 +02:00
dummyflasher.c: Fix null par data and size param handling
This patch fixes a few bugs that two patches ( `3149822cd45cb2e5841e15d648783748ba1b2ec6` && `3b8fe0f8e907c0ba9f7c7935e950f3e1538d427f`) brought: * Check the presence of 'size' param only if the emulate is VARIABLE_SIZE. * Initialize 'flash->st->par.data' in dummy_init() so that it can probe the VARIABLE_SIZE emulator correct in probe_variable_size(). * Replace atoi() with strtol(). * Revise man page to describe how to use the VARIABLE_SIZE emulation target. TEST: $ flashrom -p dummy:image=dummy.bin,emulate=VARIABLE_SIZE,size=16777216 \ -w ${IMG} -V -f ... Verifying flash... VERIFIED. Writing dummy.bin $ flashrom -p dummy:image=dummy.bin,emulate=VARIABLE_SIZE -w ${IMG} -V -f ... dummy_init: the size parameter is not given. Unhandled programmer parameters (possibly due to another failure): image=dummy.bin, Error: Programmer initialization failed $ flashrom -p dummy:image=dummy.bin,emulate=SST25VF040.REMS -c SST25LF040A -w ${IMG} ... Erasing and writing flash chip... Erase/write done. Verifying flash... VERIFIED. $ man flashrom ... * Dummy vendor VARIABLE_SIZE SPI flash chip (configurable size, page write) Example: flashrom -p dummy:emulate=SST25VF040.REMS To use VARIABLE_SIZE chip, size must be specified to configure the size of the flash chip as a power of two. Example: flashrom -p dummy:emulate=VARIABLE_SIZE,size=16777216,image=dummy.bin ... Signed-off-by: Namyoon Woo <namyoon@google.com> Change-Id: Ie6481943a831b946a91b643b4d79e684c27e48b8 Reviewed-on: https://review.coreboot.org/c/flashrom/+/46536 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Edward O'Callaghan <quasisec@chromium.org>
This commit is contained in:
parent
cf1e8f7b90
commit
f7a08a8ef2
@ -126,7 +126,7 @@ static struct spi_master spi_master_dummyflasher = {
|
||||
.write_aai = default_spi_write_aai,
|
||||
};
|
||||
|
||||
static const struct par_master par_master_dummy = {
|
||||
static struct par_master par_master_dummy = {
|
||||
.chip_readb = dummy_chip_readb,
|
||||
.chip_readw = dummy_chip_readw,
|
||||
.chip_readl = dummy_chip_readl,
|
||||
@ -166,7 +166,7 @@ int dummy_init(void)
|
||||
unsigned int i;
|
||||
#if EMULATE_SPI_CHIP
|
||||
char *status = NULL;
|
||||
int size = -1; /* size for VARIOUS_SIZE chip device */
|
||||
int size = -1; /* size for VARIABLE_SIZE chip device */
|
||||
#endif
|
||||
#if EMULATE_CHIP
|
||||
struct stat image_stat;
|
||||
@ -180,6 +180,7 @@ int dummy_init(void)
|
||||
data->emu_chip = EMULATE_NONE;
|
||||
data->delay_us = 0;
|
||||
spi_master_dummyflasher.data = data;
|
||||
par_master_dummy.data = data;
|
||||
|
||||
msg_pspew("%s\n", __func__);
|
||||
|
||||
@ -343,7 +344,7 @@ int dummy_init(void)
|
||||
#if EMULATE_SPI_CHIP
|
||||
tmp = extract_programmer_param("size");
|
||||
if (tmp) {
|
||||
size = atoi(tmp);
|
||||
size = strtol(tmp, NULL, 10);
|
||||
if (size <= 0 || (size % 1024 != 0)) {
|
||||
msg_perr("%s: Chip size is not a multipler of 1024: %s\n",
|
||||
__func__, tmp);
|
||||
@ -351,9 +352,6 @@ int dummy_init(void)
|
||||
return 1;
|
||||
}
|
||||
free(tmp);
|
||||
} else {
|
||||
msg_perr("%s: the size parameter is not given.\n", __func__);
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -433,6 +431,11 @@ int dummy_init(void)
|
||||
* flashrom -p dummy:emulate=VARIABLE_SIZE,size=4194304
|
||||
*/
|
||||
if (!strcmp(tmp, "VARIABLE_SIZE")) {
|
||||
if (size == -1) {
|
||||
msg_perr("%s: the size parameter is not given.\n", __func__);
|
||||
free(tmp);
|
||||
return 1;
|
||||
}
|
||||
data->emu_chip = EMULATE_VARIABLE_SIZE;
|
||||
data->emu_chip_size = size;
|
||||
data->emu_max_byteprogram_size = 256;
|
||||
|
@ -646,8 +646,19 @@ vendor):
|
||||
.sp
|
||||
.RB "* Macronix " MX25L6436 " SPI flash chip (8192 kB, RDID, SFDP)"
|
||||
.sp
|
||||
.RB "* Dummy vendor " VARIABLE_SIZE " SPI flash chip (configurable size, page write)"
|
||||
.sp
|
||||
Example:
|
||||
.B "flashrom -p dummy:emulate=SST25VF040.REMS"
|
||||
.sp
|
||||
To use
|
||||
.B VARIABLE_SIZE
|
||||
chip,
|
||||
.B size
|
||||
must be specified to configure the size of the flash chip as a power of two.
|
||||
.sp
|
||||
Example:
|
||||
.B "flashrom -p dummy:emulate=VARIABLE_SIZE,size=16777216,image=dummy.bin"
|
||||
.TP
|
||||
.B Persistent images
|
||||
.sp
|
||||
|
Loading…
x
Reference in New Issue
Block a user