Commit 3ae190ed authored by Mark Brown's avatar Mark Brown

ASoC: nau8822: Don't reconfigure PLL to the same values

When we configure the PLL record the input and output frequency, then if we
get asked to configure the same values again just skip reprogramming the
hardware. This makes things a bit easier to use for machine drivers since
it means they don't need to keep track of if they've programmed the PLL
so much.
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
Link: https://lore.kernel.org/r/20220603103530.3844527-1-broonie@kernel.orgSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent ff31753f
......@@ -726,6 +726,10 @@ static int nau8822_set_pll(struct snd_soc_dai *dai, int pll_id, int source,
struct nau8822_pll *pll_param = &nau8822->pll;
int ret, fs;
if (freq_in == pll_param->freq_in &&
freq_out == pll_param->freq_out)
return 0;
fs = freq_out / 256;
ret = nau8822_calc_pll(freq_in, fs, pll_param);
......@@ -762,6 +766,9 @@ static int nau8822_set_pll(struct snd_soc_dai *dai, int pll_id, int source,
snd_soc_component_update_bits(component,
NAU8822_REG_POWER_MANAGEMENT_1, NAU8822_PLL_EN_MASK, NAU8822_PLL_ON);
pll_param->freq_in = freq_in;
pll_param->freq_out = freq_out;
return 0;
}
......
......@@ -198,6 +198,8 @@ struct nau8822_pll {
int mclk_scaler;
int pll_frac;
int pll_int;
int freq_in;
int freq_out;
};
/* Codec Private Data */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment