drivers: spi: esp32xx: Fix buffer length for DMA
Fixes #52588
Signed-off-by: Lucas Tamborrino <lucas.tamborrino@espressif.com>
diff --git a/drivers/spi/spi_esp32_spim.c b/drivers/spi/spi_esp32_spim.c
index 7e53538..21c29b0 100644
--- a/drivers/spi/spi_esp32_spim.c
+++ b/drivers/spi/spi_esp32_spim.c
@@ -33,6 +33,8 @@
#define ISR_HANDLER intr_handler_t
#endif
+#define SPI_DMA_MAX_BUFFER_SIZE 4092
+
static bool spi_esp32_transfer_ongoing(struct spi_esp32_data *data)
{
return spi_context_tx_on(&data->ctx) || spi_context_rx_on(&data->ctx);
@@ -64,7 +66,9 @@
spi_hal_dev_config_t *hal_dev = &data->dev_config;
spi_hal_trans_config_t *hal_trans = &data->trans_config;
size_t chunk_len = spi_context_max_continuous_chunk(&data->ctx);
- chunk_len = MIN(chunk_len, SOC_SPI_MAXIMUM_BUFFER_SIZE);
+ size_t max_buf_sz =
+ cfg->dma_enabled ? SPI_DMA_MAX_BUFFER_SIZE : SOC_SPI_MAXIMUM_BUFFER_SIZE;
+ chunk_len = MIN(chunk_len, max_buf_sz);
size_t bit_len = chunk_len << 3;
uint8_t *rx_temp = NULL;
uint8_t *tx_temp = NULL;