Lines Matching refs:fll

1646 static int arizona_validate_fll(struct arizona_fll *fll,  in arizona_validate_fll()  argument
1652 if (fll->fout && Fout != fll->fout) { in arizona_validate_fll()
1653 arizona_fll_err(fll, in arizona_validate_fll()
1659 arizona_fll_err(fll, in arizona_validate_fll()
1665 Fvco_min = ARIZONA_FLL_MIN_FVCO * fll->vco_mult; in arizona_validate_fll()
1667 arizona_fll_err(fll, "No FLL_OUTDIV for Fout=%uHz\n", in arizona_validate_fll()
1691 static int arizona_calc_fratio(struct arizona_fll *fll, in arizona_calc_fratio() argument
1714 arizona_fll_err(fll, "Unable to find FRATIO for Fref=%uHz\n", in arizona_calc_fratio()
1719 switch (fll->arizona->type) { in arizona_calc_fratio()
1722 if (fll->arizona->rev < 3 || sync) in arizona_calc_fratio()
1738 (fll->vco_mult * ratio) < Fref) in arizona_calc_fratio()
1762 arizona_fll_warn(fll, "Falling back to integer mode operation\n"); in arizona_calc_fratio()
1766 static int arizona_calc_fll(struct arizona_fll *fll, in arizona_calc_fll() argument
1773 arizona_fll_dbg(fll, "Fref=%u Fout=%u\n", Fref, fll->fout); in arizona_calc_fll()
1777 while (fll->fout * div < ARIZONA_FLL_MIN_FVCO * fll->vco_mult) { in arizona_calc_fll()
1782 target = fll->fout * div / fll->vco_mult; in arizona_calc_fll()
1785 arizona_fll_dbg(fll, "Fvco=%dHz\n", target); in arizona_calc_fll()
1788 ratio = arizona_calc_fratio(fll, cfg, target, Fref, sync); in arizona_calc_fll()
1799 arizona_fll_dbg(fll, "GCD=%u\n", gcd_fll); in arizona_calc_fll()
1825 arizona_fll_err(fll, "Unable to find gain for Fref=%uHz\n", in arizona_calc_fll()
1830 arizona_fll_dbg(fll, "N=%x THETA=%x LAMBDA=%x\n", in arizona_calc_fll()
1832 arizona_fll_dbg(fll, "FRATIO=%x(%d) OUTDIV=%x REFCLK_DIV=%x\n", in arizona_calc_fll()
1834 arizona_fll_dbg(fll, "GAIN=%d\n", cfg->gain); in arizona_calc_fll()
1875 static int arizona_is_enabled_fll(struct arizona_fll *fll) in arizona_is_enabled_fll() argument
1877 struct arizona *arizona = fll->arizona; in arizona_is_enabled_fll()
1881 ret = regmap_read(arizona->regmap, fll->base + 1, &reg); in arizona_is_enabled_fll()
1883 arizona_fll_err(fll, "Failed to read current state: %d\n", in arizona_is_enabled_fll()
1891 static int arizona_enable_fll(struct arizona_fll *fll) in arizona_enable_fll() argument
1893 struct arizona *arizona = fll->arizona; in arizona_enable_fll()
1895 int already_enabled = arizona_is_enabled_fll(fll); in arizona_enable_fll()
1905 regmap_update_bits_async(fll->arizona->regmap, fll->base + 0x9, in arizona_enable_fll()
1907 regmap_update_bits_async(fll->arizona->regmap, fll->base + 1, in arizona_enable_fll()
1916 if (fll->ref_src >= 0 && fll->ref_freq && in arizona_enable_fll()
1917 fll->ref_src != fll->sync_src) { in arizona_enable_fll()
1918 arizona_calc_fll(fll, &cfg, fll->ref_freq, false); in arizona_enable_fll()
1920 arizona_apply_fll(arizona, fll->base, &cfg, fll->ref_src, in arizona_enable_fll()
1922 if (fll->sync_src >= 0) { in arizona_enable_fll()
1923 arizona_calc_fll(fll, &cfg, fll->sync_freq, true); in arizona_enable_fll()
1925 arizona_apply_fll(arizona, fll->base + 0x10, &cfg, in arizona_enable_fll()
1926 fll->sync_src, true); in arizona_enable_fll()
1929 } else if (fll->sync_src >= 0) { in arizona_enable_fll()
1930 arizona_calc_fll(fll, &cfg, fll->sync_freq, false); in arizona_enable_fll()
1932 arizona_apply_fll(arizona, fll->base, &cfg, in arizona_enable_fll()
1933 fll->sync_src, false); in arizona_enable_fll()
1935 regmap_update_bits_async(arizona->regmap, fll->base + 0x11, in arizona_enable_fll()
1938 arizona_fll_err(fll, "No clocks provided\n"); in arizona_enable_fll()
1946 if (use_sync && fll->sync_freq > 100000) in arizona_enable_fll()
1947 regmap_update_bits_async(arizona->regmap, fll->base + 0x17, in arizona_enable_fll()
1950 regmap_update_bits_async(arizona->regmap, fll->base + 0x17, in arizona_enable_fll()
1957 regmap_update_bits_async(arizona->regmap, fll->base + 1, in arizona_enable_fll()
1960 regmap_update_bits_async(arizona->regmap, fll->base + 0x11, in arizona_enable_fll()
1965 regmap_update_bits_async(arizona->regmap, fll->base + 1, in arizona_enable_fll()
1968 arizona_fll_dbg(fll, "Waiting for FLL lock...\n"); in arizona_enable_fll()
1979 if (val & (ARIZONA_FLL1_CLOCK_OK_STS << (fll->id - 1))) in arizona_enable_fll()
1983 arizona_fll_warn(fll, "Timed out waiting for lock\n"); in arizona_enable_fll()
1985 arizona_fll_dbg(fll, "FLL locked (%d polls)\n", i); in arizona_enable_fll()
1990 static void arizona_disable_fll(struct arizona_fll *fll) in arizona_disable_fll() argument
1992 struct arizona *arizona = fll->arizona; in arizona_disable_fll()
1995 regmap_update_bits_async(arizona->regmap, fll->base + 1, in arizona_disable_fll()
1997 regmap_update_bits_check(arizona->regmap, fll->base + 1, in arizona_disable_fll()
1999 regmap_update_bits(arizona->regmap, fll->base + 0x11, in arizona_disable_fll()
2001 regmap_update_bits_async(arizona->regmap, fll->base + 1, in arizona_disable_fll()
2008 int arizona_set_fll_refclk(struct arizona_fll *fll, int source, in arizona_set_fll_refclk() argument
2013 if (fll->ref_src == source && fll->ref_freq == Fref) in arizona_set_fll_refclk()
2016 if (fll->fout && Fref > 0) { in arizona_set_fll_refclk()
2017 ret = arizona_validate_fll(fll, Fref, fll->fout); in arizona_set_fll_refclk()
2022 fll->ref_src = source; in arizona_set_fll_refclk()
2023 fll->ref_freq = Fref; in arizona_set_fll_refclk()
2025 if (fll->fout && Fref > 0) { in arizona_set_fll_refclk()
2026 ret = arizona_enable_fll(fll); in arizona_set_fll_refclk()
2033 int arizona_set_fll(struct arizona_fll *fll, int source, in arizona_set_fll() argument
2038 if (fll->sync_src == source && in arizona_set_fll()
2039 fll->sync_freq == Fref && fll->fout == Fout) in arizona_set_fll()
2043 if (fll->ref_src >= 0) { in arizona_set_fll()
2044 ret = arizona_validate_fll(fll, fll->ref_freq, Fout); in arizona_set_fll()
2049 ret = arizona_validate_fll(fll, Fref, Fout); in arizona_set_fll()
2054 fll->sync_src = source; in arizona_set_fll()
2055 fll->sync_freq = Fref; in arizona_set_fll()
2056 fll->fout = Fout; in arizona_set_fll()
2059 ret = arizona_enable_fll(fll); in arizona_set_fll()
2061 arizona_disable_fll(fll); in arizona_set_fll()
2068 int ok_irq, struct arizona_fll *fll) in arizona_init_fll() argument
2072 fll->id = id; in arizona_init_fll()
2073 fll->base = base; in arizona_init_fll()
2074 fll->arizona = arizona; in arizona_init_fll()
2075 fll->sync_src = ARIZONA_FLL_SRC_NONE; in arizona_init_fll()
2082 fll->ref_src = val & ARIZONA_CLK_32K_SRC_MASK; in arizona_init_fll()
2085 fll->ref_src = ARIZONA_FLL_SRC_NONE; in arizona_init_fll()
2087 fll->ref_freq = 32768; in arizona_init_fll()
2089 snprintf(fll->lock_name, sizeof(fll->lock_name), "FLL%d lock", id); in arizona_init_fll()
2090 snprintf(fll->clock_ok_name, sizeof(fll->clock_ok_name), in arizona_init_fll()
2093 regmap_update_bits(arizona->regmap, fll->base + 1, in arizona_init_fll()