Input: sidewinder - handle errors from input_register_device()
[powerpc.git] / drivers / input / tsdev.c
index 2d45e4d..ca15479 100644 (file)
@@ -368,6 +368,7 @@ static struct input_handle *tsdev_connect(struct input_handler *handler,
                                          struct input_device_id *id)
 {
        struct tsdev *tsdev;
+       struct class_device *cdev;
        int minor, delta;
 
        for (minor = 0; minor < TSDEV_MINORS/2 && tsdev_table[minor];
@@ -409,9 +410,13 @@ static struct input_handle *tsdev_connect(struct input_handler *handler,
 
        tsdev_table[minor] = tsdev;
 
-       class_device_create(input_class, NULL,
+       cdev = class_device_create(&input_class, &dev->cdev,
                        MKDEV(INPUT_MAJOR, TSDEV_MINOR_BASE + minor),
-                       dev->dev, "ts%d", minor);
+                       dev->cdev.dev, tsdev->name);
+
+       /* temporary symlink to keep userspace happy */
+       sysfs_create_link(&input_class.subsys.kset.kobj, &cdev->kobj,
+                         tsdev->name);
 
        return &tsdev->handle;
 }
@@ -421,7 +426,8 @@ static void tsdev_disconnect(struct input_handle *handle)
        struct tsdev *tsdev = handle->private;
        struct tsdev_list *list;
 
-       class_device_destroy(input_class,
+       sysfs_remove_link(&input_class.subsys.kset.kobj, tsdev->name);
+       class_device_destroy(&input_class,
                        MKDEV(INPUT_MAJOR, TSDEV_MINOR_BASE + tsdev->minor));
        tsdev->exist = 0;