upgrade to fedora-2.6.12-1.1398.FC4 + vserver 2.0.rc7
[linux-2.6.git] / drivers / input / input.c
index 2fdb209..3385dd0 100644 (file)
@@ -17,7 +17,6 @@
 #include <linux/module.h>
 #include <linux/random.h>
 #include <linux/major.h>
-#include <linux/pm.h>
 #include <linux/proc_fs.h>
 #include <linux/kobject_uevent.h>
 #include <linux/interrupt.h>
@@ -51,29 +50,18 @@ static struct input_handler *input_table[8];
 
 #ifdef CONFIG_PROC_FS
 static struct proc_dir_entry *proc_bus_input_dir;
-DECLARE_WAIT_QUEUE_HEAD(input_devices_poll_wait);
+static DECLARE_WAIT_QUEUE_HEAD(input_devices_poll_wait);
 static int input_devices_state;
 #endif
 
-static inline unsigned int ms_to_jiffies(unsigned int ms)
-{
-        unsigned int j;
-        j = (ms * HZ + 500) / 1000;
-        return (j > 0) ? j : 1;
-}
-
-
 void input_event(struct input_dev *dev, unsigned int type, unsigned int code, int value)
 {
        struct input_handle *handle;
 
-       if (dev->pm_dev)
-               pm_access(dev->pm_dev);
-
        if (type > EV_MAX || !test_bit(type, dev->evbit))
                return;
 
-       add_mouse_randomness((type << 4) ^ code ^ (code >> 4) ^ value);
+       add_input_randomness(type, code, value);
 
        switch (type) {
 
@@ -100,9 +88,9 @@ void input_event(struct input_dev *dev, unsigned int type, unsigned int code, in
 
                        change_bit(code, dev->key);
 
-                       if (test_bit(EV_REP, dev->evbit) && dev->rep[REP_PERIOD] && dev->timer.data && value) {
+                       if (test_bit(EV_REP, dev->evbit) && dev->rep[REP_PERIOD] && dev->rep[REP_DELAY] && dev->timer.data && value) {
                                dev->repeat_key = code;
-                               mod_timer(&dev->timer, jiffies + ms_to_jiffies(dev->rep[REP_DELAY]));
+                               mod_timer(&dev->timer, jiffies + msecs_to_jiffies(dev->rep[REP_DELAY]));
                        }
 
                        break;
@@ -202,7 +190,8 @@ static void input_repeat_key(unsigned long data)
        input_event(dev, EV_KEY, dev->repeat_key, 2);
        input_sync(dev);
 
-       mod_timer(&dev->timer, jiffies + ms_to_jiffies(dev->rep[REP_PERIOD]));
+       if (dev->rep[REP_PERIOD])
+               mod_timer(&dev->timer, jiffies + msecs_to_jiffies(dev->rep[REP_PERIOD]));
 }
 
 int input_accept_process(struct input_handle *handle, struct file *file)
@@ -230,8 +219,6 @@ void input_release_device(struct input_handle *handle)
 
 int input_open_device(struct input_handle *handle)
 {
-       if (handle->dev->pm_dev)
-               pm_access(handle->dev->pm_dev);
        handle->open++;
        if (handle->dev->open)
                return handle->dev->open(handle->dev);
@@ -249,8 +236,6 @@ int input_flush_device(struct input_handle* handle, struct file* file)
 void input_close_device(struct input_handle *handle)
 {
        input_release_device(handle);
-       if (handle->dev->pm_dev)
-               pm_dev_idle(handle->dev->pm_dev);
        if (handle->dev->close)
                handle->dev->close(handle->dev);
        handle->open--;
@@ -468,9 +453,6 @@ void input_unregister_device(struct input_dev *dev)
 
        if (!dev) return;
 
-       if (dev->pm_dev)
-               pm_unregister(dev->pm_dev);
-
        del_timer_sync(&dev->timer);
 
        list_for_each_safe(node, next, &dev->h_list) {