mirror of https://github.com/thesofproject/sof.git
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:
parent
720cdcda67
commit
b66a6d5c10
|
@ -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));
|
||||||
|
|
Loading…
Reference in New Issue