Lines Matching refs:fd
24 struct clk_fractional_divider *fd = to_clk_fd(hw); in clk_fd_recalc_rate() local
30 if (fd->lock) in clk_fd_recalc_rate()
31 spin_lock_irqsave(fd->lock, flags); in clk_fd_recalc_rate()
33 __acquire(fd->lock); in clk_fd_recalc_rate()
35 val = clk_readl(fd->reg); in clk_fd_recalc_rate()
37 if (fd->lock) in clk_fd_recalc_rate()
38 spin_unlock_irqrestore(fd->lock, flags); in clk_fd_recalc_rate()
40 __release(fd->lock); in clk_fd_recalc_rate()
42 m = (val & fd->mmask) >> fd->mshift; in clk_fd_recalc_rate()
43 n = (val & fd->nmask) >> fd->nshift; in clk_fd_recalc_rate()
57 struct clk_fractional_divider *fd = to_clk_fd(hw); in clk_fd_round_rate() local
71 if (scale > fd->nwidth) in clk_fd_round_rate()
72 rate <<= scale - fd->nwidth; in clk_fd_round_rate()
75 GENMASK(fd->mwidth - 1, 0), GENMASK(fd->nwidth - 1, 0), in clk_fd_round_rate()
87 struct clk_fractional_divider *fd = to_clk_fd(hw); in clk_fd_set_rate() local
93 GENMASK(fd->mwidth - 1, 0), GENMASK(fd->nwidth - 1, 0), in clk_fd_set_rate()
96 if (fd->lock) in clk_fd_set_rate()
97 spin_lock_irqsave(fd->lock, flags); in clk_fd_set_rate()
99 __acquire(fd->lock); in clk_fd_set_rate()
101 val = clk_readl(fd->reg); in clk_fd_set_rate()
102 val &= ~(fd->mmask | fd->nmask); in clk_fd_set_rate()
103 val |= (m << fd->mshift) | (n << fd->nshift); in clk_fd_set_rate()
104 clk_writel(val, fd->reg); in clk_fd_set_rate()
106 if (fd->lock) in clk_fd_set_rate()
107 spin_unlock_irqrestore(fd->lock, flags); in clk_fd_set_rate()
109 __release(fd->lock); in clk_fd_set_rate()
126 struct clk_fractional_divider *fd; in clk_register_fractional_divider() local
130 fd = kzalloc(sizeof(*fd), GFP_KERNEL); in clk_register_fractional_divider()
131 if (!fd) in clk_register_fractional_divider()
140 fd->reg = reg; in clk_register_fractional_divider()
141 fd->mshift = mshift; in clk_register_fractional_divider()
142 fd->mwidth = mwidth; in clk_register_fractional_divider()
143 fd->mmask = GENMASK(mwidth - 1, 0) << mshift; in clk_register_fractional_divider()
144 fd->nshift = nshift; in clk_register_fractional_divider()
145 fd->nwidth = nwidth; in clk_register_fractional_divider()
146 fd->nmask = GENMASK(nwidth - 1, 0) << nshift; in clk_register_fractional_divider()
147 fd->flags = clk_divider_flags; in clk_register_fractional_divider()
148 fd->lock = lock; in clk_register_fractional_divider()
149 fd->hw.init = &init; in clk_register_fractional_divider()
151 clk = clk_register(dev, &fd->hw); in clk_register_fractional_divider()
153 kfree(fd); in clk_register_fractional_divider()