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