summaryrefslogtreecommitdiffstats
path: root/buspirate_spi.c
diff options
context:
space:
mode:
Diffstat (limited to 'buspirate_spi.c')
-rw-r--r--buspirate_spi.c22
1 files changed, 20 insertions, 2 deletions
diff --git a/buspirate_spi.c b/buspirate_spi.c
index d3114c415..72c28b0ad 100644
--- a/buspirate_spi.c
+++ b/buspirate_spi.c
@@ -327,6 +327,7 @@ static int buspirate_spi_init(const struct programmer_cfg *cfg)
int ret = 0;
bool pullup = false;
bool psu = false;
+ bool aux = true;
unsigned char *bp_commbuf;
int bp_commbufsize;
@@ -389,6 +390,17 @@ static int buspirate_spi_init(const struct programmer_cfg *cfg)
}
free(tmp);
+ tmp = extract_programmer_param_str(cfg, "aux");
+ if (tmp) {
+ if (strcasecmp("high", tmp) == 0)
+ ; /* Default */
+ else if (strcasecmp("low", tmp) == 0)
+ aux = false;
+ else
+ msg_perr("Invalid AUX state, driving high by default.\n");
+ }
+ free(tmp);
+
/* Default buffer size is 19: 16 bytes data, 3 bytes control. */
#define DEFAULT_BUFSIZE (16 + 3)
bp_commbuf = malloc(DEFAULT_BUFSIZE);
@@ -642,8 +654,8 @@ static int buspirate_spi_init(const struct programmer_cfg *cfg)
goto init_err_cleanup_exit;
}
- /* Initial setup (SPI peripherals config): Enable power, CS high, AUX */
- bp_commbuf[0] = 0x40 | 0x0b;
+ /* Initial setup (SPI peripherals config): Enable power, CS high */
+ bp_commbuf[0] = 0x40 | 0x09;
if (pullup) {
bp_commbuf[0] |= (1 << 2);
msg_pdbg("Enabling pull-up resistors.\n");
@@ -652,6 +664,12 @@ static int buspirate_spi_init(const struct programmer_cfg *cfg)
bp_commbuf[0] |= (1 << 3);
msg_pdbg("Enabling PSUs.\n");
}
+ if (aux) {
+ bp_commbuf[0] |= (1 << 1);
+ msg_pdbg("Driving AUX high.\n");
+ } else {
+ msg_pdbg("Driving AUX low.\n");
+ }
ret = buspirate_sendrecv(bp_commbuf, 1, 1);
if (ret)
goto init_err_cleanup_exit;