1
0
mirror of https://review.coreboot.org/flashrom.git synced 2025-07-01 22:21:16 +02:00

buspirate: Add option for setting the aux pin

This adds a parameter to drive the aux pin low (or high if you
explicitly want the previous behavior). Some boards need to have a reset
pin driven low before the firmware can be safely flashed. With the Bus
Pirate, this is most easily done with the auxiliary pin.

Change-Id: Ieeecfdf1afc06dadda9b8f99547cd74854ca6775
Signed-off-by: Sean Anderson <seanga2@gmail.com>
Reviewed-on: https://review.coreboot.org/c/flashrom/+/43608
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Thomas Heijligen <src@posteo.de>
This commit is contained in:
Sean Anderson
2020-07-20 08:27:45 -04:00
committed by Anastasia Klimchuk
parent 5b2716d99c
commit 6537d40e31
2 changed files with 28 additions and 2 deletions

View File

@ -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;