Lines Matching defs:dpi
98 #define DPI_READ(offset) readl(dpi->regs + (offset))
99 #define DPI_WRITE(offset, val) writel(val, dpi->regs + (offset))
104 struct vc4_dpi *dpi;
121 struct vc4_dpi *dpi = vc4_encoder->dpi;
123 clk_disable_unprepare(dpi->pixel_clock);
131 struct vc4_dpi *dpi = vc4_encoder->dpi;
207 ret = clk_set_rate(dpi->pixel_clock, mode->clock * 1000);
211 ret = clk_prepare_enable(dpi->pixel_clock);
232 { .compatible = "brcm,bcm2835-dpi", .data = NULL },
239 static int vc4_dpi_init_bridge(struct vc4_dpi *dpi)
241 struct device *dev = &dpi->pdev->dev;
262 return drm_bridge_attach(dpi->encoder, bridge, NULL, 0);
270 struct vc4_dpi *dpi;
274 dpi = devm_kzalloc(dev, sizeof(*dpi), GFP_KERNEL);
275 if (!dpi)
283 vc4_dpi_encoder->dpi = dpi;
284 dpi->encoder = &vc4_dpi_encoder->base.base;
286 dpi->pdev = pdev;
287 dpi->regs = vc4_ioremap_regs(pdev, 0);
288 if (IS_ERR(dpi->regs))
289 return PTR_ERR(dpi->regs);
290 dpi->regset.base = dpi->regs;
291 dpi->regset.regs = dpi_regs;
292 dpi->regset.nregs = ARRAY_SIZE(dpi_regs);
300 dpi->core_clock = devm_clk_get(dev, "core");
301 if (IS_ERR(dpi->core_clock)) {
302 ret = PTR_ERR(dpi->core_clock);
307 dpi->pixel_clock = devm_clk_get(dev, "pixel");
308 if (IS_ERR(dpi->pixel_clock)) {
309 ret = PTR_ERR(dpi->pixel_clock);
315 ret = clk_prepare_enable(dpi->core_clock);
319 drm_simple_encoder_init(drm, dpi->encoder, DRM_MODE_ENCODER_DPI);
320 drm_encoder_helper_add(dpi->encoder, &vc4_dpi_encoder_helper_funcs);
322 ret = vc4_dpi_init_bridge(dpi);
326 dev_set_drvdata(dev, dpi);
328 vc4->dpi = dpi;
330 vc4_debugfs_add_regset32(drm, "dpi_regs", &dpi->regset);
335 drm_encoder_cleanup(dpi->encoder);
336 clk_disable_unprepare(dpi->core_clock);
345 struct vc4_dpi *dpi = dev_get_drvdata(dev);
349 drm_encoder_cleanup(dpi->encoder);
351 clk_disable_unprepare(dpi->core_clock);
353 vc4->dpi = NULL;