static int input_open_polled_device(struct input_dev *input)
 {
-       struct input_polled_dev *dev = input->private;
+       struct input_polled_dev *dev = input_get_drvdata(input);
        int error;
 
        error = input_polldev_start_workqueue();
 
 static void input_close_polled_device(struct input_dev *input)
 {
-       struct input_polled_dev *dev = input->private;
+       struct input_polled_dev *dev = input_get_drvdata(input);
 
        cancel_delayed_work_sync(&dev->work);
        input_polldev_stop_workqueue();
 {
        struct input_dev *input = dev->input;
 
+       input_set_drvdata(input, dev);
        INIT_DELAYED_WORK(&dev->work, input_polled_device_work);
        if (!dev->poll_interval)
                dev->poll_interval = 500;
-       input->private = dev;
        input->open = input_open_polled_device;
        input->close = input_close_polled_device;
 
 
  * @node: used to place the device onto input_dev_list
  */
 struct input_dev {
-       /* private: */
-       void *private;  /* do not use */
-       /* public: */
-
        const char *name;
        const char *phys;
        const char *uniq;
 
 static inline void *input_get_drvdata(struct input_dev *dev)
 {
-       return dev->private;
+       return dev_get_drvdata(&dev->dev);
 }
 
 static inline void input_set_drvdata(struct input_dev *dev, void *data)
 {
-       dev->private = data;
+       dev_set_drvdata(&dev->dev, data);
 }
 
 int __must_check input_register_device(struct input_dev *);