diff --git a/drivers/spi/spi_b_renesas_ra8.c b/drivers/spi/spi_b_renesas_ra8.c index 4d17c9e99f8..7e0c91e4742 100644 --- a/drivers/spi/spi_b_renesas_ra8.c +++ b/drivers/spi/spi_b_renesas_ra8.c @@ -313,6 +313,11 @@ static int transceive(const struct device *dev, const struct spi_config *config, spi_context_cs_control(&data->ctx, true); + if ((!spi_context_tx_buf_on(&data->ctx)) && (!spi_context_rx_buf_on(&data->ctx))) { + /* If current buffer has no data, do nothing */ + goto end; + } + #ifdef CONFIG_SPI_B_INTERRUPT spi_bit_width_t spi_width = (spi_bit_width_t)(SPI_WORD_SIZE_GET(data->ctx.config->operation) - 1); diff --git a/drivers/spi/spi_renesas_ra.c b/drivers/spi/spi_renesas_ra.c index 27a25644423..56d95b6e2a7 100644 --- a/drivers/spi/spi_renesas_ra.c +++ b/drivers/spi/spi_renesas_ra.c @@ -355,6 +355,11 @@ static int transceive(const struct device *dev, const struct spi_config *config, spi_context_cs_control(&data->ctx, true); + if ((!spi_context_tx_buf_on(&data->ctx)) && (!spi_context_rx_buf_on(&data->ctx))) { + /* If current buffer has no data, do nothing */ + goto end; + } + #ifdef CONFIG_SPI_INTERRUPT if (data->ctx.rx_len == 0) { data->data_len = spi_context_is_slave(&data->ctx)