Commit b538d28c authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab

V4L/DVB (7804): tea5767: Fix error logic

As pointed by Andrew Morton, the error testing were wrong. After reviewing
tea5767, it were returning a positive value for errors.

So, the double errors were cancelling each other.

This patch fix it properly. It also considers any positive value as ok, on
tuner-core.
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent 09fee5f8
...@@ -373,14 +373,14 @@ int tea5767_autodetection(struct i2c_adapter* i2c_adap, u8 i2c_addr) ...@@ -373,14 +373,14 @@ int tea5767_autodetection(struct i2c_adapter* i2c_adap, u8 i2c_addr)
if ((rc = tuner_i2c_xfer_recv(&i2c, buffer, 7))< 5) { if ((rc = tuner_i2c_xfer_recv(&i2c, buffer, 7))< 5) {
printk(KERN_WARNING "It is not a TEA5767. Received %i bytes.\n", rc); printk(KERN_WARNING "It is not a TEA5767. Received %i bytes.\n", rc);
return EINVAL; return -EINVAL;
} }
/* If all bytes are the same then it's a TV tuner and not a tea5767 */ /* If all bytes are the same then it's a TV tuner and not a tea5767 */
if (buffer[0] == buffer[1] && buffer[0] == buffer[2] && if (buffer[0] == buffer[1] && buffer[0] == buffer[2] &&
buffer[0] == buffer[3] && buffer[0] == buffer[4]) { buffer[0] == buffer[3] && buffer[0] == buffer[4]) {
printk(KERN_WARNING "All bytes are equal. It is not a TEA5767\n"); printk(KERN_WARNING "All bytes are equal. It is not a TEA5767\n");
return EINVAL; return -EINVAL;
} }
/* Status bytes: /* Status bytes:
...@@ -390,7 +390,7 @@ int tea5767_autodetection(struct i2c_adapter* i2c_adap, u8 i2c_addr) ...@@ -390,7 +390,7 @@ int tea5767_autodetection(struct i2c_adapter* i2c_adap, u8 i2c_addr)
*/ */
if (((buffer[3] & 0x0f) != 0x00) || (buffer[4] != 0x00)) { if (((buffer[3] & 0x0f) != 0x00) || (buffer[4] != 0x00)) {
printk(KERN_WARNING "Chip ID is not zero. It is not a TEA5767\n"); printk(KERN_WARNING "Chip ID is not zero. It is not a TEA5767\n");
return EINVAL; return -EINVAL;
} }
......
...@@ -1165,7 +1165,7 @@ static int tuner_probe(struct i2c_client *client, ...@@ -1165,7 +1165,7 @@ static int tuner_probe(struct i2c_client *client,
/* If chip is not tda8290, don't register. /* If chip is not tda8290, don't register.
since it can be tda9887*/ since it can be tda9887*/
if (tuner_symbol_probe(tda829x_probe, t->i2c->adapter, if (tuner_symbol_probe(tda829x_probe, t->i2c->adapter,
t->i2c->addr) == 0) { t->i2c->addr) >= 0) {
tuner_dbg("tda829x detected\n"); tuner_dbg("tda829x detected\n");
} else { } else {
/* Default is being tda9887 */ /* Default is being tda9887 */
...@@ -1179,7 +1179,7 @@ static int tuner_probe(struct i2c_client *client, ...@@ -1179,7 +1179,7 @@ static int tuner_probe(struct i2c_client *client,
case 0x60: case 0x60:
if (tuner_symbol_probe(tea5767_autodetection, if (tuner_symbol_probe(tea5767_autodetection,
t->i2c->adapter, t->i2c->addr) t->i2c->adapter, t->i2c->addr)
!= EINVAL) { >= 0) {
t->type = TUNER_TEA5767; t->type = TUNER_TEA5767;
t->mode_mask = T_RADIO; t->mode_mask = T_RADIO;
t->mode = T_STANDBY; t->mode = T_STANDBY;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment