summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstefanct <stefanct@2b7e53f0-3cfb-0310-b3e9-8179ed1497e1>2013-05-23 21:47:46 +0000
committerstefanct <stefanct@2b7e53f0-3cfb-0310-b3e9-8179ed1497e1>2013-05-23 21:47:46 +0000
commitaa87883633ac464c5d311cd58093181e2109fb8a (patch)
treefc6a7fd4d6872b6c85d41868a97f948c73cb525c
parentaad2f83ac7bc21130a3536bb8387fa1234adbab7 (diff)
downloadflashrom-aa87883633ac464c5d311cd58093181e2109fb8a.tar.gz
dediprog: fix SPI clock setting.
Avoid setting SPI speed on firmware versions < 5.0.0 and note this limitation in the man page. Use the correct offset of the "12M" element in the spispeeds array to match our manpage and the default of Dediprog's dpcmd. Signed-off-by: Patrick Georgi <patrick.georgi@secunet.com> Signed-off-by: Stefan Tauner <stefan.tauner@student.tuwien.ac.at> Acked-by: Stefan Tauner <stefan.tauner@student.tuwien.ac.at> git-svn-id: https://code.coreboot.org/svn/flashrom/trunk@1674 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
-rw-r--r--dediprog.c15
-rw-r--r--flashrom.83
2 files changed, 11 insertions, 7 deletions
diff --git a/dediprog.c b/dediprog.c
index ab5388b..fb95d10 100644
--- a/dediprog.c
+++ b/dediprog.c
@@ -184,12 +184,15 @@ static const struct dediprog_spispeeds spispeeds[] = {
*/
static int dediprog_set_spi_speed(unsigned int spispeed_idx)
{
- int ret;
+ if (dediprog_firmwareversion < FIRMWARE_VERSION(5, 0, 0)) {
+ msg_pwarn("Skipping to set SPI speed because firmware is too old.\n");
+ return 0;
+ }
- msg_pdbg("SPI speed is %sHz\n", spispeeds[spispeed_idx].name);
+ msg_pdbg("SPI speed is %s Hz\n", spispeeds[spispeed_idx].name);
- ret = usb_control_msg(dediprog_handle, 0x42, 0x61, spispeeds[spispeed_idx].speed, 0xff,
- NULL, 0x0, DEFAULT_TIMEOUT);
+ int ret = usb_control_msg(dediprog_handle, 0x42, 0x61, spispeeds[spispeed_idx].speed, 0xff,
+ NULL, 0x0, DEFAULT_TIMEOUT);
if (ret != 0x0) {
msg_perr("Command Set SPI Speed 0x%x failed!\n", spispeeds[spispeed_idx].speed);
return 1;
@@ -789,7 +792,7 @@ int dediprog_init(void)
{
struct usb_device *dev;
char *voltage, *device, *spispeed, *target_str;
- int spispeed_idx = 2;
+ int spispeed_idx = 1;
int millivolt = 3500;
long usedevice = 0;
long target = 1;
@@ -806,7 +809,7 @@ int dediprog_init(void)
}
}
if (!spispeeds[i].name) {
- msg_perr("Error: Invalid 'spispeed' value.\n");
+ msg_perr("Error: Invalid spispeed value: '%s'.\n", spispeed);
free(spispeed);
return 1;
}
diff --git a/flashrom.8 b/flashrom.8
index c7a6c69..4e6ab55 100644
--- a/flashrom.8
+++ b/flashrom.8
@@ -683,7 +683,8 @@ Usage example to select the second device:
.sp
An optional
.B spispeed
-parameter specifies the frequency of the SPI bus. Syntax is
+parameter specifies the frequency of the SPI bus. The firmware on the device needs to be 5.0.0 or newer.
+Syntax is
.sp
.B " flashrom \-p dediprog:spispeed=frequency"
.sp