Lines Matching refs:hdmi

55 #define HDMI_READ(offset) readl(vc4->hdmi->hdmicore_regs + offset)
56 #define HDMI_WRITE(offset, val) writel(val, vc4->hdmi->hdmicore_regs + offset)
57 #define HD_READ(offset) readl(vc4->hdmi->hd_regs + offset)
58 #define HD_WRITE(offset, val) writel(val, vc4->hdmi->hd_regs + offset)
167 if (vc4->hdmi->hpd_gpio) { in vc4_hdmi_connector_detect()
168 if (gpio_get_value(vc4->hdmi->hpd_gpio)) in vc4_hdmi_connector_detect()
197 edid = drm_get_edid(connector, vc4->hdmi->ddc); in vc4_hdmi_connector_get_modes()
305 clk_set_rate(vc4->hdmi->pixel_clock, mode->clock * 1000); in vc4_hdmi_encoder_mode_set()
439 struct vc4_hdmi *hdmi; in vc4_hdmi_bind() local
445 hdmi = devm_kzalloc(dev, sizeof(*hdmi), GFP_KERNEL); in vc4_hdmi_bind()
446 if (!hdmi) in vc4_hdmi_bind()
454 hdmi->encoder = &vc4_hdmi_encoder->base.base; in vc4_hdmi_bind()
456 hdmi->pdev = pdev; in vc4_hdmi_bind()
457 hdmi->hdmicore_regs = vc4_ioremap_regs(pdev, 0); in vc4_hdmi_bind()
458 if (IS_ERR(hdmi->hdmicore_regs)) in vc4_hdmi_bind()
459 return PTR_ERR(hdmi->hdmicore_regs); in vc4_hdmi_bind()
461 hdmi->hd_regs = vc4_ioremap_regs(pdev, 1); in vc4_hdmi_bind()
462 if (IS_ERR(hdmi->hd_regs)) in vc4_hdmi_bind()
463 return PTR_ERR(hdmi->hd_regs); in vc4_hdmi_bind()
471 hdmi->pixel_clock = devm_clk_get(dev, "pixel"); in vc4_hdmi_bind()
472 if (IS_ERR(hdmi->pixel_clock)) { in vc4_hdmi_bind()
474 return PTR_ERR(hdmi->pixel_clock); in vc4_hdmi_bind()
476 hdmi->hsm_clock = devm_clk_get(dev, "hdmi"); in vc4_hdmi_bind()
477 if (IS_ERR(hdmi->hsm_clock)) { in vc4_hdmi_bind()
479 return PTR_ERR(hdmi->hsm_clock); in vc4_hdmi_bind()
482 hdmi->ddc = of_find_i2c_adapter_by_node(ddc_node); in vc4_hdmi_bind()
483 if (!hdmi->ddc) { in vc4_hdmi_bind()
492 ret = clk_prepare_enable(hdmi->pixel_clock); in vc4_hdmi_bind()
498 ret = clk_prepare_enable(hdmi->hsm_clock); in vc4_hdmi_bind()
509 hdmi->hpd_gpio = of_get_named_gpio(dev->of_node, "hpd-gpios", 0); in vc4_hdmi_bind()
510 if (hdmi->hpd_gpio < 0) { in vc4_hdmi_bind()
511 ret = hdmi->hpd_gpio; in vc4_hdmi_bind()
516 vc4->hdmi = hdmi; in vc4_hdmi_bind()
521 drm_encoder_init(drm, hdmi->encoder, &vc4_hdmi_encoder_funcs, in vc4_hdmi_bind()
523 drm_encoder_helper_add(hdmi->encoder, &vc4_hdmi_encoder_helper_funcs); in vc4_hdmi_bind()
525 hdmi->connector = vc4_hdmi_connector_init(drm, hdmi->encoder); in vc4_hdmi_bind()
526 if (IS_ERR(hdmi->connector)) { in vc4_hdmi_bind()
527 ret = PTR_ERR(hdmi->connector); in vc4_hdmi_bind()
534 vc4_hdmi_encoder_destroy(hdmi->encoder); in vc4_hdmi_bind()
536 clk_disable_unprepare(hdmi->hsm_clock); in vc4_hdmi_bind()
538 clk_disable_unprepare(hdmi->pixel_clock); in vc4_hdmi_bind()
540 put_device(&vc4->hdmi->ddc->dev); in vc4_hdmi_bind()
550 struct vc4_hdmi *hdmi = vc4->hdmi; in vc4_hdmi_unbind() local
552 vc4_hdmi_connector_destroy(hdmi->connector); in vc4_hdmi_unbind()
553 vc4_hdmi_encoder_destroy(hdmi->encoder); in vc4_hdmi_unbind()
555 clk_disable_unprepare(hdmi->pixel_clock); in vc4_hdmi_unbind()
556 clk_disable_unprepare(hdmi->hsm_clock); in vc4_hdmi_unbind()
557 put_device(&hdmi->ddc->dev); in vc4_hdmi_unbind()
559 vc4->hdmi = NULL; in vc4_hdmi_unbind()