Lines Matching refs:frac
42 struct clk_frac *frac = to_clk_frac(hw); in clk_frac_recalc_rate() local
46 div = readl_relaxed(frac->reg) >> frac->shift; in clk_frac_recalc_rate()
47 div &= (1 << frac->width) - 1; in clk_frac_recalc_rate()
50 return tmp_rate >> frac->width; in clk_frac_recalc_rate()
56 struct clk_frac *frac = to_clk_frac(hw); in clk_frac_round_rate() local
65 tmp <<= frac->width; in clk_frac_round_rate()
73 result = tmp_rate >> frac->width; in clk_frac_round_rate()
74 if ((result << frac->width) < tmp_rate) in clk_frac_round_rate()
82 struct clk_frac *frac = to_clk_frac(hw); in clk_frac_set_rate() local
91 tmp <<= frac->width; in clk_frac_set_rate()
100 val = readl_relaxed(frac->reg); in clk_frac_set_rate()
101 val &= ~(((1 << frac->width) - 1) << frac->shift); in clk_frac_set_rate()
102 val |= div << frac->shift; in clk_frac_set_rate()
103 writel_relaxed(val, frac->reg); in clk_frac_set_rate()
107 return mxs_clk_wait(frac->reg, frac->busy); in clk_frac_set_rate()
119 struct clk_frac *frac; in mxs_clk_frac() local
123 frac = kzalloc(sizeof(*frac), GFP_KERNEL); in mxs_clk_frac()
124 if (!frac) in mxs_clk_frac()
133 frac->reg = reg; in mxs_clk_frac()
134 frac->shift = shift; in mxs_clk_frac()
135 frac->width = width; in mxs_clk_frac()
136 frac->busy = busy; in mxs_clk_frac()
137 frac->hw.init = &init; in mxs_clk_frac()
139 clk = clk_register(NULL, &frac->hw); in mxs_clk_frac()
141 kfree(frac); in mxs_clk_frac()