Lines Matching full:xclk
154 * XCLK
159 static void isp_xclk_update(struct isp_xclk *xclk, u32 divider) in isp_xclk_update() argument
161 switch (xclk->id) { in isp_xclk_update()
163 isp_reg_clr_set(xclk->isp, OMAP3_ISP_IOMEM_MAIN, ISP_TCTRL_CTRL, in isp_xclk_update()
168 isp_reg_clr_set(xclk->isp, OMAP3_ISP_IOMEM_MAIN, ISP_TCTRL_CTRL, in isp_xclk_update()
177 struct isp_xclk *xclk = to_isp_xclk(hw); in isp_xclk_prepare() local
179 omap3isp_get(xclk->isp); in isp_xclk_prepare()
186 struct isp_xclk *xclk = to_isp_xclk(hw); in isp_xclk_unprepare() local
188 omap3isp_put(xclk->isp); in isp_xclk_unprepare()
193 struct isp_xclk *xclk = to_isp_xclk(hw); in isp_xclk_enable() local
196 spin_lock_irqsave(&xclk->lock, flags); in isp_xclk_enable()
197 isp_xclk_update(xclk, xclk->divider); in isp_xclk_enable()
198 xclk->enabled = true; in isp_xclk_enable()
199 spin_unlock_irqrestore(&xclk->lock, flags); in isp_xclk_enable()
206 struct isp_xclk *xclk = to_isp_xclk(hw); in isp_xclk_disable() local
209 spin_lock_irqsave(&xclk->lock, flags); in isp_xclk_disable()
210 isp_xclk_update(xclk, 0); in isp_xclk_disable()
211 xclk->enabled = false; in isp_xclk_disable()
212 spin_unlock_irqrestore(&xclk->lock, flags); in isp_xclk_disable()
218 struct isp_xclk *xclk = to_isp_xclk(hw); in isp_xclk_recalc_rate() local
220 return parent_rate / xclk->divider; in isp_xclk_recalc_rate()
253 struct isp_xclk *xclk = to_isp_xclk(hw); in isp_xclk_set_rate() local
259 spin_lock_irqsave(&xclk->lock, flags); in isp_xclk_set_rate()
261 xclk->divider = divider; in isp_xclk_set_rate()
262 if (xclk->enabled) in isp_xclk_set_rate()
263 isp_xclk_update(xclk, divider); in isp_xclk_set_rate()
265 spin_unlock_irqrestore(&xclk->lock, flags); in isp_xclk_set_rate()
267 dev_dbg(xclk->isp->dev, "%s: cam_xclk%c set to %lu Hz (div %u)\n", in isp_xclk_set_rate()
268 __func__, xclk->id == ISP_XCLK_A ? 'a' : 'b', rate, divider); in isp_xclk_set_rate()
305 struct isp_xclk *xclk = &isp->xclks[i]; in isp_xclk_init() local
307 xclk->isp = isp; in isp_xclk_init()
308 xclk->id = i == 0 ? ISP_XCLK_A : ISP_XCLK_B; in isp_xclk_init()
309 xclk->divider = 1; in isp_xclk_init()
310 spin_lock_init(&xclk->lock); in isp_xclk_init()
317 xclk->hw.init = &init; in isp_xclk_init()
324 xclk->clk = clk_register(NULL, &xclk->hw); in isp_xclk_init()
325 if (IS_ERR(xclk->clk)) in isp_xclk_init()
326 return PTR_ERR(xclk->clk); in isp_xclk_init()
344 struct isp_xclk *xclk = &isp->xclks[i]; in isp_xclk_cleanup() local
346 if (!IS_ERR(xclk->clk)) in isp_xclk_cleanup()
347 clk_unregister(xclk->clk); in isp_xclk_cleanup()