aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@redhat.com>2011-12-21 05:10:58 -0500
committerMauro Carvalho Chehab <mchehab@redhat.com>2011-12-31 05:27:06 -0500
commit9818d7dff2a0a1d8a51f077a16efbe5b705278b5 (patch)
treeb50d30e440f96f01ee5275b3e0034de1c238919c
parent82c0126ff2e3278ecf1d6c7d0bf71838e189dbdc (diff)
[media] mxl5005s: use DVBv5 parameters on set_params()
Instead of using DVBv3 parameters, rely on DVBv5 parameters to set the tuner. Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r--drivers/media/common/tuners/mxl5005s.c65
1 files changed, 29 insertions, 36 deletions
diff --git a/drivers/media/common/tuners/mxl5005s.c b/drivers/media/common/tuners/mxl5005s.c
index 54be9e6faaaf..c63f7676992b 100644
--- a/drivers/media/common/tuners/mxl5005s.c
+++ b/drivers/media/common/tuners/mxl5005s.c
@@ -3983,50 +3983,43 @@ static int mxl5005s_set_params(struct dvb_frontend *fe,
3983 struct dvb_frontend_parameters *params) 3983 struct dvb_frontend_parameters *params)
3984{ 3984{
3985 struct mxl5005s_state *state = fe->tuner_priv; 3985 struct mxl5005s_state *state = fe->tuner_priv;
3986 struct dtv_frontend_properties *c = &fe->dtv_property_cache;
3987 u32 delsys = c->delivery_system;
3988 u32 bw = c->bandwidth_hz;
3986 u32 req_mode, req_bw = 0; 3989 u32 req_mode, req_bw = 0;
3987 int ret; 3990 int ret;
3988 3991
3989 dprintk(1, "%s()\n", __func__); 3992 dprintk(1, "%s()\n", __func__);
3990 3993
3991 if (fe->ops.info.type == FE_ATSC) { 3994 switch (delsys) {
3992 switch (params->u.vsb.modulation) { 3995 case SYS_ATSC:
3993 case VSB_8: 3996 req_mode = MXL_ATSC;
3994 req_mode = MXL_ATSC; break; 3997 req_bw = MXL5005S_BANDWIDTH_6MHZ;
3995 default: 3998 break;
3996 case QAM_64: 3999 case SYS_DVBC_ANNEX_B:
3997 case QAM_256: 4000 req_mode = MXL_QAM;
3998 case QAM_AUTO: 4001 req_bw = MXL5005S_BANDWIDTH_6MHZ;
3999 req_mode = MXL_QAM; break; 4002 break;
4000 } 4003 default: /* Assume DVB-T */
4001 } else
4002 req_mode = MXL_DVBT; 4004 req_mode = MXL_DVBT;
4003 4005 switch (bw) {
4004 /* Change tuner for new modulation type if reqd */ 4006 case 6000000:
4005 if (req_mode != state->current_mode) { 4007 req_bw = MXL5005S_BANDWIDTH_6MHZ;
4006 switch (req_mode) { 4008 break;
4007 case MXL_ATSC: 4009 case 7000000:
4008 case MXL_QAM: 4010 req_bw = MXL5005S_BANDWIDTH_7MHZ;
4009 req_bw = MXL5005S_BANDWIDTH_6MHZ; 4011 break;
4012 case 8000000:
4013 case 0:
4014 req_bw = MXL5005S_BANDWIDTH_8MHZ;
4010 break; 4015 break;
4011 case MXL_DVBT:
4012 default: 4016 default:
4013 /* Assume DVB-T */ 4017 return -EINVAL;
4014 switch (params->u.ofdm.bandwidth) {
4015 case BANDWIDTH_6_MHZ:
4016 req_bw = MXL5005S_BANDWIDTH_6MHZ;
4017 break;
4018 case BANDWIDTH_7_MHZ:
4019 req_bw = MXL5005S_BANDWIDTH_7MHZ;
4020 break;
4021 case BANDWIDTH_AUTO:
4022 case BANDWIDTH_8_MHZ:
4023 req_bw = MXL5005S_BANDWIDTH_8MHZ;
4024 break;
4025 default:
4026 return -EINVAL;
4027 }
4028 } 4018 }
4019 }
4029 4020
4021 /* Change tuner for new modulation type if reqd */
4022 if (req_mode != state->current_mode) {
4030 state->current_mode = req_mode; 4023 state->current_mode = req_mode;
4031 ret = mxl5005s_reconfigure(fe, req_mode, req_bw); 4024 ret = mxl5005s_reconfigure(fe, req_mode, req_bw);
4032 4025
@@ -4034,8 +4027,8 @@ static int mxl5005s_set_params(struct dvb_frontend *fe,
4034 ret = 0; 4027 ret = 0;
4035 4028
4036 if (ret == 0) { 4029 if (ret == 0) {
4037 dprintk(1, "%s() freq=%d\n", __func__, params->frequency); 4030 dprintk(1, "%s() freq=%d\n", __func__, c->frequency);
4038 ret = mxl5005s_SetRfFreqHz(fe, params->frequency); 4031 ret = mxl5005s_SetRfFreqHz(fe, c->frequency);
4039 } 4032 }
4040 4033
4041 return ret; 4034 return ret;