]> Pileus Git - ~andy/linux/blobdiff - drivers/media/tuners/tda18218.c
Merge branch 'for-john' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211
[~andy/linux] / drivers / media / tuners / tda18218.c
index 8a6f9ca788f067c571f2dcbb2f01b412e06f3f68..18198537be9f45c9f224947643f9884ac22348db 100644 (file)
  *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
-#include "tda18218.h"
 #include "tda18218_priv.h"
 
-static int debug;
-module_param(debug, int, 0644);
-MODULE_PARM_DESC(debug, "Turn on/off debugging (default:off).");
-
 /* write multiple registers */
 static int tda18218_wr_regs(struct tda18218_priv *priv, u8 reg, u8 *val, u8 len)
 {
-       int ret = 0;
-       u8 buf[1+len], quotient, remainder, i, msg_len, msg_len_max;
+       int ret = 0, len2, remaining;
+       u8 buf[1 + len];
        struct i2c_msg msg[1] = {
                {
                        .addr = priv->cfg->i2c_address,
@@ -38,17 +33,15 @@ static int tda18218_wr_regs(struct tda18218_priv *priv, u8 reg, u8 *val, u8 len)
                }
        };
 
-       msg_len_max = priv->cfg->i2c_wr_max - 1;
-       quotient = len / msg_len_max;
-       remainder = len % msg_len_max;
-       msg_len = msg_len_max;
-       for (i = 0; (i <= quotient && remainder); i++) {
-               if (i == quotient)  /* set len of the last msg */
-                       msg_len = remainder;
+       for (remaining = len; remaining > 0;
+                       remaining -= (priv->cfg->i2c_wr_max - 1)) {
+               len2 = remaining;
+               if (len2 > (priv->cfg->i2c_wr_max - 1))
+                       len2 = (priv->cfg->i2c_wr_max - 1);
 
-               msg[0].len = msg_len + 1;
-               buf[0] = reg + i * msg_len_max;
-               memcpy(&buf[1], &val[i * msg_len_max], msg_len);
+               msg[0].len = 1 + len2;
+               buf[0] = reg + len - remaining;
+               memcpy(&buf[1], &val[len - remaining], len2);
 
                ret = i2c_transfer(priv->i2c, msg, 1);
                if (ret != 1)
@@ -58,7 +51,8 @@ static int tda18218_wr_regs(struct tda18218_priv *priv, u8 reg, u8 *val, u8 len)
        if (ret == 1) {
                ret = 0;
        } else {
-               warn("i2c wr failed ret:%d reg:%02x len:%d", ret, reg, len);
+               dev_warn(&priv->i2c->dev, "%s: i2c wr failed=%d reg=%02x " \
+                               "len=%d\n", KBUILD_MODNAME, ret, reg, len);
                ret = -EREMOTEIO;
        }
 
@@ -89,7 +83,8 @@ static int tda18218_rd_regs(struct tda18218_priv *priv, u8 reg, u8 *val, u8 len)
                memcpy(val, &buf[reg], len);
                ret = 0;
        } else {
-               warn("i2c rd failed ret:%d reg:%02x len:%d", ret, reg, len);
+               dev_warn(&priv->i2c->dev, "%s: i2c rd failed=%d reg=%02x " \
+                               "len=%d\n", KBUILD_MODNAME, ret, reg, len);
                ret = -EREMOTEIO;
        }
 
@@ -199,7 +194,7 @@ error:
                fe->ops.i2c_gate_ctrl(fe, 0); /* close I2C-gate */
 
        if (ret)
-               dbg("%s: failed ret:%d", __func__, ret);
+               dev_dbg(&priv->i2c->dev, "%s: failed=%d\n", __func__, ret);
 
        return ret;
 }
@@ -208,7 +203,7 @@ static int tda18218_get_if_frequency(struct dvb_frontend *fe, u32 *frequency)
 {
        struct tda18218_priv *priv = fe->tuner_priv;
        *frequency = priv->if_frequency;
-       dbg("%s: if=%d", __func__, *frequency);
+       dev_dbg(&priv->i2c->dev, "%s: if_frequency=%d\n", __func__, *frequency);
        return 0;
 }
 
@@ -227,7 +222,7 @@ static int tda18218_sleep(struct dvb_frontend *fe)
                fe->ops.i2c_gate_ctrl(fe, 0); /* close I2C-gate */
 
        if (ret)
-               dbg("%s: failed ret:%d", __func__, ret);
+               dev_dbg(&priv->i2c->dev, "%s: failed=%d\n", __func__, ret);
 
        return ret;
 }
@@ -248,7 +243,7 @@ static int tda18218_init(struct dvb_frontend *fe)
                fe->ops.i2c_gate_ctrl(fe, 0); /* close I2C-gate */
 
        if (ret)
-               dbg("%s: failed ret:%d", __func__, ret);
+               dev_dbg(&priv->i2c->dev, "%s: failed=%d\n", __func__, ret);
 
        return ret;
 }
@@ -307,13 +302,16 @@ struct dvb_frontend *tda18218_attach(struct dvb_frontend *fe,
 
        /* check if the tuner is there */
        ret = tda18218_rd_reg(priv, R00_ID, &val);
-       dbg("%s: ret:%d chip ID:%02x", __func__, ret, val);
+       dev_dbg(&priv->i2c->dev, "%s: ret=%d chip id=%02x\n", __func__, ret,
+                       val);
        if (ret || val != def_regs[R00_ID]) {
                kfree(priv);
                return NULL;
        }
 
-       info("NXP TDA18218HN successfully identified.");
+       dev_info(&priv->i2c->dev,
+                       "%s: NXP TDA18218HN successfully identified\n",
+                       KBUILD_MODNAME);
 
        memcpy(&fe->ops.tuner_ops, &tda18218_tuner_ops,
                sizeof(struct dvb_tuner_ops));
@@ -328,7 +326,7 @@ struct dvb_frontend *tda18218_attach(struct dvb_frontend *fe,
        /* standby */
        ret = tda18218_wr_reg(priv, R17_PD1, priv->regs[R17_PD1] | (1 << 0));
        if (ret)
-               dbg("%s: failed ret:%d", __func__, ret);
+               dev_dbg(&priv->i2c->dev, "%s: failed=%d\n", __func__, ret);
 
        if (fe->ops.i2c_gate_ctrl)
                fe->ops.i2c_gate_ctrl(fe, 0); /* close I2C-gate */