提交 0f72a8a3 编写于 作者: C Charles Keepax 提交者: Mark Brown

ASoC: arizona: Avoid changing SYNC_ENA whilst the FLL_ENA is set

For best performance changing the synchroniser state whilst the FLL is
running should be avoided. As this has been done fairly regularly in
practice rather than hard preventing this, simply improve the FLL enable
sequence and give a warning if the user changes the synchroniser state.
Signed-off-by: NCharles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: NMark Brown <broonie@kernel.org>
上级 9fd1cd58
master alk-4.19.24 alk-4.19.30 alk-4.19.34 alk-4.19.36 alk-4.19.43 alk-4.19.48 alk-4.19.57 ck-4.19.67 ck-4.19.81 ck-4.19.91 github/fork/deepanshu1422/fix-typo-in-comment github/fork/haosdent/fix-typo linux-next v4.19.91 v4.19.90 v4.19.89 v4.19.88 v4.19.87 v4.19.86 v4.19.85 v4.19.84 v4.19.83 v4.19.82 v4.19.81 v4.19.80 v4.19.79 v4.19.78 v4.19.77 v4.19.76 v4.19.75 v4.19.74 v4.19.73 v4.19.72 v4.19.71 v4.19.70 v4.19.69 v4.19.68 v4.19.67 v4.19.66 v4.19.65 v4.19.64 v4.19.63 v4.19.62 v4.19.61 v4.19.60 v4.19.59 v4.19.58 v4.19.57 v4.19.56 v4.19.55 v4.19.54 v4.19.53 v4.19.52 v4.19.51 v4.19.50 v4.19.49 v4.19.48 v4.19.47 v4.19.46 v4.19.45 v4.19.44 v4.19.43 v4.19.42 v4.19.41 v4.19.40 v4.19.39 v4.19.38 v4.19.37 v4.19.36 v4.19.35 v4.19.34 v4.19.33 v4.19.32 v4.19.31 v4.19.30 v4.19.29 v4.19.28 v4.19.27 v4.19.26 v4.19.25 v4.19.24 v4.19.23 v4.19.22 v4.19.21 v4.19.20 v4.19.19 v4.19.18 v4.19.17 v4.19.16 v4.19.15 v4.19.14 v4.19.13 v4.19.12 v4.19.11 v4.19.10 v4.19.9 v4.19.8 v4.19.7 v4.19.6 v4.19.5 v4.19.4 v4.19.3 v4.19.2 v4.19.1 v4.19 v4.19-rc8 v4.19-rc7 v4.19-rc6 v4.19-rc5 v4.19-rc4 v4.19-rc3 v4.19-rc2 v4.19-rc1 ck-release-21 ck-release-20 ck-release-19.2 ck-release-19.1 ck-release-19 ck-release-18 ck-release-17.2 ck-release-17.1 ck-release-17 ck-release-16 ck-release-15.1 ck-release-15 ck-release-14 ck-release-13.2 ck-release-13 ck-release-12 ck-release-11 ck-release-10 ck-release-9 ck-release-7 alk-release-15 alk-release-14 alk-release-13.2 alk-release-13 alk-release-12 alk-release-11 alk-release-10 alk-release-9 alk-release-7
无相关合并请求
...@@ -2209,12 +2209,15 @@ static int arizona_enable_fll(struct arizona_fll *fll) ...@@ -2209,12 +2209,15 @@ static int arizona_enable_fll(struct arizona_fll *fll)
struct arizona *arizona = fll->arizona; struct arizona *arizona = fll->arizona;
bool use_sync = false; bool use_sync = false;
int already_enabled = arizona_is_enabled_fll(fll, fll->base); int already_enabled = arizona_is_enabled_fll(fll, fll->base);
int sync_enabled = arizona_is_enabled_fll(fll, fll->base + 0x10);
struct arizona_fll_cfg cfg; struct arizona_fll_cfg cfg;
int i; int i;
unsigned int val; unsigned int val;
if (already_enabled < 0) if (already_enabled < 0)
return already_enabled; return already_enabled;
if (sync_enabled < 0)
return sync_enabled;
if (already_enabled) { if (already_enabled) {
/* Facilitate smooth refclk across the transition */ /* Facilitate smooth refclk across the transition */
...@@ -2255,6 +2258,9 @@ static int arizona_enable_fll(struct arizona_fll *fll) ...@@ -2255,6 +2258,9 @@ static int arizona_enable_fll(struct arizona_fll *fll)
return -EINVAL; return -EINVAL;
} }
if (already_enabled && !!sync_enabled != use_sync)
arizona_fll_warn(fll, "Synchroniser changed on active FLL\n");
/* /*
* Increase the bandwidth if we're not using a low frequency * Increase the bandwidth if we're not using a low frequency
* sync source. * sync source.
...@@ -2270,12 +2276,12 @@ static int arizona_enable_fll(struct arizona_fll *fll) ...@@ -2270,12 +2276,12 @@ static int arizona_enable_fll(struct arizona_fll *fll)
if (!already_enabled) if (!already_enabled)
pm_runtime_get(arizona->dev); pm_runtime_get(arizona->dev);
regmap_update_bits_async(arizona->regmap, fll->base + 1,
ARIZONA_FLL1_ENA, ARIZONA_FLL1_ENA);
if (use_sync) if (use_sync)
regmap_update_bits_async(arizona->regmap, fll->base + 0x11, regmap_update_bits_async(arizona->regmap, fll->base + 0x11,
ARIZONA_FLL1_SYNC_ENA, ARIZONA_FLL1_SYNC_ENA,
ARIZONA_FLL1_SYNC_ENA); ARIZONA_FLL1_SYNC_ENA);
regmap_update_bits_async(arizona->regmap, fll->base + 1,
ARIZONA_FLL1_ENA, ARIZONA_FLL1_ENA);
if (already_enabled) if (already_enabled)
regmap_update_bits_async(arizona->regmap, fll->base + 1, regmap_update_bits_async(arizona->regmap, fll->base + 1,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册
反馈
建议
客服 返回
顶部