diff options
author | Paul Kocialkowski <contact@paulk.fr> | 2014-06-29 23:14:51 +0200 |
---|---|---|
committer | Paul Kocialkowski <contact@paulk.fr> | 2014-06-29 23:15:05 +0200 |
commit | 6a30ee12e83ed77376619ceda9ec72520774a02d (patch) | |
tree | 29f85d72672feae6faa2dd3e6f262ce15456bcb6 | |
parent | 51c7b5bf8e360dc915e3b2197801a3ef09315750 (diff) | |
download | kernel_samsung_tuna-replicant-4.2-0002.tar.gz kernel_samsung_tuna-replicant-4.2-0002.tar.bz2 kernel_samsung_tuna-replicant-4.2-0002.zip |
omap: dss: Suspend DSS with earlysuspendreplicant-4.2-0002
Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
-rw-r--r-- | drivers/video/omap2/dss/core.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/drivers/video/omap2/dss/core.c b/drivers/video/omap2/dss/core.c index 2a1e6ed410f..d2cba40534e 100644 --- a/drivers/video/omap2/dss/core.c +++ b/drivers/video/omap2/dss/core.c @@ -32,6 +32,9 @@ #include <linux/io.h> #include <linux/device.h> #include <linux/regulator/consumer.h> +#ifdef CONFIG_HAS_EARLYSUSPEND +#include <linux/earlysuspend.h> +#endif #include <video/omapdss.h> @@ -43,6 +46,10 @@ static struct { struct regulator *vdds_dsi_reg; struct regulator *vdds_sdi_reg; + +#ifdef CONFIG_HAS_EARLYSUSPEND + struct early_suspend dss_early_suspend_info; +#endif } core; static char *def_disp_name; @@ -301,12 +308,31 @@ static int omap_dss_resume(struct platform_device *pdev) return dss_resume_all_devices(); } +#ifdef CONFIG_HAS_EARLYSUSPEND +static void dss_early_suspend(struct early_suspend *h) +{ + DSSDBG("%s\n", __func__); + omap_dss_suspend(core.pdev, PMSG_SUSPEND); +} + +static void dss_late_resume(struct early_suspend *h) +{ + DSSDBG("%s\n", __func__); + omap_dss_resume(core.pdev); +} +#endif + static struct platform_driver omap_dss_driver = { .probe = omap_dss_probe, .remove = omap_dss_remove, .shutdown = omap_dss_shutdown, +#ifdef CONFIG_HAS_EARLYSUSPEND + .suspend = NULL, + .resume = NULL, +#else .suspend = omap_dss_suspend, .resume = omap_dss_resume, +#endif .driver = { .name = "omapdss", .owner = THIS_MODULE, @@ -539,6 +565,13 @@ static int omap_dss_bus_register(void) return r; } +#ifdef CONFIG_HAS_EARLYSUSPEND + core.dss_early_suspend_info.suspend = dss_early_suspend; + core.dss_early_suspend_info.resume = dss_late_resume; + core.dss_early_suspend_info.level = EARLY_SUSPEND_LEVEL_DISABLE_FB + 2; + register_early_suspend(&core.dss_early_suspend_info); +#endif + return 0; } @@ -547,6 +580,9 @@ static int omap_dss_bus_register(void) #ifdef CONFIG_OMAP2_DSS_MODULE static void omap_dss_bus_unregister(void) { +#ifdef CONFIG_HAS_EARLYSUSPEND + unregister_early_suspend(&core.dss_early_suspend_info); +#endif device_unregister(&dss_bus); bus_unregister(&dss_bus_type); |