Lines Matching +full:clk +full:- +full:provider

1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
47 #include <dev/clk/clk.h>
48 #include <dev/clk/clk_gate.h>
49 #include <dev/clk/clk_fixed.h>
50 #include <dev/clk/clk_link.h>
53 #include <dev/clk/rockchip/rk_clk_composite.h>
54 #include <dev/clk/rockchip/rk_clk_gate.h>
55 #include <dev/clk/rockchip/rk_clk_mux.h>
56 #include <dev/clk/rockchip/rk_clk_pll.h>
57 #include <dev/clk/rockchip/rk_cru.h>
64 { -1, 0 }
67 #define CCU_READ4(sc, reg) bus_read_4((sc)->res, (reg))
68 #define CCU_WRITE4(sc, reg, val) bus_write_4((sc)->res, (reg), (val))
119 if (id > sc->reset_num) in rk_cru_reset_assert()
122 reg = sc->reset_offset + id / 16 * 4; in rk_cru_reset_assert()
125 mtx_lock(&sc->mtx); in rk_cru_reset_assert()
130 mtx_unlock(&sc->mtx); in rk_cru_reset_assert()
145 if (id > sc->reset_num) in rk_cru_reset_is_asserted()
147 reg = sc->reset_offset + id / 16 * 4; in rk_cru_reset_is_asserted()
150 mtx_lock(&sc->mtx); in rk_cru_reset_is_asserted()
152 mtx_unlock(&sc->mtx); in rk_cru_reset_is_asserted()
167 mtx_lock(&sc->mtx); in rk_cru_device_lock()
176 mtx_unlock(&sc->mtx); in rk_cru_device_unlock()
185 for (i = 0; i < sc->ngates; i++) { in rk_cru_register_gates()
186 if (sc->gates[i].name == NULL) in rk_cru_register_gates()
189 def.clkdef.id = sc->gates[i].id; in rk_cru_register_gates()
190 def.clkdef.name = sc->gates[i].name; in rk_cru_register_gates()
191 def.clkdef.parent_names = &sc->gates[i].parent_name; in rk_cru_register_gates()
193 def.offset = sc->gates[i].offset; in rk_cru_register_gates()
194 def.shift = sc->gates[i].shift; in rk_cru_register_gates()
198 rk_clk_gate_register(sc->clkdom, &def); in rk_cru_register_gates()
212 sc->dev = dev; in rk_cru_attach()
216 if (bus_alloc_resources(dev, rk_cru_spec, &sc->res) != 0) { in rk_cru_attach()
221 mtx_init(&sc->mtx, device_get_nameunit(dev), NULL, MTX_DEF); in rk_cru_attach()
223 sc->clkdom = clkdom_create(dev); in rk_cru_attach()
224 if (sc->clkdom == NULL) in rk_cru_attach()
227 for (i = 0; i < sc->nclks; i++) { in rk_cru_attach()
228 switch (sc->clks[i].type) { in rk_cru_attach()
232 rk3066_clk_pll_register(sc->clkdom, in rk_cru_attach()
233 sc->clks[i].clk.pll); in rk_cru_attach()
236 rk3328_clk_pll_register(sc->clkdom, in rk_cru_attach()
237 sc->clks[i].clk.pll); in rk_cru_attach()
240 rk3399_clk_pll_register(sc->clkdom, in rk_cru_attach()
241 sc->clks[i].clk.pll); in rk_cru_attach()
244 rk_clk_composite_register(sc->clkdom, in rk_cru_attach()
245 sc->clks[i].clk.composite); in rk_cru_attach()
248 rk_clk_mux_register(sc->clkdom, sc->clks[i].clk.mux); in rk_cru_attach()
251 rk_clk_armclk_register(sc->clkdom, in rk_cru_attach()
252 sc->clks[i].clk.armclk); in rk_cru_attach()
255 clknode_fixed_register(sc->clkdom, in rk_cru_attach()
256 sc->clks[i].clk.fixed); in rk_cru_attach()
259 rk_clk_fract_register(sc->clkdom, in rk_cru_attach()
260 sc->clks[i].clk.fract); in rk_cru_attach()
263 clknode_link_register(sc->clkdom, in rk_cru_attach()
264 sc->clks[i].clk.link); in rk_cru_attach()
272 if (sc->gates) in rk_cru_attach()
275 if (clkdom_finit(sc->clkdom) != 0) in rk_cru_attach()
279 clkdom_dump(sc->clkdom); in rk_cru_attach()
283 /* register our self as a reset provider */ in rk_cru_attach()