[alsa-devel] [PATCH 6/9] ASoC: arizona: Calculate OUTDIV first
Charles Keepax
ckeepax at opensource.wolfsonmicro.com
Fri Mar 7 17:34:22 CET 2014
OUTDIV will remain unchanged whilst the rest of the FLL configuration is
calculated so do this first.
Signed-off-by: Charles Keepax <ckeepax at opensource.wolfsonmicro.com>
---
sound/soc/codecs/arizona.c | 24 ++++++++++++------------
1 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/sound/soc/codecs/arizona.c b/sound/soc/codecs/arizona.c
index e9488cd..175e230 100644
--- a/sound/soc/codecs/arizona.c
+++ b/sound/soc/codecs/arizona.c
@@ -1424,6 +1424,18 @@ static int arizona_calc_fll(struct arizona_fll *fll,
arizona_fll_dbg(fll, "Fref=%u Fout=%u\n", Fref, fll->fout);
+ /* Fvco should be over the targt; don't check the upper bound */
+ div = ARIZONA_FLL_MIN_OUTDIV;
+ while (fll->fout * div < ARIZONA_FLL_MIN_FVCO * fll->vco_mult) {
+ div++;
+ if (div > ARIZONA_FLL_MAX_OUTDIV)
+ return -EINVAL;
+ }
+ target = fll->fout * div / fll->vco_mult;
+ cfg->outdiv = div;
+
+ arizona_fll_dbg(fll, "Fvco=%dHz\n", target);
+
/* Fref must be <=13.5MHz */
div = 1;
cfg->refdiv = 0;
@@ -1438,18 +1450,6 @@ static int arizona_calc_fll(struct arizona_fll *fll,
/* Apply the division for our remaining calculations */
Fref /= div;
- /* Fvco should be over the targt; don't check the upper bound */
- div = ARIZONA_FLL_MIN_OUTDIV;
- while (fll->fout * div < ARIZONA_FLL_MIN_FVCO * fll->vco_mult) {
- div++;
- if (div > ARIZONA_FLL_MAX_OUTDIV)
- return -EINVAL;
- }
- target = fll->fout * div / fll->vco_mult;
- cfg->outdiv = div;
-
- arizona_fll_dbg(fll, "Fvco=%dHz\n", target);
-
/* Find an appropraite FLL_FRATIO and factor it out of the target */
for (i = 0; i < ARRAY_SIZE(fll_fratios); i++) {
if (fll_fratios[i].min <= Fref && Fref <= fll_fratios[i].max) {
--
1.7.2.5
More information about the Alsa-devel
mailing list