mirror of
https://review.coreboot.org/flashrom.git
synced 2025-04-27 23:22:37 +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:
parent
5b2716d99c
commit
6537d40e31
@ -327,6 +327,7 @@ static int buspirate_spi_init(const struct programmer_cfg *cfg)
|
|||||||
int ret = 0;
|
int ret = 0;
|
||||||
bool pullup = false;
|
bool pullup = false;
|
||||||
bool psu = false;
|
bool psu = false;
|
||||||
|
bool aux = true;
|
||||||
unsigned char *bp_commbuf;
|
unsigned char *bp_commbuf;
|
||||||
int bp_commbufsize;
|
int bp_commbufsize;
|
||||||
|
|
||||||
@ -389,6 +390,17 @@ static int buspirate_spi_init(const struct programmer_cfg *cfg)
|
|||||||
}
|
}
|
||||||
free(tmp);
|
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. */
|
/* Default buffer size is 19: 16 bytes data, 3 bytes control. */
|
||||||
#define DEFAULT_BUFSIZE (16 + 3)
|
#define DEFAULT_BUFSIZE (16 + 3)
|
||||||
bp_commbuf = malloc(DEFAULT_BUFSIZE);
|
bp_commbuf = malloc(DEFAULT_BUFSIZE);
|
||||||
@ -642,8 +654,8 @@ static int buspirate_spi_init(const struct programmer_cfg *cfg)
|
|||||||
goto init_err_cleanup_exit;
|
goto init_err_cleanup_exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Initial setup (SPI peripherals config): Enable power, CS high, AUX */
|
/* Initial setup (SPI peripherals config): Enable power, CS high */
|
||||||
bp_commbuf[0] = 0x40 | 0x0b;
|
bp_commbuf[0] = 0x40 | 0x09;
|
||||||
if (pullup) {
|
if (pullup) {
|
||||||
bp_commbuf[0] |= (1 << 2);
|
bp_commbuf[0] |= (1 << 2);
|
||||||
msg_pdbg("Enabling pull-up resistors.\n");
|
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);
|
bp_commbuf[0] |= (1 << 3);
|
||||||
msg_pdbg("Enabling PSUs.\n");
|
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);
|
ret = buspirate_sendrecv(bp_commbuf, 1, 1);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto init_err_cleanup_exit;
|
goto init_err_cleanup_exit;
|
||||||
|
@ -780,6 +780,14 @@ where ``state`` can be ``on`` or ``off``.
|
|||||||
This allows the bus pirate to power the ROM chip directly. This may also be used to provide the required pullup voltage
|
This allows the bus pirate to power the ROM chip directly. This may also be used to provide the required pullup voltage
|
||||||
(when using the **pullups** option), by connecting the Bus Pirate's Vpu input to the appropriate Vcc pin.
|
(when using the **pullups** option), by connecting the Bus Pirate's Vpu input to the appropriate Vcc pin.
|
||||||
|
|
||||||
|
An optional aux parameter specifies the state of the Bus Pirate auxiliary pin.
|
||||||
|
This may be used to drive the auxiliary pin high or low before a transfer.
|
||||||
|
Syntax is::
|
||||||
|
|
||||||
|
flashrom -p buspirate_spi:aux=state
|
||||||
|
|
||||||
|
where ``state`` can be ``high`` or ``low``. The default ``state`` is ``high``.
|
||||||
|
|
||||||
|
|
||||||
pickit2_spi programmer
|
pickit2_spi programmer
|
||||||
^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
Loading…
x
Reference in New Issue
Block a user