Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 8 additions & 3 deletions src/audio/copier/copier_gain.c
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ int copier_gain_dma_control(union ipc4_connector_node_id node, const char *confi
}

struct ipc4_copier_module_cfg *copier_cfg = cd->dd[0]->dai_spec_config;
const int channels = copier_cfg->base.audio_fmt.channels_count;
const uint32_t channels = copier_cfg->base.audio_fmt.channels_count;

ret = copier_set_gain(dev, cd->dd[0]->gain_data, gain_data, channels);
if (ret)
Expand All @@ -162,7 +162,7 @@ int copier_gain_dma_control(union ipc4_connector_node_id node, const char *confi
}

int copier_set_gain(struct comp_dev *dev, struct copier_gain_params *gain_params,
struct gain_dma_control_data *gain_data, int channels)
struct gain_dma_control_data *gain_data, uint32_t channels)
{
uint16_t static_gain[MAX_GAIN_COEFFS_CNT];
int ret;
Expand All @@ -172,12 +172,17 @@ int copier_set_gain(struct comp_dev *dev, struct copier_gain_params *gain_params
return -EINVAL;
}

if (channels == 0 || channels > MAX_GAIN_COEFFS_CNT) {
comp_err(dev, "invalid channels count %u", channels);
return -EINVAL;
}

/* Set gain coefficients */
comp_info(dev, "Update gain coefficients from DMA_CONTROL ipc");

size_t gain_coef_size = channels * sizeof(uint16_t);

ret = memcpy_s(static_gain, gain_coef_size, gain_data->gain_coeffs,
ret = memcpy_s(static_gain, sizeof(static_gain), gain_data->gain_coeffs,
gain_coef_size);
if (ret) {
comp_err(dev, "memcpy_s failed with error %d", ret);
Expand Down
3 changes: 2 additions & 1 deletion src/audio/copier/copier_gain.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#ifndef __SOF_COPIER_GAIN_H__
#define __SOF_COPIER_GAIN_H__

#include <stdint.h>
#include <sof/audio/buffer.h>
#include <ipc4/base_fw.h>
#include <ipc4/gateway.h>
Expand Down Expand Up @@ -219,7 +220,7 @@ enum copier_gain_state copier_gain_eval_state(struct copier_gain_params *gain_pa
* @return 0 on success, otherwise a negative error code.
*/
int copier_set_gain(struct comp_dev *dev, struct copier_gain_params *gain_params,
struct gain_dma_control_data *gain_data, int channels);
struct gain_dma_control_data *gain_data, uint32_t channels);
Comment thread
abonislawski marked this conversation as resolved.

/**
* Checks for unity gain mode.
Expand Down
Loading