[media] mxl5005s: use DVBv5 parameters on set_params()
authorMauro Carvalho Chehab <mchehab@redhat.com>
Wed, 21 Dec 2011 10:10:58 +0000 (07:10 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Sat, 31 Dec 2011 10:27:06 +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/mxl5005s.c

index 54be9e6faaaf394c8be9020a39119af149058d28..c63f7676992be04386b54d7782f6b6a81cc2dfc7 100644 (file)
@@ -3983,50 +3983,43 @@ static int mxl5005s_set_params(struct dvb_frontend *fe,
                               struct dvb_frontend_parameters *params)
 {
        struct mxl5005s_state *state = fe->tuner_priv;
+       struct dtv_frontend_properties *c = &fe->dtv_property_cache;
+       u32 delsys = c->delivery_system;
+       u32 bw = c->bandwidth_hz;
        u32 req_mode, req_bw = 0;
        int ret;
 
        dprintk(1, "%s()\n", __func__);
 
-       if (fe->ops.info.type == FE_ATSC) {
-               switch (params->u.vsb.modulation) {
-               case VSB_8:
-                       req_mode = MXL_ATSC; break;
-               default:
-               case QAM_64:
-               case QAM_256:
-               case QAM_AUTO:
-                       req_mode = MXL_QAM; break;
-               }
-       } else
+       switch (delsys) {
+       case SYS_ATSC:
+               req_mode = MXL_ATSC;
+               req_bw  = MXL5005S_BANDWIDTH_6MHZ;
+               break;
+       case SYS_DVBC_ANNEX_B:
+               req_mode = MXL_QAM;
+               req_bw  = MXL5005S_BANDWIDTH_6MHZ;
+               break;
+       default:        /* Assume DVB-T */
                req_mode = MXL_DVBT;
-
-       /* Change tuner for new modulation type if reqd */
-       if (req_mode != state->current_mode) {
-               switch (req_mode) {
-               case MXL_ATSC:
-               case MXL_QAM:
-                       req_bw  = MXL5005S_BANDWIDTH_6MHZ;
+               switch (bw) {
+               case 6000000:
+                       req_bw = MXL5005S_BANDWIDTH_6MHZ;
+                       break;
+               case 7000000:
+                       req_bw = MXL5005S_BANDWIDTH_7MHZ;
+                       break;
+               case 8000000:
+               case 0:
+                       req_bw = MXL5005S_BANDWIDTH_8MHZ;
                        break;
-               case MXL_DVBT:
                default:
-                       /* Assume DVB-T */
-                       switch (params->u.ofdm.bandwidth) {
-                       case BANDWIDTH_6_MHZ:
-                               req_bw  = MXL5005S_BANDWIDTH_6MHZ;
-                               break;
-                       case BANDWIDTH_7_MHZ:
-                               req_bw  = MXL5005S_BANDWIDTH_7MHZ;
-                               break;
-                       case BANDWIDTH_AUTO:
-                       case BANDWIDTH_8_MHZ:
-                               req_bw  = MXL5005S_BANDWIDTH_8MHZ;
-                               break;
-                       default:
-                               return -EINVAL;
-                       }
+                       return -EINVAL;
                }
+       }
 
+       /* Change tuner for new modulation type if reqd */
+       if (req_mode != state->current_mode) {
                state->current_mode = req_mode;
                ret = mxl5005s_reconfigure(fe, req_mode, req_bw);
 
@@ -4034,8 +4027,8 @@ static int mxl5005s_set_params(struct dvb_frontend *fe,
                ret = 0;
 
        if (ret == 0) {
-               dprintk(1, "%s() freq=%d\n", __func__, params->frequency);
-               ret = mxl5005s_SetRfFreqHz(fe, params->frequency);
+               dprintk(1, "%s() freq=%d\n", __func__, c->frequency);
+               ret = mxl5005s_SetRfFreqHz(fe, c->frequency);
        }
 
        return ret;