Пример #1
0
static void exynos_dp_bridge_enable(struct drm_bridge *bridge)
{
	struct exynos_dp_device *dp = bridge->driver_private;
	struct exynos_drm_crtc *crtc = dp_to_crtc(dp);

	if (dp->dpms_mode == DRM_MODE_DPMS_ON)
		return;

	pm_runtime_get_sync(dp->dev);

	if (dp->panel) {
		if (drm_panel_prepare(dp->panel)) {
			DRM_ERROR("failed to setup the panel\n");
			return;
		}
	}

	if (crtc->ops->clock_enable)
		crtc->ops->clock_enable(dp_to_crtc(dp), true);

	phy_power_on(dp->phy);
	exynos_dp_init_dp(dp);
	enable_irq(dp->irq);
	exynos_dp_commit(&dp->encoder);

	dp->dpms_mode = DRM_MODE_DPMS_ON;
}
Пример #2
0
static void exynos_dp_poweron(struct exynos_drm_display *display)
{
	struct exynos_dp_device *dp = display_to_dp(display);

	if (dp->dpms_mode == DRM_MODE_DPMS_ON)
		return;

	if (dp->panel) {
		if (drm_panel_prepare(dp->panel)) {
			DRM_ERROR("failed to setup the panel\n");
			return;
		}
	}

	clk_prepare_enable(dp->clock);
	exynos_dp_phy_init(dp);
	exynos_dp_init_dp(dp);
	enable_irq(dp->irq);
	exynos_dp_commit(display);
}