Lines Matching refs:xclk
162 static void isp_xclk_update(struct isp_xclk *xclk, u32 divider) in isp_xclk_update() argument
164 switch (xclk->id) { in isp_xclk_update()
166 isp_reg_clr_set(xclk->isp, OMAP3_ISP_IOMEM_MAIN, ISP_TCTRL_CTRL, in isp_xclk_update()
171 isp_reg_clr_set(xclk->isp, OMAP3_ISP_IOMEM_MAIN, ISP_TCTRL_CTRL, in isp_xclk_update()
180 struct isp_xclk *xclk = to_isp_xclk(hw); in isp_xclk_prepare() local
182 omap3isp_get(xclk->isp); in isp_xclk_prepare()
189 struct isp_xclk *xclk = to_isp_xclk(hw); in isp_xclk_unprepare() local
191 omap3isp_put(xclk->isp); in isp_xclk_unprepare()
196 struct isp_xclk *xclk = to_isp_xclk(hw); in isp_xclk_enable() local
199 spin_lock_irqsave(&xclk->lock, flags); in isp_xclk_enable()
200 isp_xclk_update(xclk, xclk->divider); in isp_xclk_enable()
201 xclk->enabled = true; in isp_xclk_enable()
202 spin_unlock_irqrestore(&xclk->lock, flags); in isp_xclk_enable()
209 struct isp_xclk *xclk = to_isp_xclk(hw); in isp_xclk_disable() local
212 spin_lock_irqsave(&xclk->lock, flags); in isp_xclk_disable()
213 isp_xclk_update(xclk, 0); in isp_xclk_disable()
214 xclk->enabled = false; in isp_xclk_disable()
215 spin_unlock_irqrestore(&xclk->lock, flags); in isp_xclk_disable()
221 struct isp_xclk *xclk = to_isp_xclk(hw); in isp_xclk_recalc_rate() local
223 return parent_rate / xclk->divider; in isp_xclk_recalc_rate()
256 struct isp_xclk *xclk = to_isp_xclk(hw); in isp_xclk_set_rate() local
262 spin_lock_irqsave(&xclk->lock, flags); in isp_xclk_set_rate()
264 xclk->divider = divider; in isp_xclk_set_rate()
265 if (xclk->enabled) in isp_xclk_set_rate()
266 isp_xclk_update(xclk, divider); in isp_xclk_set_rate()
268 spin_unlock_irqrestore(&xclk->lock, flags); in isp_xclk_set_rate()
270 dev_dbg(xclk->isp->dev, "%s: cam_xclk%c set to %lu Hz (div %u)\n", in isp_xclk_set_rate()
271 __func__, xclk->id == ISP_XCLK_A ? 'a' : 'b', rate, divider); in isp_xclk_set_rate()
315 struct isp_xclk *xclk = &isp->xclks[i]; in isp_xclk_init() local
317 xclk->isp = isp; in isp_xclk_init()
318 xclk->id = i == 0 ? ISP_XCLK_A : ISP_XCLK_B; in isp_xclk_init()
319 xclk->divider = 1; in isp_xclk_init()
320 spin_lock_init(&xclk->lock); in isp_xclk_init()
327 xclk->hw.init = &init; in isp_xclk_init()
334 xclk->clk = clk_register(NULL, &xclk->hw); in isp_xclk_init()
335 if (IS_ERR(xclk->clk)) in isp_xclk_init()
336 return PTR_ERR(xclk->clk); in isp_xclk_init()
354 struct isp_xclk *xclk = &isp->xclks[i]; in isp_xclk_cleanup() local
356 if (!IS_ERR(xclk->clk)) in isp_xclk_cleanup()
357 clk_unregister(xclk->clk); in isp_xclk_cleanup()