Lines Matching refs:zx_pll
27 static int rate_to_idx(struct clk_zx_pll *zx_pll, unsigned long rate) in rate_to_idx() argument
29 const struct zx_pll_config *config = zx_pll->lookup_table; in rate_to_idx()
32 for (i = 0; i < zx_pll->count; i++) { in rate_to_idx()
43 static int hw_to_idx(struct clk_zx_pll *zx_pll) in hw_to_idx() argument
45 const struct zx_pll_config *config = zx_pll->lookup_table; in hw_to_idx()
49 hw_cfg0 = readl_relaxed(zx_pll->reg_base); in hw_to_idx()
50 hw_cfg1 = readl_relaxed(zx_pll->reg_base + CFG0_CFG1_OFFSET); in hw_to_idx()
56 for (i = 0; i < zx_pll->count; i++) { in hw_to_idx()
67 struct clk_zx_pll *zx_pll = to_clk_zx_pll(hw); in zx_pll_recalc_rate() local
70 idx = hw_to_idx(zx_pll); in zx_pll_recalc_rate()
74 return zx_pll->lookup_table[idx].rate; in zx_pll_recalc_rate()
80 struct clk_zx_pll *zx_pll = to_clk_zx_pll(hw); in zx_pll_round_rate() local
83 idx = rate_to_idx(zx_pll, rate); in zx_pll_round_rate()
85 return zx_pll->lookup_table[idx].rate; in zx_pll_round_rate()
92 struct clk_zx_pll *zx_pll = to_clk_zx_pll(hw); in zx_pll_set_rate() local
96 idx = rate_to_idx(zx_pll, rate); in zx_pll_set_rate()
97 config = &zx_pll->lookup_table[idx]; in zx_pll_set_rate()
99 writel_relaxed(config->cfg0, zx_pll->reg_base); in zx_pll_set_rate()
100 writel_relaxed(config->cfg1, zx_pll->reg_base + CFG0_CFG1_OFFSET); in zx_pll_set_rate()
107 struct clk_zx_pll *zx_pll = to_clk_zx_pll(hw); in zx_pll_enable() local
110 reg = readl_relaxed(zx_pll->reg_base); in zx_pll_enable()
111 writel_relaxed(reg & ~POWER_DOWN, zx_pll->reg_base); in zx_pll_enable()
113 return readl_relaxed_poll_timeout(zx_pll->reg_base, reg, in zx_pll_enable()
119 struct clk_zx_pll *zx_pll = to_clk_zx_pll(hw); in zx_pll_disable() local
122 reg = readl_relaxed(zx_pll->reg_base); in zx_pll_disable()
123 writel_relaxed(reg | POWER_DOWN, zx_pll->reg_base); in zx_pll_disable()
128 struct clk_zx_pll *zx_pll = to_clk_zx_pll(hw); in zx_pll_is_enabled() local
131 reg = readl_relaxed(zx_pll->reg_base); in zx_pll_is_enabled()
150 struct clk_zx_pll *zx_pll; in clk_register_zx_pll() local
154 zx_pll = kzalloc(sizeof(*zx_pll), GFP_KERNEL); in clk_register_zx_pll()
155 if (!zx_pll) in clk_register_zx_pll()
164 zx_pll->reg_base = reg_base; in clk_register_zx_pll()
165 zx_pll->lookup_table = lookup_table; in clk_register_zx_pll()
166 zx_pll->count = count; in clk_register_zx_pll()
167 zx_pll->lock = lock; in clk_register_zx_pll()
168 zx_pll->hw.init = &init; in clk_register_zx_pll()
170 clk = clk_register(NULL, &zx_pll->hw); in clk_register_zx_pll()
172 kfree(zx_pll); in clk_register_zx_pll()