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:
Mark Brown 2022-06-03 12:35:30 +02:00
parent ff31753fcb
commit 3ae190edc5
No known key found for this signature in database
GPG Key ID: 24D68B725D5487D0
2 changed files with 9 additions and 0 deletions

View File

@ -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;
}

View File

@ -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 */