Lines Matching full:lcdif
48 static int lcdif_attach_bridge(struct lcdif_drm_private *lcdif) in lcdif_attach_bridge() argument
50 struct device *dev = lcdif->drm->dev; in lcdif_attach_bridge()
90 encoder->possible_crtcs = drm_crtc_mask(&lcdif->crtc); in lcdif_attach_bridge()
91 ret = drm_encoder_init(lcdif->drm, encoder, &lcdif_encoder_funcs, in lcdif_attach_bridge()
115 struct lcdif_drm_private *lcdif = drm->dev_private; in lcdif_irq_handler() local
118 stat = readl(lcdif->base + LCDC_V8_INT_STATUS_D0); in lcdif_irq_handler()
123 reg = readl(lcdif->base + LCDC_V8_CTRLDESCL0_5); in lcdif_irq_handler()
125 drm_crtc_handle_vblank(&lcdif->crtc); in lcdif_irq_handler()
128 writel(stat, lcdif->base + LCDC_V8_INT_STATUS_D0); in lcdif_irq_handler()
136 struct lcdif_drm_private *lcdif; in lcdif_load() local
140 lcdif = devm_kzalloc(&pdev->dev, sizeof(*lcdif), GFP_KERNEL); in lcdif_load()
141 if (!lcdif) in lcdif_load()
144 lcdif->drm = drm; in lcdif_load()
145 drm->dev_private = lcdif; in lcdif_load()
148 lcdif->base = devm_ioremap_resource(drm->dev, res); in lcdif_load()
149 if (IS_ERR(lcdif->base)) in lcdif_load()
150 return PTR_ERR(lcdif->base); in lcdif_load()
152 lcdif->clk = devm_clk_get(drm->dev, "pix"); in lcdif_load()
153 if (IS_ERR(lcdif->clk)) in lcdif_load()
154 return PTR_ERR(lcdif->clk); in lcdif_load()
156 lcdif->clk_axi = devm_clk_get(drm->dev, "axi"); in lcdif_load()
157 if (IS_ERR(lcdif->clk_axi)) in lcdif_load()
158 return PTR_ERR(lcdif->clk_axi); in lcdif_load()
160 lcdif->clk_disp_axi = devm_clk_get(drm->dev, "disp_axi"); in lcdif_load()
161 if (IS_ERR(lcdif->clk_disp_axi)) in lcdif_load()
162 return PTR_ERR(lcdif->clk_disp_axi); in lcdif_load()
177 ret = lcdif_kms_init(lcdif); in lcdif_load()
190 drm_crtc_vblank_off(&lcdif->crtc); in lcdif_load()
192 ret = lcdif_attach_bridge(lcdif); in lcdif_load()
208 lcdif->irq = ret; in lcdif_load()
210 ret = devm_request_irq(drm->dev, lcdif->irq, lcdif_irq_handler, 0, in lcdif_load()
228 struct lcdif_drm_private *lcdif = drm->dev_private; in lcdif_unload() local
232 drm_crtc_vblank_off(&lcdif->crtc); in lcdif_unload()
249 .name = "imx-lcdif",
250 .desc = "i.MX LCDIF Controller DRM",
256 { .compatible = "fsl,imx8mp-lcdif" },
257 { .compatible = "fsl,imx93-lcdif" },
311 struct lcdif_drm_private *lcdif = drm->dev_private; in lcdif_rpm_suspend() local
314 clk_disable_unprepare(lcdif->clk); in lcdif_rpm_suspend()
316 clk_disable_unprepare(lcdif->clk_disp_axi); in lcdif_rpm_suspend()
318 clk_disable_unprepare(lcdif->clk_axi); in lcdif_rpm_suspend()
326 struct lcdif_drm_private *lcdif = drm->dev_private; in lcdif_rpm_resume() local
329 clk_prepare_enable(lcdif->clk_axi); in lcdif_rpm_resume()
331 clk_prepare_enable(lcdif->clk_disp_axi); in lcdif_rpm_resume()
333 clk_prepare_enable(lcdif->clk); in lcdif_rpm_resume()
373 .name = "imx-lcdif",
382 MODULE_DESCRIPTION("Freescale LCDIF DRM/KMS driver");