From 4ff7df43a2b0c54e027bddb1c698945b812613ee Mon Sep 17 00:00:00 2001 From: Derek Snell Date: Fri, 25 Feb 2022 12:35:56 -0500 Subject: [PATCH] drivers: i2s: mcux_sai: fixed RX not completing end of stream RX FIFO watermark setting causing issue where last 16 words received were stuck in FIFO, and not requesting DMA to move to buffer. Fixed by setting watermark to 0. Signed-off-by: Derek Snell --- drivers/i2s/i2s_mcux_sai.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/i2s/i2s_mcux_sai.c b/drivers/i2s/i2s_mcux_sai.c index 1b4b58a8047..bd43ddc3fe9 100644 --- a/drivers/i2s/i2s_mcux_sai.c +++ b/drivers/i2s/i2s_mcux_sai.c @@ -604,6 +604,9 @@ static int i2s_mcux_config(const struct device *dev, enum i2s_dir dir, dev_data->tx.dma_cfg.user_data = (void *)dev; dev_data->tx.state = I2S_STATE_READY; } else { + /* For RX, DMA reads from FIFO whenever data present */ + config.fifo.fifoWatermark = 0; + memcpy(&dev_data->rx.cfg, i2s_cfg, sizeof(struct i2s_config)); LOG_DBG("rx slab free_list = 0x%x", (uint32_t)i2s_cfg->mem_slab->free_list);