]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
V4L: tea5761: bugzilla #10462: tea5761 autodetection code were broken
authorMauro Carvalho Chehab <mchehab@infradead.org>
Fri, 25 Apr 2008 00:52:33 +0000 (20:52 -0400)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 1 May 2008 21:44:34 +0000 (14:44 -0700)
(cherry picked from commit 867e835f4db4eba6d49072382cc05fc210c4ed1c)

Fix bugzilla #10462: "tea5761 autodetection code were broken"

Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/media/video/tea5761.c
drivers/media/video/tuner-core.c

index 5326eeceaacdabb0bdce32825182924fd8d65f35..de7e060b0cf5c48d7c79976081fc38552b0b939c 100644 (file)
@@ -249,14 +249,19 @@ int tea5761_autodetection(struct i2c_adapter* i2c_adap, u8 i2c_addr)
 
        if (16 != (rc = tuner_i2c_xfer_recv(&i2c, buffer, 16))) {
                printk(KERN_WARNING "it is not a TEA5761. Received %i chars.\n", rc);
-               return EINVAL;
+               return -EINVAL;
        }
 
-       if (!((buffer[13] != 0x2b) || (buffer[14] != 0x57) || (buffer[15] != 0x061))) {
-               printk(KERN_WARNING "Manufacturer ID= 0x%02x, Chip ID = %02x%02x. It is not a TEA5761\n",buffer[13],buffer[14],buffer[15]);
-               return EINVAL;
+       if ((buffer[13] != 0x2b) || (buffer[14] != 0x57) || (buffer[15] != 0x061)) {
+               printk(KERN_WARNING "Manufacturer ID= 0x%02x, Chip ID = %02x%02x."
+                                   " It is not a TEA5761\n",
+                                   buffer[13], buffer[14], buffer[15]);
+               return -EINVAL;
        }
-       printk(KERN_WARNING "TEA5761 detected.\n");
+       printk(KERN_WARNING "tea5761: TEA%02x%02x detected. "
+                           "Manufacturer ID= 0x%02x\n",
+                           buffer[14], buffer[15], buffer[13]);
+
        return 0;
 }
 
index 78a09a2a4857b94028e7eadbbecb37dea0c91908..8cdbdd000e9d3587fd40f0ed9629ade029dd34b3 100644 (file)
@@ -1112,8 +1112,8 @@ static int tuner_probe(struct i2c_client *client)
        if (!no_autodetect) {
                switch (client->addr) {
                case 0x10:
-                       if (tea5761_autodetection(t->i2c->adapter, t->i2c->addr)
-                                       != EINVAL) {
+                       if (tea5761_autodetection(t->i2c->adapter,
+                                                 t->i2c->addr) >= 0) {
                                t->type = TUNER_TEA5761;
                                t->mode_mask = T_RADIO;
                                t->mode = T_STANDBY;
@@ -1125,7 +1125,7 @@ static int tuner_probe(struct i2c_client *client)
 
                                goto register_client;
                        }
-                       break;
+                       return -ENODEV;
                case 0x42:
                case 0x43:
                case 0x4a: