summaryrefslogtreecommitdiffstats
path: root/buspirate_spi.c
diff options
context:
space:
mode:
Diffstat (limited to 'buspirate_spi.c')
-rw-r--r--buspirate_spi.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/buspirate_spi.c b/buspirate_spi.c
index 04b8fdec2..bfd0e0523 100644
--- a/buspirate_spi.c
+++ b/buspirate_spi.c
@@ -326,6 +326,7 @@ static int buspirate_spi_init(void)
int serialspeed_index = -1;
int ret = 0;
int pullup = 0;
+ int psu = 0;
unsigned char *bp_commbuf;
int bp_commbufsize;
@@ -377,6 +378,17 @@ static int buspirate_spi_init(void)
}
free(tmp);
+ tmp = extract_programmer_param("psus");
+ if (tmp) {
+ if (strcasecmp("on", tmp) == 0)
+ psu = 1;
+ else if (strcasecmp("off", tmp) == 0)
+ ; // ignore
+ else
+ msg_perr("Invalid psus state, not enabling.\n");
+ }
+ free(tmp);
+
/* Default buffer size is 19: 16 bytes data, 3 bytes control. */
#define DEFAULT_BUFSIZE (16 + 3)
bp_commbuf = malloc(DEFAULT_BUFSIZE);
@@ -638,6 +650,10 @@ static int buspirate_spi_init(void)
bp_commbuf[0] |= (1 << 2);
msg_pdbg("Enabling pull-up resistors.\n");
}
+ if (psu == 1) {
+ bp_commbuf[0] |= (1 << 3);
+ msg_pdbg("Enabling PSUs.\n");
+ }
ret = buspirate_sendrecv(bp_commbuf, 1, 1);
if (ret) {
ret = 1;