Lines Matching refs:lcdif
47 static int lcdif_attach_bridge(struct lcdif_drm_private *lcdif)
49 struct device *dev = lcdif->drm->dev;
89 encoder->possible_crtcs = drm_crtc_mask(&lcdif->crtc);
90 ret = drm_encoder_init(lcdif->drm, encoder, &lcdif_encoder_funcs,
114 struct lcdif_drm_private *lcdif = drm->dev_private;
117 stat = readl(lcdif->base + LCDC_V8_INT_STATUS_D0);
122 reg = readl(lcdif->base + LCDC_V8_CTRLDESCL0_5);
124 drm_crtc_handle_vblank(&lcdif->crtc);
127 writel(stat, lcdif->base + LCDC_V8_INT_STATUS_D0);
135 struct lcdif_drm_private *lcdif;
139 lcdif = devm_kzalloc(&pdev->dev, sizeof(*lcdif), GFP_KERNEL);
140 if (!lcdif)
143 lcdif->drm = drm;
144 drm->dev_private = lcdif;
147 lcdif->base = devm_ioremap_resource(drm->dev, res);
148 if (IS_ERR(lcdif->base))
149 return PTR_ERR(lcdif->base);
151 lcdif->clk = devm_clk_get(drm->dev, "pix");
152 if (IS_ERR(lcdif->clk))
153 return PTR_ERR(lcdif->clk);
155 lcdif->clk_axi = devm_clk_get(drm->dev, "axi");
156 if (IS_ERR(lcdif->clk_axi))
157 return PTR_ERR(lcdif->clk_axi);
159 lcdif->clk_disp_axi = devm_clk_get(drm->dev, "disp_axi");
160 if (IS_ERR(lcdif->clk_disp_axi))
161 return PTR_ERR(lcdif->clk_disp_axi);
172 ret = lcdif_kms_init(lcdif);
185 drm_crtc_vblank_off(&lcdif->crtc);
187 ret = lcdif_attach_bridge(lcdif);
203 lcdif->irq = ret;
205 ret = devm_request_irq(drm->dev, lcdif->irq, lcdif_irq_handler, 0,
223 struct lcdif_drm_private *lcdif = drm->dev_private;
227 drm_crtc_vblank_off(&lcdif->crtc);
244 .name = "imx-lcdif",
252 { .compatible = "fsl,imx8mp-lcdif" },
253 { .compatible = "fsl,imx93-lcdif" },
307 struct lcdif_drm_private *lcdif = drm->dev_private;
310 clk_disable_unprepare(lcdif->clk);
312 clk_disable_unprepare(lcdif->clk_disp_axi);
314 clk_disable_unprepare(lcdif->clk_axi);
322 struct lcdif_drm_private *lcdif = drm->dev_private;
325 clk_prepare_enable(lcdif->clk_axi);
327 clk_prepare_enable(lcdif->clk_disp_axi);
329 clk_prepare_enable(lcdif->clk);
365 .name = "imx-lcdif",