ASoC: Don't reconfigure WM8350 FLL if not needed
If the requested FLL configuration is the one we're currently running in it's at best pointless to reconfigure the FLL. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
@@ -63,6 +63,8 @@ struct wm8350_data {
|
|||||||
struct wm8350_jack_data hpl;
|
struct wm8350_jack_data hpl;
|
||||||
struct wm8350_jack_data hpr;
|
struct wm8350_jack_data hpr;
|
||||||
struct regulator_bulk_data supplies[ARRAY_SIZE(supply_names)];
|
struct regulator_bulk_data supplies[ARRAY_SIZE(supply_names)];
|
||||||
|
int fll_freq_out;
|
||||||
|
int fll_freq_in;
|
||||||
};
|
};
|
||||||
|
|
||||||
static unsigned int wm8350_codec_cache_read(struct snd_soc_codec *codec,
|
static unsigned int wm8350_codec_cache_read(struct snd_soc_codec *codec,
|
||||||
@@ -1104,10 +1106,14 @@ static int wm8350_set_fll(struct snd_soc_dai *codec_dai,
|
|||||||
{
|
{
|
||||||
struct snd_soc_codec *codec = codec_dai->codec;
|
struct snd_soc_codec *codec = codec_dai->codec;
|
||||||
struct wm8350 *wm8350 = codec->control_data;
|
struct wm8350 *wm8350 = codec->control_data;
|
||||||
|
struct wm8350_data *priv = codec->private_data;
|
||||||
struct _fll_div fll_div;
|
struct _fll_div fll_div;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
u16 fll_1, fll_4;
|
u16 fll_1, fll_4;
|
||||||
|
|
||||||
|
if (freq_in == priv->fll_freq_in && freq_out == priv->fll_freq_out)
|
||||||
|
return 0;
|
||||||
|
|
||||||
/* power down FLL - we need to do this for reconfiguration */
|
/* power down FLL - we need to do this for reconfiguration */
|
||||||
wm8350_clear_bits(wm8350, WM8350_POWER_MGMT_4,
|
wm8350_clear_bits(wm8350, WM8350_POWER_MGMT_4,
|
||||||
WM8350_FLL_ENA | WM8350_FLL_OSC_ENA);
|
WM8350_FLL_ENA | WM8350_FLL_OSC_ENA);
|
||||||
@@ -1142,6 +1148,9 @@ static int wm8350_set_fll(struct snd_soc_dai *codec_dai,
|
|||||||
wm8350_set_bits(wm8350, WM8350_POWER_MGMT_4, WM8350_FLL_OSC_ENA);
|
wm8350_set_bits(wm8350, WM8350_POWER_MGMT_4, WM8350_FLL_OSC_ENA);
|
||||||
wm8350_set_bits(wm8350, WM8350_POWER_MGMT_4, WM8350_FLL_ENA);
|
wm8350_set_bits(wm8350, WM8350_POWER_MGMT_4, WM8350_FLL_ENA);
|
||||||
|
|
||||||
|
priv->fll_freq_out = freq_out;
|
||||||
|
priv->fll_freq_in = freq_in;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user