asoc : codec : update audio path and ch_msk for VI.
Update ch_msk and audio path for VI feedback path in lpass_wsa2 macro. Change-Id: Ibc96fc1ad82e2e996b11af20522f35e47b94d8f0 Signed-off-by: Ganapathiraju Sarath Varma <quic_ganavarm@quicinc.com>
This commit is contained in:
@@ -821,6 +821,18 @@ static int lpass_cdc_wsa_macro_get_channel_map(struct snd_soc_dai *dai,
|
|||||||
|
|
||||||
switch (dai->id) {
|
switch (dai->id) {
|
||||||
case LPASS_CDC_WSA_MACRO_AIF_VI:
|
case LPASS_CDC_WSA_MACRO_AIF_VI:
|
||||||
|
for_each_set_bit(temp, &wsa_priv->active_ch_mask[dai->id],
|
||||||
|
LPASS_CDC_WSA_MACRO_TX_MAX) {
|
||||||
|
mask |= (1 << temp);
|
||||||
|
if (++cnt == LPASS_CDC_WSA_MACRO_MAX_DMA_CH_PER_PORT)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (mask & 0x0C)
|
||||||
|
mask = mask >> 0x2;
|
||||||
|
|
||||||
|
*tx_slot = mask;
|
||||||
|
*tx_num = cnt;
|
||||||
|
break;
|
||||||
case LPASS_CDC_WSA_MACRO_AIF_CPS:
|
case LPASS_CDC_WSA_MACRO_AIF_CPS:
|
||||||
*tx_slot = wsa_priv->active_ch_mask[dai->id];
|
*tx_slot = wsa_priv->active_ch_mask[dai->id];
|
||||||
*tx_num = wsa_priv->active_ch_cnt[dai->id];
|
*tx_num = wsa_priv->active_ch_cnt[dai->id];
|
||||||
|
@@ -789,6 +789,9 @@ static int lpass_cdc_wsa2_macro_hw_params(struct snd_pcm_substream *substream,
|
|||||||
case 24:
|
case 24:
|
||||||
wsa2_priv->bit_width[dai->id] = 24;
|
wsa2_priv->bit_width[dai->id] = 24;
|
||||||
break;
|
break;
|
||||||
|
case 32:
|
||||||
|
wsa2_priv->bit_width[dai->id] = 32;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
dev_err_ratelimited(component->dev, "%s: Invalid format 0x%x\n",
|
dev_err_ratelimited(component->dev, "%s: Invalid format 0x%x\n",
|
||||||
__func__, params_width(params));
|
__func__, params_width(params));
|
||||||
@@ -818,6 +821,20 @@ static int lpass_cdc_wsa2_macro_get_channel_map(struct snd_soc_dai *dai,
|
|||||||
|
|
||||||
switch (dai->id) {
|
switch (dai->id) {
|
||||||
case LPASS_CDC_WSA2_MACRO_AIF_VI:
|
case LPASS_CDC_WSA2_MACRO_AIF_VI:
|
||||||
|
for_each_set_bit(temp, &wsa2_priv->active_ch_mask[dai->id],
|
||||||
|
LPASS_CDC_WSA2_MACRO_TX_MAX) {
|
||||||
|
mask |= (1 << temp);
|
||||||
|
if (++cnt == LPASS_CDC_WSA2_MACRO_MAX_DMA_CH_PER_PORT)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (mask & 0x30)
|
||||||
|
mask = mask >> 0x4;
|
||||||
|
if (mask & 0x03)
|
||||||
|
mask = mask << 0x2;
|
||||||
|
|
||||||
|
*tx_slot = mask;
|
||||||
|
*tx_num = cnt;
|
||||||
|
break;
|
||||||
case LPASS_CDC_WSA2_MACRO_AIF_CPS:
|
case LPASS_CDC_WSA2_MACRO_AIF_CPS:
|
||||||
*tx_slot = wsa2_priv->active_ch_mask[dai->id];
|
*tx_slot = wsa2_priv->active_ch_mask[dai->id];
|
||||||
*tx_num = wsa2_priv->active_ch_cnt[dai->id];
|
*tx_num = wsa2_priv->active_ch_cnt[dai->id];
|
||||||
@@ -2840,6 +2857,13 @@ static const struct snd_soc_dapm_widget lpass_cdc_wsa2_macro_dapm_widgets[] = {
|
|||||||
SND_SOC_DAPM_AIF_OUT("WSA2 AIF_ECHO", "WSA2_AIF_ECHO Capture", 0,
|
SND_SOC_DAPM_AIF_OUT("WSA2 AIF_ECHO", "WSA2_AIF_ECHO Capture", 0,
|
||||||
SND_SOC_NOPM, 0, 0),
|
SND_SOC_NOPM, 0, 0),
|
||||||
|
|
||||||
|
SND_SOC_DAPM_AIF_OUT("WSA2 AIF_CPS", "WSA2_AIF_CPS Capture", 0,
|
||||||
|
SND_SOC_NOPM, 0, 0),
|
||||||
|
|
||||||
|
SND_SOC_DAPM_AIF_OUT("WSA2 AIF_CPS", "WSA2_AIF_CPS Capture", 0,
|
||||||
|
SND_SOC_NOPM, 0, 0),
|
||||||
|
|
||||||
|
|
||||||
SND_SOC_DAPM_MIXER("WSA2_AIF_VI Mixer", SND_SOC_NOPM, LPASS_CDC_WSA2_MACRO_AIF_VI,
|
SND_SOC_DAPM_MIXER("WSA2_AIF_VI Mixer", SND_SOC_NOPM, LPASS_CDC_WSA2_MACRO_AIF_VI,
|
||||||
0, aif_vi_mixer, ARRAY_SIZE(aif_vi_mixer)),
|
0, aif_vi_mixer, ARRAY_SIZE(aif_vi_mixer)),
|
||||||
SND_SOC_DAPM_MIXER("WSA2_AIF_CPS Mixer", SND_SOC_NOPM, LPASS_CDC_WSA2_MACRO_AIF_CPS,
|
SND_SOC_DAPM_MIXER("WSA2_AIF_CPS Mixer", SND_SOC_NOPM, LPASS_CDC_WSA2_MACRO_AIF_CPS,
|
||||||
|
Reference in New Issue
Block a user