summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <devnull@localhost>2005-07-01 17:50:10 +0000
committerMauro Carvalho Chehab <devnull@localhost>2005-07-01 17:50:10 +0000
commite48e82e75652333d4d74ca31a4491d0cbe181ed0 (patch)
tree025bcb50784372cd1a99c2e6a6b7c83855f00b80
parent669535fb595eaa3d2d159fc0b3531cb770ebeafd (diff)
downloadmediapointer-dvb-s2-e48e82e75652333d4d74ca31a4491d0cbe181ed0.tar.gz
mediapointer-dvb-s2-e48e82e75652333d4d74ca31a4491d0cbe181ed0.tar.bz2
* tuner-core.c:
- Added a code to avoid I2C early announce. Signed-off-by: Mauro Carvalho Chehab <mchehab@brturbo.com.br>
-rw-r--r--linux/drivers/media/video/tuner-core.c17
-rw-r--r--v4l/ChangeLog7
2 files changed, 20 insertions, 4 deletions
diff --git a/linux/drivers/media/video/tuner-core.c b/linux/drivers/media/video/tuner-core.c
index 3b85b442f..040647c0d 100644
--- a/linux/drivers/media/video/tuner-core.c
+++ b/linux/drivers/media/video/tuner-core.c
@@ -1,5 +1,5 @@
/*
- * $Id: tuner-core.c,v 1.38 2005/07/01 15:02:09 mchehab Exp $
+ * $Id: tuner-core.c,v 1.39 2005/07/01 17:50:10 mchehab Exp $
*
* i2c tv tuner chip device driver
* core core, i.e. kernel interfaces, registering and so on
@@ -143,6 +143,7 @@ static void set_type(struct i2c_client *c, unsigned int type,
enum tuner_admin_state new_admin_status)
{
struct tuner *t = i2c_get_clientdata(c);
+ unsigned int i;
unsigned char buffer[4];
/* sanity check */
@@ -156,11 +157,19 @@ static void set_type(struct i2c_client *c, unsigned int type,
return;
}
+ /* This code prevents against I2C early announces */
if (NULL == t->i2c.dev.driver) {
dprintk("tuner 0x%02x: I2C driver not registred yet!\n",c->addr);
- t->type=type;
- /* not registered yet */
- return;
+
+ for (i=0;(i<5)&&(NULL == t->i2c.dev.driver);i++) {
+ msleep(1); /* Giver 1 ms for I2C */
+ }
+ if (NULL == t->i2c.dev.driver) {
+ dprintk("tuner 0x%02x: I2C driver still not registred. Giving up!\n",c->addr);
+ t->type=type;
+ /* not registered yet */
+ return;
+ }
}
/* if ((t->admin_status==T_UNINITIALIZED) && (t->type == type))
return;
diff --git a/v4l/ChangeLog b/v4l/ChangeLog
index daf8047b6..002a32a4e 100644
--- a/v4l/ChangeLog
+++ b/v4l/ChangeLog
@@ -1,6 +1,13 @@
2005-06-01 12:09 mchehab
* tuner-core.c:
+ - Added a code to avoid I2C early announce.
+
+ Signed-off-by: Mauro Carvalho Chehab <mchehab@brturbo.com.br>
+
+2005-06-01 12:09 mchehab
+ * tuner-core.c:
+
- new debug info;
- reincluded type=t->type when I2C is not yet registred.