Esempio n. 1
0
static int exynos_dp_remove(struct platform_device *pdev)
{
	struct exynos_dp_platdata *pdata = pdev->dev.platform_data;
	struct exynos_dp_device *dp = platform_get_drvdata(pdev);

	flush_work(&dp->hotplug_work);

	if (pdev->dev.of_node) {
		if (dp->phy_addr)
			exynos_dp_phy_exit(dp);
	} else {
		if (pdata->phy_exit)
			pdata->phy_exit();
	}

	clk_disable_unprepare(dp->clock);


	return 0;
}
Esempio n. 2
0
static int exynos_dp_suspend(struct device *dev)
{
	struct exynos_dp_platdata *pdata = dev->platform_data;
	struct exynos_dp_device *dp = dev_get_drvdata(dev);

	if (work_pending(&dp->hotplug_work))
		flush_work(&dp->hotplug_work);

	if (dev->of_node) {
		if (dp->phy_addr)
			exynos_dp_phy_exit(dp);
	} else {
		if (pdata->phy_exit)
			pdata->phy_exit();
	}

	clk_disable_unprepare(dp->clock);

	return 0;
}
Esempio n. 3
0
static void exynos_dp_poweroff(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_disable(dp->panel)) {
			DRM_ERROR("failed to disable the panel\n");
			return;
		}
	}

	disable_irq(dp->irq);
	flush_work(&dp->hotplug_work);
	exynos_dp_phy_exit(dp);
	clk_disable_unprepare(dp->clock);

	if (dp->panel) {
		if (drm_panel_unprepare(dp->panel))
			DRM_ERROR("failed to turnoff the panel\n");
	}
}