|
@@ -32,6 +32,7 @@
|
|
|
#include <linux/io.h>
|
|
|
#include <linux/device.h>
|
|
|
#include <linux/regulator/consumer.h>
|
|
|
+#include <linux/suspend.h>
|
|
|
|
|
|
#include <video/omapdss.h>
|
|
|
|
|
@@ -201,6 +202,28 @@ int dss_debugfs_create_file(const char *name, void (*write)(struct seq_file *))
|
|
|
#endif /* CONFIG_DEBUG_FS && CONFIG_OMAP2_DSS_DEBUG_SUPPORT */
|
|
|
|
|
|
/* PLATFORM DEVICE */
|
|
|
+static int omap_dss_pm_notif(struct notifier_block *b, unsigned long v, void *d)
|
|
|
+{
|
|
|
+ DSSDBG("pm notif %lu\n", v);
|
|
|
+
|
|
|
+ switch (v) {
|
|
|
+ case PM_SUSPEND_PREPARE:
|
|
|
+ DSSDBG("suspending displays\n");
|
|
|
+ return dss_suspend_all_devices();
|
|
|
+
|
|
|
+ case PM_POST_SUSPEND:
|
|
|
+ DSSDBG("resuming displays\n");
|
|
|
+ return dss_resume_all_devices();
|
|
|
+
|
|
|
+ default:
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+static struct notifier_block omap_dss_pm_notif_block = {
|
|
|
+ .notifier_call = omap_dss_pm_notif,
|
|
|
+};
|
|
|
+
|
|
|
static int __init omap_dss_probe(struct platform_device *pdev)
|
|
|
{
|
|
|
struct omap_dss_board_info *pdata = pdev->dev.platform_data;
|
|
@@ -224,6 +247,8 @@ static int __init omap_dss_probe(struct platform_device *pdev)
|
|
|
else if (pdata->default_device)
|
|
|
core.default_display_name = pdata->default_device->name;
|
|
|
|
|
|
+ register_pm_notifier(&omap_dss_pm_notif_block);
|
|
|
+
|
|
|
return 0;
|
|
|
|
|
|
err_debugfs:
|
|
@@ -233,6 +258,8 @@ err_debugfs:
|
|
|
|
|
|
static int omap_dss_remove(struct platform_device *pdev)
|
|
|
{
|
|
|
+ unregister_pm_notifier(&omap_dss_pm_notif_block);
|
|
|
+
|
|
|
dss_uninitialize_debugfs();
|
|
|
|
|
|
dss_uninit_overlays(pdev);
|
|
@@ -247,25 +274,9 @@ static void omap_dss_shutdown(struct platform_device *pdev)
|
|
|
dss_disable_all_devices();
|
|
|
}
|
|
|
|
|
|
-static int omap_dss_suspend(struct platform_device *pdev, pm_message_t state)
|
|
|
-{
|
|
|
- DSSDBG("suspend %d\n", state.event);
|
|
|
-
|
|
|
- return dss_suspend_all_devices();
|
|
|
-}
|
|
|
-
|
|
|
-static int omap_dss_resume(struct platform_device *pdev)
|
|
|
-{
|
|
|
- DSSDBG("resume\n");
|
|
|
-
|
|
|
- return dss_resume_all_devices();
|
|
|
-}
|
|
|
-
|
|
|
static struct platform_driver omap_dss_driver = {
|
|
|
.remove = omap_dss_remove,
|
|
|
.shutdown = omap_dss_shutdown,
|
|
|
- .suspend = omap_dss_suspend,
|
|
|
- .resume = omap_dss_resume,
|
|
|
.driver = {
|
|
|
.name = "omapdss",
|
|
|
.owner = THIS_MODULE,
|