struct drxd_state {
        struct dvb_frontend frontend;
        struct dvb_frontend_ops ops;
-       struct dvb_frontend_parameters param;
+       struct dtv_frontend_properties props;
 
        const struct firmware *fw;
        struct device *dev;
                                break;
                }
 
-               switch (state->param.u.ofdm.bandwidth) {
-               case BANDWIDTH_8_MHZ:
+               switch (state->props.bandwidth_hz) {
+               case 8000000:
                        bandwidth = DRXD_BANDWIDTH_8MHZ_IN_HZ;
                        break;
-               case BANDWIDTH_7_MHZ:
+               case 7000000:
                        bandwidth = DRXD_BANDWIDTH_7MHZ_IN_HZ;
                        break;
-               case BANDWIDTH_6_MHZ:
+               case 6000000:
                        bandwidth = DRXD_BANDWIDTH_6MHZ_IN_HZ;
                        break;
                default:
                        status = WriteTable(state, state->m_StartDiversityEnd);
                        if (status < 0)
                                break;
-                       if (state->param.u.ofdm.bandwidth == BANDWIDTH_8_MHZ) {
+                       if (state->props.bandwidth_hz == 8000000) {
                                status = WriteTable(state, state->m_DiversityDelay8MHZ);
                                if (status < 0)
                                        break;
 
 static int DRX_Start(struct drxd_state *state, s32 off)
 {
-       struct dvb_ofdm_parameters *p = &state->param.u.ofdm;
+       struct dtv_frontend_properties *p = &state->props;
        int status;
 
        u16 transmissionParams = 0;
                if (status < 0)
                        break;
 
-               mirrorFreqSpect = (state->param.inversion == INVERSION_ON);
+               mirrorFreqSpect = (state->props.inversion == INVERSION_ON);
 
                switch (p->transmission_mode) {
                default:        /* Not set, detect it automatically */
                        break;
                }
 
-               switch (p->hierarchy_information) {
+               switch (p->hierarchy) {
                case HIERARCHY_1:
                        transmissionParams |= SC_RA_RAM_OP_PARAM_HIER_A1;
                        if (state->type_A) {
                if (status < 0)
                        break;
 
-               switch (p->constellation) {
+               switch (p->modulation) {
                default:
                        operationMode |= SC_RA_RAM_OP_AUTO_CONST__M;
                        /* fall through , try first guess
                   by SC for fix for some 8K,1/8 guard but is restored by
                   InitEC and ResetEC
                   functions */
-               switch (p->bandwidth) {
-               case BANDWIDTH_AUTO:
-               case BANDWIDTH_8_MHZ:
+               switch (p->bandwidth_hz) {
+               case 0:
+                       p->bandwidth_hz = 8000000;
+                       /* fall through */
+               case 8000000:
                        /* (64/7)*(8/8)*1000000 */
                        bandwidth = DRXD_BANDWIDTH_8MHZ_IN_HZ;
 
                        status = Write16(state,
                                         FE_AG_REG_IND_DEL__A, 50, 0x0000);
                        break;
-               case BANDWIDTH_7_MHZ:
+               case 7000000:
                        /* (64/7)*(7/8)*1000000 */
                        bandwidth = DRXD_BANDWIDTH_7MHZ_IN_HZ;
                        bandwidthParam = 0x4807;        /*binary:0100 1000 0000 0111 */
                        status = Write16(state,
                                         FE_AG_REG_IND_DEL__A, 59, 0x0000);
                        break;
-               case BANDWIDTH_6_MHZ:
+               case 6000000:
                        /* (64/7)*(6/8)*1000000 */
                        bandwidth = DRXD_BANDWIDTH_6MHZ_IN_HZ;
                        bandwidthParam = 0x0F07;        /*binary: 0000 1111 0000 0111 */
        return 0;
 }
 
-static int drxd_get_frontend(struct dvb_frontend *fe,
-                            struct dvb_frontend_parameters *param)
-{
-       return 0;
-}
-
 static int drxd_i2c_gate_ctrl(struct dvb_frontend *fe, int enable)
 {
        return drxd_config_i2c(fe, enable);
 }
 
-static int drxd_set_frontend(struct dvb_frontend *fe,
-                            struct dvb_frontend_parameters *param)
+static int drxd_set_frontend(struct dvb_frontend *fe)
 {
+       struct dtv_frontend_properties *p = &fe->dtv_property_cache;
        struct drxd_state *state = fe->demodulator_priv;
        s32 off = 0;
 
-       state->param = *param;
+       state->props = *p;
        DRX_Stop(state);
 
        if (fe->ops.tuner_ops.set_params) {
                        fe->ops.i2c_gate_ctrl(fe, 0);
        }
 
-       /* FIXME: move PLL drivers */
-       if (state->config.pll_set &&
-           state->config.pll_set(state->priv, param,
-                                 state->config.pll_address,
-                                 state->config.demoda_address, &off) < 0) {
-               printk(KERN_ERR "Error in pll_set\n");
-               return -1;
-       }
-
        msleep(200);
 
        return DRX_Start(state, off);
 }
 
 static struct dvb_frontend_ops drxd_ops = {
-
+       .delsys = { SYS_DVBT},
        .info = {
                 .name = "Micronas DRXD DVB-T",
                 .type = FE_OFDM,
        .sleep = drxd_sleep,
        .i2c_gate_ctrl = drxd_i2c_gate_ctrl,
 
-       .set_frontend_legacy = drxd_set_frontend,
-       .get_frontend_legacy = drxd_get_frontend,
+       .set_frontend = drxd_set_frontend,
        .get_tune_settings = drxd_get_tune_settings,
 
        .read_status = drxd_read_status,