• Bard Liao's avatar
    ASoC: rt5670: Check sysclk source by private data · 485372dc
    Bard Liao authored
    Currently, is_sys_clk_from_pll check sysclk source by reading codec
    register value. And it will be invoked before updating dapm widget
    power. In some machine driver, snd_soc_dai_set_sysclk is called in
    dapm event to switch codec sysclk to RC clock in idle mode. And in
    some use cases (such as syspend/resume) hw_params will not be called
    when the dapm widget is powered up. As a result, is_sys_clk_from_pll
    will return 0 although it is supposed to be 1.
    To solve this, we let is_sys_clk_from_pll check sysclk sysclk_src
    which is stored in private data and don't change the value of sysclk_src
    when codec sysclk is switched to internal clock. The internal clock
    can only be used in idle mode, so it sould be fine if we don't set
    sysclk_src to internal clock.
    Signed-off-by: default avatarBard Liao <bardliao@realtek.com>
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    485372dc
rt5670.c 86.7 KB