Lines Matching +full:reg +full:- +full:shift
1 // SPDX-License-Identifier: GPL-2.0-or-later
9 #include <linux/clk-provider.h>
16 static int clk_busy_wait(void __iomem *reg, u8 shift)
20 while (readl_relaxed(reg) & (1 << shift))
22 return -ETIMEDOUT;
30 void __iomem *reg;
31 u8 shift;
46 return busy->div_ops->recalc_rate(&busy->div.hw, parent_rate);
54 return busy->div_ops->determine_rate(&busy->div.hw, req);
63 ret = busy->div_ops->set_rate(&busy->div.hw, rate, parent_rate);
65 ret = clk_busy_wait(busy->reg, busy->shift);
77 void __iomem *reg, u8 shift, u8 width,
87 return ERR_PTR(-ENOMEM);
89 busy->reg = busy_reg;
90 busy->shift = busy_shift;
92 busy->div.reg = reg;
93 busy->div.shift = shift;
94 busy->div.width = width;
95 busy->div.lock = &imx_ccm_lock;
96 busy->div_ops = &clk_divider_ops;
104 busy->div.hw.init = &init;
106 hw = &busy->div.hw;
120 void __iomem *reg;
121 u8 shift;
135 return busy->mux_ops->get_parent(&busy->mux.hw);
143 ret = busy->mux_ops->set_parent(&busy->mux.hw, index);
145 ret = clk_busy_wait(busy->reg, busy->shift);
156 struct clk_hw *imx_clk_hw_busy_mux(const char *name, void __iomem *reg, u8 shift,
167 return ERR_PTR(-ENOMEM);
169 busy->reg = busy_reg;
170 busy->shift = busy_shift;
172 busy->mux.reg = reg;
173 busy->mux.shift = shift;
174 busy->mux.mask = BIT(width) - 1;
175 busy->mux.lock = &imx_ccm_lock;
176 busy->mux_ops = &clk_mux_ops;
184 busy->mux.hw.init = &init;
186 hw = &busy->mux.hw;