]> Pileus Git - ~andy/linux/blobdiff - drivers/media/dvb-frontends/tda10071.c
Merge tag 'nfs-for-3.9-2' of git://git.linux-nfs.org/projects/trondmy/linux-nfs
[~andy/linux] / drivers / media / dvb-frontends / tda10071.c
index 16a4bc54dbe79acefc0c63789c05c6f21d0d977b..2521f7e23018f70a33a9ad43e1bb26e79e037ab8 100644 (file)
@@ -30,7 +30,7 @@ static int tda10071_wr_regs(struct tda10071_priv *priv, u8 reg, u8 *val,
        u8 buf[len+1];
        struct i2c_msg msg[1] = {
                {
-                       .addr = priv->cfg.i2c_address,
+                       .addr = priv->cfg.demod_i2c_addr,
                        .flags = 0,
                        .len = sizeof(buf),
                        .buf = buf,
@@ -59,12 +59,12 @@ static int tda10071_rd_regs(struct tda10071_priv *priv, u8 reg, u8 *val,
        u8 buf[len];
        struct i2c_msg msg[2] = {
                {
-                       .addr = priv->cfg.i2c_address,
+                       .addr = priv->cfg.demod_i2c_addr,
                        .flags = 0,
                        .len = 1,
                        .buf = &reg,
                }, {
-                       .addr = priv->cfg.i2c_address,
+                       .addr = priv->cfg.demod_i2c_addr,
                        .flags = I2C_M_RD,
                        .len = sizeof(buf),
                        .buf = buf,
@@ -1064,7 +1064,7 @@ static int tda10071_init(struct dvb_frontend *fe)
                cmd.args[2] = 0x00;
                cmd.args[3] = 0x00;
                cmd.args[4] = 0x00;
-               cmd.args[5] = 0x14;
+               cmd.args[5] = (priv->cfg.tuner_i2c_addr) ? priv->cfg.tuner_i2c_addr : 0x14;
                cmd.args[6] = 0x00;
                cmd.args[7] = 0x03;
                cmd.args[8] = 0x02;
@@ -1202,6 +1202,20 @@ struct dvb_frontend *tda10071_attach(const struct tda10071_config *config,
                goto error;
        }
 
+       /* make sure demod i2c address is specified */
+       if (!config->demod_i2c_addr) {
+               dev_dbg(&i2c->dev, "%s: invalid demod i2c address!\n", __func__);
+               ret = -EINVAL;
+               goto error;
+       }
+
+       /* make sure tuner i2c address is specified */
+       if (!config->tuner_i2c_addr) {
+               dev_dbg(&i2c->dev, "%s: invalid tuner i2c address!\n", __func__);
+               ret = -EINVAL;
+               goto error;
+       }
+
        /* setup the priv */
        priv->i2c = i2c;
        memcpy(&priv->cfg, config, sizeof(struct tda10071_config));