drivers: audio: Port to the new timeout API

Port the I2S and DMIC drivers to the new timeout API so that they do
not need to enable legacy timeouts.

Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
This commit is contained in:
Carles Cufi 2020-05-04 13:13:36 +02:00 committed by Carles Cufí
commit 9ba20dd48e
8 changed files with 20 additions and 15 deletions

View file

@ -1346,7 +1346,7 @@ static int dmic_read_device(struct device *dev, u8_t stream,
/* retrieve buffer from out queue */
ret = k_msgq_get(&dmic_private.streams[stream].out_queue,
buffer, timeout);
buffer, K_MSEC(timeout));
if (ret) {
LOG_ERR("No buffers in stream %u out_queue", stream);
} else {

View file

@ -8,7 +8,6 @@
#
menuconfig I2S
bool "I2S bus drivers"
select LEGACY_TIMEOUT_API
help
Enable support for the I2S (Inter-IC Sound) hardware bus.

View file

@ -779,7 +779,8 @@ static int i2s_cavs_read(struct device *dev, void **mem_block, size_t *size)
return -EIO;
}
ret = k_msgq_get(&strm->out_queue, &buffer, dev_data->cfg.timeout);
ret = k_msgq_get(&strm->out_queue, &buffer,
SYS_TIMEOUT_MS(dev_data->cfg.timeout));
if (ret != 0) {
return -EAGAIN;
}
@ -803,7 +804,8 @@ static int i2s_cavs_write(struct device *dev, void *mem_block, size_t size)
SOC_DCACHE_FLUSH(mem_block, size);
ret = k_msgq_put(&strm->in_queue, &mem_block, dev_data->cfg.timeout);
ret = k_msgq_put(&strm->in_queue, &mem_block,
SYS_TIMEOUT_MS(dev_data->cfg.timeout));
if (ret) {
LOG_ERR("k_msgq_put failed %d", ret);
return ret;

View file

@ -384,7 +384,7 @@ static int i2s_stm32_read(struct device *dev, void **mem_block, size_t *size)
if (dev_data->rx.state != I2S_STATE_ERROR) {
ret = k_sem_take(&dev_data->rx.sem,
K_MSEC(dev_data->rx.cfg.timeout));
SYS_TIMEOUT_MS(dev_data->rx.cfg.timeout));
if (ret < 0) {
return ret;
}
@ -410,7 +410,8 @@ static int i2s_stm32_write(struct device *dev, void *mem_block, size_t size)
return -EIO;
}
ret = k_sem_take(&dev_data->tx.sem, K_MSEC(dev_data->tx.cfg.timeout));
ret = k_sem_take(&dev_data->tx.sem,
SYS_TIMEOUT_MS(dev_data->tx.cfg.timeout));
if (ret < 0) {
return ret;
}

View file

@ -840,7 +840,8 @@ static int i2s_sam_read(struct device *dev, void **mem_block, size_t *size)
}
if (dev_data->rx.state != I2S_STATE_ERROR) {
ret = k_sem_take(&dev_data->rx.sem, dev_data->rx.cfg.timeout);
ret = k_sem_take(&dev_data->rx.sem,
SYS_TIMEOUT_MS(dev_data->rx.cfg.timeout));
if (ret < 0) {
return ret;
}
@ -866,7 +867,8 @@ static int i2s_sam_write(struct device *dev, void *mem_block, size_t size)
return -EIO;
}
ret = k_sem_take(&dev_data->tx.sem, dev_data->tx.cfg.timeout);
ret = k_sem_take(&dev_data->tx.sem,
SYS_TIMEOUT_MS(dev_data->tx.cfg.timeout));
if (ret < 0) {
return ret;
}

View file

@ -273,7 +273,8 @@ static inline int dmic_trigger(struct device *dev, enum dmic_trigger cmd)
* @param stream Stream identifier
* @param buffer Pointer to the received buffer address
* @param size Pointer to the received buffer size
* @param timeout Timeout value to wait in case audio is not yet received
* @param timeout Timeout in milliseconds to wait in case audio is not yet
* received, or @ref SYS_FOREVER_MS
*
* @return 0 on success, a negative error code on failure
*/

View file

@ -73,7 +73,7 @@ static void audio_driver_process_audio_input(void)
int ret;
/* read capture input buffer */
ret = dmic_read(dmic_device, 0, (void **)&mic_in_buf, &size, K_FOREVER);
ret = dmic_read(dmic_device, 0, (void **)&mic_in_buf, &size, SYS_FOREVER_MS);
if (ret) {
LOG_ERR("dmic_device read failed %d", ret);
return;
@ -224,7 +224,7 @@ static void audio_driver_config_host_streams(void)
i2s_cfg.frame_clk_freq = AUDIO_SAMPLE_FREQ;
i2s_cfg.block_size = HOST_FRAME_BYTES;
i2s_cfg.mem_slab = &host_inout_mem_slab;
i2s_cfg.timeout = K_NO_WAIT;
i2s_cfg.timeout = 0;
k_mem_slab_init(&host_inout_mem_slab, &audio_buffers.host_inout[0][0],
HOST_FRAME_BYTES, HOST_INOUT_BUF_COUNT);
@ -251,7 +251,7 @@ static void audio_driver_config_periph_streams(void)
I2S_OPT_BIT_CLK_SLAVE,
.frame_clk_freq = AUDIO_SAMPLE_FREQ,
.block_size = SPK_FRAME_BYTES,
.timeout = K_NO_WAIT,
.timeout = 0,
},
};
struct pcm_stream_cfg stream = {
@ -318,7 +318,7 @@ static void audio_driver_config_periph_streams(void)
i2s_cfg.frame_clk_freq = AUDIO_SAMPLE_FREQ;
i2s_cfg.block_size = SPK_FRAME_BYTES;
i2s_cfg.mem_slab = &spk_out_mem_slab;
i2s_cfg.timeout = K_NO_WAIT;
i2s_cfg.timeout = 0;
k_mem_slab_init(&spk_out_mem_slab, &audio_buffers.spk_out[0][0],
SPK_FRAME_BYTES, SPK_OUT_BUF_COUNT);

View file

@ -157,7 +157,7 @@ static void i2s_audio_init(void)
i2s_cfg.mem_slab = &i2s_mem_slab;
/* make the transmit interface non-blocking */
i2s_cfg.timeout = K_NO_WAIT;
i2s_cfg.timeout = 0;
ret = i2s_configure(spk_i2s_dev, I2S_DIR_TX, &i2s_cfg);
if (ret != 0) {
LOG_ERR("dmic_configure failed with %d error", ret);
@ -165,7 +165,7 @@ static void i2s_audio_init(void)
}
/* make the receive interface blocking */
i2s_cfg.timeout = K_FOREVER;
i2s_cfg.timeout = SYS_FOREVER_MS;
ret = i2s_configure(host_i2s_dev, I2S_DIR_RX, &i2s_cfg);
if (ret != 0) {
LOG_ERR("dmic_configure failed with %d error", ret);