state->m_DrxkState != DRXK_DTV_STARTED)
                goto error;
 
-       state->m_bMirrorFreqSpect = (state->param.inversion == INVERSION_ON);
+       state->m_bMirrorFreqSpect = (state->props.inversion == INVERSION_ON);
 
        if (IntermediateFrequency < 0) {
                state->m_bMirrorFreqSpect = !state->m_bMirrorFreqSpect;
        u16 qamSlErrPower = 0;  /* accum. error between
                                        raw and sliced symbols */
        u32 qamSlSigPower = 0;  /* used for MER, depends of
-                                       QAM constellation */
+                                       QAM modulation */
        u32 qamSlMer = 0;       /* QAM MER */
 
        dprintk(1, "\n");
                return -EINVAL;
        }
 
-       switch (state->param.u.qam.modulation) {
+       switch (state->props.modulation) {
        case QAM_16:
                qamSlSigPower = DRXK_QAM_SL_SIG_POWER_QAM16 << 2;
                break;
                if (status < 0)
                        break;
 
-               switch (state->param.u.qam.modulation) {
+               switch (state->props.modulation) {
                case QAM_16:
                        SignalToNoiseRel = SignalToNoise - 200;
                        break;
        /*== Write channel settings to device =====================================*/
 
        /* mode */
-       switch (state->param.u.ofdm.transmission_mode) {
+       switch (state->props.transmission_mode) {
        case TRANSMISSION_MODE_AUTO:
        default:
                operationMode |= OFDM_SC_RA_RAM_OP_AUTO_MODE__M;
        }
 
        /* guard */
-       switch (state->param.u.ofdm.guard_interval) {
+       switch (state->props.guard_interval) {
        default:
        case GUARD_INTERVAL_AUTO:
                operationMode |= OFDM_SC_RA_RAM_OP_AUTO_GUARD__M;
        }
 
        /* hierarchy */
-       switch (state->param.u.ofdm.hierarchy_information) {
+       switch (state->props.hierarchy) {
        case HIERARCHY_AUTO:
        case HIERARCHY_NONE:
        default:
        }
 
 
-       /* constellation */
-       switch (state->param.u.ofdm.constellation) {
+       /* modulation */
+       switch (state->props.modulation) {
        case QAM_AUTO:
        default:
                operationMode |= OFDM_SC_RA_RAM_OP_AUTO_CONST__M;
 #endif
 
        /* coderate */
-       switch (state->param.u.ofdm.code_rate_HP) {
+       switch (state->props.code_rate_HP) {
        case FEC_AUTO:
        default:
                operationMode |= OFDM_SC_RA_RAM_OP_AUTO_RATE__M;
        /* Also set parameters for EC_OC fix, note EC_OC_REG_TMD_HIL_MAR is changed
                by SC for fix for some 8K,1/8 guard but is restored by InitEC and ResetEC
                functions */
-       switch (state->param.u.ofdm.bandwidth) {
-       case BANDWIDTH_AUTO:
-       case BANDWIDTH_8_MHZ:
+       switch (state->props.bandwidth_hz) {
+       case 0:
+               state->props.bandwidth_hz = 8000000;
+               /* fall though */
+       case 8000000:
                bandwidth = DRXK_BANDWIDTH_8MHZ_IN_HZ;
                status = write16(state, OFDM_SC_RA_RAM_SRMM_FIX_FACT_8K__A, 3052);
                if (status < 0)
                if (status < 0)
                        goto error;
                break;
-       case BANDWIDTH_7_MHZ:
+       case 7000000:
                bandwidth = DRXK_BANDWIDTH_7MHZ_IN_HZ;
                status = write16(state, OFDM_SC_RA_RAM_SRMM_FIX_FACT_8K__A, 3491);
                if (status < 0)
                if (status < 0)
                        goto error;
                break;
-       case BANDWIDTH_6_MHZ:
+       case 6000000:
                bandwidth = DRXK_BANDWIDTH_6MHZ_IN_HZ;
                status = write16(state, OFDM_SC_RA_RAM_SRMM_FIX_FACT_8K__A, 4073);
                if (status < 0)
 /**
 * \brief Setup of the QAM Measurement intervals for signal quality
 * \param demod instance of demod.
-* \param constellation current constellation.
+* \param modulation current modulation.
 * \return DRXStatus_t.
 *
 *  NOTE:
 *
 */
 static int SetQAMMeasurement(struct drxk_state *state,
-                            enum EDrxkConstellation constellation,
+                            enum EDrxkConstellation modulation,
                             u32 symbolRate)
 {
        u32 fecBitsDesired = 0; /* BER accounting period */
        fecRsPrescale = 1;
        /* fecBitsDesired = symbolRate [kHz] *
                FrameLenght [ms] *
-               (constellation + 1) *
+               (modulation + 1) *
                SyncLoss (== 1) *
                ViterbiLoss (==1)
                */
-       switch (constellation) {
+       switch (modulation) {
        case DRX_CONSTELLATION_QAM16:
                fecBitsDesired = 4 * symbolRate;
                break;
        /* Select & calculate correct IQM rate */
        adcFrequency = (state->m_sysClockFreq * 1000) / 3;
        ratesel = 0;
-       /* printk(KERN_DEBUG "drxk: SR %d\n", state->param.u.qam.symbol_rate); */
-       if (state->param.u.qam.symbol_rate <= 1188750)
+       /* printk(KERN_DEBUG "drxk: SR %d\n", state->props.symbol_rate); */
+       if (state->props.symbol_rate <= 1188750)
                ratesel = 3;
-       else if (state->param.u.qam.symbol_rate <= 2377500)
+       else if (state->props.symbol_rate <= 2377500)
                ratesel = 2;
-       else if (state->param.u.qam.symbol_rate <= 4755000)
+       else if (state->props.symbol_rate <= 4755000)
                ratesel = 1;
        status = write16(state, IQM_FD_RATESEL__A, ratesel);
        if (status < 0)
        /*
                IqmRcRate = ((Fadc / (symbolrate * (4<<ratesel))) - 1) * (1<<23)
                */
-       symbFreq = state->param.u.qam.symbol_rate * (1 << ratesel);
+       symbFreq = state->props.symbol_rate * (1 << ratesel);
        if (symbFreq == 0) {
                /* Divide by zero */
                status = -EINVAL;
        /*
                LcSymbFreq = round (.125 *  symbolrate / adcFreq * (1<<15))
                */
-       symbFreq = state->param.u.qam.symbol_rate;
+       symbFreq = state->props.symbol_rate;
        if (adcFrequency == 0) {
                /* Divide by zero */
                status = -EINVAL;
                goto error;
 
        /* Set params */
-       switch (state->param.u.qam.modulation) {
+       switch (state->props.modulation) {
        case QAM_256:
                state->m_Constellation = DRX_CONSTELLATION_QAM256;
                break;
        }
        if (status < 0)
                goto error;
-       setParamParameters[0] = state->m_Constellation; /* constellation     */
+       setParamParameters[0] = state->m_Constellation; /* modulation     */
        setParamParameters[1] = DRXK_QAM_I12_J17;       /* interleave mode   */
        if (state->m_OperationMode == OM_QAM_ITU_C)
                setParamParameters[2] = QAM_TOP_ANNEX_C;
                if (status < 0)
                        goto error;
 
-               setParamParameters[0] = state->m_Constellation; /* constellation     */
+               setParamParameters[0] = state->m_Constellation; /* modulation     */
                setParamParameters[1] = DRXK_QAM_I12_J17;       /* interleave mode   */
                status = scu_command(state, SCU_RAM_COMMAND_STANDARD_QAM | SCU_RAM_COMMAND_CMD_DEMOD_SET_PARAM, 2, setParamParameters, 1, &cmdResult);
        }
 
        /*
         * STEP 3: enable the system in a mode where the ADC provides valid
-        * signal setup constellation independent registers
+        * signal setup modulation independent registers
         */
 #if 0
        status = SetFrequency(channel, tunerFreqOffset));
                goto error;
 
        /* Setup BER measurement */
-       status = SetQAMMeasurement(state, state->m_Constellation, state->param.u. qam.symbol_rate);
+       status = SetQAMMeasurement(state, state->m_Constellation, state->props.symbol_rate);
        if (status < 0)
                goto error;
 
        if (status < 0)
                goto error;
 
-       /* STEP 4: constellation specific setup */
-       switch (state->param.u.qam.modulation) {
+       /* STEP 4: modulation specific setup */
+       switch (state->props.modulation) {
        case QAM_16:
                status = SetQAM16(state);
                break;
                goto error;
 
        /* Re-configure MPEG output, requires knowledge of channel bitrate */
-       /* extAttr->currentChannel.constellation = channel->constellation; */
+       /* extAttr->currentChannel.modulation = channel->modulation; */
        /* extAttr->currentChannel.symbolrate    = channel->symbolrate; */
        status = MPEGTSDtoSetup(state, state->m_OperationMode);
        if (status < 0)
        return ConfigureI2CBridge(state, enable ? true : false);
 }
 
-static int drxk_set_parameters(struct dvb_frontend *fe,
-                              struct dvb_frontend_parameters *p)
+static int drxk_set_parameters(struct dvb_frontend *fe)
 {
+       struct dtv_frontend_properties *p = &fe->dtv_property_cache;
+       u32 delsys  = p->delivery_system;
        struct drxk_state *state = fe->demodulator_priv;
-       u32 delsys  = fe->dtv_property_cache.delivery_system;
        u32 IF;
 
        dprintk(1, "\n");
                fe->ops.tuner_ops.set_params(fe);
        if (fe->ops.i2c_gate_ctrl)
                fe->ops.i2c_gate_ctrl(fe, 0);
-       state->param = *p;
+       state->props = *p;
        fe->ops.tuner_ops.get_if_frequency(fe, &IF);
        Start(state, 0, IF);
 
        return 0;
 }
 
-static int drxk_c_get_frontend(struct dvb_frontend *fe,
-                              struct dvb_frontend_parameters *p)
-{
-       dprintk(1, "\n");
-       return 0;
-}
-
 static int drxk_read_status(struct dvb_frontend *fe, fe_status_t *status)
 {
        struct drxk_state *state = fe->demodulator_priv;
        return 0;
 }
 
-static int drxk_t_get_frontend(struct dvb_frontend *fe,
-                              struct dvb_frontend_parameters *p)
-{
-       dprintk(1, "\n");
-
-       return 0;
-}
-
-static int drxk_c_get_property(struct dvb_frontend *fe, struct dtv_property *p)
-{
-       switch (p->cmd) {
-       case DTV_ENUM_DELSYS:
-               p->u.buffer.data[0] = SYS_DVBC_ANNEX_A;
-               p->u.buffer.data[1] = SYS_DVBC_ANNEX_C;
-               p->u.buffer.len = 2;
-               break;
-       default:
-               break;
-       }
-       return 0;
-}
-static int drxk_t_get_property(struct dvb_frontend *fe, struct dtv_property *p)
-{
-       switch (p->cmd) {
-       case DTV_ENUM_DELSYS:
-               p->u.buffer.data[0] = SYS_DVBT;
-               p->u.buffer.len = 1;
-               break;
-       default:
-               break;
-       }
-       return 0;
-}
-
 static struct dvb_frontend_ops drxk_c_ops = {
+       .delsys = { SYS_DVBC_ANNEX_A, SYS_DVBC_ANNEX_C },
        .info = {
                 .name = "DRXK DVB-C",
                 .type = FE_QAM,
        .sleep = drxk_c_sleep,
        .i2c_gate_ctrl = drxk_gate_ctrl,
 
-       .set_frontend_legacy = drxk_set_parameters,
-       .get_frontend_legacy = drxk_c_get_frontend,
-       .get_property = drxk_c_get_property,
+       .set_frontend = drxk_set_parameters,
        .get_tune_settings = drxk_c_get_tune_settings,
 
        .read_status = drxk_read_status,
 };
 
 static struct dvb_frontend_ops drxk_t_ops = {
+       .delsys = { SYS_DVBT },
        .info = {
                 .name = "DRXK DVB-T",
                 .type = FE_OFDM,
        .sleep = drxk_t_sleep,
        .i2c_gate_ctrl = drxk_gate_ctrl,
 
-       .set_frontend_legacy = drxk_set_parameters,
-       .get_frontend_legacy = drxk_t_get_frontend,
-       .get_property = drxk_t_get_property,
+       .set_frontend = drxk_set_parameters,
 
        .read_status = drxk_read_status,
        .read_ber = drxk_read_ber,