• Home
  • Raw
  • Download

Lines Matching refs:fd

50 static inline u32 clk_fd_readl(struct clk_fractional_divider *fd)  in clk_fd_readl()  argument
52 if (fd->flags & CLK_FRAC_DIVIDER_BIG_ENDIAN) in clk_fd_readl()
53 return ioread32be(fd->reg); in clk_fd_readl()
55 return readl(fd->reg); in clk_fd_readl()
58 static inline void clk_fd_writel(struct clk_fractional_divider *fd, u32 val) in clk_fd_writel() argument
60 if (fd->flags & CLK_FRAC_DIVIDER_BIG_ENDIAN) in clk_fd_writel()
61 iowrite32be(val, fd->reg); in clk_fd_writel()
63 writel(val, fd->reg); in clk_fd_writel()
69 struct clk_fractional_divider *fd = to_clk_fd(hw); in clk_fd_recalc_rate() local
75 if (fd->lock) in clk_fd_recalc_rate()
76 spin_lock_irqsave(fd->lock, flags); in clk_fd_recalc_rate()
78 __acquire(fd->lock); in clk_fd_recalc_rate()
80 val = clk_fd_readl(fd); in clk_fd_recalc_rate()
82 if (fd->lock) in clk_fd_recalc_rate()
83 spin_unlock_irqrestore(fd->lock, flags); in clk_fd_recalc_rate()
85 __release(fd->lock); in clk_fd_recalc_rate()
87 m = (val & fd->mmask) >> fd->mshift; in clk_fd_recalc_rate()
88 n = (val & fd->nmask) >> fd->nshift; in clk_fd_recalc_rate()
90 if (fd->flags & CLK_FRAC_DIVIDER_ZERO_BASED) { in clk_fd_recalc_rate()
109 struct clk_fractional_divider *fd = to_clk_fd(hw); in clk_fractional_divider_general_approximation() local
118 if (fd->flags & CLK_FRAC_DIVIDER_POWER_OF_TWO_PS) { in clk_fractional_divider_general_approximation()
121 if (scale > fd->nwidth) in clk_fractional_divider_general_approximation()
122 rate <<= scale - fd->nwidth; in clk_fractional_divider_general_approximation()
126 GENMASK(fd->mwidth - 1, 0), GENMASK(fd->nwidth - 1, 0), in clk_fractional_divider_general_approximation()
133 struct clk_fractional_divider *fd = to_clk_fd(hw); in clk_fd_round_rate() local
140 if (fd->approximation) in clk_fd_round_rate()
141 fd->approximation(hw, rate, parent_rate, &m, &n); in clk_fd_round_rate()
154 struct clk_fractional_divider *fd = to_clk_fd(hw); in clk_fd_set_rate() local
160 GENMASK(fd->mwidth - 1, 0), GENMASK(fd->nwidth - 1, 0), in clk_fd_set_rate()
163 if (fd->flags & CLK_FRAC_DIVIDER_ZERO_BASED) { in clk_fd_set_rate()
168 if (fd->lock) in clk_fd_set_rate()
169 spin_lock_irqsave(fd->lock, flags); in clk_fd_set_rate()
171 __acquire(fd->lock); in clk_fd_set_rate()
173 val = clk_fd_readl(fd); in clk_fd_set_rate()
174 val &= ~(fd->mmask | fd->nmask); in clk_fd_set_rate()
175 val |= (m << fd->mshift) | (n << fd->nshift); in clk_fd_set_rate()
176 clk_fd_writel(fd, val); in clk_fd_set_rate()
178 if (fd->lock) in clk_fd_set_rate()
179 spin_unlock_irqrestore(fd->lock, flags); in clk_fd_set_rate()
181 __release(fd->lock); in clk_fd_set_rate()
198 struct clk_fractional_divider *fd; in clk_hw_register_fractional_divider() local
203 fd = kzalloc(sizeof(*fd), GFP_KERNEL); in clk_hw_register_fractional_divider()
204 if (!fd) in clk_hw_register_fractional_divider()
213 fd->reg = reg; in clk_hw_register_fractional_divider()
214 fd->mshift = mshift; in clk_hw_register_fractional_divider()
215 fd->mwidth = mwidth; in clk_hw_register_fractional_divider()
216 fd->mmask = GENMASK(mwidth - 1, 0) << mshift; in clk_hw_register_fractional_divider()
217 fd->nshift = nshift; in clk_hw_register_fractional_divider()
218 fd->nwidth = nwidth; in clk_hw_register_fractional_divider()
219 fd->nmask = GENMASK(nwidth - 1, 0) << nshift; in clk_hw_register_fractional_divider()
220 fd->flags = clk_divider_flags; in clk_hw_register_fractional_divider()
221 fd->lock = lock; in clk_hw_register_fractional_divider()
222 fd->hw.init = &init; in clk_hw_register_fractional_divider()
224 hw = &fd->hw; in clk_hw_register_fractional_divider()
227 kfree(fd); in clk_hw_register_fractional_divider()
253 struct clk_fractional_divider *fd; in clk_hw_unregister_fractional_divider() local
255 fd = to_clk_fd(hw); in clk_hw_unregister_fractional_divider()
258 kfree(fd); in clk_hw_unregister_fractional_divider()