Revert "PM: earlysuspend: Removing dependence on console."
author黄涛 <huangtao@rock-chips.com>
Sat, 30 Jul 2011 14:58:02 +0000 (22:58 +0800)
committer黄涛 <huangtao@rock-chips.com>
Sat, 30 Jul 2011 14:58:02 +0000 (22:58 +0800)
This reverts commit cc2ae286f899544417e94e1f10004ffa3ab327fa.

kernel/power/Kconfig
kernel/power/Makefile
kernel/power/fbearlysuspend.c [deleted file]

index 1621b707647e76b716d617962464c8de549d7a91..3b3910f11825013c74e10a827d31c51e00cc04ce 100644 (file)
@@ -162,7 +162,6 @@ config EARLYSUSPEND
 
 choice
        prompt "User-space screen access"
-       default FB_EARLYSUSPEND if !FRAMEBUFFER_CONSOLE
        default CONSOLE_EARLYSUSPEND
        depends on HAS_EARLYSUSPEND
 
@@ -176,14 +175,6 @@ choice
                  Register early suspend handler to perform a console switch to
                  when user-space should stop drawing to the screen and a switch
                  back when it should resume.
-
-       config FB_EARLYSUSPEND
-               bool "Sysfs interface"
-               depends on HAS_EARLYSUSPEND
-               ---help---
-                 Register early suspend handler that notifies and waits for
-                 user-space through sysfs when user-space should stop drawing
-                 to the screen and notifies user-space when it should resume.
 endchoice
 
 config HIBERNATION
index 3231c48a57966387db92e4c0c041feb49fd61b7d..9f946b668d67d575d2f82773ae95d37127eef678 100644 (file)
@@ -14,6 +14,5 @@ obj-$(CONFIG_WAKELOCK)                += wakelock.o
 obj-$(CONFIG_USER_WAKELOCK)    += userwakelock.o
 obj-$(CONFIG_EARLYSUSPEND)     += earlysuspend.o
 obj-$(CONFIG_CONSOLE_EARLYSUSPEND)     += consoleearlysuspend.o
-obj-$(CONFIG_FB_EARLYSUSPEND)  += fbearlysuspend.o
 
 obj-$(CONFIG_MAGIC_SYSRQ)      += poweroff.o
diff --git a/kernel/power/fbearlysuspend.c b/kernel/power/fbearlysuspend.c
deleted file mode 100644 (file)
index 1513765..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-/* kernel/power/fbearlysuspend.c
- *
- * Copyright (C) 2005-2008 Google, Inc.
- *
- * This software is licensed under the terms of the GNU General Public
- * License version 2, as published by the Free Software Foundation, and
- * may be copied, distributed, and modified under those terms.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- */
-
-#include <linux/earlysuspend.h>
-#include <linux/module.h>
-#include <linux/wait.h>
-
-#include "power.h"
-
-static wait_queue_head_t fb_state_wq;
-static DEFINE_SPINLOCK(fb_state_lock);
-static enum {
-       FB_STATE_STOPPED_DRAWING,
-       FB_STATE_REQUEST_STOP_DRAWING,
-       FB_STATE_DRAWING_OK,
-} fb_state;
-
-/* tell userspace to stop drawing, wait for it to stop */
-static void stop_drawing_early_suspend(struct early_suspend *h)
-{
-       int ret;
-       unsigned long irq_flags;
-
-       spin_lock_irqsave(&fb_state_lock, irq_flags);
-       fb_state = FB_STATE_REQUEST_STOP_DRAWING;
-       spin_unlock_irqrestore(&fb_state_lock, irq_flags);
-
-       wake_up_all(&fb_state_wq);
-       ret = wait_event_timeout(fb_state_wq,
-                                fb_state == FB_STATE_STOPPED_DRAWING,
-                                HZ);
-       if (unlikely(fb_state != FB_STATE_STOPPED_DRAWING))
-               pr_warning("stop_drawing_early_suspend: timeout waiting for "
-                          "userspace to stop drawing\n");
-}
-
-/* tell userspace to start drawing */
-static void start_drawing_late_resume(struct early_suspend *h)
-{
-       unsigned long irq_flags;
-
-       spin_lock_irqsave(&fb_state_lock, irq_flags);
-       fb_state = FB_STATE_DRAWING_OK;
-       spin_unlock_irqrestore(&fb_state_lock, irq_flags);
-       wake_up(&fb_state_wq);
-}
-
-static struct early_suspend stop_drawing_early_suspend_desc = {
-       .level = EARLY_SUSPEND_LEVEL_STOP_DRAWING,
-       .suspend = stop_drawing_early_suspend,
-       .resume = start_drawing_late_resume,
-};
-
-static ssize_t wait_for_fb_sleep_show(struct kobject *kobj,
-                                     struct kobj_attribute *attr, char *buf)
-{
-       char *s = buf;
-       int ret;
-
-       ret = wait_event_interruptible(fb_state_wq,
-                                      fb_state != FB_STATE_DRAWING_OK);
-       if (ret && fb_state == FB_STATE_DRAWING_OK)
-               return ret;
-       else
-               s += sprintf(buf, "sleeping");
-       return s - buf;
-}
-
-static ssize_t wait_for_fb_wake_show(struct kobject *kobj,
-                                    struct kobj_attribute *attr, char *buf)
-{
-       char *s = buf;
-       int ret;
-       unsigned long irq_flags;
-
-       spin_lock_irqsave(&fb_state_lock, irq_flags);
-       if (fb_state == FB_STATE_REQUEST_STOP_DRAWING) {
-               fb_state = FB_STATE_STOPPED_DRAWING;
-               wake_up(&fb_state_wq);
-       }
-       spin_unlock_irqrestore(&fb_state_lock, irq_flags);
-
-       ret = wait_event_interruptible(fb_state_wq,
-                                      fb_state == FB_STATE_DRAWING_OK);
-       if (ret && fb_state != FB_STATE_DRAWING_OK)
-               return ret;
-       else
-               s += sprintf(buf, "awake");
-
-       return s - buf;
-}
-
-#define power_ro_attr(_name) \
-static struct kobj_attribute _name##_attr = {  \
-       .attr   = {                             \
-               .name = __stringify(_name),     \
-               .mode = 0444,                   \
-       },                                      \
-       .show   = _name##_show,                 \
-       .store  = NULL,         \
-}
-
-power_ro_attr(wait_for_fb_sleep);
-power_ro_attr(wait_for_fb_wake);
-
-static struct attribute *g[] = {
-       &wait_for_fb_sleep_attr.attr,
-       &wait_for_fb_wake_attr.attr,
-       NULL,
-};
-
-static struct attribute_group attr_group = {
-       .attrs = g,
-};
-
-static int __init android_power_init(void)
-{
-       int ret;
-
-       init_waitqueue_head(&fb_state_wq);
-       fb_state = FB_STATE_DRAWING_OK;
-
-       ret = sysfs_create_group(power_kobj, &attr_group);
-       if (ret) {
-               pr_err("android_power_init: sysfs_create_group failed\n");
-               return ret;
-       }
-
-       register_early_suspend(&stop_drawing_early_suspend_desc);
-       return 0;
-}
-
-static void  __exit android_power_exit(void)
-{
-       unregister_early_suspend(&stop_drawing_early_suspend_desc);
-       sysfs_remove_group(power_kobj, &attr_group);
-}
-
-module_init(android_power_init);
-module_exit(android_power_exit);
-