]> git.openfabrics.org - ~shefty/rdma-dev.git/commitdiff
[media] cxd2820r: check bandwidth earlier for DVB-T/T2
authorAntti Palosaari <crope@iki.fi>
Sun, 13 Nov 2011 18:21:58 +0000 (15:21 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Thu, 24 Nov 2011 19:54:35 +0000 (17:54 -0200)
It is param that could be potentially unsupported and
due to that it is good idea to check it very first.

Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/dvb/frontends/cxd2820r_t.c
drivers/media/dvb/frontends/cxd2820r_t2.c

index 86e17e65ddf34504219b5604304e62dbb2a8a138..b1450ac4b683de0333146e8be827327e4874a5a9 100644 (file)
@@ -26,7 +26,7 @@ int cxd2820r_set_frontend_t(struct dvb_frontend *fe,
 {
        struct cxd2820r_priv *priv = fe->demodulator_priv;
        struct dtv_frontend_properties *c = &fe->dtv_property_cache;
-       int ret, i;
+       int ret, i, bw_i;
        u32 if_freq, if_ctl;
        u64 num;
        u8 buf[3], bw_param;
@@ -57,6 +57,23 @@ int cxd2820r_set_frontend_t(struct dvb_frontend *fe,
 
        dbg("%s: RF=%d BW=%d", __func__, c->frequency, c->bandwidth_hz);
 
+       switch (c->bandwidth_hz) {
+       case 6000000:
+               bw_i = 0;
+               bw_param = 2;
+               break;
+       case 7000000:
+               bw_i = 1;
+               bw_param = 1;
+               break;
+       case 8000000:
+               bw_i = 2;
+               bw_param = 0;
+               break;
+       default:
+               return -EINVAL;
+       }
+
        /* update GPIOs */
        ret = cxd2820r_gpio(fe);
        if (ret)
@@ -78,23 +95,6 @@ int cxd2820r_set_frontend_t(struct dvb_frontend *fe,
        priv->delivery_system = SYS_DVBT;
        priv->ber_running = 0; /* tune stops BER counter */
 
-       switch (c->bandwidth_hz) {
-       case 6000000:
-               i = 0;
-               bw_param = 2;
-               break;
-       case 7000000:
-               i = 1;
-               bw_param = 1;
-               break;
-       case 8000000:
-               i = 2;
-               bw_param = 0;
-               break;
-       default:
-               return -EINVAL;
-       }
-
        /* program IF frequency */
        if (fe->ops.tuner_ops.get_if_frequency) {
                ret = fe->ops.tuner_ops.get_if_frequency(fe, &if_freq);
@@ -116,7 +116,7 @@ int cxd2820r_set_frontend_t(struct dvb_frontend *fe,
        if (ret)
                goto error;
 
-       ret = cxd2820r_wr_regs(priv, 0x0009f, bw_params1[i], 5);
+       ret = cxd2820r_wr_regs(priv, 0x0009f, bw_params1[bw_i], 5);
        if (ret)
                goto error;
 
@@ -124,7 +124,7 @@ int cxd2820r_set_frontend_t(struct dvb_frontend *fe,
        if (ret)
                goto error;
 
-       ret = cxd2820r_wr_regs(priv, 0x000d9, bw_params2[i], 2);
+       ret = cxd2820r_wr_regs(priv, 0x000d9, bw_params2[bw_i], 2);
        if (ret)
                goto error;
 
index 8635b075f62db39a2785db76e73773e7dc227c7c..e21fc97291a8290dc04b850855859a57634b8122 100644 (file)
@@ -26,7 +26,7 @@ int cxd2820r_set_frontend_t2(struct dvb_frontend *fe,
 {
        struct cxd2820r_priv *priv = fe->demodulator_priv;
        struct dtv_frontend_properties *c = &fe->dtv_property_cache;
-       int ret, i;
+       int ret, i, bw_i;
        u32 if_freq, if_ctl;
        u64 num;
        u8 buf[3], bw_param;
@@ -71,6 +71,27 @@ int cxd2820r_set_frontend_t2(struct dvb_frontend *fe,
 
        dbg("%s: RF=%d BW=%d", __func__, c->frequency, c->bandwidth_hz);
 
+       switch (c->bandwidth_hz) {
+       case 5000000:
+               bw_i = 0;
+               bw_param = 3;
+               break;
+       case 6000000:
+               bw_i = 1;
+               bw_param = 2;
+               break;
+       case 7000000:
+               bw_i = 2;
+               bw_param = 1;
+               break;
+       case 8000000:
+               bw_i = 3;
+               bw_param = 0;
+               break;
+       default:
+               return -EINVAL;
+       }
+
        /* update GPIOs */
        ret = cxd2820r_gpio(fe);
        if (ret)
@@ -91,27 +112,6 @@ int cxd2820r_set_frontend_t2(struct dvb_frontend *fe,
 
        priv->delivery_system = SYS_DVBT2;
 
-       switch (c->bandwidth_hz) {
-       case 5000000:
-               i = 0;
-               bw_param = 3;
-               break;
-       case 6000000:
-               i = 1;
-               bw_param = 2;
-               break;
-       case 7000000:
-               i = 2;
-               bw_param = 1;
-               break;
-       case 8000000:
-               i = 3;
-               bw_param = 0;
-               break;
-       default:
-               return -EINVAL;
-       }
-
        /* program IF frequency */
        if (fe->ops.tuner_ops.get_if_frequency) {
                ret = fe->ops.tuner_ops.get_if_frequency(fe, &if_freq);
@@ -133,7 +133,7 @@ int cxd2820r_set_frontend_t2(struct dvb_frontend *fe,
        if (ret)
                goto error;
 
-       ret = cxd2820r_wr_regs(priv, 0x0209f, bw_params1[i], 5);
+       ret = cxd2820r_wr_regs(priv, 0x0209f, bw_params1[bw_i], 5);
        if (ret)
                goto error;