Lines Matching refs:zclk
106 struct cpg_z_clk *zclk = to_z_clk(hw);
110 val = readl(zclk->reg) & zclk->mask;
111 mult = 32 - (val >> __ffs(zclk->mask));
114 32 * zclk->fixed_div);
120 struct cpg_z_clk *zclk = to_z_clk(hw);
124 prate = req->best_parent_rate / zclk->fixed_div;
140 struct cpg_z_clk *zclk = to_z_clk(hw);
144 mult = DIV64_U64_ROUND_CLOSEST(rate * 32ULL * zclk->fixed_div,
148 if (readl(zclk->kick_reg) & CPG_FRQCRB_KICK)
151 cpg_reg_modify(zclk->reg, zclk->mask,
152 ((32 - mult) << __ffs(zclk->mask)) & zclk->mask);
158 cpg_reg_modify(zclk->kick_reg, 0, CPG_FRQCRB_KICK);
170 if (!(readl(zclk->kick_reg) & CPG_FRQCRB_KICK))
192 struct cpg_z_clk *zclk;
195 zclk = kzalloc(sizeof(*zclk), GFP_KERNEL);
196 if (!zclk)
205 zclk->reg = reg + CPG_FRQCRC;
206 zclk->kick_reg = reg + CPG_FRQCRB;
207 zclk->hw.init = &init;
208 zclk->mask = GENMASK(offset + 4, offset);
209 zclk->fixed_div = div; /* PLLVCO x 1/div x SYS-CPU divider */
211 clk = clk_register(NULL, &zclk->hw);
213 kfree(zclk);