#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>
#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) {
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;
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)
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);
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--;
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) {