Lines Matching +full:no +full:- +full:divider
1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
62 { .value = 0, .divider = 1, },
63 { .value = 1, .divider = 2, },
64 { .value = 2, .divider = 3, },
65 { .value = 3, .divider = 4, },
66 { .value = 4, .divider = 5, },
67 { .value = 5, .divider = 6, },
68 { .value = 6, .divider = 7, },
69 { .value = 7, .divider = 8, },
70 { .value = 11, .divider = 12, },
71 { .value = 15, .divider = 16, },
72 { .value = 16, .divider = 20, },
73 { .value = 17, .divider = 24, },
74 { .value = 18, .divider = 28, },
75 { .value = 19, .divider = 32, },
76 { .value = 20, .divider = 80, },
80 { .value = 1, .divider = 2, },
81 { .value = 3, .divider = 4, },
82 { .value = 5, .divider = 6, },
83 { .value = 7, .divider = 8, },
84 { .value = 11, .divider = 12, },
85 { .value = 15, .divider = 16, },
86 { .value = 16, .divider = 20, },
87 { .value = 17, .divider = 24, },
88 { .value = 18, .divider = 28, },
89 { .value = 19, .divider = 32, },
90 { .value = 20, .divider = 80, },
95 { "fsl,ls1028a-flexspi-clk", (uintptr_t)ls1028a_flexspi_div_tbl },
96 { "fsl,lx2160a-flexspi-clk", (uintptr_t)lx2160a_flexspi_div_tbl },
107 if (ofw_bus_search_compatible(dev, compat_data)->ocd_data != 0) { in ls1028a_flexspi_clk_probe()
130 sc->dev = dev; in ls1028a_flexspi_clk_attach()
133 /* Parse address-cells and size-cells from the parent node as a fallback */ in ls1028a_flexspi_clk_attach()
134 if (OF_getencprop(node, "#address-cells", &acells, in ls1028a_flexspi_clk_attach()
135 sizeof(acells)) == -1) { in ls1028a_flexspi_clk_attach()
136 if (OF_getencprop(OF_parent(node), "#address-cells", &acells, in ls1028a_flexspi_clk_attach()
137 sizeof(acells)) == -1) { in ls1028a_flexspi_clk_attach()
141 if (OF_getencprop(node, "#size-cells", &scells, in ls1028a_flexspi_clk_attach()
142 sizeof(scells)) == -1) { in ls1028a_flexspi_clk_attach()
143 if (OF_getencprop(OF_parent(node), "#size-cells", &scells, in ls1028a_flexspi_clk_attach()
144 sizeof(scells)) == -1) { in ls1028a_flexspi_clk_attach()
153 sc->reg_offset = (uint64_t)cells[0]; in ls1028a_flexspi_clk_attach()
155 sc->reg_offset = (sc->reg_offset << 32) | (uint64_t)cells[1]; in ls1028a_flexspi_clk_attach()
164 if (sc->reg_offset >> 32UL) { in ls1028a_flexspi_clk_attach()
165 device_printf(dev, "ERROR, only 32-bit address offset is supported\n"); in ls1028a_flexspi_clk_attach()
170 ret = SYSCON_GET_HANDLE(dev, &sc->syscon); in ls1028a_flexspi_clk_attach()
171 if ((ret != 0) || (sc->syscon == NULL)) { in ls1028a_flexspi_clk_attach()
177 mtx_init(&sc->mtx, "FSL clock mtx", NULL, MTX_DEF); in ls1028a_flexspi_clk_attach()
197 sc->clk_def.clkdef.name = oclkname; in ls1028a_flexspi_clk_attach()
198 sc->clk_def.clkdef.parent_names = (const char **)pclkname; in ls1028a_flexspi_clk_attach()
199 sc->clk_def.offset = (uint32_t)sc->reg_offset; in ls1028a_flexspi_clk_attach()
200 sc->clk_def.clkdef.id = 1; in ls1028a_flexspi_clk_attach()
201 sc->clk_def.clkdef.parent_cnt = 1; in ls1028a_flexspi_clk_attach()
202 sc->clk_def.clkdef.flags = 0; in ls1028a_flexspi_clk_attach()
203 sc->clk_def.div_flags = CLK_DIV_WITH_TABLE; in ls1028a_flexspi_clk_attach()
204 sc->clk_def.i_shift = 0; in ls1028a_flexspi_clk_attach()
205 sc->clk_def.i_width = 5; in ls1028a_flexspi_clk_attach()
206 …sc->clk_def.div_table = (struct clk_div_table*)ofw_bus_search_compatible(dev, compat_data)->ocd_da… in ls1028a_flexspi_clk_attach()
209 sc->clkdom = clkdom_create(dev); in ls1028a_flexspi_clk_attach()
210 if (sc->clkdom == NULL) in ls1028a_flexspi_clk_attach()
212 ret = clknode_div_register(sc->clkdom, &sc->clk_def); in ls1028a_flexspi_clk_attach()
217 clkdom_finit(sc->clkdom); in ls1028a_flexspi_clk_attach()
220 clkdom_dump(sc->clkdom); in ls1028a_flexspi_clk_attach()
239 *val = SYSCON_READ_4(sc->syscon, addr); in ls1028a_flexspi_clk_read_4()
252 ret = SYSCON_WRITE_4(sc->syscon, addr, val); in ls1028a_flexspi_clk_write_4()
265 ret = SYSCON_MODIFY_4(sc->syscon, addr, clr, set); in ls1028a_flexspi_clk_modify_4()
276 mtx_lock(&sc->mtx); in ls1028a_flexspi_clk_device_lock()
286 mtx_unlock(&sc->mtx); in ls1028a_flexspi_clk_device_unlock()