mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 14:41:02 +07:00
ASoC: rt5682: recording has no sound after booting
If ASRC turns on, HW will use clk_dac as the reference clock whether recording or playback. Both of clk_dac and clk_adc should set proper clock while using ASRC. Signed-off-by: Shuming Fan <shumingf@realtek.com> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
675212bfb2
commit
1c5b6a27e4
@ -1208,7 +1208,7 @@ static int set_filter_clk(struct snd_soc_dapm_widget *w,
|
||||
struct snd_soc_component *component =
|
||||
snd_soc_dapm_to_component(w->dapm);
|
||||
struct rt5682_priv *rt5682 = snd_soc_component_get_drvdata(component);
|
||||
int ref, val, reg, sft, mask, idx = -EINVAL;
|
||||
int ref, val, reg, idx = -EINVAL;
|
||||
static const int div_f[] = {1, 2, 3, 4, 6, 8, 12, 16, 24, 32, 48};
|
||||
static const int div_o[] = {1, 2, 4, 6, 8, 12, 16, 24, 32, 48};
|
||||
|
||||
@ -1222,15 +1222,10 @@ static int set_filter_clk(struct snd_soc_dapm_widget *w,
|
||||
|
||||
idx = rt5682_div_sel(rt5682, ref, div_f, ARRAY_SIZE(div_f));
|
||||
|
||||
if (w->shift == RT5682_PWR_ADC_S1F_BIT) {
|
||||
if (w->shift == RT5682_PWR_ADC_S1F_BIT)
|
||||
reg = RT5682_PLL_TRACK_3;
|
||||
sft = RT5682_ADC_OSR_SFT;
|
||||
mask = RT5682_ADC_OSR_MASK;
|
||||
} else {
|
||||
else
|
||||
reg = RT5682_PLL_TRACK_2;
|
||||
sft = RT5682_DAC_OSR_SFT;
|
||||
mask = RT5682_DAC_OSR_MASK;
|
||||
}
|
||||
|
||||
snd_soc_component_update_bits(component, reg,
|
||||
RT5682_FILTER_CLK_DIV_MASK, idx << RT5682_FILTER_CLK_DIV_SFT);
|
||||
@ -1242,7 +1237,8 @@ static int set_filter_clk(struct snd_soc_dapm_widget *w,
|
||||
}
|
||||
|
||||
snd_soc_component_update_bits(component, RT5682_ADDA_CLK_1,
|
||||
mask, idx << sft);
|
||||
RT5682_ADC_OSR_MASK | RT5682_DAC_OSR_MASK,
|
||||
(idx << RT5682_ADC_OSR_SFT) | (idx << RT5682_DAC_OSR_SFT));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user