Lines Matching +full:data +full:- +full:rates
1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
21 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
56 struct rk_clk_armclk_rates *rates; member
88 READ4(clk, sc->muxdiv_offset, &val); in rk_clk_armclk_init()
91 idx = (val & sc->mux_mask) >> sc->mux_shift; in rk_clk_armclk_init()
108 val |= index << sc->mux_shift; in rk_clk_armclk_set_mux()
109 val |= sc->mux_mask << RK_ARMCLK_WRITE_MASK_SHIFT; in rk_clk_armclk_set_mux()
110 dprintf("Write: muxdiv_offset=%x, val=%x\n", sc->muxdiv_offset, val); in rk_clk_armclk_set_mux()
111 WRITE4(clk, sc->muxdiv_offset, val); in rk_clk_armclk_set_mux()
127 READ4(clk, sc->muxdiv_offset, ®); in rk_clk_armclk_recalc()
128 dprintf("Read: muxdiv_offset=%x, val=%x\n", sc->muxdiv_offset, reg); in rk_clk_armclk_recalc()
132 div = ((reg & sc->div_mask) >> sc->div_shift) + 1; in rk_clk_armclk_recalc()
155 p_main = clknode_find_by_name(p_names[sc->main_parent]); in rk_clk_armclk_set_freq()
157 for (i = 0; i < sc->nrates; i++) { in rk_clk_armclk_set_freq()
158 if (sc->rates[i].freq == *fout) { in rk_clk_armclk_set_freq()
159 best = sc->rates[i].freq; in rk_clk_armclk_set_freq()
160 div = sc->rates[i].div; in rk_clk_armclk_set_freq()
165 sc->main_parent, in rk_clk_armclk_set_freq()
171 if (rate == sc->nrates) in rk_clk_armclk_set_freq()
188 clknode_set_parent_by_idx(clk, sc->main_parent); in rk_clk_armclk_set_freq()
193 val |= (div - 1) << sc->div_shift; in rk_clk_armclk_set_freq()
194 val |= sc->div_mask << RK_ARMCLK_WRITE_MASK_SHIFT; in rk_clk_armclk_set_freq()
195 dprintf("Write: muxdiv_offset=%x, val=%x\n", sc->muxdiv_offset, val); in rk_clk_armclk_set_freq()
196 WRITE4(clk, sc->muxdiv_offset, val); in rk_clk_armclk_set_freq()
225 &clkdef->clkdef); in rk_clk_armclk_register()
231 sc->muxdiv_offset = clkdef->muxdiv_offset; in rk_clk_armclk_register()
233 sc->mux_shift = clkdef->mux_shift; in rk_clk_armclk_register()
234 sc->mux_width = clkdef->mux_width; in rk_clk_armclk_register()
235 sc->mux_mask = ((1 << clkdef->mux_width) - 1) << sc->mux_shift; in rk_clk_armclk_register()
237 sc->div_shift = clkdef->div_shift; in rk_clk_armclk_register()
238 sc->div_width = clkdef->div_width; in rk_clk_armclk_register()
239 sc->div_mask = ((1 << clkdef->div_width) - 1) << sc->div_shift; in rk_clk_armclk_register()
241 sc->flags = clkdef->flags; in rk_clk_armclk_register()
243 sc->main_parent = clkdef->main_parent; in rk_clk_armclk_register()
244 sc->alt_parent = clkdef->alt_parent; in rk_clk_armclk_register()
246 sc->rates = clkdef->rates; in rk_clk_armclk_register()
247 sc->nrates = clkdef->nrates; in rk_clk_armclk_register()