X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fmedia%2Fdvb%2Ffrontends%2Fmt352.c;fp=drivers%2Fmedia%2Fdvb%2Ffrontends%2Fmt352.c;h=aaaec909ddf830f0372bdf11d19aff43a164852c;hb=64ba3f394c830ec48a1c31b53dcae312c56f1604;hp=5de7376c94ce13e9501b1cda912c17a09be738e6;hpb=be1e6109ac94a859551f8e1774eb9a8469fe055c;p=linux-2.6.git diff --git a/drivers/media/dvb/frontends/mt352.c b/drivers/media/dvb/frontends/mt352.c index 5de7376c9..aaaec909d 100644 --- a/drivers/media/dvb/frontends/mt352.c +++ b/drivers/media/dvb/frontends/mt352.c @@ -45,6 +45,7 @@ struct mt352_state { struct i2c_adapter* i2c; struct dvb_frontend frontend; + struct dvb_frontend_ops ops; /* configuration settings */ struct mt352_config config; @@ -285,25 +286,16 @@ static int mt352_set_parameters(struct dvb_frontend* fe, mt352_calc_nominal_rate(state, op->bandwidth, buf+4); mt352_calc_input_freq(state, buf+6); + state->config.pll_set(fe, param, buf+8); + mt352_write(fe, buf, sizeof(buf)); if (state->config.no_tuner) { - if (fe->ops.tuner_ops.set_params) { - fe->ops.tuner_ops.set_params(fe, param); - if (fe->ops.i2c_gate_ctrl) - fe->ops.i2c_gate_ctrl(fe, 0); - } - - mt352_write(fe, buf, 8); + /* start decoding */ mt352_write(fe, fsm_go, 2); } else { - if (fe->ops.tuner_ops.calc_regs) { - fe->ops.tuner_ops.calc_regs(fe, param, buf+8, 5); - buf[8] <<= 1; - mt352_write(fe, buf, sizeof(buf)); - mt352_write(fe, tuner_go, 2); - } + /* start tuning */ + mt352_write(fe, tuner_go, 2); } - return 0; } @@ -549,12 +541,13 @@ struct dvb_frontend* mt352_attach(const struct mt352_config* config, /* setup the state */ state->i2c = i2c; memcpy(&state->config,config,sizeof(struct mt352_config)); + memcpy(&state->ops, &mt352_ops, sizeof(struct dvb_frontend_ops)); /* check if the demod is there */ if (mt352_read_register(state, CHIP_ID) != ID_MT352) goto error; /* create dvb_frontend */ - memcpy(&state->frontend.ops, &mt352_ops, sizeof(struct dvb_frontend_ops)); + state->frontend.ops = &state->ops; state->frontend.demodulator_priv = state; return &state->frontend;