Fix occurrences of "the the "
[deliverable/linux.git] / drivers / media / dvb / frontends / tda10021.c
index 304f1f9b800836bbbb44bab2c7c47c8c668afa4b..e725f612a6b72c2b8d34965297aac2b73dc8e62e 100644 (file)
@@ -1,6 +1,6 @@
 /*
     TDA10021  - Single Chip Cable Channel Receiver driver module
-              used on the the Siemens DVB-C cards
+              used on the Siemens DVB-C cards
 
     Copyright (C) 1999 Convergence Integrated Media GmbH <ralph@convergence.de>
     Copyright (C) 2004 Markus Schulz <msc@antzsystem.de>
@@ -53,9 +53,6 @@ struct tda10021_state {
 static int verbose;
 
 #define XIN 57840000UL
-#define DISABLE_INVERSION(reg0)                do { reg0 |= 0x20; } while (0)
-#define ENABLE_INVERSION(reg0)         do { reg0 &= ~0x20; } while (0)
-#define HAS_INVERSION(reg0)            (!(reg0 & 0x20))
 
 #define FIN (XIN >> 4)
 
@@ -97,7 +94,8 @@ static u8 tda10021_readreg (struct tda10021_state* state, u8 reg)
        int ret;
 
        ret = i2c_transfer (state->i2c, msg, 2);
-       if (ret != 2)
+       // Don't print an error message if the id is read.
+       if (ret != 2 && reg != 0x1a)
                printk("DVB: TDA10021: %s: readreg error (ret == %i)\n",
                                __FUNCTION__, ret);
        return b1[0];
@@ -136,10 +134,10 @@ static int tda10021_setup_reg0 (struct tda10021_state* state, u8 reg0,
 {
        reg0 |= state->reg0 & 0x63;
 
-       if (INVERSION_ON == inversion)
-               ENABLE_INVERSION(reg0);
-       else if (INVERSION_OFF == inversion)
-               DISABLE_INVERSION(reg0);
+       if ((INVERSION_ON == inversion) ^ (state->config->invert == 0))
+               reg0 &= ~0x20;
+       else
+               reg0 |= 0x20;
 
        _tda10021_writereg (state, 0x00, reg0 & 0xfe);
        _tda10021_writereg (state, 0x00, reg0 | 0x01);
@@ -248,6 +246,9 @@ static int tda10021_set_parameters (struct dvb_frontend *fe,
        if (qam < 0 || qam > 5)
                return -EINVAL;
 
+       if (p->inversion != INVERSION_ON && p->inversion != INVERSION_OFF)
+               return -EINVAL;
+
        //printk("tda10021: set frequency to %d qam=%d symrate=%d\n", p->frequency,qam,p->u.qam.symbol_rate);
 
        if (fe->ops.tuner_ops.set_params) {
@@ -356,7 +357,7 @@ static int tda10021_get_frontend(struct dvb_frontend* fe, struct dvb_frontend_pa
                       -((s32)p->u.qam.symbol_rate * afc) >> 10);
        }
 
-       p->inversion = HAS_INVERSION(state->reg0) ? INVERSION_ON : INVERSION_OFF;
+       p->inversion = ((state->reg0 & 0x20) == 0x20) ^ (state->config->invert != 0) ? INVERSION_ON : INVERSION_OFF;
        p->u.qam.modulation = ((state->reg0 >> 2) & 7) + QAM_16;
 
        p->u.qam.fec_inner = FEC_NONE;
@@ -403,6 +404,7 @@ struct dvb_frontend* tda10021_attach(const struct tda1002x_config* config,
                                     u8 pwm)
 {
        struct tda10021_state* state = NULL;
+       u8 id;
 
        /* allocate memory for the internal state */
        state = kmalloc(sizeof(struct tda10021_state), GFP_KERNEL);
@@ -415,7 +417,11 @@ struct dvb_frontend* tda10021_attach(const struct tda1002x_config* config,
        state->reg0 = tda10021_inittab[0];
 
        /* check if the demod is there */
-       if ((tda10021_readreg(state, 0x1a) & 0xf0) != 0x70) goto error;
+       id = tda10021_readreg(state, 0x1a);
+       if ((id & 0xf0) != 0x70) goto error;
+
+       printk("TDA10021: i2c-addr = 0x%02x, id = 0x%02x\n",
+              state->config->demod_address, id);
 
        /* create dvb_frontend */
        memcpy(&state->frontend.ops, &tda10021_ops, sizeof(struct dvb_frontend_ops));
This page took 0.028343 seconds and 5 git commands to generate.