#include "tda826x.h"
 
+static int debug = 0;
+#define dprintk(args...) \
+       do { \
+               if (debug) printk(KERN_DEBUG "tda826x: " args); \
+       } while (0)
+
 struct tda826x_priv {
        /* i2c details */
        int i2c_address;
        u8 buf [] = { 0x00, 0x8d };
        struct i2c_msg msg = { .addr = priv->i2c_address, .flags = 0, .buf = buf, .len = 2 };
 
+       dprintk("%s:\n", __FUNCTION__);
+
        if (!priv->has_loopthrough)
                buf[1] = 0xad;
 
        if (fe->ops.i2c_gate_ctrl)
                fe->ops.i2c_gate_ctrl(fe, 1);
        if ((ret = i2c_transfer (priv->i2c, &msg, 1)) != 1) {
-               printk("%s: i2c error\n", __FUNCTION__);
+               dprintk("%s: i2c error\n", __FUNCTION__);
        }
        if (fe->ops.i2c_gate_ctrl)
                fe->ops.i2c_gate_ctrl(fe, 0);
-       printk("%s:\n", __FUNCTION__);
 
        return (ret == 1) ? 0 : ret;
 }
        u8 buf [11];
        struct i2c_msg msg = { .addr = priv->i2c_address, .flags = 0, .buf = buf, .len = 11 };
 
+       dprintk("%s:\n", __FUNCTION__);
+
        div = (params->frequency + (1000-1)) / 1000;
 
        buf[0] = 0x00; // subaddress
        if (fe->ops.i2c_gate_ctrl)
                fe->ops.i2c_gate_ctrl(fe, 1);
        if ((ret = i2c_transfer (priv->i2c, &msg, 1)) != 1) {
-               printk("%s: i2c error\n", __FUNCTION__);
+               dprintk("%s: i2c error\n", __FUNCTION__);
        }
        if (fe->ops.i2c_gate_ctrl)
                fe->ops.i2c_gate_ctrl(fe, 0);
 
        priv->frequency = div * 1000;
-       printk("%s:\n", __FUNCTION__);
 
        return (ret == 1) ? 0 : ret;
 }
        struct i2c_msg msg [] = { { .addr = addr, .flags = I2C_M_RD, .buf = b1, .len = 2 } };
        int ret;
 
+       dprintk("%s:\n", __FUNCTION__);
+
        if (fe->ops.i2c_gate_ctrl)
                fe->ops.i2c_gate_ctrl(fe, 1);
        ret = i2c_transfer (i2c, msg, 1);
        memcpy(&fe->ops.tuner_ops, &tda826x_tuner_ops, sizeof(struct dvb_tuner_ops));
 
        fe->tuner_priv = priv;
-       printk("%s:\n", __FUNCTION__);
 
        return fe;
 }
 EXPORT_SYMBOL(tda826x_attach);
 
+module_param(debug, int, 0644);
+MODULE_PARM_DESC(debug, "Turn on/off frontend debugging (default:off).");
+
 MODULE_DESCRIPTION("DVB TDA826x driver");
 MODULE_AUTHOR("Andrew de Quincey");
 MODULE_LICENSE("GPL");