From 60dd576975528d15211dbe768f831461730b7cfa Mon Sep 17 00:00:00 2001 From: Derek Snell Date: Sat, 5 Mar 2022 17:54:30 -0500 Subject: [PATCH] drivers: i2s: mcux_sai: fixed driver message pool sizes Fixed bug if CONFIG_I2S_RX_BLOCK_COUNT and CONFIG_I2S_TX_BLOCK_COUNT are different sizes. Signed-off-by: Derek Snell --- drivers/i2s/i2s_mcux_sai.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/drivers/i2s/i2s_mcux_sai.c b/drivers/i2s/i2s_mcux_sai.c index bd43ddc3fe9..5aaaaca3016 100644 --- a/drivers/i2s/i2s_mcux_sai.c +++ b/drivers/i2s/i2s_mcux_sai.c @@ -59,9 +59,7 @@ struct stream { struct dma_config dma_cfg; struct dma_block_config dma_block; struct k_msgq in_queue; - void *in_msgs[CONFIG_I2S_RX_BLOCK_COUNT]; struct k_msgq out_queue; - void *out_msgs[CONFIG_I2S_TX_BLOCK_COUNT]; uint32_t stream_starving; }; @@ -92,7 +90,11 @@ struct i2s_mcux_config { struct i2s_dev_data { const struct device *dev_dma; struct stream tx; + void *tx_in_msgs[CONFIG_I2S_TX_BLOCK_COUNT]; + void *tx_out_msgs[CONFIG_I2S_TX_BLOCK_COUNT]; struct stream rx; + void *rx_in_msgs[CONFIG_I2S_RX_BLOCK_COUNT]; + void *rx_out_msgs[CONFIG_I2S_RX_BLOCK_COUNT]; }; @@ -1007,13 +1009,13 @@ static int i2s_mcux_initialize(const struct device *dev) } /* Initialize the buffer queues */ - k_msgq_init(&dev_data->tx.in_queue, (char *)dev_data->tx.in_msgs, + k_msgq_init(&dev_data->tx.in_queue, (char *)dev_data->tx_in_msgs, sizeof(void *), CONFIG_I2S_TX_BLOCK_COUNT); - k_msgq_init(&dev_data->rx.in_queue, (char *)dev_data->rx.in_msgs, + k_msgq_init(&dev_data->rx.in_queue, (char *)dev_data->rx_in_msgs, sizeof(void *), CONFIG_I2S_RX_BLOCK_COUNT); - k_msgq_init(&dev_data->tx.out_queue, (char *)dev_data->tx.out_msgs, + k_msgq_init(&dev_data->tx.out_queue, (char *)dev_data->tx_out_msgs, sizeof(void *), CONFIG_I2S_TX_BLOCK_COUNT); - k_msgq_init(&dev_data->rx.out_queue, (char *)dev_data->rx.out_msgs, + k_msgq_init(&dev_data->rx.out_queue, (char *)dev_data->rx_out_msgs, sizeof(void *), CONFIG_I2S_RX_BLOCK_COUNT); /* register ISR */