Lines Matching full:dpi
7 * DOC: VC4 DPI module
9 * The VC4 DPI hardware supports MIPI DPI type 4 and Nokia ViSSI
86 /* General DPI hardware state. */
106 #define DPI_READ(offset) readl(dpi->regs + (offset))
107 #define DPI_WRITE(offset, val) writel(val, dpi->regs + (offset))
117 struct vc4_dpi *dpi = to_vc4_dpi(encoder); in vc4_dpi_encoder_disable() local
123 clk_disable_unprepare(dpi->pixel_clock); in vc4_dpi_encoder_disable()
132 struct vc4_dpi *dpi = to_vc4_dpi(encoder); in vc4_dpi_encoder_enable() local
139 /* Look up the connector attached to DPI so we can get the in vc4_dpi_encoder_enable()
221 ret = clk_set_rate(dpi->pixel_clock, mode->clock * 1000); in vc4_dpi_encoder_enable()
225 ret = clk_prepare_enable(dpi->pixel_clock); in vc4_dpi_encoder_enable()
250 struct vc4_dpi *dpi = to_vc4_dpi(encoder); in vc4_dpi_late_register() local
253 ret = vc4_debugfs_add_regset32(drm->primary, "dpi_regs", &dpi->regset); in vc4_dpi_late_register()
265 { .compatible = "brcm,bcm2835-dpi", .data = NULL },
272 static int vc4_dpi_init_bridge(struct vc4_dpi *dpi) in vc4_dpi_init_bridge() argument
274 struct drm_device *drm = dpi->encoder.base.dev; in vc4_dpi_init_bridge()
275 struct device *dev = &dpi->pdev->dev; in vc4_dpi_init_bridge()
289 return drm_bridge_attach(&dpi->encoder.base, bridge, NULL, 0); in vc4_dpi_init_bridge()
294 struct vc4_dpi *dpi = ptr; in vc4_dpi_disable_clock() local
296 clk_disable_unprepare(dpi->core_clock); in vc4_dpi_disable_clock()
303 struct vc4_dpi *dpi; in vc4_dpi_bind() local
306 dpi = drmm_kzalloc(drm, sizeof(*dpi), GFP_KERNEL); in vc4_dpi_bind()
307 if (!dpi) in vc4_dpi_bind()
310 dpi->encoder.type = VC4_ENCODER_TYPE_DPI; in vc4_dpi_bind()
311 dpi->pdev = pdev; in vc4_dpi_bind()
312 dpi->regs = vc4_ioremap_regs(pdev, 0); in vc4_dpi_bind()
313 if (IS_ERR(dpi->regs)) in vc4_dpi_bind()
314 return PTR_ERR(dpi->regs); in vc4_dpi_bind()
315 dpi->regset.base = dpi->regs; in vc4_dpi_bind()
316 dpi->regset.regs = dpi_regs; in vc4_dpi_bind()
317 dpi->regset.nregs = ARRAY_SIZE(dpi_regs); in vc4_dpi_bind()
325 dpi->core_clock = devm_clk_get(dev, "core"); in vc4_dpi_bind()
326 if (IS_ERR(dpi->core_clock)) { in vc4_dpi_bind()
327 ret = PTR_ERR(dpi->core_clock); in vc4_dpi_bind()
333 dpi->pixel_clock = devm_clk_get(dev, "pixel"); in vc4_dpi_bind()
334 if (IS_ERR(dpi->pixel_clock)) { in vc4_dpi_bind()
335 ret = PTR_ERR(dpi->pixel_clock); in vc4_dpi_bind()
341 ret = clk_prepare_enable(dpi->core_clock); in vc4_dpi_bind()
347 ret = devm_add_action_or_reset(dev, vc4_dpi_disable_clock, dpi); in vc4_dpi_bind()
351 ret = drmm_encoder_init(drm, &dpi->encoder.base, in vc4_dpi_bind()
358 drm_encoder_helper_add(&dpi->encoder.base, &vc4_dpi_encoder_helper_funcs); in vc4_dpi_bind()
360 ret = vc4_dpi_init_bridge(dpi); in vc4_dpi_bind()
364 dev_set_drvdata(dev, dpi); in vc4_dpi_bind()