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>
        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);
        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;
 }
 
 
        int mclk_scaler;
        int pll_frac;
        int pll_int;
+       int freq_in;
+       int freq_out;
 };
 
 /* Codec Private Data */