Merge branch 'drm-ttm-unmappable' into drm-core-next
[pandora-kernel.git] / drivers / input / serio / i8042.c
index b54aee7..6440a8f 100644 (file)
@@ -21,6 +21,7 @@
 #include <linux/rcupdate.h>
 #include <linux/platform_device.h>
 #include <linux/i8042.h>
+#include <linux/slab.h>
 
 #include <asm/io.h>
 
@@ -38,7 +39,7 @@ MODULE_PARM_DESC(noaux, "Do not probe or use AUX (mouse) port.");
 
 static bool i8042_nomux;
 module_param_named(nomux, i8042_nomux, bool, 0);
-MODULE_PARM_DESC(nomux, "Do not check whether an active multiplexing conrtoller is present.");
+MODULE_PARM_DESC(nomux, "Do not check whether an active multiplexing controller is present.");
 
 static bool i8042_unlock;
 module_param_named(unlock, i8042_unlock, bool, 0);
@@ -430,7 +431,7 @@ static bool i8042_filter(unsigned char data, unsigned char str,
        }
 
        if (i8042_platform_filter && i8042_platform_filter(data, str, serio)) {
-               dbg("Filtered out by platfrom filter\n");
+               dbg("Filtered out by platform filter\n");
                return true;
        }
 
@@ -1386,6 +1387,8 @@ static int __init i8042_probe(struct platform_device *dev)
 {
        int error;
 
+       i8042_platform_device = dev;
+
        error = i8042_controller_selftest();
        if (error)
                return error;
@@ -1421,6 +1424,7 @@ static int __init i8042_probe(struct platform_device *dev)
        i8042_free_aux_ports(); /* in case KBD failed but AUX not */
        i8042_free_irqs();
        i8042_controller_reset();
+       i8042_platform_device = NULL;
 
        return error;
 }
@@ -1430,6 +1434,7 @@ static int __devexit i8042_remove(struct platform_device *dev)
        i8042_unregister_ports();
        i8042_free_irqs();
        i8042_controller_reset();
+       i8042_platform_device = NULL;
 
        return 0;
 }
@@ -1448,6 +1453,7 @@ static struct platform_driver i8042_driver = {
 
 static int __init i8042_init(void)
 {
+       struct platform_device *pdev;
        int err;
 
        dbg_init();
@@ -1460,31 +1466,18 @@ static int __init i8042_init(void)
        if (err)
                goto err_platform_exit;
 
-       i8042_platform_device = platform_device_alloc("i8042", -1);
-       if (!i8042_platform_device) {
-               err = -ENOMEM;
+       pdev = platform_create_bundle(&i8042_driver, i8042_probe, NULL, 0, NULL, 0);
+       if (IS_ERR(pdev)) {
+               err = PTR_ERR(pdev);
                goto err_platform_exit;
        }
 
-       err = platform_device_add(i8042_platform_device);
-       if (err)
-               goto err_free_device;
-
-       err = platform_driver_probe(&i8042_driver, i8042_probe);
-       if (err)
-               goto err_del_device;
-
        panic_blink = i8042_panic_blink;
 
        return 0;
 
- err_del_device:
-       platform_device_del(i8042_platform_device);
- err_free_device:
-       platform_device_put(i8042_platform_device);
  err_platform_exit:
        i8042_platform_exit();
-
        return err;
 }