@@ -80,6 +80,9 @@ static int input_open_polled_device(struct input_dev *input)
if (error)
return error;
+ if (dev->open)
+ dev->open(dev);
+
if (dev->flush)
dev->flush(dev);
@@ -95,6 +98,9 @@ static void input_close_polled_device(struct input_dev *input)
cancel_delayed_work_sync(&dev->work);
input_polldev_stop_workqueue();
+
+ if (dev->close)
+ dev->close(dev);
}
/**
@@ -30,6 +30,8 @@
struct input_polled_dev {
void *private;
+ void (*open)(struct input_polled_dev *dev);
+ void (*close)(struct input_polled_dev *dev);
void (*flush)(struct input_polled_dev *dev);
void (*poll)(struct input_polled_dev *dev);
unsigned int poll_interval; /* msec */