]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
[PATCH] ARM: OMAP: Convert touchscreen to input_allocate_device
authorKomal Shah <komal_shah802003@yahoo.com>
Fri, 20 Jan 2006 23:07:14 +0000 (15:07 -0800)
committerTony Lindgren <tony@atomide.com>
Fri, 20 Jan 2006 23:07:14 +0000 (15:07 -0800)
Convert touchscreen to input_allocate_device

Signed-off-by: Komal Shah <komal_shah802003@yahoo.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
drivers/input/touchscreen/omap/omap_ts.c

index 5916245d11d96a00d0a29c66b61769696b11f44e..e8d67e3f06bbb2f0574f29c9f8bac31e5d7e128e 100644 (file)
@@ -133,6 +133,12 @@ static int __init omap_ts_probe(struct platform_device *pdev)
        int status = -ENODEV;
 
        memset(&ts_omap, 0, sizeof(ts_omap));
+
+       ts_omap.inputdevice = input_allocate_device();
+       if (!ts_omap.inputdevice) {
+               return -ENOMEM;
+       }
+
        spin_lock_init(&ts_omap.lock);
 
        for (i = 0; i < ARRAY_SIZE(ts_devs); i++) {
@@ -145,8 +151,10 @@ static int __init omap_ts_probe(struct platform_device *pdev)
                }
        }
 
-       if (status != 0)
+       if (status != 0) {
+               input_free_device(ts_omap.inputdevice);
                return status;
+       }
 
        // Init acquisition timer function
        init_timer(&ts_omap.ts_timer);
@@ -159,15 +167,18 @@ static int __init omap_ts_probe(struct platform_device *pdev)
                        printk(KERN_ERR
          "omap_ts.c: Could not allocate touchscreen IRQ!\n");
                        ts_omap.irq = -1;
+                       ts_omap.dev->remove();
+                       input_free_device(ts_omap.inputdevice);
                        return -EINVAL;
                }
                ts_omap.irq_enabled = 1;
        } else {
                printk(KERN_ERR "omap_ts.c: No touchscreen IRQ assigned!\n");
+               ts_omap.dev->remove();
+               input_free_device(ts_omap.inputdevice);
                return -EINVAL;
        }
 
-       ts_omap.inputdevice = input_allocate_device();
        ts_omap.inputdevice->name = OMAP_TS_NAME;
        ts_omap.inputdevice->dev = &pdev->dev;
        ts_omap.inputdevice->evbit[0] = BIT(EV_KEY) | BIT(EV_ABS);