devfs_mk_cdev(MKDEV(INPUT_MAJOR, EVDEV_MINOR_BASE + minor),
                        S_IFCHR|S_IRUGO|S_IWUSR, "input/event%d", minor);
-       class_simple_device_add(input_class,
-                               MKDEV(INPUT_MAJOR, EVDEV_MINOR_BASE + minor),
-                               dev->dev, "event%d", minor);
+       class_device_create(input_class,
+                       MKDEV(INPUT_MAJOR, EVDEV_MINOR_BASE + minor),
+                       dev->dev, "event%d", minor);
 
        return &evdev->handle;
 }
        struct evdev *evdev = handle->private;
        struct evdev_list *list;
 
-       class_simple_device_remove(MKDEV(INPUT_MAJOR, EVDEV_MINOR_BASE + evdev->minor));
+       class_device_destroy(input_class,
+                       MKDEV(INPUT_MAJOR, EVDEV_MINOR_BASE + evdev->minor));
        devfs_remove("input/event%d", evdev->minor);
        evdev->exist = 0;
 
 
 static inline int input_proc_init(void) { return 0; }
 #endif
 
-struct class_simple *input_class;
+struct class *input_class;
 
 static int __init input_init(void)
 {
        int retval = -ENOMEM;
 
-       input_class = class_simple_create(THIS_MODULE, "input");
+       input_class = class_create(THIS_MODULE, "input");
        if (IS_ERR(input_class))
                return PTR_ERR(input_class);
        input_proc_init();
                remove_proc_entry("devices", proc_bus_input_dir);
                remove_proc_entry("handlers", proc_bus_input_dir);
                remove_proc_entry("input", proc_bus);
-               class_simple_destroy(input_class);
+               class_destroy(input_class);
                return retval;
        }
 
                remove_proc_entry("handlers", proc_bus_input_dir);
                remove_proc_entry("input", proc_bus);
                unregister_chrdev(INPUT_MAJOR, "input");
-               class_simple_destroy(input_class);
+               class_destroy(input_class);
        }
        return retval;
 }
 
        devfs_remove("input");
        unregister_chrdev(INPUT_MAJOR, "input");
-       class_simple_destroy(input_class);
+       class_destroy(input_class);
 }
 
 subsys_initcall(input_init);
 
 
        devfs_mk_cdev(MKDEV(INPUT_MAJOR, JOYDEV_MINOR_BASE + minor),
                        S_IFCHR|S_IRUGO|S_IWUSR, "input/js%d", minor);
-       class_simple_device_add(input_class,
-                               MKDEV(INPUT_MAJOR, JOYDEV_MINOR_BASE + minor),
-                               dev->dev, "js%d", minor);
+       class_device_create(input_class,
+                       MKDEV(INPUT_MAJOR, JOYDEV_MINOR_BASE + minor),
+                       dev->dev, "js%d", minor);
 
        return &joydev->handle;
 }
        struct joydev *joydev = handle->private;
        struct joydev_list *list;
 
-       class_simple_device_remove(MKDEV(INPUT_MAJOR, JOYDEV_MINOR_BASE + joydev->minor));
+       class_device_destroy(input_class, MKDEV(INPUT_MAJOR, JOYDEV_MINOR_BASE + joydev->minor));
        devfs_remove("input/js%d", joydev->minor);
        joydev->exist = 0;
 
 
 
        devfs_mk_cdev(MKDEV(INPUT_MAJOR, MOUSEDEV_MINOR_BASE + minor),
                        S_IFCHR|S_IRUGO|S_IWUSR, "input/mouse%d", minor);
-       class_simple_device_add(input_class,
-                               MKDEV(INPUT_MAJOR, MOUSEDEV_MINOR_BASE + minor),
-                               dev->dev, "mouse%d", minor);
+       class_device_create(input_class,
+                       MKDEV(INPUT_MAJOR, MOUSEDEV_MINOR_BASE + minor),
+                       dev->dev, "mouse%d", minor);
 
        return &mousedev->handle;
 }
        struct mousedev *mousedev = handle->private;
        struct mousedev_list *list;
 
-       class_simple_device_remove(MKDEV(INPUT_MAJOR, MOUSEDEV_MINOR_BASE + mousedev->minor));
+       class_device_destroy(input_class,
+                       MKDEV(INPUT_MAJOR, MOUSEDEV_MINOR_BASE + mousedev->minor));
        devfs_remove("input/mouse%d", mousedev->minor);
        mousedev->exist = 0;
 
 
        devfs_mk_cdev(MKDEV(INPUT_MAJOR, MOUSEDEV_MINOR_BASE + MOUSEDEV_MIX),
                        S_IFCHR|S_IRUGO|S_IWUSR, "input/mice");
-       class_simple_device_add(input_class, MKDEV(INPUT_MAJOR, MOUSEDEV_MINOR_BASE + MOUSEDEV_MIX),
-                               NULL, "mice");
+       class_device_create(input_class,
+                       MKDEV(INPUT_MAJOR, MOUSEDEV_MINOR_BASE + MOUSEDEV_MIX), NULL, "mice");
 
 #ifdef CONFIG_INPUT_MOUSEDEV_PSAUX
        if (!(psaux_registered = !misc_register(&psaux_mouse)))
                misc_deregister(&psaux_mouse);
 #endif
        devfs_remove("input/mice");
-       class_simple_device_remove(MKDEV(INPUT_MAJOR, MOUSEDEV_MINOR_BASE + MOUSEDEV_MIX));
+       class_device_destroy(input_class,
+                       MKDEV(INPUT_MAJOR, MOUSEDEV_MINOR_BASE + MOUSEDEV_MIX));
        input_unregister_handler(&mousedev_handler);
 }
 
 
                        S_IFCHR|S_IRUGO|S_IWUSR, "input/ts%d", minor);
        devfs_mk_cdev(MKDEV(INPUT_MAJOR, TSDEV_MINOR_BASE + minor + TSDEV_MINORS/2),
                        S_IFCHR|S_IRUGO|S_IWUSR, "input/tsraw%d", minor);
-       class_simple_device_add(input_class,
-                               MKDEV(INPUT_MAJOR, TSDEV_MINOR_BASE + minor),
-                               dev->dev, "ts%d", minor);
+       class_device_create(input_class,
+                       MKDEV(INPUT_MAJOR, TSDEV_MINOR_BASE + minor),
+                       dev->dev, "ts%d", minor);
 
        return &tsdev->handle;
 }
        struct tsdev *tsdev = handle->private;
        struct tsdev_list *list;
 
-       class_simple_device_remove(MKDEV(INPUT_MAJOR, TSDEV_MINOR_BASE + tsdev->minor));
+       class_device_destroy(input_class,
+                       MKDEV(INPUT_MAJOR, TSDEV_MINOR_BASE + tsdev->minor));
        devfs_remove("input/ts%d", tsdev->minor);
        devfs_remove("input/tsraw%d", tsdev->minor);
        tsdev->exist = 0;
 
        dev->absbit[LONG(axis)] |= BIT(axis);
 }
 
-extern struct class_simple *input_class;
+extern struct class *input_class;
 
 #endif
 #endif