diff options
author | Nico Huber <nico.h@gmx.de> | 2021-06-20 14:58:04 +0200 |
---|---|---|
committer | Nico Huber <nico.h@gmx.de> | 2021-06-25 12:50:26 +0000 |
commit | 2ac057cb393130bc5352ec69588fb3cce4e8fa6d (patch) | |
tree | 3cc194367a01080444411d4932c016d08eb50d36 | |
parent | c3f765917d0e5ceb3c576ba3f3701413b92b26dc (diff) | |
download | flashrom-2ac057cb393130bc5352ec69588fb3cce4e8fa6d.tar.gz flashrom-2ac057cb393130bc5352ec69588fb3cce4e8fa6d.tar.bz2 flashrom-2ac057cb393130bc5352ec69588fb3cce4e8fa6d.zip |
Revert "ft2232_spi: Enhance csgpiol parameter for FT2232"
This reverts commit ba6575de82f091b97ea0f2efcf2f79ef3739d64f.
Technically, the only thing that is wrong here is the lack of docu-
mentation (manpage update). However, as this change was succeeded by
a regressing fixup patch, it seems likely that the meaning of the
`csgpiol` parameter was just misunderstood and these changes were
not what the author intended.
Change-Id: I460237b9d275b1cd1d8a069f852d17dea393b14e
Signed-off-by: Nico Huber <nico.h@gmx.de>
Reviewed-on: https://review.coreboot.org/c/flashrom/+/55694
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
-rw-r--r-- | ft2232_spi.c | 40 |
1 files changed, 14 insertions, 26 deletions
diff --git a/ft2232_spi.c b/ft2232_spi.c index 44975db35..eb989331a 100644 --- a/ft2232_spi.c +++ b/ft2232_spi.c @@ -88,17 +88,10 @@ static const struct dev_entry devs_ft2232spi[] = { /* The variables cs_bits and pindir store the values for the "set data bits low byte" MPSSE command that * sets the initial state and the direction of the I/O pins. The pin offsets are as follows: - * TCK/SK is bit 0. - * TDI/DO is bit 1. - * TDO/DI is bit 2. - * TMS/CS is bit 3. - * GPIOL0 is bit 4. - * GPIOL1 is bit 5. - * GPIOL2 is bit 6. - * GPIOL3 is bit 7. - * - * The pin signal direction bit offsets follow the same order; 0 means that - * pin at the matching bit index is an input, 1 means pin is an output. + * SCK is bit 0. + * DO is bit 1. + * DI is bit 2. + * CS is bit 3. * * The default values (set below in ft2232_spi_init) are used for most devices: * value: 0x08 CS=high, DI=low, DO=low, SK=low @@ -459,24 +452,19 @@ static int ft2232_spi_init(void) } free(arg); - /* Allows setting multiple GPIOL states, for example: csgpiol=012 */ arg = extract_programmer_param("csgpiol"); if (arg) { - unsigned int ngpios = strlen(arg); - for (unsigned int i = 0; i <= ngpios; i++) { - int temp = arg[i] - '0'; - if (ngpios == 0 || (ngpios != i && (temp < 0 || temp > 3))) { - msg_perr("Error: Invalid GPIOLs specified: \"%s\".\n" - "Valid values are numbers between 0 and 3. " - "Multiple GPIOLs can be specified.\n", arg); - free(arg); - return -2; - } else { - unsigned int pin = temp + 4; - cs_bits |= 1 << pin; - pindir |= 1 << pin; - } + char *endptr; + unsigned int temp = strtoul(arg, &endptr, 10); + if (*endptr || endptr == arg || temp > 3) { + msg_perr("Error: Invalid GPIOL specified: \"%s\".\n" + "Valid values are between 0 and 3.\n", arg); + free(arg); + return -2; } + unsigned int pin = temp + 4; + cs_bits |= 1 << pin; + pindir |= 1 << pin; } free(arg); |