Merge "asoc: wsa-macro: Fix mixing path on WSA"

This commit is contained in:
qctecmdr 2020-06-05 01:54:03 -07:00 • committed by Gerrit - the friendly Code Review server
commit d187ddf230

View file

@ -1180,45 +1180,6 @@ static int wsa_macro_enable_vi_feedback(struct snd_soc_dapm_widget *w,
return 0;
}
static int wsa_macro_enable_mix_path(struct snd_soc_dapm_widget *w,
struct snd_kcontrol *kcontrol, int event)
{
struct snd_soc_component *component =
snd_soc_dapm_to_component(w->dapm);
u16 gain_reg;
int offset_val = 0;
int val = 0;
dev_dbg(component->dev, "%s %d %s\n", __func__, event, w->name);
switch (w->reg) {
case BOLERO_CDC_WSA_RX0_RX_PATH_MIX_CTL:
gain_reg = BOLERO_CDC_WSA_RX0_RX_VOL_MIX_CTL;
break;
case BOLERO_CDC_WSA_RX1_RX_PATH_MIX_CTL:
gain_reg = BOLERO_CDC_WSA_RX1_RX_VOL_MIX_CTL;
break;
default:
dev_err(component->dev, "%s: No gain register avail for %s\n",
__func__, w->name);
return 0;
}
switch (event) {
case SND_SOC_DAPM_POST_PMU:
val = snd_soc_component_read32(component, gain_reg);
val += offset_val;
snd_soc_component_write(component, gain_reg, val);
break;
case SND_SOC_DAPM_POST_PMD:
snd_soc_component_update_bits(component,
w->reg, 0x20, 0x00);
break;
}
return 0;
}
static void wsa_macro_hd2_control(struct snd_soc_component *component,
u16 reg, int event)
{
@ -1305,6 +1266,44 @@ static int wsa_macro_enable_swr(struct snd_soc_dapm_widget *w,
return 0;
}
static int wsa_macro_enable_mix_path(struct snd_soc_dapm_widget *w,
struct snd_kcontrol *kcontrol, int event)
{
struct snd_soc_component *component =
snd_soc_dapm_to_component(w->dapm);
u16 gain_reg;
int offset_val = 0;
int val = 0;
dev_dbg(component->dev, "%s %d %s\n", __func__, event, w->name);
if (!(strcmp(w->name, "WSA_RX0 MIX INP"))) {
gain_reg = BOLERO_CDC_WSA_RX0_RX_VOL_MIX_CTL;
} else if (!(strcmp(w->name, "WSA_RX1 MIX INP"))) {
gain_reg = BOLERO_CDC_WSA_RX1_RX_VOL_MIX_CTL;
} else {
dev_err(component->dev, "%s: No gain register avail for %s\n",
__func__, w->name);
return 0;
}
switch (event) {
case SND_SOC_DAPM_PRE_PMU:
wsa_macro_enable_swr(w, kcontrol, event);
val = snd_soc_component_read32(component, gain_reg);
val += offset_val;
snd_soc_component_write(component, gain_reg, val);
break;
case SND_SOC_DAPM_POST_PMD:
snd_soc_component_update_bits(component,
w->reg, 0x20, 0x00);
wsa_macro_enable_swr(w, kcontrol, event);
break;
}
return 0;
}
static int wsa_macro_config_compander(struct snd_soc_component *component,
int comp, int event)
{
@ -2552,7 +2551,7 @@ static const struct snd_soc_dapm_widget wsa_macro_dapm_widgets[] = {
SND_SOC_DAPM_MUX_E("WSA_RX0 INP2", SND_SOC_NOPM, 0, 0,
&rx0_prim_inp2_mux, wsa_macro_enable_swr,
SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD),
SND_SOC_DAPM_MUX_E("WSA_RX0 MIX INP", BOLERO_CDC_WSA_RX0_RX_PATH_MIX_CTL,
SND_SOC_DAPM_MUX_E("WSA_RX0 MIX INP", SND_SOC_NOPM,
0, 0, &rx0_mix_mux, wsa_macro_enable_mix_path,
SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD),
SND_SOC_DAPM_MUX_E("WSA_RX1 INP0", SND_SOC_NOPM, 0, 0,
@ -2564,7 +2563,7 @@ static const struct snd_soc_dapm_widget wsa_macro_dapm_widgets[] = {
SND_SOC_DAPM_MUX_E("WSA_RX1 INP2", SND_SOC_NOPM, 0, 0,
&rx1_prim_inp2_mux, wsa_macro_enable_swr,
SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD),
SND_SOC_DAPM_MUX_E("WSA_RX1 MIX INP", BOLERO_CDC_WSA_RX1_RX_PATH_MIX_CTL,
SND_SOC_DAPM_MUX_E("WSA_RX1 MIX INP", SND_SOC_NOPM,
0, 0, &rx1_mix_mux, wsa_macro_enable_mix_path,
SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD),
SND_SOC_DAPM_MIXER_E("WSA_RX INT0 MIX", SND_SOC_NOPM,