Lines Matching +full:div +full:- +full:clk

1 /*-
34 #include <dev/clk/clk.h>
35 #include <dev/clk/clk_div.h>
36 #include <dev/clk/clk_fixed.h>
37 #include <dev/clk/clk_mux.h>
50 * This is a read-only divisor table node.
54 * It likely should just live in the extres/clk code.
66 qcom_clk_ro_div_recalc(struct clknode *clk, uint64_t *freq) in qcom_clk_ro_div_recalc() argument
69 uint32_t reg, idx, div = 1; in qcom_clk_ro_div_recalc() local
72 sc = clknode_get_softc(clk); in qcom_clk_ro_div_recalc()
79 CLKDEV_DEVICE_LOCK(clknode_get_device(sc->clknode)); in qcom_clk_ro_div_recalc()
80 CLKDEV_READ_4(clknode_get_device(sc->clknode), sc->offset, &reg); in qcom_clk_ro_div_recalc()
81 CLKDEV_DEVICE_UNLOCK(clknode_get_device(sc->clknode)); in qcom_clk_ro_div_recalc()
83 idx = (reg >> sc->shift) & ((1U << sc->width) - 1); in qcom_clk_ro_div_recalc()
85 for (i = 0; (sc->div_tbl[i].div != 0); i++) { in qcom_clk_ro_div_recalc()
86 if (idx == sc->div_tbl[i].val) { in qcom_clk_ro_div_recalc()
87 div = sc->div_tbl[i].div; in qcom_clk_ro_div_recalc()
92 DPRINTF(clknode_get_device(sc->clknode), in qcom_clk_ro_div_recalc()
93 "%s: freq=%llu, idx=%u, div=%u, out_freq=%llu\n", in qcom_clk_ro_div_recalc()
97 div, in qcom_clk_ro_div_recalc()
98 *freq / div); in qcom_clk_ro_div_recalc()
100 *freq = *freq / div; in qcom_clk_ro_div_recalc()
105 qcom_clk_ro_div_init(struct clknode *clk, device_t dev) in qcom_clk_ro_div_init() argument
112 clknode_init_parent_idx(clk, 0); in qcom_clk_ro_div_init()
132 struct clknode *clk; in qcom_clk_ro_div_register() local
135 clk = clknode_create(clkdom, &qcom_clk_ro_div_class, in qcom_clk_ro_div_register()
136 &clkdef->clkdef); in qcom_clk_ro_div_register()
137 if (clk == NULL) in qcom_clk_ro_div_register()
140 sc = clknode_get_softc(clk); in qcom_clk_ro_div_register()
141 sc->clknode = clk; in qcom_clk_ro_div_register()
142 sc->offset = clkdef->offset; in qcom_clk_ro_div_register()
143 sc->shift = clkdef->shift; in qcom_clk_ro_div_register()
144 sc->width = clkdef->width; in qcom_clk_ro_div_register()
145 sc->div_tbl = clkdef->div_tbl; in qcom_clk_ro_div_register()
147 clknode_register(clkdom, clk); in qcom_clk_ro_div_register()