Lines Matching refs:mxsfb

76 void mxsfb_enable_axi_clk(struct mxsfb_drm_private *mxsfb)  in mxsfb_enable_axi_clk()  argument
78 if (mxsfb->clk_axi) in mxsfb_enable_axi_clk()
79 clk_prepare_enable(mxsfb->clk_axi); in mxsfb_enable_axi_clk()
82 void mxsfb_disable_axi_clk(struct mxsfb_drm_private *mxsfb) in mxsfb_disable_axi_clk() argument
84 if (mxsfb->clk_axi) in mxsfb_disable_axi_clk()
85 clk_disable_unprepare(mxsfb->clk_axi); in mxsfb_disable_axi_clk()
116 static int mxsfb_attach_bridge(struct mxsfb_drm_private *mxsfb) in mxsfb_attach_bridge() argument
118 struct drm_device *drm = mxsfb->drm; in mxsfb_attach_bridge()
139 ret = drm_bridge_attach(&mxsfb->encoder, bridge, NULL, 0); in mxsfb_attach_bridge()
143 mxsfb->bridge = bridge; in mxsfb_attach_bridge()
150 mxsfb->connector = drm_connector_list_iter_next(&iter); in mxsfb_attach_bridge()
160 struct mxsfb_drm_private *mxsfb; in mxsfb_load() local
164 mxsfb = devm_kzalloc(&pdev->dev, sizeof(*mxsfb), GFP_KERNEL); in mxsfb_load()
165 if (!mxsfb) in mxsfb_load()
168 mxsfb->drm = drm; in mxsfb_load()
169 drm->dev_private = mxsfb; in mxsfb_load()
170 mxsfb->devdata = devdata; in mxsfb_load()
173 mxsfb->base = devm_ioremap_resource(drm->dev, res); in mxsfb_load()
174 if (IS_ERR(mxsfb->base)) in mxsfb_load()
175 return PTR_ERR(mxsfb->base); in mxsfb_load()
177 mxsfb->clk = devm_clk_get(drm->dev, NULL); in mxsfb_load()
178 if (IS_ERR(mxsfb->clk)) in mxsfb_load()
179 return PTR_ERR(mxsfb->clk); in mxsfb_load()
181 mxsfb->clk_axi = devm_clk_get(drm->dev, "axi"); in mxsfb_load()
182 if (IS_ERR(mxsfb->clk_axi)) in mxsfb_load()
183 mxsfb->clk_axi = NULL; in mxsfb_load()
185 mxsfb->clk_disp_axi = devm_clk_get(drm->dev, "disp_axi"); in mxsfb_load()
186 if (IS_ERR(mxsfb->clk_disp_axi)) in mxsfb_load()
187 mxsfb->clk_disp_axi = NULL; in mxsfb_load()
198 ret = mxsfb_kms_init(mxsfb); in mxsfb_load()
211 drm_crtc_vblank_off(&mxsfb->crtc); in mxsfb_load()
213 ret = mxsfb_attach_bridge(mxsfb); in mxsfb_load()
268 struct mxsfb_drm_private *mxsfb = drm->dev_private; in mxsfb_irq_disable() local
270 mxsfb_enable_axi_clk(mxsfb); in mxsfb_irq_disable()
273 writel(CTRL1_CUR_FRAME_DONE_IRQ_EN, mxsfb->base + LCDC_CTRL1 + REG_CLR); in mxsfb_irq_disable()
274 writel(CTRL1_CUR_FRAME_DONE_IRQ, mxsfb->base + LCDC_CTRL1 + REG_CLR); in mxsfb_irq_disable()
276 mxsfb_disable_axi_clk(mxsfb); in mxsfb_irq_disable()
282 struct mxsfb_drm_private *mxsfb = drm->dev_private; in mxsfb_irq_handler() local
285 reg = readl(mxsfb->base + LCDC_CTRL1); in mxsfb_irq_handler()
288 drm_crtc_handle_vblank(&mxsfb->crtc); in mxsfb_irq_handler()
290 writel(CTRL1_CUR_FRAME_DONE_IRQ, mxsfb->base + LCDC_CTRL1 + REG_CLR); in mxsfb_irq_handler()