From a9507793d96d28e8835210fb059a0eebb6fa2b5e Mon Sep 17 00:00:00 2001 From: Francois Ramu <francois.ramu@st.com> Date: Thu, 10 Mar 2022 10:21:22 +0100 Subject: [PATCH] drivers: spi: stm32 spi with dma must enable cs after periph When using DMA to transfer over the spi, the spi_stm32_cs_control is done after enabling the SPI. The same sequence applies in the transceive_dma function as in transceive function Signed-off-by: Francois Ramu <francois.ramu@st.com> --- drivers/spi/spi_ll_stm32.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/spi/spi_ll_stm32.c b/drivers/spi/spi_ll_stm32.c index e230c884076..7e7387f099e 100644 --- a/drivers/spi/spi_ll_stm32.c +++ b/drivers/spi/spi_ll_stm32.c @@ -724,9 +724,6 @@ static int transceive_dma(const struct device *dev, /* Set buffers info */ spi_context_buffers_setup(&data->ctx, tx_bufs, rx_bufs, 1); - /* This is turned off in spi_stm32_complete(). */ - spi_stm32_cs_control(dev, true); - #if defined(CONFIG_SOC_SERIES_STM32H7X) /* set request before enabling (else SPI CFG1 reg is write protected) */ LL_SPI_EnableDMAReq_RX(spi); @@ -740,6 +737,9 @@ static int transceive_dma(const struct device *dev, LL_SPI_Enable(spi); #endif /* CONFIG_SOC_SERIES_STM32H7X */ + /* This is turned off in spi_stm32_complete(). */ + spi_stm32_cs_control(dev, true); + while (data->ctx.rx_len > 0 || data->ctx.tx_len > 0) { size_t dma_len; -- GitLab