diff options
author | Antti Palosaari <crope@iki.fi> | 2011-11-13 15:21:58 -0300 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2011-11-24 17:54:35 -0200 |
commit | 13d723ba98545c451bb40711e718087d28985b0f (patch) | |
tree | 7d6a5ebc7338581c1f10c7c58cc0a0a2e92cb03c /drivers/media/dvb/frontends/cxd2820r_t.c | |
parent | fda23faaff3b28a987c22da5f3a17b9f3d4acef8 (diff) |
[media] cxd2820r: check bandwidth earlier for DVB-T/T2
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>
Diffstat (limited to 'drivers/media/dvb/frontends/cxd2820r_t.c')
-rw-r--r-- | drivers/media/dvb/frontends/cxd2820r_t.c | 40 |
1 files changed, 20 insertions, 20 deletions
diff --git a/drivers/media/dvb/frontends/cxd2820r_t.c b/drivers/media/dvb/frontends/cxd2820r_t.c index 86e17e65ddf..b1450ac4b68 100644 --- a/drivers/media/dvb/frontends/cxd2820r_t.c +++ b/drivers/media/dvb/frontends/cxd2820r_t.c @@ -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; |