ASoC: qcom: sdm845: only setup slim ports once
Currently same slim channel map setup for every dai link, which is redundant. Fix this by adding a flag and conditionally setting these channel maps. Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Link: https://lore.kernel.org/r/20211116115021.14213-1-srinivas.kandagatla@linaro.org Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
5ecc573d0c
commit
5f55c9693a
1 changed files with 9 additions and 1 deletions
|
@ -33,6 +33,7 @@
|
|||
struct sdm845_snd_data {
|
||||
struct snd_soc_jack jack;
|
||||
bool jack_setup;
|
||||
bool slim_port_setup;
|
||||
bool stream_prepared[AFE_PORT_MAX];
|
||||
struct snd_soc_card *card;
|
||||
uint32_t pri_mi2s_clk_count;
|
||||
|
@ -224,6 +225,7 @@ static int sdm845_dai_init(struct snd_soc_pcm_runtime *rtd)
|
|||
struct snd_soc_dai *codec_dai = asoc_rtd_to_codec(rtd, 0);
|
||||
struct snd_soc_dai *cpu_dai = asoc_rtd_to_cpu(rtd, 0);
|
||||
struct sdm845_snd_data *pdata = snd_soc_card_get_drvdata(card);
|
||||
struct snd_soc_dai_link *link = rtd->dai_link;
|
||||
struct snd_jack *jack;
|
||||
/*
|
||||
* Codec SLIMBUS configuration
|
||||
|
@ -276,6 +278,10 @@ static int sdm845_dai_init(struct snd_soc_pcm_runtime *rtd)
|
|||
}
|
||||
break;
|
||||
case SLIMBUS_0_RX...SLIMBUS_6_TX:
|
||||
/* setting up wcd multiple times for slim port is redundant */
|
||||
if (pdata->slim_port_setup || !link->no_pcm)
|
||||
return 0;
|
||||
|
||||
for_each_rtd_codec_dais(rtd, i, codec_dai) {
|
||||
rval = snd_soc_dai_set_channel_map(codec_dai,
|
||||
ARRAY_SIZE(tx_ch),
|
||||
|
@ -295,8 +301,10 @@ static int sdm845_dai_init(struct snd_soc_pcm_runtime *rtd)
|
|||
dev_warn(card->dev, "Failed to set jack: %d\n", rval);
|
||||
return rval;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
pdata->slim_port_setup = true;
|
||||
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
|
Loading…
Add table
Reference in a new issue