Lines Matching refs:xclk
160 static void isp_xclk_update(struct isp_xclk *xclk, u32 divider) in isp_xclk_update() argument
162 switch (xclk->id) { in isp_xclk_update()
164 isp_reg_clr_set(xclk->isp, OMAP3_ISP_IOMEM_MAIN, ISP_TCTRL_CTRL, in isp_xclk_update()
169 isp_reg_clr_set(xclk->isp, OMAP3_ISP_IOMEM_MAIN, ISP_TCTRL_CTRL, in isp_xclk_update()
178 struct isp_xclk *xclk = to_isp_xclk(hw); in isp_xclk_prepare() local
180 omap3isp_get(xclk->isp); in isp_xclk_prepare()
187 struct isp_xclk *xclk = to_isp_xclk(hw); in isp_xclk_unprepare() local
189 omap3isp_put(xclk->isp); in isp_xclk_unprepare()
194 struct isp_xclk *xclk = to_isp_xclk(hw); in isp_xclk_enable() local
197 spin_lock_irqsave(&xclk->lock, flags); in isp_xclk_enable()
198 isp_xclk_update(xclk, xclk->divider); in isp_xclk_enable()
199 xclk->enabled = true; in isp_xclk_enable()
200 spin_unlock_irqrestore(&xclk->lock, flags); in isp_xclk_enable()
207 struct isp_xclk *xclk = to_isp_xclk(hw); in isp_xclk_disable() local
210 spin_lock_irqsave(&xclk->lock, flags); in isp_xclk_disable()
211 isp_xclk_update(xclk, 0); in isp_xclk_disable()
212 xclk->enabled = false; in isp_xclk_disable()
213 spin_unlock_irqrestore(&xclk->lock, flags); in isp_xclk_disable()
219 struct isp_xclk *xclk = to_isp_xclk(hw); in isp_xclk_recalc_rate() local
221 return parent_rate / xclk->divider; in isp_xclk_recalc_rate()
254 struct isp_xclk *xclk = to_isp_xclk(hw); in isp_xclk_set_rate() local
260 spin_lock_irqsave(&xclk->lock, flags); in isp_xclk_set_rate()
262 xclk->divider = divider; in isp_xclk_set_rate()
263 if (xclk->enabled) in isp_xclk_set_rate()
264 isp_xclk_update(xclk, divider); in isp_xclk_set_rate()
266 spin_unlock_irqrestore(&xclk->lock, flags); in isp_xclk_set_rate()
268 dev_dbg(xclk->isp->dev, "%s: cam_xclk%c set to %lu Hz (div %u)\n", in isp_xclk_set_rate()
269 __func__, xclk->id == ISP_XCLK_A ? 'a' : 'b', rate, divider); in isp_xclk_set_rate()
313 struct isp_xclk *xclk = &isp->xclks[i]; in isp_xclk_init() local
315 xclk->isp = isp; in isp_xclk_init()
316 xclk->id = i == 0 ? ISP_XCLK_A : ISP_XCLK_B; in isp_xclk_init()
317 xclk->divider = 1; in isp_xclk_init()
318 spin_lock_init(&xclk->lock); in isp_xclk_init()
325 xclk->hw.init = &init; in isp_xclk_init()
332 xclk->clk = clk_register(NULL, &xclk->hw); in isp_xclk_init()
333 if (IS_ERR(xclk->clk)) in isp_xclk_init()
334 return PTR_ERR(xclk->clk); in isp_xclk_init()
352 struct isp_xclk *xclk = &isp->xclks[i]; in isp_xclk_cleanup() local
354 if (!IS_ERR(xclk->clk)) in isp_xclk_cleanup()
355 clk_unregister(xclk->clk); in isp_xclk_cleanup()