summaryrefslogtreecommitdiffstats
path: root/buspirate_spi.c
diff options
context:
space:
mode:
Diffstat (limited to 'buspirate_spi.c')
-rw-r--r--buspirate_spi.c21
1 files changed, 7 insertions, 14 deletions
diff --git a/buspirate_spi.c b/buspirate_spi.c
index 1bf1d58..4dceca5 100644
--- a/buspirate_spi.c
+++ b/buspirate_spi.c
@@ -101,24 +101,14 @@ int buspirate_spi_init(void)
char *speed = NULL;
int spispeed = 0x7;
- if (programmer_param && !strlen(programmer_param)) {
- free(programmer_param);
- programmer_param = NULL;
- }
- if (programmer_param) {
- dev = extract_param(&programmer_param, "dev=", ",:");
- speed = extract_param(&programmer_param, "spispeed=", ",:");
- if (strlen(programmer_param))
- msg_perr("Unhandled programmer parameters: %s\n",
- programmer_param);
- free(programmer_param);
- programmer_param = NULL;
- }
- if (!dev) {
+ dev = extract_param(&programmer_param, "dev", ",:");
+ if (!dev || !strlen(dev)) {
msg_perr("No serial device given. Use flashrom -p "
"buspirate_spi:dev=/dev/ttyUSB0\n");
return 1;
}
+
+ speed = extract_param(&programmer_param, "spispeed", ",:");
if (speed) {
for (i = 0; spispeeds[i].name; i++)
if (!strncasecmp(spispeeds[i].name, speed,
@@ -129,12 +119,15 @@ int buspirate_spi_init(void)
if (!spispeeds[i].name)
msg_perr("Invalid SPI speed, using default.\n");
}
+ free(speed);
+
/* This works because speeds numbering starts at 0 and is contiguous. */
msg_pdbg("SPI speed is %sHz\n", spispeeds[spispeed].name);
ret = buspirate_serialport_setup(dev);
if (ret)
return ret;
+ free(dev);
/* This is the brute force version, but it should work. */
for (i = 0; i < 19; i++) {
OpenPOWER on IntegriCloud