input: utilize new cdev_device_add helper function
[sfrench/cifs-2.6.git] / drivers / input / evdev.c
index e9ae3d500a55e368ed4f1a0b1702e7fbdec0935a..92557147500560212f118d31258feb810e636cf3 100644 (file)
@@ -1354,8 +1354,6 @@ static void evdev_cleanup(struct evdev *evdev)
        evdev_mark_dead(evdev);
        evdev_hangup(evdev);
 
-       cdev_del(&evdev->cdev);
-
        /* evdev is marked dead so no one else accesses evdev->open */
        if (evdev->open) {
                input_flush_device(handle, NULL);
@@ -1416,12 +1414,8 @@ static int evdev_connect(struct input_handler *handler, struct input_dev *dev,
                goto err_free_evdev;
 
        cdev_init(&evdev->cdev, &evdev_fops);
-       evdev->cdev.kobj.parent = &evdev->dev.kobj;
-       error = cdev_add(&evdev->cdev, evdev->dev.devt, 1);
-       if (error)
-               goto err_unregister_handle;
 
-       error = device_add(&evdev->dev);
+       error = cdev_device_add(&evdev->cdev, &evdev->dev);
        if (error)
                goto err_cleanup_evdev;
 
@@ -1429,7 +1423,6 @@ static int evdev_connect(struct input_handler *handler, struct input_dev *dev,
 
  err_cleanup_evdev:
        evdev_cleanup(evdev);
- err_unregister_handle:
        input_unregister_handle(&evdev->handle);
  err_free_evdev:
        put_device(&evdev->dev);
@@ -1442,7 +1435,7 @@ static void evdev_disconnect(struct input_handle *handle)
 {
        struct evdev *evdev = handle->private;
 
-       device_del(&evdev->dev);
+       cdev_device_del(&evdev->cdev, &evdev->dev);
        evdev_cleanup(evdev);
        input_free_minor(MINOR(evdev->dev.devt));
        input_unregister_handle(handle);