Input: wacom_w8001 - w8001_MAX_LENGTH should be 13
[pandora-kernel.git] / drivers / input / touchscreen / wacom_w8001.c
index 9941d39..7335a5b 100644 (file)
@@ -28,7 +28,7 @@ MODULE_AUTHOR("Jaya Kumar <jayakumar.lkml@gmail.com>");
 MODULE_DESCRIPTION(DRIVER_DESC);
 MODULE_LICENSE("GPL");
 
-#define W8001_MAX_LENGTH       11
+#define W8001_MAX_LENGTH       13
 #define W8001_LEAD_MASK                0x80
 #define W8001_LEAD_BYTE                0x80
 #define W8001_TAB_MASK         0x40
@@ -367,6 +367,20 @@ static int w8001_command(struct w8001 *w8001, unsigned char command,
        return rc;
 }
 
+static int w8001_open(struct input_dev *dev)
+{
+       struct w8001 *w8001 = input_get_drvdata(dev);
+
+       return w8001_command(w8001, W8001_CMD_START, false);
+}
+
+static void w8001_close(struct input_dev *dev)
+{
+       struct w8001 *w8001 = input_get_drvdata(dev);
+
+       w8001_command(w8001, W8001_CMD_STOP, false);
+}
+
 static int w8001_setup(struct w8001 *w8001)
 {
        struct input_dev *dev = w8001->dev;
@@ -476,7 +490,7 @@ static int w8001_setup(struct w8001 *w8001)
 
        strlcat(w8001->name, " Touchscreen", sizeof(w8001->name));
 
-       return w8001_command(w8001, W8001_CMD_START, false);
+       return 0;
 }
 
 /*
@@ -487,12 +501,12 @@ static void w8001_disconnect(struct serio *serio)
 {
        struct w8001 *w8001 = serio_get_drvdata(serio);
 
-       input_get_device(w8001->dev);
-       input_unregister_device(w8001->dev);
        serio_close(serio);
-       serio_set_drvdata(serio, NULL);
-       input_put_device(w8001->dev);
+
+       input_unregister_device(w8001->dev);
        kfree(w8001);
+
+       serio_set_drvdata(serio, NULL);
 }
 
 /*
@@ -536,6 +550,11 @@ static int w8001_connect(struct serio *serio, struct serio_driver *drv)
        input_dev->id.version = 0x0100;
        input_dev->dev.parent = &serio->dev;
 
+       input_dev->open = w8001_open;
+       input_dev->close = w8001_close;
+
+       input_set_drvdata(input_dev, w8001);
+
        err = input_register_device(w8001->dev);
        if (err)
                goto fail3;