lkml.org 
[lkml]   [2019]   [Apr]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 4.19 11/53] ASoC: rt5682: recording has no sound after booting
    Date
    From: Shuming Fan <shumingf@realtek.com>

    [ Upstream commit 1c5b6a27e432e4fe170a924c8b41012271496a4c ]

    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>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    sound/soc/codecs/rt5682.c | 14 +++++---------
    1 file changed, 5 insertions(+), 9 deletions(-)

    diff --git a/sound/soc/codecs/rt5682.c b/sound/soc/codecs/rt5682.c
    index 79ebcc239786..6f5dac09cede 100644
    --- a/sound/soc/codecs/rt5682.c
    +++ b/sound/soc/codecs/rt5682.c
    @@ -1196,7 +1196,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};

    @@ -1210,15 +1210,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);
    @@ -1230,7 +1225,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;
    }
    --
    2.19.1
    \
     
     \ /
      Last update: 2019-04-27 03:51    [W:5.031 / U:0.080 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site