summaryrefslogtreecommitdiff
path: root/board/cr50/usb_spi.c
diff options
context:
space:
mode:
authorVadim Bendebury <vbendeb@chromium.org>2021-09-20 21:26:52 -0700
committerCommit Bot <commit-bot@chromium.org>2021-09-22 01:38:29 +0000
commit271bb8c30baa07e97b5dd08b1f1fd587e571ddcd (patch)
tree96ce3cf81cba819e40014a2e6f097ee242dde25b /board/cr50/usb_spi.c
parenta30384ab657dea34bda82dcad066f4205759bb1c (diff)
downloadchrome-ec-271bb8c30baa07e97b5dd08b1f1fd587e571ddcd.tar.gz
usb_spi: add API for reading arbitrary AP flash locations
This API will provide support to the AP RO verification implementation. The size of data read in one transaction is limited by SPI_HASH_CHUNK size. BUG=b:199904580, b:200736744 TEST=tested along with AP RO verification implementation. Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Change-Id: Id4da2add2ce1202d979627dde40325b583004fc5 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3172254 Reviewed-by: Andrey Pronin <apronin@chromium.org>
Diffstat (limited to 'board/cr50/usb_spi.c')
-rw-r--r--board/cr50/usb_spi.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/board/cr50/usb_spi.c b/board/cr50/usb_spi.c
index 6876272297..4aede92f19 100644
--- a/board/cr50/usb_spi.c
+++ b/board/cr50/usb_spi.c
@@ -683,6 +683,26 @@ int usb_spi_sha256_start(struct sha256_ctx *ctx)
return EC_SUCCESS;
}
+int usb_spi_read_buffer(void *buf, unsigned int offset, size_t bytes)
+{
+ uint8_t *p = buf;
+
+ while (bytes) {
+ const int this_chunk = MIN(bytes, SPI_HASH_CHUNK_SIZE);
+
+ /* Read the data */
+ if (spi_read_chunk(p, offset, this_chunk) != EC_SUCCESS) {
+ CPRINTS("%s: read error at 0x%x", __func__, offset);
+ return VENDOR_RC_READ_FLASH_FAIL;
+ }
+
+ bytes -= this_chunk;
+ offset += this_chunk;
+ p += this_chunk;
+ }
+ return EC_SUCCESS;
+}
+
int usb_spi_sha256_update(struct sha256_ctx *ctx, uint32_t offset,
uint32_t size)
{