diff options
| author | Robert Zieba <robertzieba@google.com> | 2022-03-17 14:23:38 -0600 | 
|---|---|---|
| committer | Edward O'Callaghan <quasisec@chromium.org> | 2022-04-21 00:27:38 +0000 | 
| commit | e41620ec061b07d1b18c5a6d7bd46f07c1192b6c (patch) | |
| tree | 457533a39b296e0185ac7099be347cf693b1aa18 /raiden_debug_spi.c | |
| parent | 8abe12e86e9353fd8399e2e663bfc64a97ca5dfa (diff) | |
| download | flashrom-e41620ec061b07d1b18c5a6d7bd46f07c1192b6c.tar.gz flashrom-e41620ec061b07d1b18c5a6d7bd46f07c1192b6c.tar.bz2 flashrom-e41620ec061b07d1b18c5a6d7bd46f07c1192b6c.zip  | |
raiden_debug_spi: Add more informative error message when WP is enabled
Current error messages are not very helpful when attempting to flash a
target that has WP enabled. This change checks for the USB_SPI_DISABLED
error that occurs in this case and gives a more informative error
message.
BUG=b:210645611
TEST=Tested with WP enabled and disable to verify that error message is
displayed properly
Signed-off-by: Robert Zieba <robertzieba@google.com>
Change-Id: Ib1e8383baa9c3ea41ab1079af12e3dc8cdff90ae
Reviewed-on: https://review.coreboot.org/c/flashrom/+/62909
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Edward O'Callaghan <quasisec@chromium.org>
Reviewed-by: Anastasia Klimchuk <aklm@chromium.org>
Diffstat (limited to 'raiden_debug_spi.c')
| -rw-r--r-- | raiden_debug_spi.c | 17 | 
1 files changed, 17 insertions, 0 deletions
diff --git a/raiden_debug_spi.c b/raiden_debug_spi.c index 65ce32bb..521539f1 100644 --- a/raiden_debug_spi.c +++ b/raiden_debug_spi.c @@ -343,6 +343,7 @@  #include "usb_device.h"  #include <libusb.h> +#include <stdint.h>  #include <stdio.h>  #include <stdlib.h>  #include <string.h> @@ -983,6 +984,22 @@ static int get_spi_config_v2(struct raiden_debug_spi_data *ctx_data)  			return status;  		} +		/* +		 * Check if we received an error from the device. An error will have no +		 * response data, just the packet_id and status_code. +		 */ +		const size_t err_packet_size = sizeof(struct usb_spi_response_v2) - +			USB_SPI_PAYLOAD_SIZE_V2_RESPONSE; +		if (rsp_config.packet_size == err_packet_size && +				rsp_config.packet_v2.rsp_start.status_code != +				USB_SPI_SUCCESS) { +			status = rsp_config.packet_v2.rsp_start.status_code; +			if (status == USB_SPI_DISABLED) { +				msg_perr("Raiden: Target SPI bridge is disabled (is WP enabled?)\n"); +				return status; +			} +		} +  		msg_perr("Raiden: Packet is not a valid config\n"  		         "    config attempt = %d\n"  		         "    packet id      = %u\n"  | 
