[media] tda827x: use DVBv5 parameters on set_params()
authorMauro Carvalho Chehab <mchehab@redhat.com>
Wed, 21 Dec 2011 11:39:44 +0000 (08:39 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Sat, 31 Dec 2011 10:27:39 +0000 (08:27 -0200)
Instead of using DVBv3 parameters, rely on DVBv5 parameters to
set the tuner.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/common/tuners/tda827x.c

index e0d5b43772b81e997ab6cd15199ae137c7bcb599..7316308d93889fa40a6904bfa26e2dcb6e50bd14 100644 (file)
@@ -155,9 +155,11 @@ static int tuner_transfer(struct dvb_frontend *fe,
 static int tda827xo_set_params(struct dvb_frontend *fe,
                               struct dvb_frontend_parameters *params)
 {
+       struct dtv_frontend_properties *c = &fe->dtv_property_cache;
        struct tda827x_priv *priv = fe->tuner_priv;
        u8 buf[14];
        int rc;
+       u32 band;
 
        struct i2c_msg msg = { .addr = priv->i2c_addr, .flags = 0,
                               .buf = buf, .len = sizeof(buf) };
@@ -165,18 +167,20 @@ static int tda827xo_set_params(struct dvb_frontend *fe,
        u32 N;
 
        dprintk("%s:\n", __func__);
-       switch (params->u.ofdm.bandwidth) {
-       case BANDWIDTH_6_MHZ:
+       if (c->bandwidth_hz == 0) {
+               if_freq = 5000000;
+               band = BANDWIDTH_8_MHZ;
+       } else if (c->bandwidth_hz <= 6000000) {
                if_freq = 4000000;
-               break;
-       case BANDWIDTH_7_MHZ:
+               band = BANDWIDTH_6_MHZ;
+       } else if (c->bandwidth_hz <= 7000000) {
                if_freq = 4500000;
-               break;
-       default:                   /* 8 MHz or Auto */
+               band = BANDWIDTH_7_MHZ;
+       } else {        /* 8 MHz */
                if_freq = 5000000;
-               break;
+               band = BANDWIDTH_8_MHZ;
        }
-       tuner_freq = params->frequency;
+       tuner_freq = c->frequency;
 
        i = 0;
        while (tda827x_table[i].lomax < tuner_freq) {
@@ -220,8 +224,8 @@ static int tda827xo_set_params(struct dvb_frontend *fe,
        if (rc < 0)
                goto err;
 
-       priv->frequency = params->frequency;
-       priv->bandwidth = (fe->ops.info.type == FE_OFDM) ? params->u.ofdm.bandwidth : 0;
+       priv->frequency = c->frequency;
+       priv->bandwidth = band;
 
        return 0;
 
@@ -516,9 +520,11 @@ static void tda827xa_lna_gain(struct dvb_frontend *fe, int high,
 static int tda827xa_set_params(struct dvb_frontend *fe,
                               struct dvb_frontend_parameters *params)
 {
+       struct dtv_frontend_properties *c = &fe->dtv_property_cache;
        struct tda827x_priv *priv = fe->tuner_priv;
        struct tda827xa_data *frequency_map = tda827xa_dvbt;
        u8 buf[11];
+       u32 band;
 
        struct i2c_msg msg = { .addr = priv->i2c_addr, .flags = 0,
                               .buf = buf, .len = sizeof(buf) };
@@ -531,18 +537,20 @@ static int tda827xa_set_params(struct dvb_frontend *fe,
        tda827xa_lna_gain(fe, 1, NULL);
        msleep(20);
 
-       switch (params->u.ofdm.bandwidth) {
-       case BANDWIDTH_6_MHZ:
+       if (c->bandwidth_hz == 0) {
+               if_freq = 5000000;
+               band = BANDWIDTH_8_MHZ;
+       } else if (c->bandwidth_hz <= 6000000) {
                if_freq = 4000000;
-               break;
-       case BANDWIDTH_7_MHZ:
+               band = BANDWIDTH_6_MHZ;
+       } else if (c->bandwidth_hz <= 7000000) {
                if_freq = 4500000;
-               break;
-       default:                   /* 8 MHz or Auto */
+               band = BANDWIDTH_7_MHZ;
+       } else {        /* 8 MHz */
                if_freq = 5000000;
-               break;
+               band = BANDWIDTH_8_MHZ;
        }
-       tuner_freq = params->frequency;
+       tuner_freq = c->frequency;
 
        if (fe->ops.info.type == FE_QAM) {
                dprintk("%s select tda827xa_dvbc\n", __func__);
@@ -645,9 +653,8 @@ static int tda827xa_set_params(struct dvb_frontend *fe,
        if (rc < 0)
                goto err;
 
-       priv->frequency = params->frequency;
-       priv->bandwidth = (fe->ops.info.type == FE_OFDM) ? params->u.ofdm.bandwidth : 0;
-
+       priv->frequency = c->frequency;
+       priv->bandwidth = band;
 
        return 0;