Mary Ruthven has uploaded this change for review. ( https://review.coreboot.org/c/flashrom/+/43527 )
Change subject: raiden_debug_spi: add param for a custom reset setup ......................................................................
raiden_debug_spi: add param for a custom reset setup
Cr50 asserts EC_RST_L to flash the AP. Asserting EC_RST_L breaks flashing the AP on some boards. This change adds a custom_rst arg to tell cr50 not to assert any system reset signals during flash AP setup.
BUG=b:154885210 BRANCH=none TEST=manual
sudo flashrom -p raiden_debug_spi:target=EC -r
sudo flashrom -p raiden_debug_spi:target=AP -r
sudo flashrom -p raiden_debug_spi:target=AP,custom_rst=true -r
sudo flashrom -p raiden_debug_spi:target=AP,custom_rst=bogus -r
sudo flashrom -p raiden_debug_spi -r
Signed-off-by: Mary Ruthven mruthven@chromium.org Change-Id: I2da26469120c5304bc129b5578fcb7ca805fc1d1 --- M raiden_debug_spi.c 1 file changed, 30 insertions(+), 12 deletions(-)
git pull ssh://review.coreboot.org:29418/flashrom refs/changes/27/43527/1
diff --git a/raiden_debug_spi.c b/raiden_debug_spi.c index b55307a..6b3468e 100644 --- a/raiden_debug_spi.c +++ b/raiden_debug_spi.c @@ -136,17 +136,17 @@ };
enum raiden_debug_spi_request { - RAIDEN_DEBUG_SPI_REQ_ENABLE = 0x0000, - RAIDEN_DEBUG_SPI_REQ_DISABLE = 0x0001, - RAIDEN_DEBUG_SPI_REQ_ENABLE_AP = 0x0002, - RAIDEN_DEBUG_SPI_REQ_ENABLE_EC = 0x0003, - RAIDEN_DEBUG_SPI_REQ_ENABLE_H1 = 0x0004, - RAIDEN_DEBUG_SPI_REQ_RESET = 0x0005, - RAIDEN_DEBUG_SPI_REQ_BOOT_CFG = 0x0006, - RAIDEN_DEBUG_SPI_REQ_SOCKET = 0x0007, - RAIDEN_DEBUG_SPI_REQ_SIGNING_START = 0x0008, - RAIDEN_DEBUG_SPI_REQ_SIGNING_SIGN = 0x0009, - + RAIDEN_DEBUG_SPI_REQ_ENABLE = 0x0000, + RAIDEN_DEBUG_SPI_REQ_DISABLE = 0x0001, + RAIDEN_DEBUG_SPI_REQ_ENABLE_AP = 0x0002, + RAIDEN_DEBUG_SPI_REQ_ENABLE_EC = 0x0003, + RAIDEN_DEBUG_SPI_REQ_ENABLE_H1 = 0x0004, + RAIDEN_DEBUG_SPI_REQ_RESET = 0x0005, + RAIDEN_DEBUG_SPI_REQ_BOOT_CFG = 0x0006, + RAIDEN_DEBUG_SPI_REQ_SOCKET = 0x0007, + RAIDEN_DEBUG_SPI_REQ_SIGNING_START = 0x0008, + RAIDEN_DEBUG_SPI_REQ_SIGNING_SIGN = 0x0009, + RAIDEN_DEBUG_SPI_REQ_ENABLE_AP_CUSTOM = 0x000a, };
#define PACKET_HEADER_SIZE (2) @@ -452,6 +452,23 @@ return 0; }
+static int get_ap_request_type(void) +{ + int ap_request = RAIDEN_DEBUG_SPI_REQ_ENABLE_AP; + char *custom_rst_str = extract_programmer_param("custom_rst"); + if (custom_rst_str) { + if (!strcasecmp(custom_rst_str, "true")) + ap_request = RAIDEN_DEBUG_SPI_REQ_ENABLE_AP_CUSTOM; + else { + msg_perr("Invalid custom rst param: %s\n", + custom_rst_str); + ap_request = -1; + } + } + free(custom_rst_str); + return ap_request; +} + static int get_target(void) { int request_enable = RAIDEN_DEBUG_SPI_REQ_ENABLE; @@ -459,7 +476,7 @@ char *target_str = extract_programmer_param("target"); if (target_str) { if (!strcasecmp(target_str, "ap")) - request_enable = RAIDEN_DEBUG_SPI_REQ_ENABLE_AP; + request_enable = get_ap_request_type(); else if (!strcasecmp(target_str, "ec")) request_enable = RAIDEN_DEBUG_SPI_REQ_ENABLE_EC; else { @@ -468,6 +485,7 @@ } } free(target_str); + msg_pinfo("Raiden target: %d\n", request_enable);
return request_enable; }