V4L/DVB (7380): tuner-simple: warn if tuner can't be probed during attach
authorMichael Krufky <mkrufky@linuxtv.org>
Tue, 22 Apr 2008 17:46:05 +0000 (14:46 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Thu, 24 Apr 2008 17:07:51 +0000 (14:07 -0300)
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
drivers/media/video/tuner-simple.c

index b95ed1f489a033c78afc07fc40a149f1d676d732..07007d67d45f81580a62b43dca3152e9d862e12b 100644 (file)
@@ -987,6 +987,28 @@ struct dvb_frontend *simple_tuner_attach(struct dvb_frontend *fe,
                return NULL;
        }
 
+       /* If i2c_adap is set, check that the tuner is at the correct address.
+        * Otherwise, if i2c_adap is NULL, the tuner will be programmed directly
+        * by the digital demod via calc_regs.
+        */
+       if (i2c_adap != NULL) {
+               u8 b[1];
+               struct i2c_msg msg = {
+                       .addr = i2c_addr, .flags = I2C_M_RD,
+                       .buf = b, .len = 1,
+               };
+
+               if (fe->ops.i2c_gate_ctrl)
+                       fe->ops.i2c_gate_ctrl(fe, 1);
+
+               if (1 != i2c_transfer(i2c_adap, &msg, 1))
+                       tuner_warn("unable to probe %s, proceeding anyway.",
+                                  tuners[type].name);
+
+               if (fe->ops.i2c_gate_ctrl)
+                       fe->ops.i2c_gate_ctrl(fe, 0);
+       }
+
        mutex_lock(&tuner_simple_list_mutex);
 
        instance = hybrid_tuner_request_state(struct tuner_simple_priv, priv,