Lines Matching refs:factor
2 * mmp factor clock operation source file
22 * numerator/denominator = Fin / (Fout * factor)
30 struct mmp_clk_factor *factor = to_clk_factor(hw);
34 for (i = 0; i < factor->ftbl_cnt; i++) {
37 rate *= factor->ftbl[i].den;
38 do_div(rate, factor->ftbl[i].num * factor->masks->factor);
43 if ((i == 0) || (i == factor->ftbl_cnt)) {
56 struct mmp_clk_factor *factor = to_clk_factor(hw);
57 struct mmp_clk_factor_masks *masks = factor->masks;
61 val = readl_relaxed(factor->base);
74 do_div(rate, num * factor->masks->factor);
83 struct mmp_clk_factor *factor = to_clk_factor(hw);
84 struct mmp_clk_factor_masks *masks = factor->masks;
90 for (i = 0; i < factor->ftbl_cnt; i++) {
92 rate *= factor->ftbl[i].den;
93 do_div(rate, factor->ftbl[i].num * factor->masks->factor);
101 if (factor->lock)
102 spin_lock_irqsave(factor->lock, flags);
104 val = readl_relaxed(factor->base);
107 val |= (factor->ftbl[i].num & masks->num_mask) << masks->num_shift;
110 val |= (factor->ftbl[i].den & masks->den_mask) << masks->den_shift;
112 writel_relaxed(val, factor->base);
114 if (factor->lock)
115 spin_unlock_irqrestore(factor->lock, flags);
122 struct mmp_clk_factor *factor = to_clk_factor(hw);
123 struct mmp_clk_factor_masks *masks = factor->masks;
128 if (factor->lock)
129 spin_lock_irqsave(factor->lock, flags);
131 val = readl(factor->base);
139 for (i = 0; i < factor->ftbl_cnt; i++)
140 if (den == factor->ftbl[i].den && num == factor->ftbl[i].num)
143 if (i >= factor->ftbl_cnt) {
145 val |= (factor->ftbl[0].num & masks->num_mask) <<
149 val |= (factor->ftbl[0].den & masks->den_mask) <<
153 if (!(val & masks->enable_mask) || i >= factor->ftbl_cnt) {
155 writel(val, factor->base);
158 if (factor->lock)
159 spin_unlock_irqrestore(factor->lock, flags);
177 struct mmp_clk_factor *factor;
186 factor = kzalloc(sizeof(*factor), GFP_KERNEL);
187 if (!factor)
191 factor->base = base;
192 factor->masks = masks;
193 factor->ftbl = ftbl;
194 factor->ftbl_cnt = ftbl_cnt;
195 factor->hw.init = &init;
196 factor->lock = lock;
204 clk = clk_register(NULL, &factor->hw);
206 kfree(factor);