]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/media/video/saa7111.c
V4L/DVB (3568d): saa7111.c fix
[linux-2.6-omap-h63xx.git] / drivers / media / video / saa7111.c
index f18df53d98ff16c7b7b1027b5d0e5057ae7510c3..6bd1789c8f78074f0bc5104d59887ace33786657 100644 (file)
@@ -42,7 +42,6 @@
 #include <asm/pgtable.h>
 #include <asm/page.h>
 #include <linux/sched.h>
-#include <asm/segment.h>
 #include <linux/types.h>
 
 #include <linux/videodev.h>
@@ -71,8 +70,10 @@ MODULE_PARM_DESC(debug, "Debug level (0-1)");
 
 /* ----------------------------------------------------------------------- */
 
+#define SAA7111_NR_REG         0x18
+
 struct saa7111 {
-       unsigned char reg[32];
+       unsigned char reg[SAA7111_NR_REG];
 
        int norm;
        int input;
@@ -211,6 +212,7 @@ saa7111_command (struct i2c_client *client,
        switch (cmd) {
 
        case 0:
+               break;
        case DECODER_INIT:
        {
                struct video_decoder_init *init = arg;
@@ -228,11 +230,11 @@ saa7111_command (struct i2c_client *client,
        {
                int i;
 
-               for (i = 0; i < 32; i += 16) {
+               for (i = 0; i < SAA7111_NR_REG; i += 16) {
                        int j;
 
                        printk(KERN_DEBUG "%s: %03x", I2C_NAME(client), i);
-                       for (j = 0; j < 16; ++j) {
+                       for (j = 0; j < 16 && i + j < SAA7111_NR_REG; ++j) {
                                printk(" %02x",
                                       saa7111_read(client, i + j));
                        }
@@ -512,22 +514,19 @@ saa7111_detect_client (struct i2c_adapter *adapter,
        if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA))
                return 0;
 
-       client = kmalloc(sizeof(struct i2c_client), GFP_KERNEL);
+       client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
        if (client == 0)
                return -ENOMEM;
-       memset(client, 0, sizeof(struct i2c_client));
        client->addr = address;
        client->adapter = adapter;
        client->driver = &i2c_driver_saa7111;
-       client->flags = I2C_CLIENT_ALLOW_USE;
        strlcpy(I2C_NAME(client), "saa7111", sizeof(I2C_NAME(client)));
 
-       decoder = kmalloc(sizeof(struct saa7111), GFP_KERNEL);
+       decoder = kzalloc(sizeof(struct saa7111), GFP_KERNEL);
        if (decoder == NULL) {
                kfree(client);
                return -ENOMEM;
        }
-       memset(decoder, 0, sizeof(struct saa7111));
        decoder->norm = VIDEO_MODE_NTSC;
        decoder->input = 0;
        decoder->enable = 1;
@@ -591,11 +590,11 @@ saa7111_detach_client (struct i2c_client *client)
 /* ----------------------------------------------------------------------- */
 
 static struct i2c_driver i2c_driver_saa7111 = {
-       .owner = THIS_MODULE,
-       .name = "saa7111",
+       .driver = {
+               .name = "saa7111",
+       },
 
        .id = I2C_DRIVERID_SAA7111A,
-       .flags = I2C_DF_NOTIFY,
 
        .attach_adapter = saa7111_attach_adapter,
        .detach_client = saa7111_detach_client,