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: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20220603103530.3844527-1-broonie@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
ff31753fcb
commit
3ae190edc5
|
@ -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 */
|
||||
|
|
Loading…
Reference in New Issue