Lines Matching refs:divider

79  * @offset_ctrl:	offset of divider control registers
80 * @shift: shift of "Clock Divider Factor" in divider control register
81 * @width: width of "Clock Divider Factor" in divider control register
83 * @initval: In the divider control register, we can configure whether
160 struct sg2042_divider_clock *divider = to_sg2042_clk_divider(hw);
164 if (!(readl(divider->reg) & BIT(SHIFT_DIV_FACTOR_SEL))) {
165 val = divider->initval;
167 val = readl(divider->reg) >> divider->shift;
168 val &= clk_div_mask(divider->width);
172 divider->div_flags, divider->width);
183 struct sg2042_divider_clock *divider = to_sg2042_clk_divider(hw);
188 if (divider->div_flags & CLK_DIVIDER_READ_ONLY) {
189 if (!(readl(divider->reg) & BIT(SHIFT_DIV_FACTOR_SEL))) {
190 bestdiv = divider->initval;
192 bestdiv = readl(divider->reg) >> divider->shift;
193 bestdiv &= clk_div_mask(divider->width);
198 divider->width, divider->div_flags);
210 struct sg2042_divider_clock *divider = to_sg2042_clk_divider(hw);
215 divider->width, divider->div_flags);
217 if (divider->lock)
218 spin_lock_irqsave(divider->lock, flags);
220 __acquire(divider->lock);
224 * Assert to reset divider.
228 val = readl(divider->reg);
232 writel(val, divider->reg);
234 if (divider->div_flags & CLK_DIVIDER_HIWORD_MASK) {
235 val = clk_div_mask(divider->width) << (divider->shift + 16);
237 val = readl(divider->reg);
238 val &= ~(clk_div_mask(divider->width) << divider->shift);
240 val |= value << divider->shift;
242 writel(val, divider->reg);
247 writel(val, divider->reg);
249 if (divider->lock)
250 spin_unlock_irqrestore(divider->lock, flags);
252 __release(divider->lock);
504 * "clk_div_ddr01_0" is the name of Clock divider 0 control of DDR01, and
507 * "clk_div_ddr01_1" is the name of Clock divider 1 control of DDR01, and
624 * narrow for us to produce 115200. Use UART internal divider directly.
825 pr_warn("divider value exceeds LOWORD field\n");