From 7fbf563a53332659d83e69951417e67fe4c4f33d Mon Sep 17 00:00:00 2001 From: Michael Krufky Date: Sun, 4 Nov 2007 11:03:22 -0300 Subject: [PATCH] --- yaml --- r: 76379 b: refs/heads/master c: a818e1c8f7fcb42866a8630c508caddaa8edb331 h: refs/heads/master i: 76377: 77bc1c33586db88348c060187797107a75fc9c28 76375: d2ca7d9e9d0f65134adbaa9a8da5966fd5b8fc0d v: v3 --- [refs] | 2 +- trunk/drivers/media/video/tda8290.c | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 2acac0713657..e5767aa75fd9 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1f3a4e328549cb85aa032c4ee5dfda7886754154 +refs/heads/master: a818e1c8f7fcb42866a8630c508caddaa8edb331 diff --git a/trunk/drivers/media/video/tda8290.c b/trunk/drivers/media/video/tda8290.c index 18e6a09642fa..f0191babe40c 100644 --- a/trunk/drivers/media/video/tda8290.c +++ b/trunk/drivers/media/video/tda8290.c @@ -746,6 +746,22 @@ int tda829x_probe(struct tuner *t) unsigned char restore_9886[] = { 0x00, 0xd6, 0x30 }; unsigned char addr_dto_lsb = 0x07; unsigned char data; +#define PROBE_BUFFER_SIZE 8 + unsigned char buf[PROBE_BUFFER_SIZE]; + int i; + + /* rule out tda9887, which would return the same byte repeatedly */ + tuner_i2c_xfer_send(&i2c_props, soft_reset, 1); + tuner_i2c_xfer_recv(&i2c_props, buf, PROBE_BUFFER_SIZE); + for (i = 1; i < PROBE_BUFFER_SIZE; i++) { + if (buf[i] == buf[0]) + continue; + break; + } + + /* all bytes are equal, not a tda829x - probably a tda9887 */ + if (i == PROBE_BUFFER_SIZE) + return -ENODEV; if ((tda8290_probe(&i2c_props) == 0) || (tda8295_probe(&i2c_props) == 0))