Lines Matching refs:fd
239 struct xgene_clk_pmd *fd = to_xgene_clk_pmd(hw); in xgene_clk_pmd_recalc_rate() local
244 if (fd->lock) in xgene_clk_pmd_recalc_rate()
245 spin_lock_irqsave(fd->lock, flags); in xgene_clk_pmd_recalc_rate()
247 __acquire(fd->lock); in xgene_clk_pmd_recalc_rate()
249 val = readl(fd->reg); in xgene_clk_pmd_recalc_rate()
251 if (fd->lock) in xgene_clk_pmd_recalc_rate()
252 spin_unlock_irqrestore(fd->lock, flags); in xgene_clk_pmd_recalc_rate()
254 __release(fd->lock); in xgene_clk_pmd_recalc_rate()
258 scale = (val & fd->mask) >> fd->shift; in xgene_clk_pmd_recalc_rate()
259 if (fd->flags & XGENE_CLK_PMD_SCALE_INVERTED) in xgene_clk_pmd_recalc_rate()
260 scale = fd->denom - scale; in xgene_clk_pmd_recalc_rate()
265 do_div(ret, fd->denom); in xgene_clk_pmd_recalc_rate()
276 struct xgene_clk_pmd *fd = to_xgene_clk_pmd(hw); in xgene_clk_pmd_round_rate() local
283 ret = rate * fd->denom; in xgene_clk_pmd_round_rate()
287 do_div(ret, fd->denom); in xgene_clk_pmd_round_rate()
295 struct xgene_clk_pmd *fd = to_xgene_clk_pmd(hw); in xgene_clk_pmd_set_rate() local
306 ret = rate * fd->denom; in xgene_clk_pmd_set_rate()
310 if (fd->flags & XGENE_CLK_PMD_SCALE_INVERTED) in xgene_clk_pmd_set_rate()
311 scale = fd->denom - scale; in xgene_clk_pmd_set_rate()
315 if (fd->lock) in xgene_clk_pmd_set_rate()
316 spin_lock_irqsave(fd->lock, flags); in xgene_clk_pmd_set_rate()
318 __acquire(fd->lock); in xgene_clk_pmd_set_rate()
320 val = readl(fd->reg); in xgene_clk_pmd_set_rate()
321 val &= ~fd->mask; in xgene_clk_pmd_set_rate()
322 val |= (scale << fd->shift); in xgene_clk_pmd_set_rate()
323 writel(val, fd->reg); in xgene_clk_pmd_set_rate()
325 if (fd->lock) in xgene_clk_pmd_set_rate()
326 spin_unlock_irqrestore(fd->lock, flags); in xgene_clk_pmd_set_rate()
328 __release(fd->lock); in xgene_clk_pmd_set_rate()
345 struct xgene_clk_pmd *fd; in xgene_register_clk_pmd() local
349 fd = kzalloc(sizeof(*fd), GFP_KERNEL); in xgene_register_clk_pmd()
350 if (!fd) in xgene_register_clk_pmd()
359 fd->reg = reg; in xgene_register_clk_pmd()
360 fd->shift = shift; in xgene_register_clk_pmd()
361 fd->mask = (BIT(width) - 1) << shift; in xgene_register_clk_pmd()
362 fd->denom = denom; in xgene_register_clk_pmd()
363 fd->flags = clk_flags; in xgene_register_clk_pmd()
364 fd->lock = lock; in xgene_register_clk_pmd()
365 fd->hw.init = &init; in xgene_register_clk_pmd()
367 clk = clk_register(dev, &fd->hw); in xgene_register_clk_pmd()
370 kfree(fd); in xgene_register_clk_pmd()