dai: use periods from sof_ipc_comp_config in dai_params()

In dai_playback_params() and dai_capture_params()
functions we do not have to take period values
from adjacent component. We can retrieve it from
dai component sof_ipc_comp_config struct.

Signed-off-by: Bartosz Kokoszko <bartoszx.kokoszko@linux.intel.com>
This commit is contained in:
Bartosz Kokoszko 2019-07-10 09:24:39 +02:00 committed by Tomasz Lauda
parent 720cdcda67
commit b66a6d5c10
1 changed files with 12 additions and 12 deletions

View File

@ -231,7 +231,7 @@ static int dai_playback_params(struct comp_dev *dev, uint32_t period_bytes)
{ {
struct dai_data *dd = comp_get_drvdata(dev); struct dai_data *dd = comp_get_drvdata(dev);
struct dma_sg_config *config = &dd->config; struct dma_sg_config *config = &dd->config;
struct sof_ipc_comp_config *source_config; struct sof_ipc_comp_config *dai_config;
int err; int err;
uint32_t buffer_size; uint32_t buffer_size;
@ -244,19 +244,19 @@ static int dai_playback_params(struct comp_dev *dev, uint32_t period_bytes)
config->dest_dev = dd->dai->plat_data.fifo[0].handshake; config->dest_dev = dd->dai->plat_data.fifo[0].handshake;
/* set up local and host DMA elems to reset values */ /* set up local and host DMA elems to reset values */
source_config = COMP_GET_CONFIG(dd->dma_buffer->source); dai_config = COMP_GET_CONFIG(dev);
buffer_size = source_config->periods_sink * period_bytes; buffer_size = dai_config->periods_source * period_bytes;
/* resize the buffer if space is available to align with period size */ /* resize the buffer if space is available to align with period size */
err = buffer_set_size(dd->dma_buffer, buffer_size); err = buffer_set_size(dd->dma_buffer, buffer_size);
if (err < 0) { if (err < 0) {
trace_dai_error_with_ids(dev, "dai_playback_params() error: " trace_dai_error_with_ids(dev, "dai_playback_params() error: "
"buffer_set_size() failed to resize " "buffer_set_size() failed to resize "
"buffer. source_config->periods_sink =" "buffer. dai_config->periods_source ="
" %u; period_bytes = %u; " " %u; period_bytes = %u; "
"buffer_size = %u; " "buffer_size = %u; "
"dd->dma_buffer->alloc_size = %u", "dd->dma_buffer->alloc_size = %u",
source_config->periods_sink, dai_config->periods_source,
period_bytes, buffer_size, period_bytes, buffer_size,
dd->dma_buffer->alloc_size); dd->dma_buffer->alloc_size);
return err; return err;
@ -265,7 +265,7 @@ static int dai_playback_params(struct comp_dev *dev, uint32_t period_bytes)
if (!config->elem_array.elems) { if (!config->elem_array.elems) {
err = dma_sg_alloc(&config->elem_array, RZONE_RUNTIME, err = dma_sg_alloc(&config->elem_array, RZONE_RUNTIME,
config->direction, config->direction,
source_config->periods_sink, dai_config->periods_source,
period_bytes, period_bytes,
(uintptr_t)(dd->dma_buffer->r_ptr), (uintptr_t)(dd->dma_buffer->r_ptr),
dai_fifo(dd->dai, SOF_IPC_STREAM_PLAYBACK)); dai_fifo(dd->dai, SOF_IPC_STREAM_PLAYBACK));
@ -284,7 +284,7 @@ static int dai_capture_params(struct comp_dev *dev, uint32_t period_bytes)
{ {
struct dai_data *dd = comp_get_drvdata(dev); struct dai_data *dd = comp_get_drvdata(dev);
struct dma_sg_config *config = &dd->config; struct dma_sg_config *config = &dd->config;
struct sof_ipc_comp_config *sink_config; struct sof_ipc_comp_config *dai_config;
int err; int err;
uint32_t buffer_size; uint32_t buffer_size;
@ -308,19 +308,19 @@ static int dai_capture_params(struct comp_dev *dev, uint32_t period_bytes)
} }
/* set up local and host DMA elems to reset values */ /* set up local and host DMA elems to reset values */
sink_config = COMP_GET_CONFIG(dd->dma_buffer->sink); dai_config = COMP_GET_CONFIG(dev);
buffer_size = sink_config->periods_source * period_bytes; buffer_size = dai_config->periods_sink * period_bytes;
/* resize the buffer if space is available to align with period size */ /* resize the buffer if space is available to align with period size */
err = buffer_set_size(dd->dma_buffer, buffer_size); err = buffer_set_size(dd->dma_buffer, buffer_size);
if (err < 0) { if (err < 0) {
trace_dai_error_with_ids(dev, "dai_capture_params() error: " trace_dai_error_with_ids(dev, "dai_capture_params() error: "
"buffer_set_size() failed to resize " "buffer_set_size() failed to resize "
"buffer. sink_config->periods_sink = " "buffer. dai_config->periods_sink = "
"%u; period_bytes = %u; " "%u; period_bytes = %u; "
"buffer_size = %u; " "buffer_size = %u; "
"dd->dma_buffer->alloc_size = %u", "dd->dma_buffer->alloc_size = %u",
sink_config->periods_sink, dai_config->periods_sink,
period_bytes, buffer_size, period_bytes, buffer_size,
dd->dma_buffer->alloc_size); dd->dma_buffer->alloc_size);
return err; return err;
@ -329,7 +329,7 @@ static int dai_capture_params(struct comp_dev *dev, uint32_t period_bytes)
if (!config->elem_array.elems) { if (!config->elem_array.elems) {
err = dma_sg_alloc(&config->elem_array, RZONE_RUNTIME, err = dma_sg_alloc(&config->elem_array, RZONE_RUNTIME,
config->direction, config->direction,
sink_config->periods_source, dai_config->periods_sink,
period_bytes, period_bytes,
(uintptr_t)(dd->dma_buffer->w_ptr), (uintptr_t)(dd->dma_buffer->w_ptr),
dai_fifo(dd->dai, SOF_IPC_STREAM_CAPTURE)); dai_fifo(dd->dai, SOF_IPC_STREAM_CAPTURE));