summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/drivers/spi/spi_flash.c14
-rw-r--r--src/drivers/spi/spi_flash_internal.h2
2 files changed, 8 insertions, 8 deletions
diff --git a/src/drivers/spi/spi_flash.c b/src/drivers/spi/spi_flash.c
index 47b4b85b0d..b674749feb 100644
--- a/src/drivers/spi/spi_flash.c
+++ b/src/drivers/spi/spi_flash.c
@@ -88,15 +88,17 @@ int spi_flash_cmd(const struct spi_slave *spi, u8 cmd, void *response, size_t le
return ret;
}
+/* TODO: This code is quite possibly broken and overflowing stacks. Fix ASAP! */
+#pragma GCC diagnostic push
+#if defined(__GNUC__) && !defined(__clang__)
+#pragma GCC diagnostic ignored "-Wstack-usage="
+#endif
+#pragma GCC diagnostic ignored "-Wvla"
int spi_flash_cmd_write(const struct spi_slave *spi, const u8 *cmd,
size_t cmd_len, const void *data, size_t data_len)
{
int ret;
- u8 buff[4 + MAX_FLASH_CMD_DATA_SIZE];
-
- if (ARRAY_SIZE(buff) < cmd_len + data_len)
- return -1;
-
+ u8 buff[cmd_len + data_len];
memcpy(buff, cmd, cmd_len);
memcpy(buff + cmd_len, data, data_len);
@@ -108,6 +110,7 @@ int spi_flash_cmd_write(const struct spi_slave *spi, const u8 *cmd,
return ret;
}
+#pragma GCC diagnostic pop
/* Perform the read operation honoring spi controller fifo size, reissuing
* the read command until the full request completed. */
@@ -256,7 +259,6 @@ int spi_flash_cmd_write_page_program(const struct spi_flash *flash, u32 offset,
byte_addr = offset % page_size;
chunk_len = MIN(len - actual, page_size - byte_addr);
chunk_len = spi_crop_chunk(&flash->spi, sizeof(cmd), chunk_len);
- chunk_len = MIN(MAX_FLASH_CMD_DATA_SIZE, chunk_len);
spi_flash_addr(offset, cmd);
if (CONFIG(DEBUG_SPI_FLASH)) {
diff --git a/src/drivers/spi/spi_flash_internal.h b/src/drivers/spi/spi_flash_internal.h
index 7fe3ea6038..b4d39b3d31 100644
--- a/src/drivers/spi/spi_flash_internal.h
+++ b/src/drivers/spi/spi_flash_internal.h
@@ -24,8 +24,6 @@
/* Common status */
#define STATUS_WIP 0x01
-#define MAX_FLASH_CMD_DATA_SIZE 256
-
/* Send a single-byte command to the device and read the response */
int spi_flash_cmd(const struct spi_slave *spi, u8 cmd, void *response, size_t len);