Unverified Commit 22ad2e3c authored by Krzysztof Kozlowski's avatar Krzysztof Kozlowski Committed by Mark Brown
Browse files

ASoC: qcom: q6apm-lpass-dais: Implement proper channel mapping



The set_channel_map() implementation in q6apm-lpass-dais driver was
copying older pre-Audioreach code from q6afe-dai driver, but not really
using it.  The code sets active channel mask based on passed channel
mapping, but Audioreach code does not use that mask ever.  Audioreach
module configuration does have on the other hand proper channel mapping
field, which should supersed that active channel mask.

Drop the unused active channel mask and implement proper mapping of
channels in q6apm-lpass-dais driver.

Signed-off-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://msgid.link/r/20240520-asoc-x1e80100-4-channel-mapping-v4-2-f657159b4aad@linaro.org


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 965cc040
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -755,7 +755,6 @@ struct audioreach_module_config {

	u16	data_format;
	u16	num_channels;
	u16	active_channels_mask;
	u16	dp_idx;
	u32	channel_allocation;
	u32	sd_line_mask;
+5 −5
Original line number Diff line number Diff line
@@ -33,7 +33,7 @@ static int q6dma_set_channel_map(struct snd_soc_dai *dai,

	struct q6apm_lpass_dai_data *dai_data = dev_get_drvdata(dai->dev);
	struct audioreach_module_config *cfg = &dai_data->module_config[dai->id];
	int ch_mask;
	int i;

	switch (dai->id) {
	case WSA_CODEC_DMA_TX_0:
@@ -58,7 +58,8 @@ static int q6dma_set_channel_map(struct snd_soc_dai *dai,
				tx_num);
			return -EINVAL;
		}
		ch_mask = *tx_ch_mask;
		for (i = 0; i < tx_num; i++)
			cfg->channel_map[i] = tx_ch_mask[i];

		break;
	case WSA_CODEC_DMA_RX_0:
@@ -81,7 +82,8 @@ static int q6dma_set_channel_map(struct snd_soc_dai *dai,
				rx_num);
			return -EINVAL;
		}
		ch_mask = *rx_ch_mask;
		for (i = 0; i < rx_num; i++)
			cfg->channel_map[i] = rx_ch_mask[i];

		break;
	default:
@@ -90,8 +92,6 @@ static int q6dma_set_channel_map(struct snd_soc_dai *dai,
		return -EINVAL;
	}

	cfg->active_channels_mask = ch_mask;

	return 0;
}