media: tegra: Tegra V4L2 camera
[linux-2.6.git] / drivers / media / video / tda9840.c
index fe11580..22fa820 100644 (file)
 
 #include <linux/module.h>
 #include <linux/ioctl.h>
+#include <linux/slab.h>
 #include <linux/i2c.h>
 #include <media/v4l2-device.h>
 #include <media/v4l2-chip-ident.h>
-#include <media/v4l2-i2c-drv.h>
 
 MODULE_AUTHOR("Michael Hunold <michael@mihu.de>");
 MODULE_DESCRIPTION("tda9840 driver");
@@ -171,7 +171,7 @@ static int tda9840_probe(struct i2c_client *client,
        v4l_info(client, "chip found @ 0x%x (%s)\n",
                        client->addr << 1, client->adapter->name);
 
-       sd = kmalloc(sizeof(struct v4l2_subdev), GFP_KERNEL);
+       sd = kzalloc(sizeof(struct v4l2_subdev), GFP_KERNEL);
        if (sd == NULL)
                return -ENOMEM;
        v4l2_i2c_subdev_init(sd, client, &tda9840_ops);
@@ -192,16 +192,31 @@ static int tda9840_remove(struct i2c_client *client)
        return 0;
 }
 
-
 static const struct i2c_device_id tda9840_id[] = {
        { "tda9840", 0 },
        { }
 };
 MODULE_DEVICE_TABLE(i2c, tda9840_id);
 
-static struct v4l2_i2c_driver_data v4l2_i2c_data = {
-       .name = "tda9840",
-       .probe = tda9840_probe,
-       .remove = tda9840_remove,
-       .id_table = tda9840_id,
+static struct i2c_driver tda9840_driver = {
+       .driver = {
+               .owner  = THIS_MODULE,
+               .name   = "tda9840",
+       },
+       .probe          = tda9840_probe,
+       .remove         = tda9840_remove,
+       .id_table       = tda9840_id,
 };
+
+static __init int init_tda9840(void)
+{
+       return i2c_add_driver(&tda9840_driver);
+}
+
+static __exit void exit_tda9840(void)
+{
+       i2c_del_driver(&tda9840_driver);
+}
+
+module_init(init_tda9840);
+module_exit(exit_tda9840);