diff options
author | Mauro Carvalho Chehab <mchehab@infradead.org> | 2008-04-23 16:27:27 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2008-04-24 13:09:50 -0400 |
commit | 867e835f4db4eba6d49072382cc05fc210c4ed1c (patch) | |
tree | e156664e4906a25d11e100f9beb401747249f37e | |
parent | a589b66546d3d81e28dd95d3463c9e9da3d68728 (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.c | 15 | ||||
-rw-r--r-- | drivers/media/video/tuner-core.c | 6 |
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: |