diff options
| -rw-r--r-- | drivers/gpu/drm/exynos/exynos_hdmi.c | 32 | ||||
| -rw-r--r-- | drivers/gpu/drm/exynos/exynos_mixer.c | 15 | 
2 files changed, 47 insertions, 0 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c b/drivers/gpu/drm/exynos/exynos_hdmi.c index 9212d7d53f3a..ad53c4808bdb 100644 --- a/drivers/gpu/drm/exynos/exynos_hdmi.c +++ b/drivers/gpu/drm/exynos/exynos_hdmi.c @@ -2367,11 +2367,43 @@ static int __devexit hdmi_remove(struct platform_device *pdev)  	return 0;  } +#ifdef CONFIG_PM_SLEEP +static int hdmi_suspend(struct device *dev) +{ +	struct exynos_drm_hdmi_context *ctx = get_hdmi_context(dev); +	struct hdmi_context *hdata = ctx->ctx; + +	disable_irq(hdata->internal_irq); +	disable_irq(hdata->external_irq); + +	hdata->hpd = false; +	if (ctx->drm_dev) +		drm_helper_hpd_irq_event(ctx->drm_dev); + +	hdmi_poweroff(hdata); + +	return 0; +} + +static int hdmi_resume(struct device *dev) +{ +	struct exynos_drm_hdmi_context *ctx = get_hdmi_context(dev); +	struct hdmi_context *hdata = ctx->ctx; + +	enable_irq(hdata->external_irq); +	enable_irq(hdata->internal_irq); +	return 0; +} +#endif + +static SIMPLE_DEV_PM_OPS(hdmi_pm_ops, hdmi_suspend, hdmi_resume); +  struct platform_driver hdmi_driver = {  	.probe		= hdmi_probe,  	.remove		= __devexit_p(hdmi_remove),  	.driver		= {  		.name	= "exynos4-hdmi",  		.owner	= THIS_MODULE, +		.pm	= &hdmi_pm_ops,  	},  }; diff --git a/drivers/gpu/drm/exynos/exynos_mixer.c b/drivers/gpu/drm/exynos/exynos_mixer.c index a29a9a8b2312..2f6727a4e768 100644 --- a/drivers/gpu/drm/exynos/exynos_mixer.c +++ b/drivers/gpu/drm/exynos/exynos_mixer.c @@ -1104,10 +1104,25 @@ static int mixer_remove(struct platform_device *pdev)  	return 0;  } +#ifdef CONFIG_PM_SLEEP +static int mixer_suspend(struct device *dev) +{ +	struct exynos_drm_hdmi_context *drm_hdmi_ctx = get_mixer_context(dev); +	struct mixer_context *ctx = drm_hdmi_ctx->ctx; + +	mixer_poweroff(ctx); + +	return 0; +} +#endif + +static SIMPLE_DEV_PM_OPS(mixer_pm_ops, mixer_suspend, NULL); +  struct platform_driver mixer_driver = {  	.driver = {  		.name = "s5p-mixer",  		.owner = THIS_MODULE, +		.pm = &mixer_pm_ops,  	},  	.probe = mixer_probe,  	.remove = __devexit_p(mixer_remove),  | 
