Lines Matching defs:composite
45 struct rk_cru_composite *composite = &clk->u.composite;
49 if (composite->gate_mask == 0)
52 const uint32_t write_mask = composite->gate_mask << 16;
53 const uint32_t write_val = enable ? 0 : composite->gate_mask;
55 CRU_WRITE(sc, composite->gate_reg, write_mask | write_val);
64 struct rk_cru_composite *composite = &clk->u.composite;
78 if (composite->flags & RK_COMPOSITE_FRACDIV) {
79 const uint32_t val = CRU_READ(sc, composite->frac_reg);
85 const uint32_t val = CRU_READ(sc, composite->muxdiv_reg);
88 if (composite->flags & RK_COMPOSITE_POW2) {
89 div = 1U << __SHIFTOUT(val, composite->div_mask);
90 } else if (composite->flags & RK_COMPOSITE_HALFDIV) {
91 div = __SHIFTOUT(val, composite->div_mask) * 2 + 3;
94 div = (composite->div_mask != 0)
95 ? __SHIFTOUT(val, composite->div_mask) + 1 : 1;
119 struct rk_cru_composite *composite = &clk->u.composite;
133 CRU_WRITE(sc, composite->frac_reg, (den << 16) | num);
142 struct rk_cru_composite *composite = &clk->u.composite;
149 if (composite->flags & RK_COMPOSITE_SET_RATE_PARENT) {
156 if (composite->flags & RK_COMPOSITE_FRACDIV) {
160 if (composite->flags & RK_COMPOSITE_POW2) {
163 if (composite->flags & RK_COMPOSITE_HALFDIV) {
170 for (u_int mux = 0; mux < composite->nparents; mux++) {
171 rclk_parent = rk_cru_clock_find(sc, composite->parents[mux]);
175 clk_parent = fdtbus_clock_byname(composite->parents[mux]);
183 for (u_int div = 1; div <= __SHIFTOUT_MASK(composite->div_mask) + 1; div++) {
186 if (composite->flags & RK_COMPOSITE_ROUND_DOWN) {
204 uint32_t write_mask = composite->div_mask << 16;
205 uint32_t write_val = __SHIFTIN(best_div - 1, composite->div_mask);
206 if (composite->mux_mask) {
207 write_mask |= composite->mux_mask << 16;
208 write_val |= __SHIFTIN(best_mux, composite->mux_mask);
211 CRU_WRITE(sc, composite->muxdiv_reg, write_mask | write_val);
220 struct rk_cru_composite *composite = &clk->u.composite;
226 if (composite->mux_mask) {
227 val = CRU_READ(sc, composite->muxdiv_reg);
228 mux = __SHIFTOUT(val, composite->mux_mask);
233 return composite->parents[mux];
240 struct rk_cru_composite *composite = &clk->u.composite;
244 if (!composite->mux_mask)
247 for (u_int mux = 0; mux < composite->nparents; mux++) {
248 if (strcmp(composite->parents[mux], parent) == 0) {
249 const uint32_t write_mask = composite->mux_mask << 16;
250 const uint32_t write_val = __SHIFTIN(mux, composite->mux_mask);
252 CRU_WRITE(sc, composite->muxdiv_reg, write_mask | write_val);