aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@infradead.org>2008-04-23 16:27:27 -0400
committerMauro Carvalho Chehab <mchehab@infradead.org>2008-04-24 13:09:50 -0400
commit867e835f4db4eba6d49072382cc05fc210c4ed1c (patch)
treee156664e4906a25d11e100f9beb401747249f37e
parenta589b66546d3d81e28dd95d3463c9e9da3d68728 (diff)
V4L/DVB (7728): tea5761: bugzilla #10462: tea5761 autodetection code were broken
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
-rw-r--r--drivers/media/video/tea5761.c15
-rw-r--r--drivers/media/video/tuner-core.c6
2 files changed, 13 insertions, 8 deletions
diff --git a/drivers/media/video/tea5761.c b/drivers/media/video/tea5761.c
index bd5ad549c1df..b93cdef9ac73 100644
--- a/drivers/media/video/tea5761.c
+++ b/drivers/media/video/tea5761.c
@@ -247,14 +247,19 @@ int tea5761_autodetection(struct i2c_adapter* i2c_adap, u8 i2c_addr)
247 247
248 if (16 != (rc = tuner_i2c_xfer_recv(&i2c, buffer, 16))) { 248 if (16 != (rc = tuner_i2c_xfer_recv(&i2c, buffer, 16))) {
249 printk(KERN_WARNING "it is not a TEA5761. Received %i chars.\n", rc); 249 printk(KERN_WARNING "it is not a TEA5761. Received %i chars.\n", rc);
250 return EINVAL; 250 return -EINVAL;
251 } 251 }
252 252
253 if (!((buffer[13] != 0x2b) || (buffer[14] != 0x57) || (buffer[15] != 0x061))) { 253 if ((buffer[13] != 0x2b) || (buffer[14] != 0x57) || (buffer[15] != 0x061)) {
254 printk(KERN_WARNING "Manufacturer ID= 0x%02x, Chip ID = %02x%02x. It is not a TEA5761\n",buffer[13],buffer[14],buffer[15]); 254 printk(KERN_WARNING "Manufacturer ID= 0x%02x, Chip ID = %02x%02x."
255 return EINVAL; 255 " It is not a TEA5761\n",
256 buffer[13], buffer[14], buffer[15]);
257 return -EINVAL;
256 } 258 }
257 printk(KERN_WARNING "TEA5761 detected.\n"); 259 printk(KERN_WARNING "tea5761: TEA%02x%02x detected. "
260 "Manufacturer ID= 0x%02x\n",
261 buffer[14], buffer[15], buffer[13]);
262
258 return 0; 263 return 0;
259} 264}
260 265
diff --git a/drivers/media/video/tuner-core.c b/drivers/media/video/tuner-core.c
index e886f48a2909..529e00952a8d 100644
--- a/drivers/media/video/tuner-core.c
+++ b/drivers/media/video/tuner-core.c
@@ -1111,8 +1111,8 @@ static int tuner_probe(struct i2c_client *client)
1111 if (!no_autodetect) { 1111 if (!no_autodetect) {
1112 switch (client->addr) { 1112 switch (client->addr) {
1113 case 0x10: 1113 case 0x10:
1114 if (tea5761_autodetection(t->i2c->adapter, t->i2c->addr) 1114 if (tea5761_autodetection(t->i2c->adapter,
1115 != EINVAL) { 1115 t->i2c->addr) >= 0) {
1116 t->type = TUNER_TEA5761; 1116 t->type = TUNER_TEA5761;
1117 t->mode_mask = T_RADIO; 1117 t->mode_mask = T_RADIO;
1118 t->mode = T_STANDBY; 1118 t->mode = T_STANDBY;
@@ -1124,7 +1124,7 @@ static int tuner_probe(struct i2c_client *client)
1124 1124
1125 goto register_client; 1125 goto register_client;
1126 } 1126 }
1127 break; 1127 return -ENODEV;
1128 case 0x42: 1128 case 0x42:
1129 case 0x43: 1129 case 0x43:
1130 case 0x4a: 1130 case 0x4a: