[flashrom] [commit] r1641 - trunk

repository service svn at flashrom.org
Thu Jan 3 21:44:31 CET 2013


Author: stefanct
Date: Thu Jan  3 21:44:30 2013
New Revision: 1641
URL: http://flashrom.org/trac/flashrom/changeset/1641

Log:
Add user interface to activate the Bus Pirate pull-up resistors.

When working with some flash chips using the Bus Pirate programmer, the
use of the Bus Pirate's on-board pull-up resistors is sometimes
necessary.

On v3 hardware the use of said pull-up resistors requires the user to apply a
voltage to the VPU pin of the Bus Pirate, and then command it to use them.
For v4 hardware which supports also fixed internal 3.3V and 5V sources no
documentation could be found.

Here is a link to information pertaining to what this patch does:
http://dangerousprototypes.com/docs/SPI_(binary)#0100wxyz_-_Configure_peripherals_w.3Dpower.2C_x.3Dpull-ups.2C_y.3DAUX.2C_z.3DCS

Bonus: small cleanup of superfluous stack variables.

Signed-off-by: Brian Salcedo <bsalcedo at gmx.us>
Signed-off-by: Stefan Tauner <stefan.tauner at student.tuwien.ac.at>
Tested-by: Brian Salcedo <bsalcedo at gmx.us>
Acked-by: Stefan Tauner <stefan.tauner at student.tuwien.ac.at>

Modified:
   trunk/buspirate_spi.c
   trunk/flashrom.8

Modified: trunk/buspirate_spi.c
==============================================================================
--- trunk/buspirate_spi.c	Tue Jan  1 01:06:51 2013	(r1640)
+++ trunk/buspirate_spi.c	Thu Jan  3 21:44:30 2013	(r1641)
@@ -201,14 +201,14 @@
 
 int buspirate_spi_init(void)
 {
-	char *dev = NULL;
-	char *speed = NULL;
 	char *tmp;
+	char *dev;
+	int i;
 	unsigned int fw_version_major = 0;
 	unsigned int fw_version_minor = 0;
 	int spispeed = 0x7;
 	int ret = 0;
-	int i;
+	int pullup = 0;
 
 	dev = extract_programmer_param("dev");
 	if (dev && !strlen(dev)) {
@@ -220,18 +220,29 @@
 		return 1;
 	}
 
-	speed = extract_programmer_param("spispeed");
-	if (speed) {
-		for (i = 0; spispeeds[i].name; i++)
-			if (!strncasecmp(spispeeds[i].name, speed,
-			    strlen(spispeeds[i].name))) {
+	tmp = extract_programmer_param("spispeed");
+	if (tmp) {
+		for (i = 0; spispeeds[i].name; i++) {
+			if (!strncasecmp(spispeeds[i].name, tmp, strlen(spispeeds[i].name))) {
 				spispeed = spispeeds[i].speed;
 				break;
 			}
+		}
 		if (!spispeeds[i].name)
 			msg_perr("Invalid SPI speed, using default.\n");
 	}
-	free(speed);
+	free(tmp);
+
+	tmp = extract_programmer_param("pullups");
+	if (tmp) {
+		if (strcasecmp("on", tmp) == 0)
+			pullup = 1;
+		else if (strcasecmp("off", tmp) == 0)
+			; // ignore
+		else
+			msg_perr("Invalid pullups state, not using them.\n");
+	}
+	free(tmp);
 
 	/* Default buffer size is 19: 16 bytes data, 3 bytes control. */
 #define DEFAULT_BUFSIZE (16 + 3)
@@ -395,12 +406,16 @@
 	}
 
 	/* Initial setup (SPI peripherals config): Enable power, CS high, AUX */
-	bp_commbuf[0] = 0x40 | 0xb;
+	bp_commbuf[0] = 0x40 | 0x0b;
+	if (pullup == 1) {
+		bp_commbuf[0] |= (1 << 2);
+		msg_pdbg("Enabling pull-up resistors.\n");
+	}
 	ret = buspirate_sendrecv(bp_commbuf, 1, 1);
 	if (ret)
 		return 1;
 	if (bp_commbuf[0] != 0x01) {
-		msg_perr("Protocol error while setting power/CS/AUX!\n");
+		msg_perr("Protocol error while setting power/CS/AUX(/Pull-up resistors)!\n");
 		return 1;
 	}
 

Modified: trunk/flashrom.8
==============================================================================
--- trunk/flashrom.8	Tue Jan  1 01:06:51 2013	(r1640)
+++ trunk/flashrom.8	Thu Jan  3 21:44:30 2013	(r1641)
@@ -637,6 +637,20 @@
 can be
 .BR 30k ", " 125k ", " 250k ", " 1M ", " 2M ", " 2.6M ", " 4M " or " 8M
 (in Hz). The default is the maximum frequency of 8 MHz.
+.sp
+An optional pullups parameter specifies the use of the Bus Pirate internal pull-up resistors. This may be
+needed if you are working with a flash ROM chip that you have physically removed from the board. Syntax is
+.sp
+.B "  flashrom -p buspirate_spi:pullups=state"
+.sp
+where
+.B state
+can be
+.BR on " or " off .
+More information about the Bus Pirate pull-up resistors and their purpose is available at
+.nh
+.BR "http://dangerousprototypes.com/docs/Practical_guide_to_Bus_Pirate_pull-up_resistors " .
+Only the external supply voltage (Vpu) is supported as of this writing.
 .SS
 .BR "dediprog " programmer
 An optional




More information about the flashrom mailing list