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; }
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; }
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"); } }