[libata] sata_mv: remove extra braces
[powerpc.git] / drivers / input / joystick / analog.c
index 01dc0b1..51f1e4b 100644 (file)
@@ -28,7 +28,6 @@
  * Vojtech Pavlik, Simunkova 1594, Prague 8, 182 00 Czech Republic
  */
 
-#include <linux/config.h>
 #include <linux/delay.h>
 #include <linux/kernel.h>
 #include <linux/module.h>
@@ -59,8 +58,6 @@ static int analog_options[ANALOG_PORTS];
 module_param_array_named(map, js, charp, &js_nargs, 0);
 MODULE_PARM_DESC(map, "Describes analog joysticks type/capabilities");
 
-__obsolete_setup("js=");
-
 /*
  * Times, feature definitions.
  */
@@ -435,6 +432,7 @@ static int analog_init_device(struct analog_port *port, struct analog *analog, i
 {
        struct input_dev *input_dev;
        int i, j, t, v, w, x, y, z;
+       int error;
 
        analog_name(analog);
        snprintf(analog->phys, sizeof(analog->phys),
@@ -506,7 +504,11 @@ static int analog_init_device(struct analog_port *port, struct analog *analog, i
 
        analog_decode(analog, port->axes, port->initial, port->buttons);
 
-       input_register_device(analog->dev);
+       error = input_register_device(analog->dev);
+       if (error) {
+               input_free_device(analog->dev);
+               return error;
+       }
 
        return 0;
 }
@@ -669,7 +671,8 @@ static int analog_connect(struct gameport *gameport, struct gameport_driver *drv
        return 0;
 
  fail3: while (--i >= 0)
-               input_unregister_device(port->analog[i].dev);
+               if (port->analog[i].mask)
+                       input_unregister_device(port->analog[i].dev);
  fail2:        gameport_close(gameport);
  fail1:        gameport_set_drvdata(gameport, NULL);
        kfree(port);