Created
July 12, 2022 17:41
-
-
Save tknapstad/a08466db612971ce7c5c63f5fe683d73 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- zephyr/drivers/spi/spi_ll_stm32.c 2022-05-16 14:34:57.051146688 +0200 | |
+++ zephyr/drivers/spi/spi_ll_stm32.c 2022-05-16 14:33:08.026088060 +0200 | |
@@ -204,18 +205,22 @@ | |
static int spi_dma_move_buffers(const struct device *dev, size_t len) | |
{ | |
struct spi_stm32_data *data = dev->data; | |
- int ret; | |
+ int ret = 0; | |
size_t dma_segment_len; | |
- dma_segment_len = len / data->dma_rx.dma_cfg.dest_data_size; | |
- ret = spi_stm32_dma_rx_load(dev, data->ctx.rx_buf, dma_segment_len); | |
+ if (data->ctx.rx_buf != NULL) { | |
+ dma_segment_len = len / data->dma_rx.dma_cfg.dest_data_size; | |
+ ret = spi_stm32_dma_rx_load(dev, data->ctx.rx_buf, dma_segment_len); | |
+ } | |
if (ret != 0) { | |
return ret; | |
} | |
- dma_segment_len = len / data->dma_tx.dma_cfg.source_data_size; | |
- ret = spi_stm32_dma_tx_load(dev, data->ctx.tx_buf, dma_segment_len); | |
+ if (data->ctx.tx_buf != NULL) { | |
+ dma_segment_len = len / data->dma_tx.dma_cfg.source_data_size; | |
+ ret = spi_stm32_dma_tx_load(dev, data->ctx.tx_buf, dma_segment_len); | |
+ } | |
return ret; | |
} | |
@@ -672,11 +677,17 @@ | |
static int wait_dma_rx_tx_done(const struct device *dev) | |
{ | |
+ const struct spi_stm32_config *cfg = dev->config; | |
struct spi_stm32_data *data = dev->data; | |
+ SPI_TypeDef *spi = cfg->spi; | |
int res = -1; | |
while (1) { | |
- res = k_sem_take(&data->status_sem, K_MSEC(1000)); | |
+ if (LL_SPI_GetMode(spi) == LL_SPI_MODE_MASTER) { | |
+ res = k_sem_take(&data->status_sem, K_MSEC(1000)); | |
+ } else { | |
+ res = k_sem_take(&data->status_sem, K_FOREVER); | |
+ } | |
if (res != 0) { | |
return res; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment