提交 dea74869 编写于 作者: P Patrick Boettcher 提交者: Mauro Carvalho Chehab

V4L/DVB (4028): Change dvb_frontend_ops to be a real field instead of a...

V4L/DVB (4028): Change dvb_frontend_ops to be a real field instead of a pointer field inside dvb_frontend

The dvb_frontend_ops is a pointer inside dvb_frontend. That's why every demod-driver
is having a field of dvb_frontend_ops in its private-state-struct and
using the reference for filling the pointer-field in dvb_frontend.
- It saves at least two lines of code per demod-driver,
- reduces object size (one less dereference per frontend_ops-access),
- be coherent with dvb_tuner_ops,
- makes it a little bit easier for newbies to understand how it works and
- avoids stupid mistakes because you would have to copy the dvb_frontend_ops
  always, before you could assign the static pointer directly, which was
  dangerous.
Signed-off-by: NPatrick Boettcher <pb@linuxtv.org>
Signed-off-by: NMauro Carvalho Chehab <mchehab@infradead.org>
上级 332bed5f
...@@ -183,8 +183,8 @@ static int samsung_tbmu24112_tuner_set_params(struct dvb_frontend* fe, struct dv ...@@ -183,8 +183,8 @@ static int samsung_tbmu24112_tuner_set_params(struct dvb_frontend* fe, struct dv
if (params->frequency < 1500000) buf[3] |= 0x10; if (params->frequency < 1500000) buf[3] |= 0x10;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(&fc->i2c_adap, &msg, 1) != 1) { if (i2c_transfer(&fc->i2c_adap, &msg, 1) != 1) {
return -EIO; return -EIO;
} }
...@@ -342,8 +342,8 @@ static int skystar23_samsung_tbdu18132_tuner_set_params(struct dvb_frontend* fe, ...@@ -342,8 +342,8 @@ static int skystar23_samsung_tbdu18132_tuner_set_params(struct dvb_frontend* fe,
if (params->frequency < 1550000) if (params->frequency < 1550000)
buf[3] |= 0x02; buf[3] |= 0x02;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(&fc->i2c_adap, &msg, 1) != 1) if (i2c_transfer(&fc->i2c_adap, &msg, 1) != 1)
return -EIO; return -EIO;
return 0; return 0;
...@@ -389,8 +389,8 @@ int alps_tdee4_stv0297_tuner_set_params (struct dvb_frontend* fe, struct dvb_fro ...@@ -389,8 +389,8 @@ int alps_tdee4_stv0297_tuner_set_params (struct dvb_frontend* fe, struct dvb_fro
else if (fep->frequency <= 822000000) buf[3] = 0x08; else if (fep->frequency <= 822000000) buf[3] = 0x08;
else buf[3] = 0x88; else buf[3] = 0x88;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
deb_tuner("tuner buffer for %d Hz: %x %x %x %x\n",fep->frequency, buf[0],buf[1],buf[2],buf[3]); deb_tuner("tuner buffer for %d Hz: %x %x %x %x\n",fep->frequency, buf[0],buf[1],buf[2],buf[3]);
ret = fc->i2c_request(fc,FC_WRITE,FC_I2C_PORT_TUNER,0x61,buf[0],&buf[1],3); ret = fc->i2c_request(fc,FC_WRITE,FC_I2C_PORT_TUNER,0x61,buf[0],&buf[1],3);
deb_tuner("tuner write returned: %d\n",ret); deb_tuner("tuner write returned: %d\n",ret);
...@@ -505,7 +505,7 @@ int flexcop_frontend_init(struct flexcop_device *fc) ...@@ -505,7 +505,7 @@ int flexcop_frontend_init(struct flexcop_device *fc)
/* try the sky v2.6 (stv0299/Samsung tbmu24112(sl1935)) */ /* try the sky v2.6 (stv0299/Samsung tbmu24112(sl1935)) */
if ((fc->fe = stv0299_attach(&samsung_tbmu24112_config, &fc->i2c_adap)) != NULL) { if ((fc->fe = stv0299_attach(&samsung_tbmu24112_config, &fc->i2c_adap)) != NULL) {
ops = fc->fe->ops; ops = &fc->fe->ops;
ops->tuner_ops.set_params = samsung_tbmu24112_tuner_set_params; ops->tuner_ops.set_params = samsung_tbmu24112_tuner_set_params;
...@@ -520,7 +520,7 @@ int flexcop_frontend_init(struct flexcop_device *fc) ...@@ -520,7 +520,7 @@ int flexcop_frontend_init(struct flexcop_device *fc)
/* try the air dvb-t (mt352/Samsung tdtc9251dh0(??)) */ /* try the air dvb-t (mt352/Samsung tdtc9251dh0(??)) */
if ((fc->fe = mt352_attach(&samsung_tdtc9251dh0_config, &fc->i2c_adap)) != NULL ) { if ((fc->fe = mt352_attach(&samsung_tdtc9251dh0_config, &fc->i2c_adap)) != NULL ) {
fc->dev_type = FC_AIR_DVB; fc->dev_type = FC_AIR_DVB;
fc->fe->ops->tuner_ops.calc_regs = samsung_tdtc9251dh0_calc_regs; fc->fe->ops.tuner_ops.calc_regs = samsung_tdtc9251dh0_calc_regs;
info("found the mt352 at i2c address: 0x%02x",samsung_tdtc9251dh0_config.demod_address); info("found the mt352 at i2c address: 0x%02x",samsung_tdtc9251dh0_config.demod_address);
} else } else
/* try the air atsc 2nd generation (nxt2002) */ /* try the air atsc 2nd generation (nxt2002) */
...@@ -532,7 +532,7 @@ int flexcop_frontend_init(struct flexcop_device *fc) ...@@ -532,7 +532,7 @@ int flexcop_frontend_init(struct flexcop_device *fc)
/* try the air atsc 3nd generation (lgdt3303) */ /* try the air atsc 3nd generation (lgdt3303) */
if ((fc->fe = lgdt330x_attach(&air2pc_atsc_hd5000_config, &fc->i2c_adap)) != NULL) { if ((fc->fe = lgdt330x_attach(&air2pc_atsc_hd5000_config, &fc->i2c_adap)) != NULL) {
fc->dev_type = FC_AIR_ATSC3; fc->dev_type = FC_AIR_ATSC3;
fc->fe->ops->tuner_ops.set_params = lgdt3303_tuner_set_params; fc->fe->ops.tuner_ops.set_params = lgdt3303_tuner_set_params;
info("found the lgdt3303 at i2c address: 0x%02x",air2pc_atsc_hd5000_config.demod_address); info("found the lgdt3303 at i2c address: 0x%02x",air2pc_atsc_hd5000_config.demod_address);
} else } else
/* try the air atsc 1nd generation (bcm3510)/panasonic ct10s */ /* try the air atsc 1nd generation (bcm3510)/panasonic ct10s */
...@@ -543,12 +543,12 @@ int flexcop_frontend_init(struct flexcop_device *fc) ...@@ -543,12 +543,12 @@ int flexcop_frontend_init(struct flexcop_device *fc)
/* try the cable dvb (stv0297) */ /* try the cable dvb (stv0297) */
if ((fc->fe = stv0297_attach(&alps_tdee4_stv0297_config, &fc->i2c_adap)) != NULL) { if ((fc->fe = stv0297_attach(&alps_tdee4_stv0297_config, &fc->i2c_adap)) != NULL) {
fc->dev_type = FC_CABLE; fc->dev_type = FC_CABLE;
fc->fe->ops->tuner_ops.set_params = alps_tdee4_stv0297_tuner_set_params; fc->fe->ops.tuner_ops.set_params = alps_tdee4_stv0297_tuner_set_params;
info("found the stv0297 at i2c address: 0x%02x",alps_tdee4_stv0297_config.demod_address); info("found the stv0297 at i2c address: 0x%02x",alps_tdee4_stv0297_config.demod_address);
} else } else
/* try the sky v2.3 (vp310/Samsung tbdu18132(tsa5059)) */ /* try the sky v2.3 (vp310/Samsung tbdu18132(tsa5059)) */
if ((fc->fe = vp310_mt312_attach(&skystar23_samsung_tbdu18132_config, &fc->i2c_adap)) != NULL) { if ((fc->fe = vp310_mt312_attach(&skystar23_samsung_tbdu18132_config, &fc->i2c_adap)) != NULL) {
ops = fc->fe->ops; ops = &fc->fe->ops;
ops->tuner_ops.set_params = skystar23_samsung_tbdu18132_tuner_set_params; ops->tuner_ops.set_params = skystar23_samsung_tbdu18132_tuner_set_params;
...@@ -570,7 +570,7 @@ int flexcop_frontend_init(struct flexcop_device *fc) ...@@ -570,7 +570,7 @@ int flexcop_frontend_init(struct flexcop_device *fc)
} else { } else {
if (dvb_register_frontend(&fc->dvb_adapter, fc->fe)) { if (dvb_register_frontend(&fc->dvb_adapter, fc->fe)) {
err("frontend registration failed!"); err("frontend registration failed!");
ops = fc->fe->ops; ops = &fc->fe->ops;
if (ops->release != NULL) if (ops->release != NULL)
ops->release(fc->fe); ops->release(fc->fe);
fc->fe = NULL; fc->fe = NULL;
......
...@@ -1417,24 +1417,22 @@ struct dst_state *dst_attach(struct dst_state *state, struct dvb_adapter *dvb_ad ...@@ -1417,24 +1417,22 @@ struct dst_state *dst_attach(struct dst_state *state, struct dvb_adapter *dvb_ad
return NULL; return NULL;
} }
/* determine settings based on type */ /* determine settings based on type */
/* create dvb_frontend */
switch (state->dst_type) { switch (state->dst_type) {
case DST_TYPE_IS_TERR: case DST_TYPE_IS_TERR:
memcpy(&state->ops, &dst_dvbt_ops, sizeof(struct dvb_frontend_ops)); memcpy(&state->frontend.ops, &dst_dvbt_ops, sizeof(struct dvb_frontend_ops));
break; break;
case DST_TYPE_IS_CABLE: case DST_TYPE_IS_CABLE:
memcpy(&state->ops, &dst_dvbc_ops, sizeof(struct dvb_frontend_ops)); memcpy(&state->frontend.ops, &dst_dvbc_ops, sizeof(struct dvb_frontend_ops));
break; break;
case DST_TYPE_IS_SAT: case DST_TYPE_IS_SAT:
memcpy(&state->ops, &dst_dvbs_ops, sizeof(struct dvb_frontend_ops)); memcpy(&state->frontend.ops, &dst_dvbs_ops, sizeof(struct dvb_frontend_ops));
break; break;
default: default:
dprintk(verbose, DST_ERROR, 1, "unknown DST type. please report to the LinuxTV.org DVB mailinglist."); dprintk(verbose, DST_ERROR, 1, "unknown DST type. please report to the LinuxTV.org DVB mailinglist.");
kfree(state); kfree(state);
return NULL; return NULL;
} }
/* create dvb_frontend */
state->frontend.ops = &state->ops;
state->frontend.demodulator_priv = state; state->frontend.demodulator_priv = state;
return state; /* Manu (DST is a card not a frontend) */ return state; /* Manu (DST is a card not a frontend) */
......
...@@ -84,8 +84,6 @@ struct dst_state { ...@@ -84,8 +84,6 @@ struct dst_state {
struct bt878* bt; struct bt878* bt;
struct dvb_frontend_ops ops;
/* configuration settings */ /* configuration settings */
const struct dst_config* config; const struct dst_config* config;
......
...@@ -300,8 +300,8 @@ static int microtune_mt7202dtf_tuner_set_params(struct dvb_frontend* fe, struct ...@@ -300,8 +300,8 @@ static int microtune_mt7202dtf_tuner_set_params(struct dvb_frontend* fe, struct
data[2] = ((div >> 10) & 0x60) | cfg; data[2] = ((div >> 10) & 0x60) | cfg;
data[3] = (cpump << 6) | band_select; data[3] = (cpump << 6) | band_select;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
i2c_transfer(card->i2c_adapter, &msg, 1); i2c_transfer(card->i2c_adapter, &msg, 1);
return (div * 166666 - 36000000); return (div * 166666 - 36000000);
} }
...@@ -483,8 +483,8 @@ static int vp3021_alps_tded4_tuner_set_params(struct dvb_frontend* fe, struct dv ...@@ -483,8 +483,8 @@ static int vp3021_alps_tded4_tuner_set_params(struct dvb_frontend* fe, struct dv
else else
return -EINVAL; return -EINVAL;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
i2c_transfer(card->i2c_adapter, &msg, 1); i2c_transfer(card->i2c_adapter, &msg, 1);
return 0; return 0;
} }
...@@ -607,9 +607,9 @@ static void frontend_init(struct dvb_bt8xx_card *card, u32 type) ...@@ -607,9 +607,9 @@ static void frontend_init(struct dvb_bt8xx_card *card, u32 type)
card->i2c_adapter); card->i2c_adapter);
if (card->fe != NULL) { if (card->fe != NULL) {
card->fe->ops->tuner_ops.calc_regs = thomson_dtt7579_tuner_calc_regs; card->fe->ops.tuner_ops.calc_regs = thomson_dtt7579_tuner_calc_regs;
card->fe->ops->info.frequency_min = 174000000; card->fe->ops.info.frequency_min = 174000000;
card->fe->ops->info.frequency_max = 862000000; card->fe->ops.info.frequency_max = 862000000;
} }
break; break;
...@@ -617,7 +617,7 @@ static void frontend_init(struct dvb_bt8xx_card *card, u32 type) ...@@ -617,7 +617,7 @@ static void frontend_init(struct dvb_bt8xx_card *card, u32 type)
lgdt330x_reset(card); lgdt330x_reset(card);
card->fe = lgdt330x_attach(&tdvs_tua6034_config, card->i2c_adapter); card->fe = lgdt330x_attach(&tdvs_tua6034_config, card->i2c_adapter);
if (card->fe != NULL) { if (card->fe != NULL) {
card->fe->ops->tuner_ops.set_params = tdvs_tua6034_tuner_set_params; card->fe->ops.tuner_ops.set_params = tdvs_tua6034_tuner_set_params;
dprintk ("dvb_bt8xx: lgdt330x detected\n"); dprintk ("dvb_bt8xx: lgdt330x detected\n");
} }
break; break;
...@@ -632,7 +632,7 @@ static void frontend_init(struct dvb_bt8xx_card *card, u32 type) ...@@ -632,7 +632,7 @@ static void frontend_init(struct dvb_bt8xx_card *card, u32 type)
digitv_alps_tded4_reset(card); digitv_alps_tded4_reset(card);
card->fe = nxt6000_attach(&vp3021_alps_tded4_config, card->i2c_adapter); card->fe = nxt6000_attach(&vp3021_alps_tded4_config, card->i2c_adapter);
if (card->fe != NULL) { if (card->fe != NULL) {
card->fe->ops->tuner_ops.set_params = vp3021_alps_tded4_tuner_set_params; card->fe->ops.tuner_ops.set_params = vp3021_alps_tded4_tuner_set_params;
dprintk ("dvb_bt8xx: an nxt6000 was detected on your digitv card\n"); dprintk ("dvb_bt8xx: an nxt6000 was detected on your digitv card\n");
break; break;
} }
...@@ -642,7 +642,7 @@ static void frontend_init(struct dvb_bt8xx_card *card, u32 type) ...@@ -642,7 +642,7 @@ static void frontend_init(struct dvb_bt8xx_card *card, u32 type)
card->fe = mt352_attach(&digitv_alps_tded4_config, card->i2c_adapter); card->fe = mt352_attach(&digitv_alps_tded4_config, card->i2c_adapter);
if (card->fe != NULL) { if (card->fe != NULL) {
card->fe->ops->tuner_ops.calc_regs = digitv_alps_tded4_tuner_calc_regs; card->fe->ops.tuner_ops.calc_regs = digitv_alps_tded4_tuner_calc_regs;
dprintk ("dvb_bt8xx: an mt352 was detected on your digitv card\n"); dprintk ("dvb_bt8xx: an mt352 was detected on your digitv card\n");
} }
break; break;
...@@ -650,16 +650,16 @@ static void frontend_init(struct dvb_bt8xx_card *card, u32 type) ...@@ -650,16 +650,16 @@ static void frontend_init(struct dvb_bt8xx_card *card, u32 type)
case BTTV_BOARD_AVDVBT_761: case BTTV_BOARD_AVDVBT_761:
card->fe = sp887x_attach(&microtune_mt7202dtf_config, card->i2c_adapter); card->fe = sp887x_attach(&microtune_mt7202dtf_config, card->i2c_adapter);
if (card->fe) { if (card->fe) {
card->fe->ops->tuner_ops.set_params = microtune_mt7202dtf_tuner_set_params; card->fe->ops.tuner_ops.set_params = microtune_mt7202dtf_tuner_set_params;
} }
break; break;
case BTTV_BOARD_AVDVBT_771: case BTTV_BOARD_AVDVBT_771:
card->fe = mt352_attach(&advbt771_samsung_tdtc9251dh0_config, card->i2c_adapter); card->fe = mt352_attach(&advbt771_samsung_tdtc9251dh0_config, card->i2c_adapter);
if (card->fe != NULL) { if (card->fe != NULL) {
card->fe->ops->tuner_ops.calc_regs = advbt771_samsung_tdtc9251dh0_tuner_calc_regs; card->fe->ops.tuner_ops.calc_regs = advbt771_samsung_tdtc9251dh0_tuner_calc_regs;
card->fe->ops->info.frequency_min = 174000000; card->fe->ops.info.frequency_min = 174000000;
card->fe->ops->info.frequency_max = 862000000; card->fe->ops.info.frequency_max = 862000000;
} }
break; break;
...@@ -687,9 +687,9 @@ static void frontend_init(struct dvb_bt8xx_card *card, u32 type) ...@@ -687,9 +687,9 @@ static void frontend_init(struct dvb_bt8xx_card *card, u32 type)
case BTTV_BOARD_PINNACLESAT: case BTTV_BOARD_PINNACLESAT:
card->fe = cx24110_attach(&pctvsat_config, card->i2c_adapter); card->fe = cx24110_attach(&pctvsat_config, card->i2c_adapter);
if (card->fe) { if (card->fe) {
card->fe->ops->tuner_ops.init = pinnsat_tuner_init; card->fe->ops.tuner_ops.init = pinnsat_tuner_init;
card->fe->ops->tuner_ops.sleep = pinnsat_tuner_sleep; card->fe->ops.tuner_ops.sleep = pinnsat_tuner_sleep;
card->fe->ops->tuner_ops.set_params = cx24108_tuner_set_params; card->fe->ops.tuner_ops.set_params = cx24108_tuner_set_params;
} }
break; break;
...@@ -707,8 +707,8 @@ static void frontend_init(struct dvb_bt8xx_card *card, u32 type) ...@@ -707,8 +707,8 @@ static void frontend_init(struct dvb_bt8xx_card *card, u32 type)
else else
if (dvb_register_frontend(&card->dvb_adapter, card->fe)) { if (dvb_register_frontend(&card->dvb_adapter, card->fe)) {
printk("dvb-bt8xx: Frontend registration failed!\n"); printk("dvb-bt8xx: Frontend registration failed!\n");
if (card->fe->ops->release) if (card->fe->ops.release)
card->fe->ops->release(card->fe); card->fe->ops.release(card->fe);
card->fe = NULL; card->fe = NULL;
} }
} }
......
...@@ -151,8 +151,8 @@ static void dvb_frontend_add_event(struct dvb_frontend *fe, fe_status_t status) ...@@ -151,8 +151,8 @@ static void dvb_frontend_add_event(struct dvb_frontend *fe, fe_status_t status)
sizeof (struct dvb_frontend_parameters)); sizeof (struct dvb_frontend_parameters));
if (status & FE_HAS_LOCK) if (status & FE_HAS_LOCK)
if (fe->ops->get_frontend) if (fe->ops.get_frontend)
fe->ops->get_frontend(fe, &e->parameters); fe->ops.get_frontend(fe, &e->parameters);
events->eventw = wp; events->eventw = wp;
...@@ -211,14 +211,14 @@ static void dvb_frontend_init(struct dvb_frontend *fe) ...@@ -211,14 +211,14 @@ static void dvb_frontend_init(struct dvb_frontend *fe)
{ {
dprintk ("DVB: initialising frontend %i (%s)...\n", dprintk ("DVB: initialising frontend %i (%s)...\n",
fe->dvb->num, fe->dvb->num,
fe->ops->info.name); fe->ops.info.name);
if (fe->ops->init) if (fe->ops.init)
fe->ops->init(fe); fe->ops.init(fe);
if (fe->ops->tuner_ops.init) { if (fe->ops.tuner_ops.init) {
fe->ops->tuner_ops.init(fe); fe->ops.tuner_ops.init(fe);
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 0); fe->ops.i2c_gate_ctrl(fe, 0);
} }
} }
...@@ -264,7 +264,7 @@ static int dvb_frontend_swzigzag_autotune(struct dvb_frontend *fe, int check_wra ...@@ -264,7 +264,7 @@ static int dvb_frontend_swzigzag_autotune(struct dvb_frontend *fe, int check_wra
u32 original_frequency = fepriv->parameters.frequency; u32 original_frequency = fepriv->parameters.frequency;
/* are we using autoinversion? */ /* are we using autoinversion? */
autoinversion = ((!(fe->ops->info.caps & FE_CAN_INVERSION_AUTO)) && autoinversion = ((!(fe->ops.info.caps & FE_CAN_INVERSION_AUTO)) &&
(fepriv->parameters.inversion == INVERSION_AUTO)); (fepriv->parameters.inversion == INVERSION_AUTO));
/* setup parameters correctly */ /* setup parameters correctly */
...@@ -334,8 +334,8 @@ static int dvb_frontend_swzigzag_autotune(struct dvb_frontend *fe, int check_wra ...@@ -334,8 +334,8 @@ static int dvb_frontend_swzigzag_autotune(struct dvb_frontend *fe, int check_wra
fepriv->parameters.frequency += fepriv->lnb_drift; fepriv->parameters.frequency += fepriv->lnb_drift;
if (autoinversion) if (autoinversion)
fepriv->parameters.inversion = fepriv->inversion; fepriv->parameters.inversion = fepriv->inversion;
if (fe->ops->set_frontend) if (fe->ops.set_frontend)
fe->ops->set_frontend(fe, &fepriv->parameters); fe->ops.set_frontend(fe, &fepriv->parameters);
fepriv->parameters.frequency = original_frequency; fepriv->parameters.frequency = original_frequency;
fepriv->parameters.inversion = original_inversion; fepriv->parameters.inversion = original_inversion;
...@@ -359,8 +359,8 @@ static void dvb_frontend_swzigzag(struct dvb_frontend *fe) ...@@ -359,8 +359,8 @@ static void dvb_frontend_swzigzag(struct dvb_frontend *fe)
/* in SCAN mode, we just set the frontend when asked and leave it alone */ /* in SCAN mode, we just set the frontend when asked and leave it alone */
if (fepriv->tune_mode_flags & FE_TUNE_MODE_ONESHOT) { if (fepriv->tune_mode_flags & FE_TUNE_MODE_ONESHOT) {
if (fepriv->state & FESTATE_RETUNE) { if (fepriv->state & FESTATE_RETUNE) {
if (fe->ops->set_frontend) if (fe->ops.set_frontend)
fe->ops->set_frontend(fe, &fepriv->parameters); fe->ops.set_frontend(fe, &fepriv->parameters);
fepriv->state = FESTATE_TUNED; fepriv->state = FESTATE_TUNED;
} }
fepriv->delay = 3*HZ; fepriv->delay = 3*HZ;
...@@ -372,8 +372,8 @@ static void dvb_frontend_swzigzag(struct dvb_frontend *fe) ...@@ -372,8 +372,8 @@ static void dvb_frontend_swzigzag(struct dvb_frontend *fe)
if (fepriv->state & FESTATE_RETUNE) { if (fepriv->state & FESTATE_RETUNE) {
s = 0; s = 0;
} else { } else {
if (fe->ops->read_status) if (fe->ops.read_status)
fe->ops->read_status(fe, &s); fe->ops.read_status(fe, &s);
if (s != fepriv->status) { if (s != fepriv->status) {
dvb_frontend_add_event(fe, s); dvb_frontend_add_event(fe, s);
fepriv->status = s; fepriv->status = s;
...@@ -386,7 +386,7 @@ static void dvb_frontend_swzigzag(struct dvb_frontend *fe) ...@@ -386,7 +386,7 @@ static void dvb_frontend_swzigzag(struct dvb_frontend *fe)
fepriv->state = FESTATE_TUNED; fepriv->state = FESTATE_TUNED;
/* if we're tuned, then we have determined the correct inversion */ /* if we're tuned, then we have determined the correct inversion */
if ((!(fe->ops->info.caps & FE_CAN_INVERSION_AUTO)) && if ((!(fe->ops.info.caps & FE_CAN_INVERSION_AUTO)) &&
(fepriv->parameters.inversion == INVERSION_AUTO)) { (fepriv->parameters.inversion == INVERSION_AUTO)) {
fepriv->parameters.inversion = fepriv->inversion; fepriv->parameters.inversion = fepriv->inversion;
} }
...@@ -410,7 +410,7 @@ static void dvb_frontend_swzigzag(struct dvb_frontend *fe) ...@@ -410,7 +410,7 @@ static void dvb_frontend_swzigzag(struct dvb_frontend *fe)
/* don't actually do anything if we're in the LOSTLOCK state, /* don't actually do anything if we're in the LOSTLOCK state,
* the frontend is set to FE_CAN_RECOVER, and the max_drift is 0 */ * the frontend is set to FE_CAN_RECOVER, and the max_drift is 0 */
if ((fepriv->state & FESTATE_LOSTLOCK) && if ((fepriv->state & FESTATE_LOSTLOCK) &&
(fe->ops->info.caps & FE_CAN_RECOVER) && (fepriv->max_drift == 0)) { (fe->ops.info.caps & FE_CAN_RECOVER) && (fepriv->max_drift == 0)) {
dvb_frontend_swzigzag_update_delay(fepriv, s & FE_HAS_LOCK); dvb_frontend_swzigzag_update_delay(fepriv, s & FE_HAS_LOCK);
return; return;
} }
...@@ -545,16 +545,16 @@ static int dvb_frontend_thread(void *data) ...@@ -545,16 +545,16 @@ static int dvb_frontend_thread(void *data)
if (fepriv->reinitialise) { if (fepriv->reinitialise) {
dvb_frontend_init(fe); dvb_frontend_init(fe);
if (fepriv->tone != -1) { if (fepriv->tone != -1) {
fe->ops->set_tone(fe, fepriv->tone); fe->ops.set_tone(fe, fepriv->tone);
} }
if (fepriv->voltage != -1) { if (fepriv->voltage != -1) {
fe->ops->set_voltage(fe, fepriv->voltage); fe->ops.set_voltage(fe, fepriv->voltage);
} }
fepriv->reinitialise = 0; fepriv->reinitialise = 0;
} }
/* do an iteration of the tuning loop */ /* do an iteration of the tuning loop */
if (fe->ops->tune) { if (fe->ops.tune) {
/* have we been asked to retune? */ /* have we been asked to retune? */
params = NULL; params = NULL;
if (fepriv->state & FESTATE_RETUNE) { if (fepriv->state & FESTATE_RETUNE) {
...@@ -562,7 +562,7 @@ static int dvb_frontend_thread(void *data) ...@@ -562,7 +562,7 @@ static int dvb_frontend_thread(void *data)
fepriv->state = FESTATE_TUNED; fepriv->state = FESTATE_TUNED;
} }
fe->ops->tune(fe, params, fepriv->tune_mode_flags, &fepriv->delay, &s); fe->ops.tune(fe, params, fepriv->tune_mode_flags, &fepriv->delay, &s);
if (s != fepriv->status) { if (s != fepriv->status) {
dvb_frontend_add_event(fe, s); dvb_frontend_add_event(fe, s);
fepriv->status = s; fepriv->status = s;
...@@ -574,15 +574,15 @@ static int dvb_frontend_thread(void *data) ...@@ -574,15 +574,15 @@ static int dvb_frontend_thread(void *data)
if (dvb_shutdown_timeout) { if (dvb_shutdown_timeout) {
if (dvb_powerdown_on_sleep) if (dvb_powerdown_on_sleep)
if (fe->ops->set_voltage) if (fe->ops.set_voltage)
fe->ops->set_voltage(fe, SEC_VOLTAGE_OFF); fe->ops.set_voltage(fe, SEC_VOLTAGE_OFF);
if (fe->ops->tuner_ops.sleep) { if (fe->ops.tuner_ops.sleep) {
fe->ops->tuner_ops.sleep(fe); fe->ops.tuner_ops.sleep(fe);
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 0); fe->ops.i2c_gate_ctrl(fe, 0);
} }
if (fe->ops->sleep) if (fe->ops.sleep)
fe->ops->sleep(fe); fe->ops.sleep(fe);
} }
fepriv->thread_pid = 0; fepriv->thread_pid = 0;
...@@ -734,7 +734,7 @@ static int dvb_frontend_ioctl(struct inode *inode, struct file *file, ...@@ -734,7 +734,7 @@ static int dvb_frontend_ioctl(struct inode *inode, struct file *file,
switch (cmd) { switch (cmd) {
case FE_GET_INFO: { case FE_GET_INFO: {
struct dvb_frontend_info* info = parg; struct dvb_frontend_info* info = parg;
memcpy(info, &fe->ops->info, sizeof(struct dvb_frontend_info)); memcpy(info, &fe->ops.info, sizeof(struct dvb_frontend_info));
/* Force the CAN_INVERSION_AUTO bit on. If the frontend doesn't /* Force the CAN_INVERSION_AUTO bit on. If the frontend doesn't
* do it, it is done for it. */ * do it, it is done for it. */
...@@ -754,58 +754,58 @@ static int dvb_frontend_ioctl(struct inode *inode, struct file *file, ...@@ -754,58 +754,58 @@ static int dvb_frontend_ioctl(struct inode *inode, struct file *file,
break; break;
} }
if (fe->ops->read_status) if (fe->ops.read_status)
err = fe->ops->read_status(fe, status); err = fe->ops.read_status(fe, status);
break; break;
} }
case FE_READ_BER: case FE_READ_BER:
if (fe->ops->read_ber) if (fe->ops.read_ber)
err = fe->ops->read_ber(fe, (__u32*) parg); err = fe->ops.read_ber(fe, (__u32*) parg);
break; break;
case FE_READ_SIGNAL_STRENGTH: case FE_READ_SIGNAL_STRENGTH:
if (fe->ops->read_signal_strength) if (fe->ops.read_signal_strength)
err = fe->ops->read_signal_strength(fe, (__u16*) parg); err = fe->ops.read_signal_strength(fe, (__u16*) parg);
break; break;
case FE_READ_SNR: case FE_READ_SNR:
if (fe->ops->read_snr) if (fe->ops.read_snr)
err = fe->ops->read_snr(fe, (__u16*) parg); err = fe->ops.read_snr(fe, (__u16*) parg);
break; break;
case FE_READ_UNCORRECTED_BLOCKS: case FE_READ_UNCORRECTED_BLOCKS:
if (fe->ops->read_ucblocks) if (fe->ops.read_ucblocks)
err = fe->ops->read_ucblocks(fe, (__u32*) parg); err = fe->ops.read_ucblocks(fe, (__u32*) parg);
break; break;
case FE_DISEQC_RESET_OVERLOAD: case FE_DISEQC_RESET_OVERLOAD:
if (fe->ops->diseqc_reset_overload) { if (fe->ops.diseqc_reset_overload) {
err = fe->ops->diseqc_reset_overload(fe); err = fe->ops.diseqc_reset_overload(fe);
fepriv->state = FESTATE_DISEQC; fepriv->state = FESTATE_DISEQC;
fepriv->status = 0; fepriv->status = 0;
} }
break; break;
case FE_DISEQC_SEND_MASTER_CMD: case FE_DISEQC_SEND_MASTER_CMD:
if (fe->ops->diseqc_send_master_cmd) { if (fe->ops.diseqc_send_master_cmd) {
err = fe->ops->diseqc_send_master_cmd(fe, (struct dvb_diseqc_master_cmd*) parg); err = fe->ops.diseqc_send_master_cmd(fe, (struct dvb_diseqc_master_cmd*) parg);
fepriv->state = FESTATE_DISEQC; fepriv->state = FESTATE_DISEQC;
fepriv->status = 0; fepriv->status = 0;
} }
break; break;
case FE_DISEQC_SEND_BURST: case FE_DISEQC_SEND_BURST:
if (fe->ops->diseqc_send_burst) { if (fe->ops.diseqc_send_burst) {
err = fe->ops->diseqc_send_burst(fe, (fe_sec_mini_cmd_t) parg); err = fe->ops.diseqc_send_burst(fe, (fe_sec_mini_cmd_t) parg);
fepriv->state = FESTATE_DISEQC; fepriv->state = FESTATE_DISEQC;
fepriv->status = 0; fepriv->status = 0;
} }
break; break;
case FE_SET_TONE: case FE_SET_TONE:
if (fe->ops->set_tone) { if (fe->ops.set_tone) {
err = fe->ops->set_tone(fe, (fe_sec_tone_mode_t) parg); err = fe->ops.set_tone(fe, (fe_sec_tone_mode_t) parg);
fepriv->tone = (fe_sec_tone_mode_t) parg; fepriv->tone = (fe_sec_tone_mode_t) parg;
fepriv->state = FESTATE_DISEQC; fepriv->state = FESTATE_DISEQC;
fepriv->status = 0; fepriv->status = 0;
...@@ -813,8 +813,8 @@ static int dvb_frontend_ioctl(struct inode *inode, struct file *file, ...@@ -813,8 +813,8 @@ static int dvb_frontend_ioctl(struct inode *inode, struct file *file,
break; break;
case FE_SET_VOLTAGE: case FE_SET_VOLTAGE:
if (fe->ops->set_voltage) { if (fe->ops.set_voltage) {
err = fe->ops->set_voltage(fe, (fe_sec_voltage_t) parg); err = fe->ops.set_voltage(fe, (fe_sec_voltage_t) parg);
fepriv->voltage = (fe_sec_voltage_t) parg; fepriv->voltage = (fe_sec_voltage_t) parg;
fepriv->state = FESTATE_DISEQC; fepriv->state = FESTATE_DISEQC;
fepriv->status = 0; fepriv->status = 0;
...@@ -822,11 +822,11 @@ static int dvb_frontend_ioctl(struct inode *inode, struct file *file, ...@@ -822,11 +822,11 @@ static int dvb_frontend_ioctl(struct inode *inode, struct file *file,
break; break;
case FE_DISHNETWORK_SEND_LEGACY_CMD: case FE_DISHNETWORK_SEND_LEGACY_CMD:
if (fe->ops->dishnetwork_send_legacy_command) { if (fe->ops.dishnetwork_send_legacy_command) {
err = fe->ops->dishnetwork_send_legacy_command(fe, (unsigned long) parg); err = fe->ops.dishnetwork_send_legacy_command(fe, (unsigned long) parg);
fepriv->state = FESTATE_DISEQC; fepriv->state = FESTATE_DISEQC;
fepriv->status = 0; fepriv->status = 0;
} else if (fe->ops->set_voltage) { } else if (fe->ops.set_voltage) {
/* /*
* NOTE: This is a fallback condition. Some frontends * NOTE: This is a fallback condition. Some frontends
* (stv0299 for instance) take longer than 8msec to * (stv0299 for instance) take longer than 8msec to
...@@ -856,7 +856,7 @@ static int dvb_frontend_ioctl(struct inode *inode, struct file *file, ...@@ -856,7 +856,7 @@ static int dvb_frontend_ioctl(struct inode *inode, struct file *file,
/* before sending a command, initialize by sending /* before sending a command, initialize by sending
* a 32ms 18V to the switch * a 32ms 18V to the switch
*/ */
fe->ops->set_voltage(fe, SEC_VOLTAGE_18); fe->ops.set_voltage(fe, SEC_VOLTAGE_18);
dvb_frontend_sleep_until(&nexttime, 32000); dvb_frontend_sleep_until(&nexttime, 32000);
for (i = 0; i < 9; i++) { for (i = 0; i < 9; i++) {
...@@ -864,7 +864,7 @@ static int dvb_frontend_ioctl(struct inode *inode, struct file *file, ...@@ -864,7 +864,7 @@ static int dvb_frontend_ioctl(struct inode *inode, struct file *file,
do_gettimeofday(&tv[i + 1]); do_gettimeofday(&tv[i + 1]);
if ((cmd & 0x01) != last) { if ((cmd & 0x01) != last) {
/* set voltage to (last ? 13V : 18V) */ /* set voltage to (last ? 13V : 18V) */
fe->ops->set_voltage(fe, (last) ? SEC_VOLTAGE_13 : SEC_VOLTAGE_18); fe->ops.set_voltage(fe, (last) ? SEC_VOLTAGE_13 : SEC_VOLTAGE_18);
last = (last) ? 0 : 1; last = (last) ? 0 : 1;
} }
cmd = cmd >> 1; cmd = cmd >> 1;
...@@ -884,13 +884,13 @@ static int dvb_frontend_ioctl(struct inode *inode, struct file *file, ...@@ -884,13 +884,13 @@ static int dvb_frontend_ioctl(struct inode *inode, struct file *file,
break; break;
case FE_DISEQC_RECV_SLAVE_REPLY: case FE_DISEQC_RECV_SLAVE_REPLY:
if (fe->ops->diseqc_recv_slave_reply) if (fe->ops.diseqc_recv_slave_reply)
err = fe->ops->diseqc_recv_slave_reply(fe, (struct dvb_diseqc_slave_reply*) parg); err = fe->ops.diseqc_recv_slave_reply(fe, (struct dvb_diseqc_slave_reply*) parg);
break; break;
case FE_ENABLE_HIGH_LNB_VOLTAGE: case FE_ENABLE_HIGH_LNB_VOLTAGE:
if (fe->ops->enable_high_lnb_voltage) if (fe->ops.enable_high_lnb_voltage)
err = fe->ops->enable_high_lnb_voltage(fe, (long) parg); err = fe->ops.enable_high_lnb_voltage(fe, (long) parg);
break; break;
case FE_SET_FRONTEND: { case FE_SET_FRONTEND: {
...@@ -908,7 +908,7 @@ static int dvb_frontend_ioctl(struct inode *inode, struct file *file, ...@@ -908,7 +908,7 @@ static int dvb_frontend_ioctl(struct inode *inode, struct file *file,
fepriv->parameters.inversion = INVERSION_AUTO; fepriv->parameters.inversion = INVERSION_AUTO;
fetunesettings.parameters.inversion = INVERSION_AUTO; fetunesettings.parameters.inversion = INVERSION_AUTO;
} }
if (fe->ops->info.type == FE_OFDM) { if (fe->ops.info.type == FE_OFDM) {
/* without hierachical coding code_rate_LP is irrelevant, /* without hierachical coding code_rate_LP is irrelevant,
* so we tolerate the otherwise invalid FEC_NONE setting */ * so we tolerate the otherwise invalid FEC_NONE setting */
if (fepriv->parameters.u.ofdm.hierarchy_information == HIERARCHY_NONE && if (fepriv->parameters.u.ofdm.hierarchy_information == HIERARCHY_NONE &&
...@@ -917,13 +917,13 @@ static int dvb_frontend_ioctl(struct inode *inode, struct file *file, ...@@ -917,13 +917,13 @@ static int dvb_frontend_ioctl(struct inode *inode, struct file *file,
} }
/* get frontend-specific tuning settings */ /* get frontend-specific tuning settings */
if (fe->ops->get_tune_settings && (fe->ops->get_tune_settings(fe, &fetunesettings) == 0)) { if (fe->ops.get_tune_settings && (fe->ops.get_tune_settings(fe, &fetunesettings) == 0)) {
fepriv->min_delay = (fetunesettings.min_delay_ms * HZ) / 1000; fepriv->min_delay = (fetunesettings.min_delay_ms * HZ) / 1000;
fepriv->max_drift = fetunesettings.max_drift; fepriv->max_drift = fetunesettings.max_drift;
fepriv->step_size = fetunesettings.step_size; fepriv->step_size = fetunesettings.step_size;
} else { } else {
/* default values */ /* default values */
switch(fe->ops->info.type) { switch(fe->ops.info.type) {
case FE_QPSK: case FE_QPSK:
fepriv->min_delay = HZ/20; fepriv->min_delay = HZ/20;
fepriv->step_size = fepriv->parameters.u.qpsk.symbol_rate / 16000; fepriv->step_size = fepriv->parameters.u.qpsk.symbol_rate / 16000;
...@@ -938,8 +938,8 @@ static int dvb_frontend_ioctl(struct inode *inode, struct file *file, ...@@ -938,8 +938,8 @@ static int dvb_frontend_ioctl(struct inode *inode, struct file *file,
case FE_OFDM: case FE_OFDM:
fepriv->min_delay = HZ/20; fepriv->min_delay = HZ/20;
fepriv->step_size = fe->ops->info.frequency_stepsize * 2; fepriv->step_size = fe->ops.info.frequency_stepsize * 2;
fepriv->max_drift = (fe->ops->info.frequency_stepsize * 2) + 1; fepriv->max_drift = (fe->ops.info.frequency_stepsize * 2) + 1;
break; break;
case FE_ATSC: case FE_ATSC:
printk("dvb-core: FE_ATSC not handled yet.\n"); printk("dvb-core: FE_ATSC not handled yet.\n");
...@@ -962,9 +962,9 @@ static int dvb_frontend_ioctl(struct inode *inode, struct file *file, ...@@ -962,9 +962,9 @@ static int dvb_frontend_ioctl(struct inode *inode, struct file *file,
break; break;
case FE_GET_FRONTEND: case FE_GET_FRONTEND:
if (fe->ops->get_frontend) { if (fe->ops.get_frontend) {
memcpy (parg, &fepriv->parameters, sizeof (struct dvb_frontend_parameters)); memcpy (parg, &fepriv->parameters, sizeof (struct dvb_frontend_parameters));
err = fe->ops->get_frontend(fe, (struct dvb_frontend_parameters*) parg); err = fe->ops.get_frontend(fe, (struct dvb_frontend_parameters*) parg);
} }
break; break;
...@@ -1077,7 +1077,7 @@ int dvb_register_frontend(struct dvb_adapter* dvb, ...@@ -1077,7 +1077,7 @@ int dvb_register_frontend(struct dvb_adapter* dvb,
printk ("DVB: registering frontend %i (%s)...\n", printk ("DVB: registering frontend %i (%s)...\n",
fe->dvb->num, fe->dvb->num,
fe->ops->info.name); fe->ops.info.name);
dvb_register_device (fe->dvb, &fepriv->dvbdev, &dvbdev_template, dvb_register_device (fe->dvb, &fepriv->dvbdev, &dvbdev_template,
fe, DVB_DEVICE_FRONTEND); fe, DVB_DEVICE_FRONTEND);
...@@ -1095,15 +1095,15 @@ int dvb_unregister_frontend(struct dvb_frontend* fe) ...@@ -1095,15 +1095,15 @@ int dvb_unregister_frontend(struct dvb_frontend* fe)
mutex_lock(&frontend_mutex); mutex_lock(&frontend_mutex);
dvb_unregister_device (fepriv->dvbdev); dvb_unregister_device (fepriv->dvbdev);
dvb_frontend_stop (fe); dvb_frontend_stop (fe);
if (fe->ops->tuner_ops.release) { if (fe->ops.tuner_ops.release) {
fe->ops->tuner_ops.release(fe); fe->ops.tuner_ops.release(fe);
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 0); fe->ops.i2c_gate_ctrl(fe, 0);
} }
if (fe->ops->release) if (fe->ops.release)
fe->ops->release(fe); fe->ops.release(fe);
else else
printk("dvb_frontend: Demodulator (%s) does not have a release callback!\n", fe->ops->info.name); printk("dvb_frontend: Demodulator (%s) does not have a release callback!\n", fe->ops.info.name);
/* fe is invalid now */ /* fe is invalid now */
kfree(fepriv); kfree(fepriv);
mutex_unlock(&frontend_mutex); mutex_unlock(&frontend_mutex);
......
...@@ -140,7 +140,7 @@ struct dvb_fe_events { ...@@ -140,7 +140,7 @@ struct dvb_fe_events {
}; };
struct dvb_frontend { struct dvb_frontend {
struct dvb_frontend_ops* ops; struct dvb_frontend_ops ops;
struct dvb_adapter *dvb; struct dvb_adapter *dvb;
void* demodulator_priv; void* demodulator_priv;
void* tuner_priv; void* tuner_priv;
......
...@@ -360,8 +360,8 @@ static int cxusb_fmd1216me_tuner_attach(struct dvb_usb_device *d) ...@@ -360,8 +360,8 @@ static int cxusb_fmd1216me_tuner_attach(struct dvb_usb_device *d)
memcpy(d->pll_init, bpll, 4); memcpy(d->pll_init, bpll, 4);
d->pll_desc = &dvb_pll_fmd1216me; d->pll_desc = &dvb_pll_fmd1216me;
d->fe->ops->tuner_ops.init = dvb_usb_tuner_init_i2c; d->fe->ops.tuner_ops.init = dvb_usb_tuner_init_i2c;
d->fe->ops->tuner_ops.set_params = dvb_usb_tuner_set_params_i2c; d->fe->ops.tuner_ops.set_params = dvb_usb_tuner_set_params_i2c;
return 0; return 0;
} }
...@@ -370,7 +370,7 @@ static int cxusb_dee1601_tuner_attach(struct dvb_usb_device *d) ...@@ -370,7 +370,7 @@ static int cxusb_dee1601_tuner_attach(struct dvb_usb_device *d)
{ {
d->pll_addr = 0x61; d->pll_addr = 0x61;
d->pll_desc = &dvb_pll_thomson_dtt7579; d->pll_desc = &dvb_pll_thomson_dtt7579;
d->fe->ops->tuner_ops.calc_regs = dvb_usb_tuner_calc_regs; d->fe->ops.tuner_ops.calc_regs = dvb_usb_tuner_calc_regs;
return 0; return 0;
} }
...@@ -378,7 +378,7 @@ static int cxusb_lgz201_tuner_attach(struct dvb_usb_device *d) ...@@ -378,7 +378,7 @@ static int cxusb_lgz201_tuner_attach(struct dvb_usb_device *d)
{ {
d->pll_addr = 0x61; d->pll_addr = 0x61;
d->pll_desc = &dvb_pll_lg_z201; d->pll_desc = &dvb_pll_lg_z201;
d->fe->ops->tuner_ops.calc_regs = dvb_usb_tuner_calc_regs; d->fe->ops.tuner_ops.calc_regs = dvb_usb_tuner_calc_regs;
return 0; return 0;
} }
...@@ -386,13 +386,13 @@ static int cxusb_dtt7579_tuner_attach(struct dvb_usb_device *d) ...@@ -386,13 +386,13 @@ static int cxusb_dtt7579_tuner_attach(struct dvb_usb_device *d)
{ {
d->pll_addr = 0x60; d->pll_addr = 0x60;
d->pll_desc = &dvb_pll_thomson_dtt7579; d->pll_desc = &dvb_pll_thomson_dtt7579;
d->fe->ops->tuner_ops.calc_regs = dvb_usb_tuner_calc_regs; d->fe->ops.tuner_ops.calc_regs = dvb_usb_tuner_calc_regs;
return 0; return 0;
} }
static int cxusb_lgdt3303_tuner_attach(struct dvb_usb_device *d) static int cxusb_lgdt3303_tuner_attach(struct dvb_usb_device *d)
{ {
d->fe->ops->tuner_ops.set_params = cxusb_lgh064f_tuner_set_params; d->fe->ops.tuner_ops.set_params = cxusb_lgh064f_tuner_set_params;
return 0; return 0;
} }
......
...@@ -20,11 +20,12 @@ static int dibusb_dib3000mb_frontend_attach(struct dvb_usb_device *d) ...@@ -20,11 +20,12 @@ static int dibusb_dib3000mb_frontend_attach(struct dvb_usb_device *d)
struct dibusb_state *st = d->priv; struct dibusb_state *st = d->priv;
demod_cfg.demod_address = 0x8; demod_cfg.demod_address = 0x8;
d->fe->ops->tuner_ops.init = dvb_usb_tuner_init_i2c;
d->fe->ops->tuner_ops.set_params = dvb_usb_tuner_set_params_i2c;
if ((d->fe = dib3000mb_attach(&demod_cfg,&d->i2c_adap,&st->ops)) == NULL) if ((d->fe = dib3000mb_attach(&demod_cfg,&d->i2c_adap,&st->ops)) == NULL) {
d->fe->ops.tuner_ops.init = dvb_usb_tuner_init_i2c;
d->fe->ops.tuner_ops.set_params = dvb_usb_tuner_set_params_i2c;
return -ENODEV; return -ENODEV;
}
d->tuner_pass_ctrl = st->ops.tuner_pass_ctrl; d->tuner_pass_ctrl = st->ops.tuner_pass_ctrl;
......
...@@ -129,11 +129,11 @@ static struct nxt6000_config digitv_nxt6000_config = { ...@@ -129,11 +129,11 @@ static struct nxt6000_config digitv_nxt6000_config = {
static int digitv_frontend_attach(struct dvb_usb_device *d) static int digitv_frontend_attach(struct dvb_usb_device *d)
{ {
if ((d->fe = mt352_attach(&digitv_mt352_config, &d->i2c_adap)) != NULL) { if ((d->fe = mt352_attach(&digitv_mt352_config, &d->i2c_adap)) != NULL) {
d->fe->ops->tuner_ops.calc_regs = dvb_usb_tuner_calc_regs; d->fe->ops.tuner_ops.calc_regs = dvb_usb_tuner_calc_regs;
return 0; return 0;
} }
if ((d->fe = nxt6000_attach(&digitv_nxt6000_config, &d->i2c_adap)) != NULL) { if ((d->fe = nxt6000_attach(&digitv_nxt6000_config, &d->i2c_adap)) != NULL) {
d->fe->ops->tuner_ops.set_params = digitv_nxt6000_tuner_set_params; d->fe->ops.tuner_ops.set_params = digitv_nxt6000_tuner_set_params;
return 0; return 0;
} }
return -EIO; return -EIO;
......
...@@ -18,7 +18,6 @@ struct dtt200u_fe_state { ...@@ -18,7 +18,6 @@ struct dtt200u_fe_state {
struct dvb_frontend_parameters fep; struct dvb_frontend_parameters fep;
struct dvb_frontend frontend; struct dvb_frontend frontend;
struct dvb_frontend_ops ops;
}; };
static int dtt200u_fe_read_status(struct dvb_frontend* fe, fe_status_t *stat) static int dtt200u_fe_read_status(struct dvb_frontend* fe, fe_status_t *stat)
...@@ -163,9 +162,8 @@ struct dvb_frontend* dtt200u_fe_attach(struct dvb_usb_device *d) ...@@ -163,9 +162,8 @@ struct dvb_frontend* dtt200u_fe_attach(struct dvb_usb_device *d)
deb_info("attaching frontend dtt200u\n"); deb_info("attaching frontend dtt200u\n");
state->d = d; state->d = d;
memcpy(&state->ops,&dtt200u_fe_ops,sizeof(struct dvb_frontend_ops));
state->frontend.ops = &state->ops; memcpy(&state->frontend.ops,&dtt200u_fe_ops,sizeof(struct dvb_frontend_ops));
state->frontend.demodulator_priv = state; state->frontend.demodulator_priv = state;
return &state->frontend; return &state->frontend;
......
...@@ -183,13 +183,13 @@ int dvb_usb_fe_init(struct dvb_usb_device* d) ...@@ -183,13 +183,13 @@ int dvb_usb_fe_init(struct dvb_usb_device* d)
/* re-assign sleep and wakeup functions */ /* re-assign sleep and wakeup functions */
if (d->fe != NULL) { if (d->fe != NULL) {
d->fe_init = d->fe->ops->init; d->fe->ops->init = dvb_usb_fe_wakeup; d->fe_init = d->fe->ops.init; d->fe->ops.init = dvb_usb_fe_wakeup;
d->fe_sleep = d->fe->ops->sleep; d->fe->ops->sleep = dvb_usb_fe_sleep; d->fe_sleep = d->fe->ops.sleep; d->fe->ops.sleep = dvb_usb_fe_sleep;
if (dvb_register_frontend(&d->dvb_adap, d->fe)) { if (dvb_register_frontend(&d->dvb_adap, d->fe)) {
err("Frontend registration failed."); err("Frontend registration failed.");
if (d->fe->ops->release) if (d->fe->ops.release)
d->fe->ops->release(d->fe); d->fe->ops.release(d->fe);
d->fe = NULL; d->fe = NULL;
return -ENODEV; return -ENODEV;
} }
......
...@@ -63,8 +63,8 @@ int dvb_usb_tuner_init_i2c(struct dvb_frontend *fe) ...@@ -63,8 +63,8 @@ int dvb_usb_tuner_init_i2c(struct dvb_frontend *fe)
deb_pll("pll-buf: %x %x %x %x\n",d->pll_init[0],d->pll_init[1], deb_pll("pll-buf: %x %x %x %x\n",d->pll_init[0],d->pll_init[1],
d->pll_init[2],d->pll_init[3]); d->pll_init[2],d->pll_init[3]);
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer (&d->i2c_adap, &msg, 1) != 1) { if (i2c_transfer (&d->i2c_adap, &msg, 1) != 1) {
err("tuner i2c write failed for pll_init."); err("tuner i2c write failed for pll_init.");
ret = -EREMOTEIO; ret = -EREMOTEIO;
...@@ -109,8 +109,8 @@ int dvb_usb_tuner_set_params_i2c(struct dvb_frontend *fe, struct dvb_frontend_pa ...@@ -109,8 +109,8 @@ int dvb_usb_tuner_set_params_i2c(struct dvb_frontend *fe, struct dvb_frontend_pa
if (d->tuner_pass_ctrl) if (d->tuner_pass_ctrl)
d->tuner_pass_ctrl(fe,1,d->pll_addr); d->tuner_pass_ctrl(fe,1,d->pll_addr);
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer (&d->i2c_adap, &msg, 1) != 1) { if (i2c_transfer (&d->i2c_adap, &msg, 1) != 1) {
err("tuner i2c write failed for pll_set."); err("tuner i2c write failed for pll_set.");
ret = -EREMOTEIO; ret = -EREMOTEIO;
......
...@@ -67,7 +67,7 @@ static int umt_tuner_attach (struct dvb_usb_device *d) ...@@ -67,7 +67,7 @@ static int umt_tuner_attach (struct dvb_usb_device *d)
{ {
d->pll_addr = 0x61; d->pll_addr = 0x61;
d->pll_desc = &dvb_pll_tua6034; d->pll_desc = &dvb_pll_tua6034;
d->fe->ops->tuner_ops.calc_regs = dvb_usb_tuner_calc_regs; d->fe->ops.tuner_ops.calc_regs = dvb_usb_tuner_calc_regs;
return 0; return 0;
} }
......
...@@ -287,7 +287,8 @@ struct dvb_frontend * vp702x_fe_attach(struct dvb_usb_device *d) ...@@ -287,7 +287,8 @@ struct dvb_frontend * vp702x_fe_attach(struct dvb_usb_device *d)
goto error; goto error;
s->d = d; s->d = d;
s->fe.ops = &vp702x_fe_ops;
memcpy(&s->fe.ops,&vp702x_fe_ops,sizeof(struct dvb_frontend_ops));
s->fe.demodulator_priv = s; s->fe.demodulator_priv = s;
s->lnb_buf[1] = SET_LNB_POWER; s->lnb_buf[1] = SET_LNB_POWER;
......
...@@ -23,8 +23,6 @@ ...@@ -23,8 +23,6 @@
struct vp7045_fe_state { struct vp7045_fe_state {
struct dvb_frontend fe; struct dvb_frontend fe;
struct dvb_frontend_ops ops;
struct dvb_usb_device *d; struct dvb_usb_device *d;
}; };
...@@ -151,8 +149,7 @@ struct dvb_frontend * vp7045_fe_attach(struct dvb_usb_device *d) ...@@ -151,8 +149,7 @@ struct dvb_frontend * vp7045_fe_attach(struct dvb_usb_device *d)
goto error; goto error;
s->d = d; s->d = d;
memcpy(&s->ops, &vp7045_fe_ops, sizeof(struct dvb_frontend_ops)); memcpy(&s->fe.ops, &vp7045_fe_ops, sizeof(struct dvb_frontend_ops));
s->fe.ops = &s->ops;
s->fe.demodulator_priv = s; s->fe.demodulator_priv = s;
return &s->fe; return &s->fe;
......
...@@ -48,7 +48,6 @@ ...@@ -48,7 +48,6 @@
struct bcm3510_state { struct bcm3510_state {
struct i2c_adapter* i2c; struct i2c_adapter* i2c;
struct dvb_frontend_ops ops;
const struct bcm3510_config* config; const struct bcm3510_config* config;
struct dvb_frontend frontend; struct dvb_frontend frontend;
...@@ -791,10 +790,9 @@ struct dvb_frontend* bcm3510_attach(const struct bcm3510_config *config, ...@@ -791,10 +790,9 @@ struct dvb_frontend* bcm3510_attach(const struct bcm3510_config *config,
state->config = config; state->config = config;
state->i2c = i2c; state->i2c = i2c;
memcpy(&state->ops, &bcm3510_ops, sizeof(struct dvb_frontend_ops));
/* create dvb_frontend */ /* create dvb_frontend */
state->frontend.ops = &state->ops; memcpy(&state->frontend.ops, &bcm3510_ops, sizeof(struct dvb_frontend_ops));
state->frontend.demodulator_priv = state; state->frontend.demodulator_priv = state;
mutex_init(&state->hab_mutex); mutex_init(&state->hab_mutex);
......
...@@ -106,8 +106,8 @@ static int alps_bsbe1_tuner_set_params(struct dvb_frontend* fe, struct dvb_front ...@@ -106,8 +106,8 @@ static int alps_bsbe1_tuner_set_params(struct dvb_frontend* fe, struct dvb_front
data[2] = 0x80 | ((div & 0x18000) >> 10) | 4; data[2] = 0x80 | ((div & 0x18000) >> 10) | 4;
data[3] = (params->frequency > 1530000) ? 0xE0 : 0xE4; data[3] = (params->frequency > 1530000) ? 0xE0 : 0xE4;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
ret = i2c_transfer(i2c, &msg, 1); ret = i2c_transfer(i2c, &msg, 1);
return (ret != 1) ? -EIO : 0; return (ret != 1) ? -EIO : 0;
} }
......
...@@ -120,8 +120,8 @@ static int alps_bsru6_tuner_set_params(struct dvb_frontend *fe, struct dvb_front ...@@ -120,8 +120,8 @@ static int alps_bsru6_tuner_set_params(struct dvb_frontend *fe, struct dvb_front
if (params->frequency > 1530000) if (params->frequency > 1530000)
buf[3] = 0xc0; buf[3] = 0xc0;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(i2c, &msg, 1) != 1) if (i2c_transfer(i2c, &msg, 1) != 1)
return -EIO; return -EIO;
return 0; return 0;
......
...@@ -34,8 +34,6 @@ struct cx22700_state { ...@@ -34,8 +34,6 @@ struct cx22700_state {
struct i2c_adapter* i2c; struct i2c_adapter* i2c;
struct dvb_frontend_ops ops;
const struct cx22700_config* config; const struct cx22700_config* config;
struct dvb_frontend frontend; struct dvb_frontend frontend;
...@@ -327,9 +325,9 @@ static int cx22700_set_frontend(struct dvb_frontend* fe, struct dvb_frontend_par ...@@ -327,9 +325,9 @@ static int cx22700_set_frontend(struct dvb_frontend* fe, struct dvb_frontend_par
cx22700_writereg (state, 0x00, 0x02); /* XXX CHECKME: soft reset*/ cx22700_writereg (state, 0x00, 0x02); /* XXX CHECKME: soft reset*/
cx22700_writereg (state, 0x00, 0x00); cx22700_writereg (state, 0x00, 0x00);
if (fe->ops->tuner_ops.set_params) { if (fe->ops.tuner_ops.set_params) {
fe->ops->tuner_ops.set_params(fe, p); fe->ops.tuner_ops.set_params(fe, p);
if (fe->ops->i2c_gate_ctrl) fe->ops->i2c_gate_ctrl(fe, 0); if (fe->ops.i2c_gate_ctrl) fe->ops.i2c_gate_ctrl(fe, 0);
} }
cx22700_set_inversion (state, p->inversion); cx22700_set_inversion (state, p->inversion);
...@@ -388,13 +386,12 @@ struct dvb_frontend* cx22700_attach(const struct cx22700_config* config, ...@@ -388,13 +386,12 @@ struct dvb_frontend* cx22700_attach(const struct cx22700_config* config,
/* setup the state */ /* setup the state */
state->config = config; state->config = config;
state->i2c = i2c; state->i2c = i2c;
memcpy(&state->ops, &cx22700_ops, sizeof(struct dvb_frontend_ops));
/* check if the demod is there */ /* check if the demod is there */
if (cx22700_readreg(state, 0x07) < 0) goto error; if (cx22700_readreg(state, 0x07) < 0) goto error;
/* create dvb_frontend */ /* create dvb_frontend */
state->frontend.ops = &state->ops; memcpy(&state->frontend.ops, &cx22700_ops, sizeof(struct dvb_frontend_ops));
state->frontend.demodulator_priv = state; state->frontend.demodulator_priv = state;
return &state->frontend; return &state->frontend;
......
...@@ -40,8 +40,6 @@ struct cx22702_state { ...@@ -40,8 +40,6 @@ struct cx22702_state {
struct i2c_adapter* i2c; struct i2c_adapter* i2c;
struct dvb_frontend_ops ops;
/* configuration settings */ /* configuration settings */
const struct cx22702_config* config; const struct cx22702_config* config;
...@@ -211,9 +209,9 @@ static int cx22702_set_tps (struct dvb_frontend* fe, struct dvb_frontend_paramet ...@@ -211,9 +209,9 @@ static int cx22702_set_tps (struct dvb_frontend* fe, struct dvb_frontend_paramet
u8 val; u8 val;
struct cx22702_state* state = fe->demodulator_priv; struct cx22702_state* state = fe->demodulator_priv;
if (fe->ops->tuner_ops.set_params) { if (fe->ops.tuner_ops.set_params) {
fe->ops->tuner_ops.set_params(fe, p); fe->ops.tuner_ops.set_params(fe, p);
if (fe->ops->i2c_gate_ctrl) fe->ops->i2c_gate_ctrl(fe, 0); if (fe->ops.i2c_gate_ctrl) fe->ops.i2c_gate_ctrl(fe, 0);
} }
/* set inversion */ /* set inversion */
...@@ -479,7 +477,6 @@ struct dvb_frontend* cx22702_attach(const struct cx22702_config* config, ...@@ -479,7 +477,6 @@ struct dvb_frontend* cx22702_attach(const struct cx22702_config* config,
/* setup the state */ /* setup the state */
state->config = config; state->config = config;
state->i2c = i2c; state->i2c = i2c;
memcpy(&state->ops, &cx22702_ops, sizeof(struct dvb_frontend_ops));
state->prevUCBlocks = 0; state->prevUCBlocks = 0;
/* check if the demod is there */ /* check if the demod is there */
...@@ -487,7 +484,7 @@ struct dvb_frontend* cx22702_attach(const struct cx22702_config* config, ...@@ -487,7 +484,7 @@ struct dvb_frontend* cx22702_attach(const struct cx22702_config* config,
goto error; goto error;
/* create dvb_frontend */ /* create dvb_frontend */
state->frontend.ops = &state->ops; memcpy(&state->frontend.ops, &cx22702_ops, sizeof(struct dvb_frontend_ops));
state->frontend.demodulator_priv = state; state->frontend.demodulator_priv = state;
return &state->frontend; return &state->frontend;
......
...@@ -36,8 +36,6 @@ struct cx24110_state { ...@@ -36,8 +36,6 @@ struct cx24110_state {
struct i2c_adapter* i2c; struct i2c_adapter* i2c;
struct dvb_frontend_ops ops;
const struct cx24110_config* config; const struct cx24110_config* config;
struct dvb_frontend frontend; struct dvb_frontend frontend;
...@@ -538,9 +536,9 @@ static int cx24110_set_frontend(struct dvb_frontend* fe, struct dvb_frontend_par ...@@ -538,9 +536,9 @@ static int cx24110_set_frontend(struct dvb_frontend* fe, struct dvb_frontend_par
struct cx24110_state *state = fe->demodulator_priv; struct cx24110_state *state = fe->demodulator_priv;
if (fe->ops->tuner_ops.set_params) { if (fe->ops.tuner_ops.set_params) {
fe->ops->tuner_ops.set_params(fe, p); fe->ops.tuner_ops.set_params(fe, p);
if (fe->ops->i2c_gate_ctrl) fe->ops->i2c_gate_ctrl(fe, 0); if (fe->ops.i2c_gate_ctrl) fe->ops.i2c_gate_ctrl(fe, 0);
} }
cx24110_set_inversion (state, p->inversion); cx24110_set_inversion (state, p->inversion);
...@@ -606,7 +604,6 @@ struct dvb_frontend* cx24110_attach(const struct cx24110_config* config, ...@@ -606,7 +604,6 @@ struct dvb_frontend* cx24110_attach(const struct cx24110_config* config,
/* setup the state */ /* setup the state */
state->config = config; state->config = config;
state->i2c = i2c; state->i2c = i2c;
memcpy(&state->ops, &cx24110_ops, sizeof(struct dvb_frontend_ops));
state->lastber = 0; state->lastber = 0;
state->lastbler = 0; state->lastbler = 0;
state->lastesn0 = 0; state->lastesn0 = 0;
...@@ -616,7 +613,7 @@ struct dvb_frontend* cx24110_attach(const struct cx24110_config* config, ...@@ -616,7 +613,7 @@ struct dvb_frontend* cx24110_attach(const struct cx24110_config* config,
if ((ret != 0x5a) && (ret != 0x69)) goto error; if ((ret != 0x5a) && (ret != 0x69)) goto error;
/* create dvb_frontend */ /* create dvb_frontend */
state->frontend.ops = &state->ops; memcpy(&state->frontend.ops, &cx24110_ops, sizeof(struct dvb_frontend_ops));
state->frontend.demodulator_priv = state; state->frontend.demodulator_priv = state;
return &state->frontend; return &state->frontend;
......
...@@ -41,7 +41,6 @@ static int debug; ...@@ -41,7 +41,6 @@ static int debug;
struct cx24123_state struct cx24123_state
{ {
struct i2c_adapter* i2c; struct i2c_adapter* i2c;
struct dvb_frontend_ops ops;
const struct cx24123_config* config; const struct cx24123_config* config;
struct dvb_frontend frontend; struct dvb_frontend frontend;
...@@ -429,8 +428,8 @@ static int cx24123_set_symbolrate(struct cx24123_state* state, u32 srate) ...@@ -429,8 +428,8 @@ static int cx24123_set_symbolrate(struct cx24123_state* state, u32 srate)
u8 pll_mult; u8 pll_mult;
/* check if symbol rate is within limits */ /* check if symbol rate is within limits */
if ((srate > state->ops.info.symbol_rate_max) || if ((srate > state->frontend.ops.info.symbol_rate_max) ||
(srate < state->ops.info.symbol_rate_min)) (srate < state->frontend.ops.info.symbol_rate_min))
return -EOPNOTSUPP;; return -EOPNOTSUPP;;
/* choose the sampling rate high enough for the required operation, /* choose the sampling rate high enough for the required operation,
...@@ -950,7 +949,6 @@ struct dvb_frontend* cx24123_attach(const struct cx24123_config* config, ...@@ -950,7 +949,6 @@ struct dvb_frontend* cx24123_attach(const struct cx24123_config* config,
/* setup the state */ /* setup the state */
state->config = config; state->config = config;
state->i2c = i2c; state->i2c = i2c;
memcpy(&state->ops, &cx24123_ops, sizeof(struct dvb_frontend_ops));
state->lastber = 0; state->lastber = 0;
state->snr = 0; state->snr = 0;
state->VCAarg = 0; state->VCAarg = 0;
...@@ -968,7 +966,7 @@ struct dvb_frontend* cx24123_attach(const struct cx24123_config* config, ...@@ -968,7 +966,7 @@ struct dvb_frontend* cx24123_attach(const struct cx24123_config* config,
} }
/* create dvb_frontend */ /* create dvb_frontend */
state->frontend.ops = &state->ops; memcpy(&state->frontend.ops, &cx24123_ops, sizeof(struct dvb_frontend_ops));
state->frontend.demodulator_priv = state; state->frontend.demodulator_priv = state;
return &state->frontend; return &state->frontend;
......
...@@ -38,8 +38,6 @@ ...@@ -38,8 +38,6 @@
struct dib3000_state { struct dib3000_state {
struct i2c_adapter* i2c; struct i2c_adapter* i2c;
struct dvb_frontend_ops ops;
/* configuration settings */ /* configuration settings */
struct dib3000_config config; struct dib3000_config config;
......
...@@ -60,9 +60,9 @@ static int dib3000mb_set_frontend(struct dvb_frontend* fe, ...@@ -60,9 +60,9 @@ static int dib3000mb_set_frontend(struct dvb_frontend* fe,
fe_code_rate_t fe_cr = FEC_NONE; fe_code_rate_t fe_cr = FEC_NONE;
int search_state, seq; int search_state, seq;
if (tuner && fe->ops->tuner_ops.set_params) { if (tuner && fe->ops.tuner_ops.set_params) {
fe->ops->tuner_ops.set_params(fe, fep); fe->ops.tuner_ops.set_params(fe, fep);
if (fe->ops->i2c_gate_ctrl) fe->ops->i2c_gate_ctrl(fe, 0); if (fe->ops.i2c_gate_ctrl) fe->ops.i2c_gate_ctrl(fe, 0);
deb_setf("bandwidth: "); deb_setf("bandwidth: ");
switch (ofdm->bandwidth) { switch (ofdm->bandwidth) {
...@@ -705,7 +705,6 @@ struct dvb_frontend* dib3000mb_attach(const struct dib3000_config* config, ...@@ -705,7 +705,6 @@ struct dvb_frontend* dib3000mb_attach(const struct dib3000_config* config,
/* setup the state */ /* setup the state */
state->i2c = i2c; state->i2c = i2c;
memcpy(&state->config,config,sizeof(struct dib3000_config)); memcpy(&state->config,config,sizeof(struct dib3000_config));
memcpy(&state->ops, &dib3000mb_ops, sizeof(struct dvb_frontend_ops));
/* check for the correct demod */ /* check for the correct demod */
if (rd(DIB3000_REG_MANUFACTOR_ID) != DIB3000_I2C_ID_DIBCOM) if (rd(DIB3000_REG_MANUFACTOR_ID) != DIB3000_I2C_ID_DIBCOM)
...@@ -715,7 +714,7 @@ struct dvb_frontend* dib3000mb_attach(const struct dib3000_config* config, ...@@ -715,7 +714,7 @@ struct dvb_frontend* dib3000mb_attach(const struct dib3000_config* config,
goto error; goto error;
/* create dvb_frontend */ /* create dvb_frontend */
state->frontend.ops = &state->ops; memcpy(&state->frontend.ops, &dib3000mb_ops, sizeof(struct dvb_frontend_ops));
state->frontend.demodulator_priv = state; state->frontend.demodulator_priv = state;
/* set the xfer operations */ /* set the xfer operations */
......
...@@ -462,9 +462,9 @@ static int dib3000mc_set_frontend(struct dvb_frontend* fe, ...@@ -462,9 +462,9 @@ static int dib3000mc_set_frontend(struct dvb_frontend* fe,
int search_state,auto_val; int search_state,auto_val;
u16 val; u16 val;
if (tuner && fe->ops->tuner_ops.set_params) { /* initial call from dvb */ if (tuner && fe->ops.tuner_ops.set_params) { /* initial call from dvb */
fe->ops->tuner_ops.set_params(fe, fep); fe->ops.tuner_ops.set_params(fe, fep);
if (fe->ops->i2c_gate_ctrl) fe->ops->i2c_gate_ctrl(fe, 0); if (fe->ops.i2c_gate_ctrl) fe->ops.i2c_gate_ctrl(fe, 0);
state->last_tuned_freq = fep->frequency; state->last_tuned_freq = fep->frequency;
// if (!scanboost) { // if (!scanboost) {
...@@ -837,7 +837,6 @@ struct dvb_frontend* dib3000mc_attach(const struct dib3000_config* config, ...@@ -837,7 +837,6 @@ struct dvb_frontend* dib3000mc_attach(const struct dib3000_config* config,
/* setup the state */ /* setup the state */
state->i2c = i2c; state->i2c = i2c;
memcpy(&state->config,config,sizeof(struct dib3000_config)); memcpy(&state->config,config,sizeof(struct dib3000_config));
memcpy(&state->ops, &dib3000mc_ops, sizeof(struct dvb_frontend_ops));
/* check for the correct demod */ /* check for the correct demod */
if (rd(DIB3000_REG_MANUFACTOR_ID) != DIB3000_I2C_ID_DIBCOM) if (rd(DIB3000_REG_MANUFACTOR_ID) != DIB3000_I2C_ID_DIBCOM)
...@@ -857,7 +856,7 @@ struct dvb_frontend* dib3000mc_attach(const struct dib3000_config* config, ...@@ -857,7 +856,7 @@ struct dvb_frontend* dib3000mc_attach(const struct dib3000_config* config,
} }
/* create dvb_frontend */ /* create dvb_frontend */
state->frontend.ops = &state->ops; memcpy(&state->frontend.ops, &dib3000mc_ops, sizeof(struct dvb_frontend_ops));
state->frontend.demodulator_priv = state; state->frontend.demodulator_priv = state;
/* set the xfer operations */ /* set the xfer operations */
...@@ -874,6 +873,7 @@ struct dvb_frontend* dib3000mc_attach(const struct dib3000_config* config, ...@@ -874,6 +873,7 @@ struct dvb_frontend* dib3000mc_attach(const struct dib3000_config* config,
kfree(state); kfree(state);
return NULL; return NULL;
} }
EXPORT_SYMBOL(dib3000mc_attach);
static struct dvb_frontend_ops dib3000mc_ops = { static struct dvb_frontend_ops dib3000mc_ops = {
...@@ -912,5 +912,3 @@ static struct dvb_frontend_ops dib3000mc_ops = { ...@@ -912,5 +912,3 @@ static struct dvb_frontend_ops dib3000mc_ops = {
MODULE_AUTHOR(DRIVER_AUTHOR); MODULE_AUTHOR(DRIVER_AUTHOR);
MODULE_DESCRIPTION(DRIVER_DESC); MODULE_DESCRIPTION(DRIVER_DESC);
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
EXPORT_SYMBOL(dib3000mc_attach);
...@@ -505,8 +505,8 @@ static int dvb_pll_sleep(struct dvb_frontend *fe) ...@@ -505,8 +505,8 @@ static int dvb_pll_sleep(struct dvb_frontend *fe)
buf[2] = priv->pll_desc->entries[i].config; buf[2] = priv->pll_desc->entries[i].config;
buf[3] = priv->pll_desc->entries[i].cb; buf[3] = priv->pll_desc->entries[i].cb;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if ((result = i2c_transfer(priv->i2c, &msg, 1)) != 1) { if ((result = i2c_transfer(priv->i2c, &msg, 1)) != 1) {
return result; return result;
} }
...@@ -529,15 +529,15 @@ static int dvb_pll_set_params(struct dvb_frontend *fe, struct dvb_frontend_param ...@@ -529,15 +529,15 @@ static int dvb_pll_set_params(struct dvb_frontend *fe, struct dvb_frontend_param
return -EINVAL; return -EINVAL;
// DVBT bandwidth only just now // DVBT bandwidth only just now
if (fe->ops->info.type == FE_OFDM) { if (fe->ops.info.type == FE_OFDM) {
bandwidth = params->u.ofdm.bandwidth; bandwidth = params->u.ofdm.bandwidth;
} }
if ((result = dvb_pll_configure(priv->pll_desc, buf, params->frequency, bandwidth)) != 0) if ((result = dvb_pll_configure(priv->pll_desc, buf, params->frequency, bandwidth)) != 0)
return result; return result;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if ((result = i2c_transfer(priv->i2c, &msg, 1)) != 1) { if ((result = i2c_transfer(priv->i2c, &msg, 1)) != 1) {
return result; return result;
} }
...@@ -567,7 +567,7 @@ static int dvb_pll_calc_regs(struct dvb_frontend *fe, struct dvb_frontend_parame ...@@ -567,7 +567,7 @@ static int dvb_pll_calc_regs(struct dvb_frontend *fe, struct dvb_frontend_parame
return -EINVAL; return -EINVAL;
// DVBT bandwidth only just now // DVBT bandwidth only just now
if (fe->ops->info.type == FE_OFDM) { if (fe->ops.info.type == FE_OFDM) {
bandwidth = params->u.ofdm.bandwidth; bandwidth = params->u.ofdm.bandwidth;
} }
...@@ -623,10 +623,10 @@ int dvb_pll_attach(struct dvb_frontend *fe, int pll_addr, struct i2c_adapter *i2 ...@@ -623,10 +623,10 @@ int dvb_pll_attach(struct dvb_frontend *fe, int pll_addr, struct i2c_adapter *i2
priv->i2c = i2c; priv->i2c = i2c;
priv->pll_desc = desc; priv->pll_desc = desc;
memcpy(&fe->ops->tuner_ops, &dvb_pll_tuner_ops, sizeof(struct dvb_tuner_ops)); memcpy(&fe->ops.tuner_ops, &dvb_pll_tuner_ops, sizeof(struct dvb_tuner_ops));
strncpy(fe->ops->tuner_ops.info.name, desc->name, 128); strncpy(fe->ops.tuner_ops.info.name, desc->name, 128);
fe->ops->tuner_ops.info.frequency_min = desc->min; fe->ops.tuner_ops.info.frequency_min = desc->min;
fe->ops->tuner_ops.info.frequency_min = desc->max; fe->ops.tuner_ops.info.frequency_min = desc->max;
fe->tuner_priv = priv; fe->tuner_priv = priv;
return 0; return 0;
......
...@@ -30,7 +30,6 @@ ...@@ -30,7 +30,6 @@
struct dvb_dummy_fe_state { struct dvb_dummy_fe_state {
struct dvb_frontend_ops ops;
struct dvb_frontend frontend; struct dvb_frontend frontend;
}; };
...@@ -121,11 +120,8 @@ struct dvb_frontend* dvb_dummy_fe_ofdm_attach(void) ...@@ -121,11 +120,8 @@ struct dvb_frontend* dvb_dummy_fe_ofdm_attach(void)
state = kmalloc(sizeof(struct dvb_dummy_fe_state), GFP_KERNEL); state = kmalloc(sizeof(struct dvb_dummy_fe_state), GFP_KERNEL);
if (state == NULL) goto error; if (state == NULL) goto error;
/* setup the state */
memcpy(&state->ops, &dvb_dummy_fe_ofdm_ops, sizeof(struct dvb_frontend_ops));
/* create dvb_frontend */ /* create dvb_frontend */
state->frontend.ops = &state->ops; memcpy(&state->frontend.ops, &dvb_dummy_fe_ofdm_ops, sizeof(struct dvb_frontend_ops));
state->frontend.demodulator_priv = state; state->frontend.demodulator_priv = state;
return &state->frontend; return &state->frontend;
...@@ -144,11 +140,8 @@ struct dvb_frontend* dvb_dummy_fe_qpsk_attach() ...@@ -144,11 +140,8 @@ struct dvb_frontend* dvb_dummy_fe_qpsk_attach()
state = kmalloc(sizeof(struct dvb_dummy_fe_state), GFP_KERNEL); state = kmalloc(sizeof(struct dvb_dummy_fe_state), GFP_KERNEL);
if (state == NULL) goto error; if (state == NULL) goto error;
/* setup the state */
memcpy(&state->ops, &dvb_dummy_fe_qpsk_ops, sizeof(struct dvb_frontend_ops));
/* create dvb_frontend */ /* create dvb_frontend */
state->frontend.ops = &state->ops; memcpy(&state->frontend.ops, &dvb_dummy_fe_qpsk_ops, sizeof(struct dvb_frontend_ops));
state->frontend.demodulator_priv = state; state->frontend.demodulator_priv = state;
return &state->frontend; return &state->frontend;
...@@ -167,11 +160,8 @@ struct dvb_frontend* dvb_dummy_fe_qam_attach() ...@@ -167,11 +160,8 @@ struct dvb_frontend* dvb_dummy_fe_qam_attach()
state = kmalloc(sizeof(struct dvb_dummy_fe_state), GFP_KERNEL); state = kmalloc(sizeof(struct dvb_dummy_fe_state), GFP_KERNEL);
if (state == NULL) goto error; if (state == NULL) goto error;
/* setup the state */
memcpy(&state->ops, &dvb_dummy_fe_qam_ops, sizeof(struct dvb_frontend_ops));
/* create dvb_frontend */ /* create dvb_frontend */
state->frontend.ops = &state->ops; memcpy(&state->frontend.ops, &dvb_dummy_fe_qam_ops, sizeof(struct dvb_frontend_ops));
state->frontend.demodulator_priv = state; state->frontend.demodulator_priv = state;
return &state->frontend; return &state->frontend;
......
...@@ -99,11 +99,11 @@ static void isl6421_release(struct dvb_frontend *fe) ...@@ -99,11 +99,11 @@ static void isl6421_release(struct dvb_frontend *fe)
isl6421_set_voltage(fe, SEC_VOLTAGE_OFF); isl6421_set_voltage(fe, SEC_VOLTAGE_OFF);
/* free data & call next release routine */ /* free data & call next release routine */
fe->ops->release = isl6421->release_chain; fe->ops.release = isl6421->release_chain;
kfree(fe->misc_priv); kfree(fe->misc_priv);
fe->misc_priv = NULL; fe->misc_priv = NULL;
if (fe->ops->release) if (fe->ops.release)
fe->ops->release(fe); fe->ops.release(fe);
} }
int isl6421_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, u8 i2c_addr, int isl6421_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, u8 i2c_addr,
...@@ -133,12 +133,12 @@ int isl6421_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, u8 i2c_addr ...@@ -133,12 +133,12 @@ int isl6421_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, u8 i2c_addr
} }
/* install release callback */ /* install release callback */
isl6421->release_chain = fe->ops->release; isl6421->release_chain = fe->ops.release;
fe->ops->release = isl6421_release; fe->ops.release = isl6421_release;
/* override frontend ops */ /* override frontend ops */
fe->ops->set_voltage = isl6421_set_voltage; fe->ops.set_voltage = isl6421_set_voltage;
fe->ops->enable_high_lnb_voltage = isl6421_enable_high_lnb_voltage; fe->ops.enable_high_lnb_voltage = isl6421_enable_high_lnb_voltage;
return 0; return 0;
} }
......
...@@ -32,7 +32,6 @@ ...@@ -32,7 +32,6 @@
struct l64781_state { struct l64781_state {
struct i2c_adapter* i2c; struct i2c_adapter* i2c;
struct dvb_frontend_ops ops;
const struct l64781_config* config; const struct l64781_config* config;
struct dvb_frontend frontend; struct dvb_frontend frontend;
...@@ -141,9 +140,9 @@ static int apply_frontend_param (struct dvb_frontend* fe, struct dvb_frontend_pa ...@@ -141,9 +140,9 @@ static int apply_frontend_param (struct dvb_frontend* fe, struct dvb_frontend_pa
u8 val0x06; u8 val0x06;
int bw = p->bandwidth - BANDWIDTH_8_MHZ; int bw = p->bandwidth - BANDWIDTH_8_MHZ;
if (fe->ops->tuner_ops.set_params) { if (fe->ops.tuner_ops.set_params) {
fe->ops->tuner_ops.set_params(fe, param); fe->ops.tuner_ops.set_params(fe, param);
if (fe->ops->i2c_gate_ctrl) fe->ops->i2c_gate_ctrl(fe, 0); if (fe->ops.i2c_gate_ctrl) fe->ops.i2c_gate_ctrl(fe, 0);
} }
if (param->inversion != INVERSION_ON && if (param->inversion != INVERSION_ON &&
...@@ -509,7 +508,6 @@ struct dvb_frontend* l64781_attach(const struct l64781_config* config, ...@@ -509,7 +508,6 @@ struct dvb_frontend* l64781_attach(const struct l64781_config* config,
/* setup the state */ /* setup the state */
state->config = config; state->config = config;
state->i2c = i2c; state->i2c = i2c;
memcpy(&state->ops, &l64781_ops, sizeof(struct dvb_frontend_ops));
state->first = 1; state->first = 1;
/** /**
...@@ -555,7 +553,7 @@ struct dvb_frontend* l64781_attach(const struct l64781_config* config, ...@@ -555,7 +553,7 @@ struct dvb_frontend* l64781_attach(const struct l64781_config* config,
} }
/* create dvb_frontend */ /* create dvb_frontend */
state->frontend.ops = &state->ops; memcpy(&state->frontend.ops, &l64781_ops, sizeof(struct dvb_frontend_ops));
state->frontend.demodulator_priv = state; state->frontend.demodulator_priv = state;
return &state->frontend; return &state->frontend;
......
...@@ -29,8 +29,8 @@ static int lg_h06xf_pll_set(struct dvb_frontend* fe, struct i2c_adapter* i2c_ada ...@@ -29,8 +29,8 @@ static int lg_h06xf_pll_set(struct dvb_frontend* fe, struct i2c_adapter* i2c_ada
int err; int err;
dvb_pll_configure(&dvb_pll_lg_tdvs_h06xf, buf, params->frequency, 0); dvb_pll_configure(&dvb_pll_lg_tdvs_h06xf, buf, params->frequency, 0);
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if ((err = i2c_transfer(i2c_adap, &msg, 1)) != 1) { if ((err = i2c_transfer(i2c_adap, &msg, 1)) != 1) {
printk(KERN_WARNING "lg_h06xf: %s error " printk(KERN_WARNING "lg_h06xf: %s error "
"(addr %02x <- %02x, err = %i)\n", "(addr %02x <- %02x, err = %i)\n",
...@@ -47,8 +47,8 @@ static int lg_h06xf_pll_set(struct dvb_frontend* fe, struct i2c_adapter* i2c_ada ...@@ -47,8 +47,8 @@ static int lg_h06xf_pll_set(struct dvb_frontend* fe, struct i2c_adapter* i2c_ada
buf[0] |= 0x18; buf[0] |= 0x18;
buf[1] = 0x50; buf[1] = 0x50;
msg.len = 2; msg.len = 2;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if ((err = i2c_transfer(i2c_adap, &msg, 1)) != 1) { if ((err = i2c_transfer(i2c_adap, &msg, 1)) != 1) {
printk(KERN_WARNING "lg_h06xf: %s error " printk(KERN_WARNING "lg_h06xf: %s error "
"(addr %02x <- %02x, err = %i)\n", "(addr %02x <- %02x, err = %i)\n",
......
...@@ -60,7 +60,6 @@ if (debug) printk(KERN_DEBUG "lgdt330x: " args); \ ...@@ -60,7 +60,6 @@ if (debug) printk(KERN_DEBUG "lgdt330x: " args); \
struct lgdt330x_state struct lgdt330x_state
{ {
struct i2c_adapter* i2c; struct i2c_adapter* i2c;
struct dvb_frontend_ops ops;
/* Configuration settings */ /* Configuration settings */
const struct lgdt330x_config* config; const struct lgdt330x_config* config;
...@@ -400,9 +399,9 @@ static int lgdt330x_set_parameters(struct dvb_frontend* fe, ...@@ -400,9 +399,9 @@ static int lgdt330x_set_parameters(struct dvb_frontend* fe,
} }
/* Tune to the specified frequency */ /* Tune to the specified frequency */
if (fe->ops->tuner_ops.set_params) { if (fe->ops.tuner_ops.set_params) {
fe->ops->tuner_ops.set_params(fe, param); fe->ops.tuner_ops.set_params(fe, param);
if (fe->ops->i2c_gate_ctrl) fe->ops->i2c_gate_ctrl(fe, 0); if (fe->ops.i2c_gate_ctrl) fe->ops.i2c_gate_ctrl(fe, 0);
} }
/* Keep track of the new frequency */ /* Keep track of the new frequency */
...@@ -724,16 +723,19 @@ struct dvb_frontend* lgdt330x_attach(const struct lgdt330x_config* config, ...@@ -724,16 +723,19 @@ struct dvb_frontend* lgdt330x_attach(const struct lgdt330x_config* config,
/* Setup the state */ /* Setup the state */
state->config = config; state->config = config;
state->i2c = i2c; state->i2c = i2c;
/* Create dvb_frontend */
switch (config->demod_chip) { switch (config->demod_chip) {
case LGDT3302: case LGDT3302:
memcpy(&state->ops, &lgdt3302_ops, sizeof(struct dvb_frontend_ops)); memcpy(&state->frontend.ops, &lgdt3302_ops, sizeof(struct dvb_frontend_ops));
break; break;
case LGDT3303: case LGDT3303:
memcpy(&state->ops, &lgdt3303_ops, sizeof(struct dvb_frontend_ops)); memcpy(&state->frontend.ops, &lgdt3303_ops, sizeof(struct dvb_frontend_ops));
break; break;
default: default:
goto error; goto error;
} }
state->frontend.demodulator_priv = state;
/* Verify communication with demod chip */ /* Verify communication with demod chip */
if (i2c_read_demod_bytes(state, 2, buf, 1)) if (i2c_read_demod_bytes(state, 2, buf, 1))
...@@ -742,9 +744,6 @@ struct dvb_frontend* lgdt330x_attach(const struct lgdt330x_config* config, ...@@ -742,9 +744,6 @@ struct dvb_frontend* lgdt330x_attach(const struct lgdt330x_config* config,
state->current_frequency = -1; state->current_frequency = -1;
state->current_modulation = -1; state->current_modulation = -1;
/* Create dvb_frontend */
state->frontend.ops = &state->ops;
state->frontend.demodulator_priv = state;
return &state->frontend; return &state->frontend;
error: error:
......
...@@ -97,11 +97,11 @@ static void lnbp21_release(struct dvb_frontend *fe) ...@@ -97,11 +97,11 @@ static void lnbp21_release(struct dvb_frontend *fe)
lnbp21_set_voltage(fe, SEC_VOLTAGE_OFF); lnbp21_set_voltage(fe, SEC_VOLTAGE_OFF);
/* free data & call next release routine */ /* free data & call next release routine */
fe->ops->release = lnbp21->release_chain; fe->ops.release = lnbp21->release_chain;
kfree(fe->misc_priv); kfree(fe->misc_priv);
fe->misc_priv = NULL; fe->misc_priv = NULL;
if (fe->ops->release) if (fe->ops.release)
fe->ops->release(fe); fe->ops.release(fe);
} }
int lnbp21_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, u8 override_set, u8 override_clear) int lnbp21_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, u8 override_set, u8 override_clear)
...@@ -129,12 +129,12 @@ int lnbp21_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, u8 override_ ...@@ -129,12 +129,12 @@ int lnbp21_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, u8 override_
} }
/* install release callback */ /* install release callback */
lnbp21->release_chain = fe->ops->release; lnbp21->release_chain = fe->ops.release;
fe->ops->release = lnbp21_release; fe->ops.release = lnbp21_release;
/* override frontend ops */ /* override frontend ops */
fe->ops->set_voltage = lnbp21_set_voltage; fe->ops.set_voltage = lnbp21_set_voltage;
fe->ops->enable_high_lnb_voltage = lnbp21_enable_high_lnb_voltage; fe->ops.enable_high_lnb_voltage = lnbp21_enable_high_lnb_voltage;
return 0; return 0;
} }
......
...@@ -39,7 +39,6 @@ ...@@ -39,7 +39,6 @@
struct mt312_state { struct mt312_state {
struct i2c_adapter* i2c; struct i2c_adapter* i2c;
struct dvb_frontend_ops ops;
/* configuration settings */ /* configuration settings */
const struct mt312_config* config; const struct mt312_config* config;
struct dvb_frontend frontend; struct dvb_frontend frontend;
...@@ -471,16 +470,16 @@ static int mt312_set_frontend(struct dvb_frontend* fe, ...@@ -471,16 +470,16 @@ static int mt312_set_frontend(struct dvb_frontend* fe,
dprintk("%s: Freq %d\n", __FUNCTION__, p->frequency); dprintk("%s: Freq %d\n", __FUNCTION__, p->frequency);
if ((p->frequency < fe->ops->info.frequency_min) if ((p->frequency < fe->ops.info.frequency_min)
|| (p->frequency > fe->ops->info.frequency_max)) || (p->frequency > fe->ops.info.frequency_max))
return -EINVAL; return -EINVAL;
if ((p->inversion < INVERSION_OFF) if ((p->inversion < INVERSION_OFF)
|| (p->inversion > INVERSION_ON)) || (p->inversion > INVERSION_ON))
return -EINVAL; return -EINVAL;
if ((p->u.qpsk.symbol_rate < fe->ops->info.symbol_rate_min) if ((p->u.qpsk.symbol_rate < fe->ops.info.symbol_rate_min)
|| (p->u.qpsk.symbol_rate > fe->ops->info.symbol_rate_max)) || (p->u.qpsk.symbol_rate > fe->ops.info.symbol_rate_max))
return -EINVAL; return -EINVAL;
if ((p->u.qpsk.fec_inner < FEC_NONE) if ((p->u.qpsk.fec_inner < FEC_NONE)
...@@ -523,9 +522,9 @@ static int mt312_set_frontend(struct dvb_frontend* fe, ...@@ -523,9 +522,9 @@ static int mt312_set_frontend(struct dvb_frontend* fe,
return -EINVAL; return -EINVAL;
} }
if (fe->ops->tuner_ops.set_params) { if (fe->ops.tuner_ops.set_params) {
fe->ops->tuner_ops.set_params(fe, p); fe->ops.tuner_ops.set_params(fe, p);
if (fe->ops->i2c_gate_ctrl) fe->ops->i2c_gate_ctrl(fe, 0); if (fe->ops.i2c_gate_ctrl) fe->ops.i2c_gate_ctrl(fe, 0);
} }
/* sr = (u16)(sr * 256.0 / 1000000.0) */ /* sr = (u16)(sr * 256.0 / 1000000.0) */
...@@ -670,19 +669,22 @@ struct dvb_frontend* vp310_mt312_attach(const struct mt312_config* config, ...@@ -670,19 +669,22 @@ struct dvb_frontend* vp310_mt312_attach(const struct mt312_config* config,
/* setup the state */ /* setup the state */
state->config = config; state->config = config;
state->i2c = i2c; state->i2c = i2c;
memcpy(&state->ops, &vp310_mt312_ops, sizeof(struct dvb_frontend_ops));
/* check if the demod is there */ /* check if the demod is there */
if (mt312_readreg(state, ID, &state->id) < 0) if (mt312_readreg(state, ID, &state->id) < 0)
goto error; goto error;
/* create dvb_frontend */
memcpy(&state->frontend.ops, &vp310_mt312_ops, sizeof(struct dvb_frontend_ops));
state->frontend.demodulator_priv = state;
switch (state->id) { switch (state->id) {
case ID_VP310: case ID_VP310:
strcpy(state->ops.info.name, "Zarlink VP310 DVB-S"); strcpy(state->frontend.ops.info.name, "Zarlink VP310 DVB-S");
state->frequency = 90; state->frequency = 90;
break; break;
case ID_MT312: case ID_MT312:
strcpy(state->ops.info.name, "Zarlink MT312 DVB-S"); strcpy(state->frontend.ops.info.name, "Zarlink MT312 DVB-S");
state->frequency = 60; state->frequency = 60;
break; break;
default: default:
...@@ -690,9 +692,6 @@ struct dvb_frontend* vp310_mt312_attach(const struct mt312_config* config, ...@@ -690,9 +692,6 @@ struct dvb_frontend* vp310_mt312_attach(const struct mt312_config* config,
goto error; goto error;
} }
/* create dvb_frontend */
state->frontend.ops = &state->ops;
state->frontend.demodulator_priv = state;
return &state->frontend; return &state->frontend;
error: error:
......
...@@ -45,7 +45,6 @@ ...@@ -45,7 +45,6 @@
struct mt352_state { struct mt352_state {
struct i2c_adapter* i2c; struct i2c_adapter* i2c;
struct dvb_frontend frontend; struct dvb_frontend frontend;
struct dvb_frontend_ops ops;
/* configuration settings */ /* configuration settings */
struct mt352_config config; struct mt352_config config;
...@@ -288,17 +287,17 @@ static int mt352_set_parameters(struct dvb_frontend* fe, ...@@ -288,17 +287,17 @@ static int mt352_set_parameters(struct dvb_frontend* fe,
mt352_calc_input_freq(state, buf+6); mt352_calc_input_freq(state, buf+6);
if (state->config.no_tuner) { if (state->config.no_tuner) {
if (fe->ops->tuner_ops.set_params) { if (fe->ops.tuner_ops.set_params) {
fe->ops->tuner_ops.set_params(fe, param); fe->ops.tuner_ops.set_params(fe, param);
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 0); fe->ops.i2c_gate_ctrl(fe, 0);
} }
mt352_write(fe, buf, 8); mt352_write(fe, buf, 8);
mt352_write(fe, fsm_go, 2); mt352_write(fe, fsm_go, 2);
} else { } else {
if (fe->ops->tuner_ops.calc_regs) { if (fe->ops.tuner_ops.calc_regs) {
fe->ops->tuner_ops.calc_regs(fe, param, buf+8, 5); fe->ops.tuner_ops.calc_regs(fe, param, buf+8, 5);
buf[8] <<= 1; buf[8] <<= 1;
mt352_write(fe, buf, sizeof(buf)); mt352_write(fe, buf, sizeof(buf));
mt352_write(fe, tuner_go, 2); mt352_write(fe, tuner_go, 2);
...@@ -550,13 +549,12 @@ struct dvb_frontend* mt352_attach(const struct mt352_config* config, ...@@ -550,13 +549,12 @@ struct dvb_frontend* mt352_attach(const struct mt352_config* config,
/* setup the state */ /* setup the state */
state->i2c = i2c; state->i2c = i2c;
memcpy(&state->config,config,sizeof(struct mt352_config)); memcpy(&state->config,config,sizeof(struct mt352_config));
memcpy(&state->ops, &mt352_ops, sizeof(struct dvb_frontend_ops));
/* check if the demod is there */ /* check if the demod is there */
if (mt352_read_register(state, CHIP_ID) != ID_MT352) goto error; if (mt352_read_register(state, CHIP_ID) != ID_MT352) goto error;
/* create dvb_frontend */ /* create dvb_frontend */
state->frontend.ops = &state->ops; memcpy(&state->frontend.ops, &mt352_ops, sizeof(struct dvb_frontend_ops));
state->frontend.demodulator_priv = state; state->frontend.demodulator_priv = state;
return &state->frontend; return &state->frontend;
......
...@@ -55,7 +55,6 @@ ...@@ -55,7 +55,6 @@
struct nxt200x_state { struct nxt200x_state {
struct i2c_adapter* i2c; struct i2c_adapter* i2c;
struct dvb_frontend_ops ops;
const struct nxt200x_config* config; const struct nxt200x_config* config;
struct dvb_frontend frontend; struct dvb_frontend frontend;
...@@ -548,8 +547,8 @@ static int nxt200x_setup_frontend_parameters (struct dvb_frontend* fe, ...@@ -548,8 +547,8 @@ static int nxt200x_setup_frontend_parameters (struct dvb_frontend* fe,
} }
/* get tuning information */ /* get tuning information */
if (fe->ops->tuner_ops.calc_regs) { if (fe->ops.tuner_ops.calc_regs) {
fe->ops->tuner_ops.calc_regs(fe, p, buf, 5); fe->ops.tuner_ops.calc_regs(fe, p, buf, 5);
} }
/* set additional params */ /* set additional params */
...@@ -1161,7 +1160,6 @@ struct dvb_frontend* nxt200x_attach(const struct nxt200x_config* config, ...@@ -1161,7 +1160,6 @@ struct dvb_frontend* nxt200x_attach(const struct nxt200x_config* config,
/* setup the state */ /* setup the state */
state->config = config; state->config = config;
state->i2c = i2c; state->i2c = i2c;
memcpy(&state->ops, &nxt200x_ops, sizeof(struct dvb_frontend_ops));
state->initialised = 0; state->initialised = 0;
/* read card id */ /* read card id */
...@@ -1200,7 +1198,7 @@ struct dvb_frontend* nxt200x_attach(const struct nxt200x_config* config, ...@@ -1200,7 +1198,7 @@ struct dvb_frontend* nxt200x_attach(const struct nxt200x_config* config,
} }
/* create dvb_frontend */ /* create dvb_frontend */
state->frontend.ops = &state->ops; memcpy(&state->frontend.ops, &nxt200x_ops, sizeof(struct dvb_frontend_ops));
state->frontend.demodulator_priv = state; state->frontend.demodulator_priv = state;
return &state->frontend; return &state->frontend;
......
...@@ -33,7 +33,6 @@ ...@@ -33,7 +33,6 @@
struct nxt6000_state { struct nxt6000_state {
struct i2c_adapter* i2c; struct i2c_adapter* i2c;
struct dvb_frontend_ops ops;
/* configuration settings */ /* configuration settings */
const struct nxt6000_config* config; const struct nxt6000_config* config;
struct dvb_frontend frontend; struct dvb_frontend frontend;
...@@ -463,9 +462,9 @@ static int nxt6000_set_frontend(struct dvb_frontend* fe, struct dvb_frontend_par ...@@ -463,9 +462,9 @@ static int nxt6000_set_frontend(struct dvb_frontend* fe, struct dvb_frontend_par
struct nxt6000_state* state = fe->demodulator_priv; struct nxt6000_state* state = fe->demodulator_priv;
int result; int result;
if (fe->ops->tuner_ops.set_params) { if (fe->ops.tuner_ops.set_params) {
fe->ops->tuner_ops.set_params(fe, param); fe->ops.tuner_ops.set_params(fe, param);
if (fe->ops->i2c_gate_ctrl) fe->ops->i2c_gate_ctrl(fe, 0); if (fe->ops.i2c_gate_ctrl) fe->ops.i2c_gate_ctrl(fe, 0);
} }
if ((result = nxt6000_set_bandwidth(state, param->u.ofdm.bandwidth)) < 0) if ((result = nxt6000_set_bandwidth(state, param->u.ofdm.bandwidth)) < 0)
...@@ -552,13 +551,12 @@ struct dvb_frontend* nxt6000_attach(const struct nxt6000_config* config, ...@@ -552,13 +551,12 @@ struct dvb_frontend* nxt6000_attach(const struct nxt6000_config* config,
/* setup the state */ /* setup the state */
state->config = config; state->config = config;
state->i2c = i2c; state->i2c = i2c;
memcpy(&state->ops, &nxt6000_ops, sizeof(struct dvb_frontend_ops));
/* check if the demod is there */ /* check if the demod is there */
if (nxt6000_readreg(state, OFDM_MSC_REV) != NXT6000ASICDEVICE) goto error; if (nxt6000_readreg(state, OFDM_MSC_REV) != NXT6000ASICDEVICE) goto error;
/* create dvb_frontend */ /* create dvb_frontend */
state->frontend.ops = &state->ops; memcpy(&state->frontend.ops, &nxt6000_ops, sizeof(struct dvb_frontend_ops));
state->frontend.demodulator_priv = state; state->frontend.demodulator_priv = state;
return &state->frontend; return &state->frontend;
......
...@@ -54,7 +54,6 @@ static int debug; ...@@ -54,7 +54,6 @@ static int debug;
struct or51132_state struct or51132_state
{ {
struct i2c_adapter* i2c; struct i2c_adapter* i2c;
struct dvb_frontend_ops ops;
/* Configuration settings */ /* Configuration settings */
const struct or51132_config* config; const struct or51132_config* config;
...@@ -383,9 +382,9 @@ static int or51132_set_parameters(struct dvb_frontend* fe, ...@@ -383,9 +382,9 @@ static int or51132_set_parameters(struct dvb_frontend* fe,
or51132_setmode(fe); or51132_setmode(fe);
} }
if (fe->ops->tuner_ops.set_params) { if (fe->ops.tuner_ops.set_params) {
fe->ops->tuner_ops.set_params(fe, param); fe->ops.tuner_ops.set_params(fe, param);
if (fe->ops->i2c_gate_ctrl) fe->ops->i2c_gate_ctrl(fe, 0); if (fe->ops.i2c_gate_ctrl) fe->ops.i2c_gate_ctrl(fe, 0);
} }
/* Set to current mode */ /* Set to current mode */
...@@ -618,12 +617,11 @@ struct dvb_frontend* or51132_attach(const struct or51132_config* config, ...@@ -618,12 +617,11 @@ struct dvb_frontend* or51132_attach(const struct or51132_config* config,
/* Setup the state */ /* Setup the state */
state->config = config; state->config = config;
state->i2c = i2c; state->i2c = i2c;
memcpy(&state->ops, &or51132_ops, sizeof(struct dvb_frontend_ops));
state->current_frequency = -1; state->current_frequency = -1;
state->current_modulation = -1; state->current_modulation = -1;
/* Create dvb_frontend */ /* Create dvb_frontend */
state->frontend.ops = &state->ops; memcpy(&state->frontend.ops, &or51132_ops, sizeof(struct dvb_frontend_ops));
state->frontend.demodulator_priv = state; state->frontend.demodulator_priv = state;
return &state->frontend; return &state->frontend;
...@@ -636,7 +634,7 @@ static struct dvb_frontend_ops or51132_ops = { ...@@ -636,7 +634,7 @@ static struct dvb_frontend_ops or51132_ops = {
.info = { .info = {
.name = "Oren OR51132 VSB/QAM Frontend", .name = "Oren OR51132 VSB/QAM Frontend",
.type = FE_ATSC, .type = FE_ATSC,
.frequency_min = 44000000, .frequency_min = 44000000,
.frequency_max = 958000000, .frequency_max = 958000000,
.frequency_stepsize = 166666, .frequency_stepsize = 166666,
......
...@@ -54,7 +54,6 @@ static u8 cmd_buf[] = {0x04,0x01,0x50,0x80,0x06}; // ATSC ...@@ -54,7 +54,6 @@ static u8 cmd_buf[] = {0x04,0x01,0x50,0x80,0x06}; // ATSC
struct or51211_state { struct or51211_state {
struct i2c_adapter* i2c; struct i2c_adapter* i2c;
struct dvb_frontend_ops ops;
/* Configuration settings */ /* Configuration settings */
const struct or51211_config* config; const struct or51211_config* config;
...@@ -585,12 +584,11 @@ struct dvb_frontend* or51211_attach(const struct or51211_config* config, ...@@ -585,12 +584,11 @@ struct dvb_frontend* or51211_attach(const struct or51211_config* config,
/* Setup the state */ /* Setup the state */
state->config = config; state->config = config;
state->i2c = i2c; state->i2c = i2c;
memcpy(&state->ops, &or51211_ops, sizeof(struct dvb_frontend_ops));
state->initialized = 0; state->initialized = 0;
state->current_frequency = 0; state->current_frequency = 0;
/* Create dvb_frontend */ /* Create dvb_frontend */
state->frontend.ops = &state->ops; memcpy(&state->frontend.ops, &or51211_ops, sizeof(struct dvb_frontend_ops));
state->frontend.demodulator_priv = state; state->frontend.demodulator_priv = state;
return &state->frontend; return &state->frontend;
......
...@@ -38,7 +38,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ...@@ -38,7 +38,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
struct s5h1420_state { struct s5h1420_state {
struct i2c_adapter* i2c; struct i2c_adapter* i2c;
struct dvb_frontend_ops ops;
const struct s5h1420_config* config; const struct s5h1420_config* config;
struct dvb_frontend frontend; struct dvb_frontend frontend;
...@@ -595,14 +594,14 @@ static int s5h1420_set_frontend(struct dvb_frontend* fe, ...@@ -595,14 +594,14 @@ static int s5h1420_set_frontend(struct dvb_frontend* fe,
(state->fec_inner == p->u.qpsk.fec_inner) && (state->fec_inner == p->u.qpsk.fec_inner) &&
(state->symbol_rate == p->u.qpsk.symbol_rate)) { (state->symbol_rate == p->u.qpsk.symbol_rate)) {
if (fe->ops->tuner_ops.set_params) { if (fe->ops.tuner_ops.set_params) {
fe->ops->tuner_ops.set_params(fe, p); fe->ops.tuner_ops.set_params(fe, p);
if (fe->ops->i2c_gate_ctrl) fe->ops->i2c_gate_ctrl(fe, 0); if (fe->ops.i2c_gate_ctrl) fe->ops.i2c_gate_ctrl(fe, 0);
} }
if (fe->ops->tuner_ops.get_frequency) { if (fe->ops.tuner_ops.get_frequency) {
u32 tmp; u32 tmp;
fe->ops->tuner_ops.get_frequency(fe, &tmp); fe->ops.tuner_ops.get_frequency(fe, &tmp);
if (fe->ops->i2c_gate_ctrl) fe->ops->i2c_gate_ctrl(fe, 0); if (fe->ops.i2c_gate_ctrl) fe->ops.i2c_gate_ctrl(fe, 0);
s5h1420_setfreqoffset(state, p->frequency - tmp); s5h1420_setfreqoffset(state, p->frequency - tmp);
} else { } else {
s5h1420_setfreqoffset(state, 0); s5h1420_setfreqoffset(state, 0);
...@@ -652,9 +651,9 @@ static int s5h1420_set_frontend(struct dvb_frontend* fe, ...@@ -652,9 +651,9 @@ static int s5h1420_set_frontend(struct dvb_frontend* fe,
s5h1420_writereg(state, 0x05, s5h1420_readreg(state, 0x05) | 1); s5h1420_writereg(state, 0x05, s5h1420_readreg(state, 0x05) | 1);
/* set tuner PLL */ /* set tuner PLL */
if (fe->ops->tuner_ops.set_params) { if (fe->ops.tuner_ops.set_params) {
fe->ops->tuner_ops.set_params(fe, p); fe->ops.tuner_ops.set_params(fe, p);
if (fe->ops->i2c_gate_ctrl) fe->ops->i2c_gate_ctrl(fe, 0); if (fe->ops.i2c_gate_ctrl) fe->ops.i2c_gate_ctrl(fe, 0);
s5h1420_setfreqoffset(state, 0); s5h1420_setfreqoffset(state, 0);
} }
...@@ -766,7 +765,6 @@ struct dvb_frontend* s5h1420_attach(const struct s5h1420_config* config, ...@@ -766,7 +765,6 @@ struct dvb_frontend* s5h1420_attach(const struct s5h1420_config* config,
/* setup the state */ /* setup the state */
state->config = config; state->config = config;
state->i2c = i2c; state->i2c = i2c;
memcpy(&state->ops, &s5h1420_ops, sizeof(struct dvb_frontend_ops));
state->postlocked = 0; state->postlocked = 0;
state->fclk = 88000000; state->fclk = 88000000;
state->tunedfreq = 0; state->tunedfreq = 0;
...@@ -779,7 +777,7 @@ struct dvb_frontend* s5h1420_attach(const struct s5h1420_config* config, ...@@ -779,7 +777,7 @@ struct dvb_frontend* s5h1420_attach(const struct s5h1420_config* config,
goto error; goto error;
/* create dvb_frontend */ /* create dvb_frontend */
state->frontend.ops = &state->ops; memcpy(&state->frontend.ops, &s5h1420_ops, sizeof(struct dvb_frontend_ops));
state->frontend.demodulator_priv = state; state->frontend.demodulator_priv = state;
return &state->frontend; return &state->frontend;
......
...@@ -44,8 +44,6 @@ struct sp8870_state { ...@@ -44,8 +44,6 @@ struct sp8870_state {
struct i2c_adapter* i2c; struct i2c_adapter* i2c;
struct dvb_frontend_ops ops;
const struct sp8870_config* config; const struct sp8870_config* config;
struct dvb_frontend frontend; struct dvb_frontend frontend;
...@@ -262,9 +260,9 @@ static int sp8870_set_frontend_parameters (struct dvb_frontend* fe, ...@@ -262,9 +260,9 @@ static int sp8870_set_frontend_parameters (struct dvb_frontend* fe,
sp8870_microcontroller_stop(state); sp8870_microcontroller_stop(state);
// set tuner parameters // set tuner parameters
if (fe->ops->tuner_ops.set_params) { if (fe->ops.tuner_ops.set_params) {
fe->ops->tuner_ops.set_params(fe, p); fe->ops.tuner_ops.set_params(fe, p);
if (fe->ops->i2c_gate_ctrl) fe->ops->i2c_gate_ctrl(fe, 0); if (fe->ops.i2c_gate_ctrl) fe->ops.i2c_gate_ctrl(fe, 0);
} }
// sample rate correction bit [23..17] // sample rate correction bit [23..17]
...@@ -566,14 +564,13 @@ struct dvb_frontend* sp8870_attach(const struct sp8870_config* config, ...@@ -566,14 +564,13 @@ struct dvb_frontend* sp8870_attach(const struct sp8870_config* config,
/* setup the state */ /* setup the state */
state->config = config; state->config = config;
state->i2c = i2c; state->i2c = i2c;
memcpy(&state->ops, &sp8870_ops, sizeof(struct dvb_frontend_ops));
state->initialised = 0; state->initialised = 0;
/* check if the demod is there */ /* check if the demod is there */
if (sp8870_readreg(state, 0x0200) < 0) goto error; if (sp8870_readreg(state, 0x0200) < 0) goto error;
/* create dvb_frontend */ /* create dvb_frontend */
state->frontend.ops = &state->ops; memcpy(&state->frontend.ops, &sp8870_ops, sizeof(struct dvb_frontend_ops));
state->frontend.demodulator_priv = state; state->frontend.demodulator_priv = state;
return &state->frontend; return &state->frontend;
......
...@@ -24,7 +24,6 @@ ...@@ -24,7 +24,6 @@
struct sp887x_state { struct sp887x_state {
struct i2c_adapter* i2c; struct i2c_adapter* i2c;
struct dvb_frontend_ops ops;
const struct sp887x_config* config; const struct sp887x_config* config;
struct dvb_frontend frontend; struct dvb_frontend frontend;
...@@ -353,13 +352,13 @@ static int sp887x_setup_frontend_parameters (struct dvb_frontend* fe, ...@@ -353,13 +352,13 @@ static int sp887x_setup_frontend_parameters (struct dvb_frontend* fe,
sp887x_microcontroller_stop(state); sp887x_microcontroller_stop(state);
/* setup the PLL */ /* setup the PLL */
if (fe->ops->tuner_ops.set_params) { if (fe->ops.tuner_ops.set_params) {
fe->ops->tuner_ops.set_params(fe, p); fe->ops.tuner_ops.set_params(fe, p);
if (fe->ops->i2c_gate_ctrl) fe->ops->i2c_gate_ctrl(fe, 0); if (fe->ops.i2c_gate_ctrl) fe->ops.i2c_gate_ctrl(fe, 0);
} }
if (fe->ops->tuner_ops.get_frequency) { if (fe->ops.tuner_ops.get_frequency) {
fe->ops->tuner_ops.get_frequency(fe, &actual_freq); fe->ops.tuner_ops.get_frequency(fe, &actual_freq);
if (fe->ops->i2c_gate_ctrl) fe->ops->i2c_gate_ctrl(fe, 0); if (fe->ops.i2c_gate_ctrl) fe->ops.i2c_gate_ctrl(fe, 0);
} else { } else {
actual_freq = p->frequency; actual_freq = p->frequency;
} }
...@@ -564,14 +563,13 @@ struct dvb_frontend* sp887x_attach(const struct sp887x_config* config, ...@@ -564,14 +563,13 @@ struct dvb_frontend* sp887x_attach(const struct sp887x_config* config,
/* setup the state */ /* setup the state */
state->config = config; state->config = config;
state->i2c = i2c; state->i2c = i2c;
memcpy(&state->ops, &sp887x_ops, sizeof(struct dvb_frontend_ops));
state->initialised = 0; state->initialised = 0;
/* check if the demod is there */ /* check if the demod is there */
if (sp887x_readreg(state, 0x0200) < 0) goto error; if (sp887x_readreg(state, 0x0200) < 0) goto error;
/* create dvb_frontend */ /* create dvb_frontend */
state->frontend.ops = &state->ops; memcpy(&state->frontend.ops, &sp887x_ops, sizeof(struct dvb_frontend_ops));
state->frontend.demodulator_priv = state; state->frontend.demodulator_priv = state;
return &state->frontend; return &state->frontend;
......
...@@ -32,7 +32,6 @@ ...@@ -32,7 +32,6 @@
struct stv0297_state { struct stv0297_state {
struct i2c_adapter *i2c; struct i2c_adapter *i2c;
struct dvb_frontend_ops ops;
const struct stv0297_config *config; const struct stv0297_config *config;
struct dvb_frontend frontend; struct dvb_frontend frontend;
...@@ -433,9 +432,9 @@ static int stv0297_set_frontend(struct dvb_frontend *fe, struct dvb_frontend_par ...@@ -433,9 +432,9 @@ static int stv0297_set_frontend(struct dvb_frontend *fe, struct dvb_frontend_par
} }
stv0297_init(fe); stv0297_init(fe);
if (fe->ops->tuner_ops.set_params) { if (fe->ops.tuner_ops.set_params) {
fe->ops->tuner_ops.set_params(fe, p); fe->ops.tuner_ops.set_params(fe, p);
if (fe->ops->i2c_gate_ctrl) fe->ops->i2c_gate_ctrl(fe, 0); if (fe->ops.i2c_gate_ctrl) fe->ops.i2c_gate_ctrl(fe, 0);
} }
/* clear software interrupts */ /* clear software interrupts */
...@@ -649,7 +648,6 @@ struct dvb_frontend *stv0297_attach(const struct stv0297_config *config, ...@@ -649,7 +648,6 @@ struct dvb_frontend *stv0297_attach(const struct stv0297_config *config,
/* setup the state */ /* setup the state */
state->config = config; state->config = config;
state->i2c = i2c; state->i2c = i2c;
memcpy(&state->ops, &stv0297_ops, sizeof(struct dvb_frontend_ops));
state->base_freq = 0; state->base_freq = 0;
/* check if the demod is there */ /* check if the demod is there */
...@@ -657,7 +655,7 @@ struct dvb_frontend *stv0297_attach(const struct stv0297_config *config, ...@@ -657,7 +655,7 @@ struct dvb_frontend *stv0297_attach(const struct stv0297_config *config,
goto error; goto error;
/* create dvb_frontend */ /* create dvb_frontend */
state->frontend.ops = &state->ops; memcpy(&state->frontend.ops, &stv0297_ops, sizeof(struct dvb_frontend_ops));
state->frontend.demodulator_priv = state; state->frontend.demodulator_priv = state;
return &state->frontend; return &state->frontend;
......
...@@ -56,7 +56,6 @@ ...@@ -56,7 +56,6 @@
struct stv0299_state { struct stv0299_state {
struct i2c_adapter* i2c; struct i2c_adapter* i2c;
struct dvb_frontend_ops ops;
const struct stv0299_config* config; const struct stv0299_config* config;
struct dvb_frontend frontend; struct dvb_frontend frontend;
...@@ -547,9 +546,9 @@ static int stv0299_set_frontend(struct dvb_frontend* fe, struct dvb_frontend_par ...@@ -547,9 +546,9 @@ static int stv0299_set_frontend(struct dvb_frontend* fe, struct dvb_frontend_par
if (state->config->invert) invval = (~invval) & 1; if (state->config->invert) invval = (~invval) & 1;
stv0299_writeregI(state, 0x0c, (stv0299_readreg(state, 0x0c) & 0xfe) | invval); stv0299_writeregI(state, 0x0c, (stv0299_readreg(state, 0x0c) & 0xfe) | invval);
if (fe->ops->tuner_ops.set_params) { if (fe->ops.tuner_ops.set_params) {
fe->ops->tuner_ops.set_params(fe, p); fe->ops.tuner_ops.set_params(fe, p);
if (fe->ops->i2c_gate_ctrl) fe->ops->i2c_gate_ctrl(fe, 0); if (fe->ops.i2c_gate_ctrl) fe->ops.i2c_gate_ctrl(fe, 0);
} }
stv0299_set_FEC (state, p->u.qpsk.fec_inner); stv0299_set_FEC (state, p->u.qpsk.fec_inner);
...@@ -648,7 +647,6 @@ struct dvb_frontend* stv0299_attach(const struct stv0299_config* config, ...@@ -648,7 +647,6 @@ struct dvb_frontend* stv0299_attach(const struct stv0299_config* config,
/* setup the state */ /* setup the state */
state->config = config; state->config = config;
state->i2c = i2c; state->i2c = i2c;
memcpy(&state->ops, &stv0299_ops, sizeof(struct dvb_frontend_ops));
state->initialised = 0; state->initialised = 0;
state->tuner_frequency = 0; state->tuner_frequency = 0;
state->symbol_rate = 0; state->symbol_rate = 0;
...@@ -665,7 +663,7 @@ struct dvb_frontend* stv0299_attach(const struct stv0299_config* config, ...@@ -665,7 +663,7 @@ struct dvb_frontend* stv0299_attach(const struct stv0299_config* config,
if (id != 0xa1 && id != 0x80) goto error; if (id != 0xa1 && id != 0x80) goto error;
/* create dvb_frontend */ /* create dvb_frontend */
state->frontend.ops = &state->ops; memcpy(&state->frontend.ops, &stv0299_ops, sizeof(struct dvb_frontend_ops));
state->frontend.demodulator_priv = state; state->frontend.demodulator_priv = state;
return &state->frontend; return &state->frontend;
......
...@@ -36,7 +36,6 @@ ...@@ -36,7 +36,6 @@
struct tda10021_state { struct tda10021_state {
struct i2c_adapter* i2c; struct i2c_adapter* i2c;
struct dvb_frontend_ops ops;
/* configuration settings */ /* configuration settings */
const struct tda10021_config* config; const struct tda10021_config* config;
struct dvb_frontend frontend; struct dvb_frontend frontend;
...@@ -260,9 +259,9 @@ static int tda10021_set_parameters (struct dvb_frontend *fe, ...@@ -260,9 +259,9 @@ static int tda10021_set_parameters (struct dvb_frontend *fe,
//printk("tda10021: set frequency to %d qam=%d symrate=%d\n", p->frequency,qam,p->u.qam.symbol_rate); //printk("tda10021: set frequency to %d qam=%d symrate=%d\n", p->frequency,qam,p->u.qam.symbol_rate);
if (fe->ops->tuner_ops.set_params) { if (fe->ops.tuner_ops.set_params) {
fe->ops->tuner_ops.set_params(fe, p); fe->ops.tuner_ops.set_params(fe, p);
if (fe->ops->i2c_gate_ctrl) fe->ops->i2c_gate_ctrl(fe, 0); if (fe->ops.i2c_gate_ctrl) fe->ops.i2c_gate_ctrl(fe, 0);
} }
tda10021_set_symbolrate (state, p->u.qam.symbol_rate); tda10021_set_symbolrate (state, p->u.qam.symbol_rate);
...@@ -421,7 +420,6 @@ struct dvb_frontend* tda10021_attach(const struct tda10021_config* config, ...@@ -421,7 +420,6 @@ struct dvb_frontend* tda10021_attach(const struct tda10021_config* config,
/* setup the state */ /* setup the state */
state->config = config; state->config = config;
state->i2c = i2c; state->i2c = i2c;
memcpy(&state->ops, &tda10021_ops, sizeof(struct dvb_frontend_ops));
state->pwm = pwm; state->pwm = pwm;
state->reg0 = tda10021_inittab[0]; state->reg0 = tda10021_inittab[0];
...@@ -429,7 +427,7 @@ struct dvb_frontend* tda10021_attach(const struct tda10021_config* config, ...@@ -429,7 +427,7 @@ struct dvb_frontend* tda10021_attach(const struct tda10021_config* config,
if ((tda10021_readreg(state, 0x1a) & 0xf0) != 0x70) goto error; if ((tda10021_readreg(state, 0x1a) & 0xf0) != 0x70) goto error;
/* create dvb_frontend */ /* create dvb_frontend */
state->frontend.ops = &state->ops; memcpy(&state->frontend.ops, &tda10021_ops, sizeof(struct dvb_frontend_ops));
state->frontend.demodulator_priv = state; state->frontend.demodulator_priv = state;
return &state->frontend; return &state->frontend;
......
...@@ -47,7 +47,6 @@ enum tda1004x_demod { ...@@ -47,7 +47,6 @@ enum tda1004x_demod {
struct tda1004x_state { struct tda1004x_state {
struct i2c_adapter* i2c; struct i2c_adapter* i2c;
struct dvb_frontend_ops ops;
const struct tda1004x_config* config; const struct tda1004x_config* config;
struct dvb_frontend frontend; struct dvb_frontend frontend;
...@@ -695,9 +694,9 @@ static int tda1004x_set_fe(struct dvb_frontend* fe, ...@@ -695,9 +694,9 @@ static int tda1004x_set_fe(struct dvb_frontend* fe,
} }
// set frequency // set frequency
if (fe->ops->tuner_ops.set_params) { if (fe->ops.tuner_ops.set_params) {
fe->ops->tuner_ops.set_params(fe, fe_params); fe->ops.tuner_ops.set_params(fe, fe_params);
if (fe->ops->i2c_gate_ctrl) fe->ops->i2c_gate_ctrl(fe, 0); if (fe->ops.i2c_gate_ctrl) fe->ops.i2c_gate_ctrl(fe, 0);
} }
// Hardcoded to use auto as much as possible on the TDA10045 as it // Hardcoded to use auto as much as possible on the TDA10045 as it
...@@ -1243,7 +1242,6 @@ struct dvb_frontend* tda10045_attach(const struct tda1004x_config* config, ...@@ -1243,7 +1242,6 @@ struct dvb_frontend* tda10045_attach(const struct tda1004x_config* config,
/* setup the state */ /* setup the state */
state->config = config; state->config = config;
state->i2c = i2c; state->i2c = i2c;
memcpy(&state->ops, &tda10045_ops, sizeof(struct dvb_frontend_ops));
state->demod_type = TDA1004X_DEMOD_TDA10045; state->demod_type = TDA1004X_DEMOD_TDA10045;
/* check if the demod is there */ /* check if the demod is there */
...@@ -1253,7 +1251,7 @@ struct dvb_frontend* tda10045_attach(const struct tda1004x_config* config, ...@@ -1253,7 +1251,7 @@ struct dvb_frontend* tda10045_attach(const struct tda1004x_config* config,
} }
/* create dvb_frontend */ /* create dvb_frontend */
state->frontend.ops = &state->ops; memcpy(&state->frontend.ops, &tda10045_ops, sizeof(struct dvb_frontend_ops));
state->frontend.demodulator_priv = state; state->frontend.demodulator_priv = state;
return &state->frontend; return &state->frontend;
} }
...@@ -1302,7 +1300,6 @@ struct dvb_frontend* tda10046_attach(const struct tda1004x_config* config, ...@@ -1302,7 +1300,6 @@ struct dvb_frontend* tda10046_attach(const struct tda1004x_config* config,
/* setup the state */ /* setup the state */
state->config = config; state->config = config;
state->i2c = i2c; state->i2c = i2c;
memcpy(&state->ops, &tda10046_ops, sizeof(struct dvb_frontend_ops));
state->demod_type = TDA1004X_DEMOD_TDA10046; state->demod_type = TDA1004X_DEMOD_TDA10046;
/* check if the demod is there */ /* check if the demod is there */
...@@ -1312,7 +1309,7 @@ struct dvb_frontend* tda10046_attach(const struct tda1004x_config* config, ...@@ -1312,7 +1309,7 @@ struct dvb_frontend* tda10046_attach(const struct tda1004x_config* config,
} }
/* create dvb_frontend */ /* create dvb_frontend */
state->frontend.ops = &state->ops; memcpy(&state->frontend.ops, &tda10046_ops, sizeof(struct dvb_frontend_ops));
state->frontend.demodulator_priv = state; state->frontend.demodulator_priv = state;
return &state->frontend; return &state->frontend;
} }
......
...@@ -37,7 +37,6 @@ ...@@ -37,7 +37,6 @@
struct tda8083_state { struct tda8083_state {
struct i2c_adapter* i2c; struct i2c_adapter* i2c;
struct dvb_frontend_ops ops;
/* configuration settings */ /* configuration settings */
const struct tda8083_config* config; const struct tda8083_config* config;
struct dvb_frontend frontend; struct dvb_frontend frontend;
...@@ -293,9 +292,9 @@ static int tda8083_set_frontend(struct dvb_frontend* fe, struct dvb_frontend_par ...@@ -293,9 +292,9 @@ static int tda8083_set_frontend(struct dvb_frontend* fe, struct dvb_frontend_par
{ {
struct tda8083_state* state = fe->demodulator_priv; struct tda8083_state* state = fe->demodulator_priv;
if (fe->ops->tuner_ops.set_params) { if (fe->ops.tuner_ops.set_params) {
fe->ops->tuner_ops.set_params(fe, p); fe->ops.tuner_ops.set_params(fe, p);
if (fe->ops->i2c_gate_ctrl) fe->ops->i2c_gate_ctrl(fe, 0); if (fe->ops.i2c_gate_ctrl) fe->ops.i2c_gate_ctrl(fe, 0);
} }
tda8083_set_inversion (state, p->inversion); tda8083_set_inversion (state, p->inversion);
...@@ -397,13 +396,12 @@ struct dvb_frontend* tda8083_attach(const struct tda8083_config* config, ...@@ -397,13 +396,12 @@ struct dvb_frontend* tda8083_attach(const struct tda8083_config* config,
/* setup the state */ /* setup the state */
state->config = config; state->config = config;
state->i2c = i2c; state->i2c = i2c;
memcpy(&state->ops, &tda8083_ops, sizeof(struct dvb_frontend_ops));
/* check if the demod is there */ /* check if the demod is there */
if ((tda8083_readreg(state, 0x00)) != 0x05) goto error; if ((tda8083_readreg(state, 0x00)) != 0x05) goto error;
/* create dvb_frontend */ /* create dvb_frontend */
state->frontend.ops = &state->ops; memcpy(&state->frontend.ops, &tda8083_ops, sizeof(struct dvb_frontend_ops));
state->frontend.demodulator_priv = state; state->frontend.demodulator_priv = state;
return &state->frontend; return &state->frontend;
......
...@@ -35,7 +35,6 @@ ...@@ -35,7 +35,6 @@
struct ves1820_state { struct ves1820_state {
struct i2c_adapter* i2c; struct i2c_adapter* i2c;
struct dvb_frontend_ops ops;
/* configuration settings */ /* configuration settings */
const struct ves1820_config* config; const struct ves1820_config* config;
struct dvb_frontend frontend; struct dvb_frontend frontend;
...@@ -220,9 +219,9 @@ static int ves1820_set_parameters(struct dvb_frontend* fe, struct dvb_frontend_p ...@@ -220,9 +219,9 @@ static int ves1820_set_parameters(struct dvb_frontend* fe, struct dvb_frontend_p
if (real_qam < 0 || real_qam > 4) if (real_qam < 0 || real_qam > 4)
return -EINVAL; return -EINVAL;
if (fe->ops->tuner_ops.set_params) { if (fe->ops.tuner_ops.set_params) {
fe->ops->tuner_ops.set_params(fe, p); fe->ops.tuner_ops.set_params(fe, p);
if (fe->ops->i2c_gate_ctrl) fe->ops->i2c_gate_ctrl(fe, 0); if (fe->ops.i2c_gate_ctrl) fe->ops.i2c_gate_ctrl(fe, 0);
} }
ves1820_set_symbolrate(state, p->u.qam.symbol_rate); ves1820_set_symbolrate(state, p->u.qam.symbol_rate);
...@@ -381,7 +380,6 @@ struct dvb_frontend* ves1820_attach(const struct ves1820_config* config, ...@@ -381,7 +380,6 @@ struct dvb_frontend* ves1820_attach(const struct ves1820_config* config,
goto error; goto error;
/* setup the state */ /* setup the state */
memcpy(&state->ops, &ves1820_ops, sizeof(struct dvb_frontend_ops));
state->reg0 = ves1820_inittab[0]; state->reg0 = ves1820_inittab[0];
state->config = config; state->config = config;
state->i2c = i2c; state->i2c = i2c;
...@@ -394,12 +392,12 @@ struct dvb_frontend* ves1820_attach(const struct ves1820_config* config, ...@@ -394,12 +392,12 @@ struct dvb_frontend* ves1820_attach(const struct ves1820_config* config,
if (verbose) if (verbose)
printk("ves1820: pwm=0x%02x\n", state->pwm); printk("ves1820: pwm=0x%02x\n", state->pwm);
state->ops.info.symbol_rate_min = (state->config->xin / 2) / 64; /* SACLK/64 == (XIN/2)/64 */
state->ops.info.symbol_rate_max = (state->config->xin / 2) / 4; /* SACLK/4 */
/* create dvb_frontend */ /* create dvb_frontend */
state->frontend.ops = &state->ops; memcpy(&state->frontend.ops, &ves1820_ops, sizeof(struct dvb_frontend_ops));
state->frontend.ops.info.symbol_rate_min = (state->config->xin / 2) / 64; /* SACLK/64 == (XIN/2)/64 */
state->frontend.ops.info.symbol_rate_max = (state->config->xin / 2) / 4; /* SACLK/4 */
state->frontend.demodulator_priv = state; state->frontend.demodulator_priv = state;
return &state->frontend; return &state->frontend;
error: error:
......
...@@ -36,7 +36,6 @@ ...@@ -36,7 +36,6 @@
struct ves1x93_state { struct ves1x93_state {
struct i2c_adapter* i2c; struct i2c_adapter* i2c;
struct dvb_frontend_ops ops;
/* configuration settings */ /* configuration settings */
const struct ves1x93_config* config; const struct ves1x93_config* config;
struct dvb_frontend frontend; struct dvb_frontend frontend;
...@@ -389,9 +388,9 @@ static int ves1x93_set_frontend(struct dvb_frontend* fe, struct dvb_frontend_par ...@@ -389,9 +388,9 @@ static int ves1x93_set_frontend(struct dvb_frontend* fe, struct dvb_frontend_par
{ {
struct ves1x93_state* state = fe->demodulator_priv; struct ves1x93_state* state = fe->demodulator_priv;
if (fe->ops->tuner_ops.set_params) { if (fe->ops.tuner_ops.set_params) {
fe->ops->tuner_ops.set_params(fe, p); fe->ops.tuner_ops.set_params(fe, p);
if (fe->ops->i2c_gate_ctrl) fe->ops->i2c_gate_ctrl(fe, 0); if (fe->ops.i2c_gate_ctrl) fe->ops.i2c_gate_ctrl(fe, 0);
} }
ves1x93_set_inversion (state, p->inversion); ves1x93_set_inversion (state, p->inversion);
ves1x93_set_fec (state, p->u.qpsk.fec_inner); ves1x93_set_fec (state, p->u.qpsk.fec_inner);
...@@ -463,7 +462,6 @@ struct dvb_frontend* ves1x93_attach(const struct ves1x93_config* config, ...@@ -463,7 +462,6 @@ struct dvb_frontend* ves1x93_attach(const struct ves1x93_config* config,
/* setup the state */ /* setup the state */
state->config = config; state->config = config;
state->i2c = i2c; state->i2c = i2c;
memcpy(&state->ops, &ves1x93_ops, sizeof(struct dvb_frontend_ops));
state->inversion = INVERSION_OFF; state->inversion = INVERSION_OFF;
/* check if the demod is there + identify it */ /* check if the demod is there + identify it */
...@@ -498,7 +496,7 @@ struct dvb_frontend* ves1x93_attach(const struct ves1x93_config* config, ...@@ -498,7 +496,7 @@ struct dvb_frontend* ves1x93_attach(const struct ves1x93_config* config,
} }
/* create dvb_frontend */ /* create dvb_frontend */
state->frontend.ops = &state->ops; memcpy(&state->frontend.ops, &ves1x93_ops, sizeof(struct dvb_frontend_ops));
state->frontend.demodulator_priv = state; state->frontend.demodulator_priv = state;
return &state->frontend; return &state->frontend;
......
...@@ -34,7 +34,6 @@ ...@@ -34,7 +34,6 @@
struct zl10353_state { struct zl10353_state {
struct i2c_adapter *i2c; struct i2c_adapter *i2c;
struct dvb_frontend frontend; struct dvb_frontend frontend;
struct dvb_frontend_ops ops;
struct zl10353_config config; struct zl10353_config config;
}; };
...@@ -146,15 +145,15 @@ static int zl10353_set_parameters(struct dvb_frontend *fe, ...@@ -146,15 +145,15 @@ static int zl10353_set_parameters(struct dvb_frontend *fe,
// if there is no attached secondary tuner, we call set_params to program // if there is no attached secondary tuner, we call set_params to program
// a potential tuner attached somewhere else // a potential tuner attached somewhere else
if (state->config.no_tuner) { if (state->config.no_tuner) {
if (fe->ops->tuner_ops.set_params) { if (fe->ops.tuner_ops.set_params) {
fe->ops->tuner_ops.set_params(fe, param); fe->ops.tuner_ops.set_params(fe, param);
if (fe->ops->i2c_gate_ctrl) fe->ops->i2c_gate_ctrl(fe, 0); if (fe->ops.i2c_gate_ctrl) fe->ops.i2c_gate_ctrl(fe, 0);
} }
} }
// if pllbuf is defined, retrieve the settings // if pllbuf is defined, retrieve the settings
if (fe->ops->tuner_ops.calc_regs) { if (fe->ops.tuner_ops.calc_regs) {
fe->ops->tuner_ops.calc_regs(fe, param, pllbuf+1, 5); fe->ops.tuner_ops.calc_regs(fe, param, pllbuf+1, 5);
pllbuf[1] <<= 1; pllbuf[1] <<= 1;
} else { } else {
// fake pllbuf settings // fake pllbuf settings
...@@ -278,14 +277,13 @@ struct dvb_frontend *zl10353_attach(const struct zl10353_config *config, ...@@ -278,14 +277,13 @@ struct dvb_frontend *zl10353_attach(const struct zl10353_config *config,
/* setup the state */ /* setup the state */
state->i2c = i2c; state->i2c = i2c;
memcpy(&state->config, config, sizeof(struct zl10353_config)); memcpy(&state->config, config, sizeof(struct zl10353_config));
memcpy(&state->ops, &zl10353_ops, sizeof(struct dvb_frontend_ops));
/* check if the demod is there */ /* check if the demod is there */
if (zl10353_read_register(state, CHIP_ID) != ID_ZL10353) if (zl10353_read_register(state, CHIP_ID) != ID_ZL10353)
goto error; goto error;
/* create dvb_frontend */ /* create dvb_frontend */
state->frontend.ops = &state->ops; memcpy(&state->frontend.ops, &zl10353_ops, sizeof(struct dvb_frontend_ops));
state->frontend.demodulator_priv = state; state->frontend.demodulator_priv = state;
return &state->frontend; return &state->frontend;
......
...@@ -473,8 +473,8 @@ static int lg_tdtpe001p_tuner_set_params(struct dvb_frontend *fe, ...@@ -473,8 +473,8 @@ static int lg_tdtpe001p_tuner_set_params(struct dvb_frontend *fe,
msg.buf = buf; msg.buf = buf;
msg.len = sizeof(buf); msg.len = sizeof(buf);
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
ret = i2c_transfer(&pluto->i2c_adap, &msg, 1); ret = i2c_transfer(&pluto->i2c_adap, &msg, 1);
if (ret < 0) if (ret < 0)
return ret; return ret;
...@@ -511,12 +511,12 @@ static int __devinit frontend_init(struct pluto *pluto) ...@@ -511,12 +511,12 @@ static int __devinit frontend_init(struct pluto *pluto)
dev_err(&pluto->pdev->dev, "could not attach frontend\n"); dev_err(&pluto->pdev->dev, "could not attach frontend\n");
return -ENODEV; return -ENODEV;
} }
pluto->fe->ops->tuner_ops.set_params = lg_tdtpe001p_tuner_set_params; pluto->fe->ops.tuner_ops.set_params = lg_tdtpe001p_tuner_set_params;
ret = dvb_register_frontend(&pluto->dvb_adapter, pluto->fe); ret = dvb_register_frontend(&pluto->dvb_adapter, pluto->fe);
if (ret < 0) { if (ret < 0) {
if (pluto->fe->ops->release) if (pluto->fe->ops.release)
pluto->fe->ops->release(pluto->fe); pluto->fe->ops.release(pluto->fe);
return ret; return ret;
} }
......
...@@ -1575,8 +1575,8 @@ static int alps_bsrv2_tuner_set_params(struct dvb_frontend* fe, struct dvb_front ...@@ -1575,8 +1575,8 @@ static int alps_bsrv2_tuner_set_params(struct dvb_frontend* fe, struct dvb_front
// NOTE: since we're using a prescaler of 2, we set the // NOTE: since we're using a prescaler of 2, we set the
// divisor frequency to 62.5kHz and divide by 125 above // divisor frequency to 62.5kHz and divide by 125 above
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer (&av7110->i2c_adap, &msg, 1) != 1) if (i2c_transfer (&av7110->i2c_adap, &msg, 1) != 1)
return -EIO; return -EIO;
return 0; return 0;
...@@ -1602,8 +1602,8 @@ static int alps_tdbe2_tuner_set_params(struct dvb_frontend* fe, struct dvb_front ...@@ -1602,8 +1602,8 @@ static int alps_tdbe2_tuner_set_params(struct dvb_frontend* fe, struct dvb_front
data[2] = 0x85 | ((div >> 10) & 0x60); data[2] = 0x85 | ((div >> 10) & 0x60);
data[3] = (params->frequency < 174000000 ? 0x88 : params->frequency < 470000000 ? 0x84 : 0x81); data[3] = (params->frequency < 174000000 ? 0x88 : params->frequency < 470000000 ? 0x84 : 0x81);
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(&av7110->i2c_adap, &msg, 1) != 1) if (i2c_transfer(&av7110->i2c_adap, &msg, 1) != 1)
return -EIO; return -EIO;
return 0; return 0;
...@@ -1632,8 +1632,8 @@ static int grundig_29504_451_tuner_set_params(struct dvb_frontend* fe, struct dv ...@@ -1632,8 +1632,8 @@ static int grundig_29504_451_tuner_set_params(struct dvb_frontend* fe, struct dv
data[2] = 0x8e; data[2] = 0x8e;
data[3] = 0x00; data[3] = 0x00;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(&av7110->i2c_adap, &msg, 1) != 1) if (i2c_transfer(&av7110->i2c_adap, &msg, 1) != 1)
return -EIO; return -EIO;
return 0; return 0;
...@@ -1660,8 +1660,8 @@ static int philips_cd1516_tuner_set_params(struct dvb_frontend* fe, struct dvb_f ...@@ -1660,8 +1660,8 @@ static int philips_cd1516_tuner_set_params(struct dvb_frontend* fe, struct dvb_f
data[2] = 0x8e; data[2] = 0x8e;
data[3] = (f < 174000000 ? 0xa1 : f < 470000000 ? 0x92 : 0x34); data[3] = (f < 174000000 ? 0xa1 : f < 470000000 ? 0x92 : 0x34);
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(&av7110->i2c_adap, &msg, 1) != 1) if (i2c_transfer(&av7110->i2c_adap, &msg, 1) != 1)
return -EIO; return -EIO;
return 0; return 0;
...@@ -1695,8 +1695,8 @@ static int alps_tdlb7_tuner_set_params(struct dvb_frontend* fe, struct dvb_front ...@@ -1695,8 +1695,8 @@ static int alps_tdlb7_tuner_set_params(struct dvb_frontend* fe, struct dvb_front
data[2] = 0x85; data[2] = 0x85;
data[3] = pwr << 6; data[3] = pwr << 6;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(&av7110->i2c_adap, &msg, 1) != 1) if (i2c_transfer(&av7110->i2c_adap, &msg, 1) != 1)
return -EIO; return -EIO;
return 0; return 0;
...@@ -1835,8 +1835,8 @@ static int nexusca_stv0297_tuner_set_params(struct dvb_frontend* fe, struct dvb_ ...@@ -1835,8 +1835,8 @@ static int nexusca_stv0297_tuner_set_params(struct dvb_frontend* fe, struct dvb_
else else
return -EINVAL; return -EINVAL;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(&av7110->i2c_adap, &msg, 1) != 1) { if (i2c_transfer(&av7110->i2c_adap, &msg, 1) != 1) {
printk("nexusca: pll transfer failed!\n"); printk("nexusca: pll transfer failed!\n");
return -EIO; return -EIO;
...@@ -1844,8 +1844,8 @@ static int nexusca_stv0297_tuner_set_params(struct dvb_frontend* fe, struct dvb_ ...@@ -1844,8 +1844,8 @@ static int nexusca_stv0297_tuner_set_params(struct dvb_frontend* fe, struct dvb_
// wait for PLL lock // wait for PLL lock
for(i = 0; i < 20; i++) { for(i = 0; i < 20; i++) {
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(&av7110->i2c_adap, &readmsg, 1) == 1) if (i2c_transfer(&av7110->i2c_adap, &readmsg, 1) == 1)
if (data[0] & 0x40) break; if (data[0] & 0x40) break;
msleep(10); msleep(10);
...@@ -1891,8 +1891,8 @@ static int grundig_29504_401_tuner_set_params(struct dvb_frontend* fe, struct dv ...@@ -1891,8 +1891,8 @@ static int grundig_29504_401_tuner_set_params(struct dvb_frontend* fe, struct dv
data[2] = ((div >> 10) & 0x60) | cfg; data[2] = ((div >> 10) & 0x60) | cfg;
data[3] = (cpump << 6) | band_select; data[3] = (cpump << 6) | band_select;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer (&av7110->i2c_adap, &msg, 1) != 1) return -EIO; if (i2c_transfer (&av7110->i2c_adap, &msg, 1) != 1) return -EIO;
return 0; return 0;
} }
...@@ -2085,7 +2085,7 @@ static int frontend_init(struct av7110 *av7110) ...@@ -2085,7 +2085,7 @@ static int frontend_init(struct av7110 *av7110)
av7110->fe = ves1820_attach(&philips_cd1516_config, av7110->fe = ves1820_attach(&philips_cd1516_config,
&av7110->i2c_adap, read_pwm(av7110)); &av7110->i2c_adap, read_pwm(av7110));
if (av7110->fe) { if (av7110->fe) {
av7110->fe->ops->tuner_ops.set_params = philips_cd1516_tuner_set_params; av7110->fe->ops.tuner_ops.set_params = philips_cd1516_tuner_set_params;
} }
break; break;
} }
...@@ -2099,10 +2099,10 @@ static int frontend_init(struct av7110 *av7110) ...@@ -2099,10 +2099,10 @@ static int frontend_init(struct av7110 *av7110)
// try the ALPS BSRV2 first of all // try the ALPS BSRV2 first of all
av7110->fe = ves1x93_attach(&alps_bsrv2_config, &av7110->i2c_adap); av7110->fe = ves1x93_attach(&alps_bsrv2_config, &av7110->i2c_adap);
if (av7110->fe) { if (av7110->fe) {
av7110->fe->ops->tuner_ops.set_params = alps_bsrv2_tuner_set_params; av7110->fe->ops.tuner_ops.set_params = alps_bsrv2_tuner_set_params;
av7110->fe->ops->diseqc_send_master_cmd = av7110_diseqc_send_master_cmd; av7110->fe->ops.diseqc_send_master_cmd = av7110_diseqc_send_master_cmd;
av7110->fe->ops->diseqc_send_burst = av7110_diseqc_send_burst; av7110->fe->ops.diseqc_send_burst = av7110_diseqc_send_burst;
av7110->fe->ops->set_tone = av7110_set_tone; av7110->fe->ops.set_tone = av7110_set_tone;
av7110->recover = dvb_s_recover; av7110->recover = dvb_s_recover;
break; break;
} }
...@@ -2110,12 +2110,12 @@ static int frontend_init(struct av7110 *av7110) ...@@ -2110,12 +2110,12 @@ static int frontend_init(struct av7110 *av7110)
// try the ALPS BSRU6 now // try the ALPS BSRU6 now
av7110->fe = stv0299_attach(&alps_bsru6_config, &av7110->i2c_adap); av7110->fe = stv0299_attach(&alps_bsru6_config, &av7110->i2c_adap);
if (av7110->fe) { if (av7110->fe) {
av7110->fe->ops->tuner_ops.set_params = alps_bsru6_tuner_set_params; av7110->fe->ops.tuner_ops.set_params = alps_bsru6_tuner_set_params;
av7110->fe->tuner_priv = &av7110->i2c_adap; av7110->fe->tuner_priv = &av7110->i2c_adap;
av7110->fe->ops->diseqc_send_master_cmd = av7110_diseqc_send_master_cmd; av7110->fe->ops.diseqc_send_master_cmd = av7110_diseqc_send_master_cmd;
av7110->fe->ops->diseqc_send_burst = av7110_diseqc_send_burst; av7110->fe->ops.diseqc_send_burst = av7110_diseqc_send_burst;
av7110->fe->ops->set_tone = av7110_set_tone; av7110->fe->ops.set_tone = av7110_set_tone;
av7110->recover = dvb_s_recover; av7110->recover = dvb_s_recover;
break; break;
} }
...@@ -2123,10 +2123,10 @@ static int frontend_init(struct av7110 *av7110) ...@@ -2123,10 +2123,10 @@ static int frontend_init(struct av7110 *av7110)
// Try the grundig 29504-451 // Try the grundig 29504-451
av7110->fe = tda8083_attach(&grundig_29504_451_config, &av7110->i2c_adap); av7110->fe = tda8083_attach(&grundig_29504_451_config, &av7110->i2c_adap);
if (av7110->fe) { if (av7110->fe) {
av7110->fe->ops->tuner_ops.set_params = grundig_29504_451_tuner_set_params; av7110->fe->ops.tuner_ops.set_params = grundig_29504_451_tuner_set_params;
av7110->fe->ops->diseqc_send_master_cmd = av7110_diseqc_send_master_cmd; av7110->fe->ops.diseqc_send_master_cmd = av7110_diseqc_send_master_cmd;
av7110->fe->ops->diseqc_send_burst = av7110_diseqc_send_burst; av7110->fe->ops.diseqc_send_burst = av7110_diseqc_send_burst;
av7110->fe->ops->set_tone = av7110_set_tone; av7110->fe->ops.set_tone = av7110_set_tone;
av7110->recover = dvb_s_recover; av7110->recover = dvb_s_recover;
break; break;
} }
...@@ -2138,7 +2138,7 @@ static int frontend_init(struct av7110 *av7110) ...@@ -2138,7 +2138,7 @@ static int frontend_init(struct av7110 *av7110)
av7110->fe = ves1820_attach(&philips_cd1516_config, &av7110->i2c_adap, av7110->fe = ves1820_attach(&philips_cd1516_config, &av7110->i2c_adap,
read_pwm(av7110)); read_pwm(av7110));
if (av7110->fe) { if (av7110->fe) {
av7110->fe->ops->tuner_ops.set_params = philips_cd1516_tuner_set_params; av7110->fe->ops.tuner_ops.set_params = philips_cd1516_tuner_set_params;
} }
break; break;
case 0x0003: case 0x0003:
...@@ -2146,7 +2146,7 @@ static int frontend_init(struct av7110 *av7110) ...@@ -2146,7 +2146,7 @@ static int frontend_init(struct av7110 *av7110)
av7110->fe = ves1820_attach(&alps_tdbe2_config, &av7110->i2c_adap, av7110->fe = ves1820_attach(&alps_tdbe2_config, &av7110->i2c_adap,
read_pwm(av7110)); read_pwm(av7110));
if (av7110->fe) { if (av7110->fe) {
av7110->fe->ops->tuner_ops.set_params = alps_tdbe2_tuner_set_params; av7110->fe->ops.tuner_ops.set_params = alps_tdbe2_tuner_set_params;
} }
break; break;
} }
...@@ -2157,7 +2157,7 @@ static int frontend_init(struct av7110 *av7110) ...@@ -2157,7 +2157,7 @@ static int frontend_init(struct av7110 *av7110)
// ALPS TDLB7 // ALPS TDLB7
av7110->fe = sp8870_attach(&alps_tdlb7_config, &av7110->i2c_adap); av7110->fe = sp8870_attach(&alps_tdlb7_config, &av7110->i2c_adap);
if (av7110->fe) { if (av7110->fe) {
av7110->fe->ops->tuner_ops.set_params = alps_tdlb7_tuner_set_params; av7110->fe->ops.tuner_ops.set_params = alps_tdlb7_tuner_set_params;
} }
break; break;
...@@ -2165,7 +2165,7 @@ static int frontend_init(struct av7110 *av7110) ...@@ -2165,7 +2165,7 @@ static int frontend_init(struct av7110 *av7110)
av7110->fe = ves1820_attach(&alps_tdbe2_config, &av7110->i2c_adap, read_pwm(av7110)); av7110->fe = ves1820_attach(&alps_tdbe2_config, &av7110->i2c_adap, read_pwm(av7110));
if (av7110->fe) { if (av7110->fe) {
av7110->fe->ops->tuner_ops.set_params = alps_tdbe2_tuner_set_params; av7110->fe->ops.tuner_ops.set_params = alps_tdbe2_tuner_set_params;
} }
break; break;
...@@ -2173,10 +2173,10 @@ static int frontend_init(struct av7110 *av7110) ...@@ -2173,10 +2173,10 @@ static int frontend_init(struct av7110 *av7110)
/* ALPS BSRV2 */ /* ALPS BSRV2 */
av7110->fe = ves1x93_attach(&alps_bsrv2_config, &av7110->i2c_adap); av7110->fe = ves1x93_attach(&alps_bsrv2_config, &av7110->i2c_adap);
if (av7110->fe) { if (av7110->fe) {
av7110->fe->ops->tuner_ops.set_params = alps_bsrv2_tuner_set_params; av7110->fe->ops.tuner_ops.set_params = alps_bsrv2_tuner_set_params;
av7110->fe->ops->diseqc_send_master_cmd = av7110_diseqc_send_master_cmd; av7110->fe->ops.diseqc_send_master_cmd = av7110_diseqc_send_master_cmd;
av7110->fe->ops->diseqc_send_burst = av7110_diseqc_send_burst; av7110->fe->ops.diseqc_send_burst = av7110_diseqc_send_burst;
av7110->fe->ops->set_tone = av7110_set_tone; av7110->fe->ops.set_tone = av7110_set_tone;
av7110->recover = dvb_s_recover; av7110->recover = dvb_s_recover;
} }
break; break;
...@@ -2185,10 +2185,10 @@ static int frontend_init(struct av7110 *av7110) ...@@ -2185,10 +2185,10 @@ static int frontend_init(struct av7110 *av7110)
/* Grundig 29504-451 */ /* Grundig 29504-451 */
av7110->fe = tda8083_attach(&grundig_29504_451_config, &av7110->i2c_adap); av7110->fe = tda8083_attach(&grundig_29504_451_config, &av7110->i2c_adap);
if (av7110->fe) { if (av7110->fe) {
av7110->fe->ops->tuner_ops.set_params = grundig_29504_451_tuner_set_params; av7110->fe->ops.tuner_ops.set_params = grundig_29504_451_tuner_set_params;
av7110->fe->ops->diseqc_send_master_cmd = av7110_diseqc_send_master_cmd; av7110->fe->ops.diseqc_send_master_cmd = av7110_diseqc_send_master_cmd;
av7110->fe->ops->diseqc_send_burst = av7110_diseqc_send_burst; av7110->fe->ops.diseqc_send_burst = av7110_diseqc_send_burst;
av7110->fe->ops->set_tone = av7110_set_tone; av7110->fe->ops.set_tone = av7110_set_tone;
av7110->recover = dvb_s_recover; av7110->recover = dvb_s_recover;
} }
break; break;
...@@ -2197,7 +2197,7 @@ static int frontend_init(struct av7110 *av7110) ...@@ -2197,7 +2197,7 @@ static int frontend_init(struct av7110 *av7110)
av7110->fe = l64781_attach(&grundig_29504_401_config, &av7110->i2c_adap); av7110->fe = l64781_attach(&grundig_29504_401_config, &av7110->i2c_adap);
if (av7110->fe) { if (av7110->fe) {
av7110->fe->ops->tuner_ops.set_params = grundig_29504_401_tuner_set_params; av7110->fe->ops.tuner_ops.set_params = grundig_29504_401_tuner_set_params;
} }
break; break;
...@@ -2205,7 +2205,7 @@ static int frontend_init(struct av7110 *av7110) ...@@ -2205,7 +2205,7 @@ static int frontend_init(struct av7110 *av7110)
av7110->fe = stv0297_attach(&nexusca_stv0297_config, &av7110->i2c_adap); av7110->fe = stv0297_attach(&nexusca_stv0297_config, &av7110->i2c_adap);
if (av7110->fe) { if (av7110->fe) {
av7110->fe->ops->tuner_ops.set_params = nexusca_stv0297_tuner_set_params; av7110->fe->ops.tuner_ops.set_params = nexusca_stv0297_tuner_set_params;
/* set TDA9819 into DVB mode */ /* set TDA9819 into DVB mode */
saa7146_setgpio(av7110->dev, 1, SAA7146_GPIO_OUTLO); // TDA9198 pin9(STD) saa7146_setgpio(av7110->dev, 1, SAA7146_GPIO_OUTLO); // TDA9198 pin9(STD)
...@@ -2221,16 +2221,16 @@ static int frontend_init(struct av7110 *av7110) ...@@ -2221,16 +2221,16 @@ static int frontend_init(struct av7110 *av7110)
/* ALPS BSBE1 */ /* ALPS BSBE1 */
av7110->fe = stv0299_attach(&alps_bsbe1_config, &av7110->i2c_adap); av7110->fe = stv0299_attach(&alps_bsbe1_config, &av7110->i2c_adap);
if (av7110->fe) { if (av7110->fe) {
av7110->fe->ops->tuner_ops.set_params = alps_bsbe1_tuner_set_params; av7110->fe->ops.tuner_ops.set_params = alps_bsbe1_tuner_set_params;
av7110->fe->tuner_priv = &av7110->i2c_adap; av7110->fe->tuner_priv = &av7110->i2c_adap;
if (lnbp21_attach(av7110->fe, &av7110->i2c_adap, 0, 0)) { if (lnbp21_attach(av7110->fe, &av7110->i2c_adap, 0, 0)) {
printk("dvb-ttpci: LNBP21 not found!\n"); printk("dvb-ttpci: LNBP21 not found!\n");
if (av7110->fe->ops->release) if (av7110->fe->ops.release)
av7110->fe->ops->release(av7110->fe); av7110->fe->ops.release(av7110->fe);
av7110->fe = NULL; av7110->fe = NULL;
} else { } else {
av7110->fe->ops->dishnetwork_send_legacy_command = NULL; av7110->fe->ops.dishnetwork_send_legacy_command = NULL;
av7110->recover = dvb_s_recover; av7110->recover = dvb_s_recover;
} }
} }
...@@ -2247,21 +2247,21 @@ static int frontend_init(struct av7110 *av7110) ...@@ -2247,21 +2247,21 @@ static int frontend_init(struct av7110 *av7110)
av7110->dev->pci->subsystem_vendor, av7110->dev->pci->subsystem_vendor,
av7110->dev->pci->subsystem_device); av7110->dev->pci->subsystem_device);
} else { } else {
FE_FUNC_OVERRIDE(av7110->fe->ops->init, av7110->fe_init, av7110_fe_init); FE_FUNC_OVERRIDE(av7110->fe->ops.init, av7110->fe_init, av7110_fe_init);
FE_FUNC_OVERRIDE(av7110->fe->ops->read_status, av7110->fe_read_status, av7110_fe_read_status); FE_FUNC_OVERRIDE(av7110->fe->ops.read_status, av7110->fe_read_status, av7110_fe_read_status);
FE_FUNC_OVERRIDE(av7110->fe->ops->diseqc_reset_overload, av7110->fe_diseqc_reset_overload, av7110_fe_diseqc_reset_overload); FE_FUNC_OVERRIDE(av7110->fe->ops.diseqc_reset_overload, av7110->fe_diseqc_reset_overload, av7110_fe_diseqc_reset_overload);
FE_FUNC_OVERRIDE(av7110->fe->ops->diseqc_send_master_cmd, av7110->fe_diseqc_send_master_cmd, av7110_fe_diseqc_send_master_cmd); FE_FUNC_OVERRIDE(av7110->fe->ops.diseqc_send_master_cmd, av7110->fe_diseqc_send_master_cmd, av7110_fe_diseqc_send_master_cmd);
FE_FUNC_OVERRIDE(av7110->fe->ops->diseqc_send_burst, av7110->fe_diseqc_send_burst, av7110_fe_diseqc_send_burst); FE_FUNC_OVERRIDE(av7110->fe->ops.diseqc_send_burst, av7110->fe_diseqc_send_burst, av7110_fe_diseqc_send_burst);
FE_FUNC_OVERRIDE(av7110->fe->ops->set_tone, av7110->fe_set_tone, av7110_fe_set_tone); FE_FUNC_OVERRIDE(av7110->fe->ops.set_tone, av7110->fe_set_tone, av7110_fe_set_tone);
FE_FUNC_OVERRIDE(av7110->fe->ops->set_voltage, av7110->fe_set_voltage, av7110_fe_set_voltage;) FE_FUNC_OVERRIDE(av7110->fe->ops.set_voltage, av7110->fe_set_voltage, av7110_fe_set_voltage;)
FE_FUNC_OVERRIDE(av7110->fe->ops->dishnetwork_send_legacy_command, av7110->fe_dishnetwork_send_legacy_command, av7110_fe_dishnetwork_send_legacy_command); FE_FUNC_OVERRIDE(av7110->fe->ops.dishnetwork_send_legacy_command, av7110->fe_dishnetwork_send_legacy_command, av7110_fe_dishnetwork_send_legacy_command);
FE_FUNC_OVERRIDE(av7110->fe->ops->set_frontend, av7110->fe_set_frontend, av7110_fe_set_frontend); FE_FUNC_OVERRIDE(av7110->fe->ops.set_frontend, av7110->fe_set_frontend, av7110_fe_set_frontend);
ret = dvb_register_frontend(&av7110->dvb_adapter, av7110->fe); ret = dvb_register_frontend(&av7110->dvb_adapter, av7110->fe);
if (ret < 0) { if (ret < 0) {
printk("av7110: Frontend registration failed!\n"); printk("av7110: Frontend registration failed!\n");
if (av7110->fe->ops->release) if (av7110->fe->ops.release)
av7110->fe->ops->release(av7110->fe); av7110->fe->ops.release(av7110->fe);
av7110->fe = NULL; av7110->fe = NULL;
} }
} }
......
...@@ -541,8 +541,8 @@ static int philips_su1278_ty_ci_tuner_set_params(struct dvb_frontend *fe, ...@@ -541,8 +541,8 @@ static int philips_su1278_ty_ci_tuner_set_params(struct dvb_frontend *fe,
else if (params->frequency < 2150000) else if (params->frequency < 2150000)
buf[3] |= 0xC0; buf[3] |= 0xC0;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(&budget->i2c_adap, &msg, 1) != 1) if (i2c_transfer(&budget->i2c_adap, &msg, 1) != 1)
return -EIO; return -EIO;
return 0; return 0;
...@@ -662,22 +662,22 @@ static int philips_su1278sh2_tua6100_tuner_set_params(struct dvb_frontend *fe, ...@@ -662,22 +662,22 @@ static int philips_su1278sh2_tua6100_tuner_set_params(struct dvb_frontend *fe,
reg0[1] |= 0x03; reg0[1] |= 0x03;
/* already enabled - do not reenable i2c repeater or TX fails */ /* already enabled - do not reenable i2c repeater or TX fails */
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
msg.buf = reg0; msg.buf = reg0;
msg.len = sizeof(reg0); msg.len = sizeof(reg0);
if (i2c_transfer(&budget->i2c_adap, &msg, 1) != 1) if (i2c_transfer(&budget->i2c_adap, &msg, 1) != 1)
return -EIO; return -EIO;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
msg.buf = reg1; msg.buf = reg1;
msg.len = sizeof(reg1); msg.len = sizeof(reg1);
if (i2c_transfer(&budget->i2c_adap, &msg, 1) != 1) if (i2c_transfer(&budget->i2c_adap, &msg, 1) != 1)
return -EIO; return -EIO;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
msg.buf = reg2; msg.buf = reg2;
msg.len = sizeof(reg2); msg.len = sizeof(reg2);
if (i2c_transfer(&budget->i2c_adap, &msg, 1) != 1) if (i2c_transfer(&budget->i2c_adap, &msg, 1) != 1)
...@@ -781,8 +781,8 @@ static int philips_cu1216_tuner_set_params(struct dvb_frontend *fe, struct dvb_f ...@@ -781,8 +781,8 @@ static int philips_cu1216_tuner_set_params(struct dvb_frontend *fe, struct dvb_f
buf[3] = (params->frequency < 150000000 ? 0x01 : buf[3] = (params->frequency < 150000000 ? 0x01 :
params->frequency < 445000000 ? 0x02 : 0x04); params->frequency < 445000000 ? 0x02 : 0x04);
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(&budget->i2c_adap, &msg, 1) != 1) if (i2c_transfer(&budget->i2c_adap, &msg, 1) != 1)
return -EIO; return -EIO;
return 0; return 0;
...@@ -802,8 +802,8 @@ static int philips_tu1216_tuner_init(struct dvb_frontend *fe) ...@@ -802,8 +802,8 @@ static int philips_tu1216_tuner_init(struct dvb_frontend *fe)
struct i2c_msg tuner_msg = {.addr = 0x60,.flags = 0,.buf = tu1216_init,.len = sizeof(tu1216_init) }; struct i2c_msg tuner_msg = {.addr = 0x60,.flags = 0,.buf = tu1216_init,.len = sizeof(tu1216_init) };
// setup PLL configuration // setup PLL configuration
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(&budget->i2c_adap, &tuner_msg, 1) != 1) if (i2c_transfer(&budget->i2c_adap, &tuner_msg, 1) != 1)
return -EIO; return -EIO;
msleep(1); msleep(1);
...@@ -885,8 +885,8 @@ static int philips_tu1216_tuner_set_params(struct dvb_frontend *fe, struct dvb_f ...@@ -885,8 +885,8 @@ static int philips_tu1216_tuner_set_params(struct dvb_frontend *fe, struct dvb_f
tuner_buf[2] = 0xca; tuner_buf[2] = 0xca;
tuner_buf[3] = (cp << 5) | (filter << 3) | band; tuner_buf[3] = (cp << 5) | (filter << 3) | band;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(&budget->i2c_adap, &tuner_msg, 1) != 1) if (i2c_transfer(&budget->i2c_adap, &tuner_msg, 1) != 1)
return -EIO; return -EIO;
...@@ -971,8 +971,8 @@ static int philips_sd1878_tda8261_tuner_set_params(struct dvb_frontend *fe, ...@@ -971,8 +971,8 @@ static int philips_sd1878_tda8261_tuner_set_params(struct dvb_frontend *fe,
params->frequency, 0); params->frequency, 0);
if(rc < 0) return rc; if(rc < 0) return rc;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if(i2c_transfer(&budget->i2c_adap, &tuner_msg, 1) != 1) if(i2c_transfer(&budget->i2c_adap, &tuner_msg, 1) != 1)
return -EIO; return -EIO;
...@@ -1099,13 +1099,13 @@ static void frontend_init(struct budget_av *budget_av) ...@@ -1099,13 +1099,13 @@ static void frontend_init(struct budget_av *budget_av)
fe = stv0299_attach(&cinergy_1200s_1894_0010_config, fe = stv0299_attach(&cinergy_1200s_1894_0010_config,
&budget_av->budget.i2c_adap); &budget_av->budget.i2c_adap);
if (fe) { if (fe) {
fe->ops->tuner_ops.set_params = philips_su1278sh2_tua6100_tuner_set_params; fe->ops.tuner_ops.set_params = philips_su1278sh2_tua6100_tuner_set_params;
} }
} else { } else {
fe = stv0299_attach(&typhoon_config, fe = stv0299_attach(&typhoon_config,
&budget_av->budget.i2c_adap); &budget_av->budget.i2c_adap);
if (fe) { if (fe) {
fe->ops->tuner_ops.set_params = philips_su1278_ty_ci_tuner_set_params; fe->ops.tuner_ops.set_params = philips_su1278_ty_ci_tuner_set_params;
} }
} }
break; break;
...@@ -1117,7 +1117,7 @@ static void frontend_init(struct budget_av *budget_av) ...@@ -1117,7 +1117,7 @@ static void frontend_init(struct budget_av *budget_av)
fe = stv0299_attach(&philips_sd1878_config, fe = stv0299_attach(&philips_sd1878_config,
&budget_av->budget.i2c_adap); &budget_av->budget.i2c_adap);
if (fe) { if (fe) {
fe->ops->tuner_ops.set_params = philips_sd1878_tda8261_tuner_set_params; fe->ops.tuner_ops.set_params = philips_sd1878_tda8261_tuner_set_params;
} }
break; break;
...@@ -1126,7 +1126,7 @@ static void frontend_init(struct budget_av *budget_av) ...@@ -1126,7 +1126,7 @@ static void frontend_init(struct budget_av *budget_av)
fe = stv0299_attach(&typhoon_config, fe = stv0299_attach(&typhoon_config,
&budget_av->budget.i2c_adap); &budget_av->budget.i2c_adap);
if (fe) { if (fe) {
fe->ops->tuner_ops.set_params = philips_su1278_ty_ci_tuner_set_params; fe->ops.tuner_ops.set_params = philips_su1278_ty_ci_tuner_set_params;
} }
break; break;
...@@ -1134,7 +1134,7 @@ static void frontend_init(struct budget_av *budget_av) ...@@ -1134,7 +1134,7 @@ static void frontend_init(struct budget_av *budget_av)
fe = stv0299_attach(&cinergy_1200s_config, fe = stv0299_attach(&cinergy_1200s_config,
&budget_av->budget.i2c_adap); &budget_av->budget.i2c_adap);
if (fe) { if (fe) {
fe->ops->tuner_ops.set_params = philips_su1278_ty_ci_tuner_set_params; fe->ops.tuner_ops.set_params = philips_su1278_ty_ci_tuner_set_params;
} }
break; break;
...@@ -1147,9 +1147,9 @@ static void frontend_init(struct budget_av *budget_av) ...@@ -1147,9 +1147,9 @@ static void frontend_init(struct budget_av *budget_av)
read_pwm(budget_av)); read_pwm(budget_av));
if (fe) { if (fe) {
budget_av->tda10021_poclkp = 1; budget_av->tda10021_poclkp = 1;
budget_av->tda10021_set_frontend = fe->ops->set_frontend; budget_av->tda10021_set_frontend = fe->ops.set_frontend;
fe->ops->set_frontend = tda10021_set_frontend; fe->ops.set_frontend = tda10021_set_frontend;
fe->ops->tuner_ops.set_params = philips_cu1216_tuner_set_params; fe->ops.tuner_ops.set_params = philips_cu1216_tuner_set_params;
} }
break; break;
...@@ -1160,8 +1160,8 @@ static void frontend_init(struct budget_av *budget_av) ...@@ -1160,8 +1160,8 @@ static void frontend_init(struct budget_av *budget_av)
fe = tda10046_attach(&philips_tu1216_config, fe = tda10046_attach(&philips_tu1216_config,
&budget_av->budget.i2c_adap); &budget_av->budget.i2c_adap);
if (fe) { if (fe) {
fe->ops->tuner_ops.init = philips_tu1216_tuner_init; fe->ops.tuner_ops.init = philips_tu1216_tuner_init;
fe->ops->tuner_ops.set_params = philips_tu1216_tuner_set_params; fe->ops.tuner_ops.set_params = philips_tu1216_tuner_set_params;
} }
break; break;
} }
...@@ -1181,8 +1181,8 @@ static void frontend_init(struct budget_av *budget_av) ...@@ -1181,8 +1181,8 @@ static void frontend_init(struct budget_av *budget_av)
if (dvb_register_frontend(&budget_av->budget.dvb_adapter, if (dvb_register_frontend(&budget_av->budget.dvb_adapter,
budget_av->budget.dvb_frontend)) { budget_av->budget.dvb_frontend)) {
printk(KERN_ERR "budget-av: Frontend registration failed!\n"); printk(KERN_ERR "budget-av: Frontend registration failed!\n");
if (budget_av->budget.dvb_frontend->ops->release) if (budget_av->budget.dvb_frontend->ops.release)
budget_av->budget.dvb_frontend->ops->release(budget_av->budget.dvb_frontend); budget_av->budget.dvb_frontend->ops.release(budget_av->budget.dvb_frontend);
budget_av->budget.dvb_frontend = NULL; budget_av->budget.dvb_frontend = NULL;
} }
} }
......
...@@ -649,8 +649,8 @@ static int philips_su1278_tt_tuner_set_params(struct dvb_frontend *fe, ...@@ -649,8 +649,8 @@ static int philips_su1278_tt_tuner_set_params(struct dvb_frontend *fe,
else if (params->frequency < 2150000) else if (params->frequency < 2150000)
buf[3] |= 0xC0; buf[3] |= 0xC0;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(&budget_ci->budget.i2c_adap, &msg, 1) != 1) if (i2c_transfer(&budget_ci->budget.i2c_adap, &msg, 1) != 1)
return -EIO; return -EIO;
return 0; return 0;
...@@ -680,8 +680,8 @@ static int philips_tdm1316l_tuner_init(struct dvb_frontend *fe) ...@@ -680,8 +680,8 @@ static int philips_tdm1316l_tuner_init(struct dvb_frontend *fe)
sizeof(td1316_init) }; sizeof(td1316_init) };
// setup PLL configuration // setup PLL configuration
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(&budget_ci->budget.i2c_adap, &tuner_msg, 1) != 1) if (i2c_transfer(&budget_ci->budget.i2c_adap, &tuner_msg, 1) != 1)
return -EIO; return -EIO;
msleep(1); msleep(1);
...@@ -690,11 +690,11 @@ static int philips_tdm1316l_tuner_init(struct dvb_frontend *fe) ...@@ -690,11 +690,11 @@ static int philips_tdm1316l_tuner_init(struct dvb_frontend *fe)
tuner_msg.addr = 0x65; tuner_msg.addr = 0x65;
tuner_msg.buf = disable_mc44BC374c; tuner_msg.buf = disable_mc44BC374c;
tuner_msg.len = sizeof(disable_mc44BC374c); tuner_msg.len = sizeof(disable_mc44BC374c);
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(&budget_ci->budget.i2c_adap, &tuner_msg, 1) != 1) { if (i2c_transfer(&budget_ci->budget.i2c_adap, &tuner_msg, 1) != 1) {
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
i2c_transfer(&budget_ci->budget.i2c_adap, &tuner_msg, 1); i2c_transfer(&budget_ci->budget.i2c_adap, &tuner_msg, 1);
} }
...@@ -777,8 +777,8 @@ static int philips_tdm1316l_tuner_set_params(struct dvb_frontend *fe, struct dvb ...@@ -777,8 +777,8 @@ static int philips_tdm1316l_tuner_set_params(struct dvb_frontend *fe, struct dvb
tuner_buf[2] = 0xca; tuner_buf[2] = 0xca;
tuner_buf[3] = (cp << 5) | (filter << 3) | band; tuner_buf[3] = (cp << 5) | (filter << 3) | band;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(&budget_ci->budget.i2c_adap, &tuner_msg, 1) != 1) if (i2c_transfer(&budget_ci->budget.i2c_adap, &tuner_msg, 1) != 1)
return -EIO; return -EIO;
...@@ -863,15 +863,15 @@ static int dvbc_philips_tdm1316l_tuner_set_params(struct dvb_frontend *fe, struc ...@@ -863,15 +863,15 @@ static int dvbc_philips_tdm1316l_tuner_set_params(struct dvb_frontend *fe, struc
tuner_buf[3] = (cp << 5) | (filter << 3) | band; tuner_buf[3] = (cp << 5) | (filter << 3) | band;
tuner_buf[4] = 0x80; tuner_buf[4] = 0x80;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(&budget_ci->budget.i2c_adap, &tuner_msg, 1) != 1) if (i2c_transfer(&budget_ci->budget.i2c_adap, &tuner_msg, 1) != 1)
return -EIO; return -EIO;
msleep(50); msleep(50);
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(&budget_ci->budget.i2c_adap, &tuner_msg, 1) != 1) if (i2c_transfer(&budget_ci->budget.i2c_adap, &tuner_msg, 1) != 1)
return -EIO; return -EIO;
...@@ -990,7 +990,7 @@ static void frontend_init(struct budget_ci *budget_ci) ...@@ -990,7 +990,7 @@ static void frontend_init(struct budget_ci *budget_ci)
budget_ci->budget.dvb_frontend = budget_ci->budget.dvb_frontend =
stv0299_attach(&alps_bsru6_config, &budget_ci->budget.i2c_adap); stv0299_attach(&alps_bsru6_config, &budget_ci->budget.i2c_adap);
if (budget_ci->budget.dvb_frontend) { if (budget_ci->budget.dvb_frontend) {
budget_ci->budget.dvb_frontend->ops->tuner_ops.set_params = alps_bsru6_tuner_set_params; budget_ci->budget.dvb_frontend->ops.tuner_ops.set_params = alps_bsru6_tuner_set_params;
budget_ci->budget.dvb_frontend->tuner_priv = &budget_ci->budget.i2c_adap; budget_ci->budget.dvb_frontend->tuner_priv = &budget_ci->budget.i2c_adap;
break; break;
} }
...@@ -1000,7 +1000,7 @@ static void frontend_init(struct budget_ci *budget_ci) ...@@ -1000,7 +1000,7 @@ static void frontend_init(struct budget_ci *budget_ci)
budget_ci->budget.dvb_frontend = budget_ci->budget.dvb_frontend =
stv0299_attach(&philips_su1278_tt_config, &budget_ci->budget.i2c_adap); stv0299_attach(&philips_su1278_tt_config, &budget_ci->budget.i2c_adap);
if (budget_ci->budget.dvb_frontend) { if (budget_ci->budget.dvb_frontend) {
budget_ci->budget.dvb_frontend->ops->tuner_ops.set_params = philips_su1278_tt_tuner_set_params; budget_ci->budget.dvb_frontend->ops.tuner_ops.set_params = philips_su1278_tt_tuner_set_params;
break; break;
} }
break; break;
...@@ -1010,7 +1010,7 @@ static void frontend_init(struct budget_ci *budget_ci) ...@@ -1010,7 +1010,7 @@ static void frontend_init(struct budget_ci *budget_ci)
budget_ci->budget.dvb_frontend = budget_ci->budget.dvb_frontend =
stv0297_attach(&dvbc_philips_tdm1316l_config, &budget_ci->budget.i2c_adap); stv0297_attach(&dvbc_philips_tdm1316l_config, &budget_ci->budget.i2c_adap);
if (budget_ci->budget.dvb_frontend) { if (budget_ci->budget.dvb_frontend) {
budget_ci->budget.dvb_frontend->ops->tuner_ops.set_params = dvbc_philips_tdm1316l_tuner_set_params; budget_ci->budget.dvb_frontend->ops.tuner_ops.set_params = dvbc_philips_tdm1316l_tuner_set_params;
break; break;
} }
break; break;
...@@ -1020,8 +1020,8 @@ static void frontend_init(struct budget_ci *budget_ci) ...@@ -1020,8 +1020,8 @@ static void frontend_init(struct budget_ci *budget_ci)
budget_ci->budget.dvb_frontend = budget_ci->budget.dvb_frontend =
tda10045_attach(&philips_tdm1316l_config, &budget_ci->budget.i2c_adap); tda10045_attach(&philips_tdm1316l_config, &budget_ci->budget.i2c_adap);
if (budget_ci->budget.dvb_frontend) { if (budget_ci->budget.dvb_frontend) {
budget_ci->budget.dvb_frontend->ops->tuner_ops.init = philips_tdm1316l_tuner_init; budget_ci->budget.dvb_frontend->ops.tuner_ops.init = philips_tdm1316l_tuner_init;
budget_ci->budget.dvb_frontend->ops->tuner_ops.set_params = philips_tdm1316l_tuner_set_params; budget_ci->budget.dvb_frontend->ops.tuner_ops.set_params = philips_tdm1316l_tuner_set_params;
break; break;
} }
break; break;
...@@ -1031,8 +1031,8 @@ static void frontend_init(struct budget_ci *budget_ci) ...@@ -1031,8 +1031,8 @@ static void frontend_init(struct budget_ci *budget_ci)
budget_ci->budget.dvb_frontend = budget_ci->budget.dvb_frontend =
tda10046_attach(&philips_tdm1316l_config, &budget_ci->budget.i2c_adap); tda10046_attach(&philips_tdm1316l_config, &budget_ci->budget.i2c_adap);
if (budget_ci->budget.dvb_frontend) { if (budget_ci->budget.dvb_frontend) {
budget_ci->budget.dvb_frontend->ops->tuner_ops.init = philips_tdm1316l_tuner_init; budget_ci->budget.dvb_frontend->ops.tuner_ops.init = philips_tdm1316l_tuner_init;
budget_ci->budget.dvb_frontend->ops->tuner_ops.set_params = philips_tdm1316l_tuner_set_params; budget_ci->budget.dvb_frontend->ops.tuner_ops.set_params = philips_tdm1316l_tuner_set_params;
break; break;
} }
break; break;
...@@ -1040,14 +1040,14 @@ static void frontend_init(struct budget_ci *budget_ci) ...@@ -1040,14 +1040,14 @@ static void frontend_init(struct budget_ci *budget_ci)
case 0x1017: // TT S-1500 PCI case 0x1017: // TT S-1500 PCI
budget_ci->budget.dvb_frontend = stv0299_attach(&alps_bsbe1_config, &budget_ci->budget.i2c_adap); budget_ci->budget.dvb_frontend = stv0299_attach(&alps_bsbe1_config, &budget_ci->budget.i2c_adap);
if (budget_ci->budget.dvb_frontend) { if (budget_ci->budget.dvb_frontend) {
budget_ci->budget.dvb_frontend->ops->tuner_ops.set_params = alps_bsbe1_tuner_set_params; budget_ci->budget.dvb_frontend->ops.tuner_ops.set_params = alps_bsbe1_tuner_set_params;
budget_ci->budget.dvb_frontend->tuner_priv = &budget_ci->budget.i2c_adap; budget_ci->budget.dvb_frontend->tuner_priv = &budget_ci->budget.i2c_adap;
budget_ci->budget.dvb_frontend->ops->dishnetwork_send_legacy_command = NULL; budget_ci->budget.dvb_frontend->ops.dishnetwork_send_legacy_command = NULL;
if (lnbp21_attach(budget_ci->budget.dvb_frontend, &budget_ci->budget.i2c_adap, LNBP21_LLC, 0)) { if (lnbp21_attach(budget_ci->budget.dvb_frontend, &budget_ci->budget.i2c_adap, LNBP21_LLC, 0)) {
printk("%s: No LNBP21 found!\n", __FUNCTION__); printk("%s: No LNBP21 found!\n", __FUNCTION__);
if (budget_ci->budget.dvb_frontend->ops->release) if (budget_ci->budget.dvb_frontend->ops.release)
budget_ci->budget.dvb_frontend->ops->release(budget_ci->budget.dvb_frontend); budget_ci->budget.dvb_frontend->ops.release(budget_ci->budget.dvb_frontend);
budget_ci->budget.dvb_frontend = NULL; budget_ci->budget.dvb_frontend = NULL;
} }
} }
...@@ -1065,8 +1065,8 @@ static void frontend_init(struct budget_ci *budget_ci) ...@@ -1065,8 +1065,8 @@ static void frontend_init(struct budget_ci *budget_ci)
if (dvb_register_frontend if (dvb_register_frontend
(&budget_ci->budget.dvb_adapter, budget_ci->budget.dvb_frontend)) { (&budget_ci->budget.dvb_adapter, budget_ci->budget.dvb_frontend)) {
printk("budget-ci: Frontend registration failed!\n"); printk("budget-ci: Frontend registration failed!\n");
if (budget_ci->budget.dvb_frontend->ops->release) if (budget_ci->budget.dvb_frontend->ops.release)
budget_ci->budget.dvb_frontend->ops->release(budget_ci->budget.dvb_frontend); budget_ci->budget.dvb_frontend->ops.release(budget_ci->budget.dvb_frontend);
budget_ci->budget.dvb_frontend = NULL; budget_ci->budget.dvb_frontend = NULL;
} }
} }
......
...@@ -281,8 +281,8 @@ static int alps_bsrv2_tuner_set_params(struct dvb_frontend* fe, struct dvb_front ...@@ -281,8 +281,8 @@ static int alps_bsrv2_tuner_set_params(struct dvb_frontend* fe, struct dvb_front
// NOTE: since we're using a prescaler of 2, we set the // NOTE: since we're using a prescaler of 2, we set the
// divisor frequency to 62.5kHz and divide by 125 above // divisor frequency to 62.5kHz and divide by 125 above
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer (&budget->i2c_adap, &msg, 1) != 1) if (i2c_transfer (&budget->i2c_adap, &msg, 1) != 1)
return -EIO; return -EIO;
return 0; return 0;
...@@ -307,8 +307,8 @@ static int grundig_29504_451_tuner_set_params(struct dvb_frontend* fe, struct dv ...@@ -307,8 +307,8 @@ static int grundig_29504_451_tuner_set_params(struct dvb_frontend* fe, struct dv
data[2] = 0x8e; data[2] = 0x8e;
data[3] = 0x00; data[3] = 0x00;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer (&budget->i2c_adap, &msg, 1) != 1) if (i2c_transfer (&budget->i2c_adap, &msg, 1) != 1)
return -EIO; return -EIO;
return 0; return 0;
...@@ -327,32 +327,32 @@ static void frontend_init(struct budget_patch* budget) ...@@ -327,32 +327,32 @@ static void frontend_init(struct budget_patch* budget)
// try the ALPS BSRV2 first of all // try the ALPS BSRV2 first of all
budget->dvb_frontend = ves1x93_attach(&alps_bsrv2_config, &budget->i2c_adap); budget->dvb_frontend = ves1x93_attach(&alps_bsrv2_config, &budget->i2c_adap);
if (budget->dvb_frontend) { if (budget->dvb_frontend) {
budget->dvb_frontend->ops->tuner_ops.set_params = alps_bsrv2_tuner_set_params; budget->dvb_frontend->ops.tuner_ops.set_params = alps_bsrv2_tuner_set_params;
budget->dvb_frontend->ops->diseqc_send_master_cmd = budget_patch_diseqc_send_master_cmd; budget->dvb_frontend->ops.diseqc_send_master_cmd = budget_patch_diseqc_send_master_cmd;
budget->dvb_frontend->ops->diseqc_send_burst = budget_patch_diseqc_send_burst; budget->dvb_frontend->ops.diseqc_send_burst = budget_patch_diseqc_send_burst;
budget->dvb_frontend->ops->set_tone = budget_patch_set_tone; budget->dvb_frontend->ops.set_tone = budget_patch_set_tone;
break; break;
} }
// try the ALPS BSRU6 now // try the ALPS BSRU6 now
budget->dvb_frontend = stv0299_attach(&alps_bsru6_config, &budget->i2c_adap); budget->dvb_frontend = stv0299_attach(&alps_bsru6_config, &budget->i2c_adap);
if (budget->dvb_frontend) { if (budget->dvb_frontend) {
budget->dvb_frontend->ops->tuner_ops.set_params = alps_bsru6_tuner_set_params; budget->dvb_frontend->ops.tuner_ops.set_params = alps_bsru6_tuner_set_params;
budget->dvb_frontend->tuner_priv = &budget->i2c_adap; budget->dvb_frontend->tuner_priv = &budget->i2c_adap;
budget->dvb_frontend->ops->diseqc_send_master_cmd = budget_diseqc_send_master_cmd; budget->dvb_frontend->ops.diseqc_send_master_cmd = budget_diseqc_send_master_cmd;
budget->dvb_frontend->ops->diseqc_send_burst = budget_diseqc_send_burst; budget->dvb_frontend->ops.diseqc_send_burst = budget_diseqc_send_burst;
budget->dvb_frontend->ops->set_tone = budget_set_tone; budget->dvb_frontend->ops.set_tone = budget_set_tone;
break; break;
} }
// Try the grundig 29504-451 // Try the grundig 29504-451
budget->dvb_frontend = tda8083_attach(&grundig_29504_451_config, &budget->i2c_adap); budget->dvb_frontend = tda8083_attach(&grundig_29504_451_config, &budget->i2c_adap);
if (budget->dvb_frontend) { if (budget->dvb_frontend) {
budget->dvb_frontend->ops->tuner_ops.set_params = grundig_29504_451_tuner_set_params; budget->dvb_frontend->ops.tuner_ops.set_params = grundig_29504_451_tuner_set_params;
budget->dvb_frontend->ops->diseqc_send_master_cmd = budget_diseqc_send_master_cmd; budget->dvb_frontend->ops.diseqc_send_master_cmd = budget_diseqc_send_master_cmd;
budget->dvb_frontend->ops->diseqc_send_burst = budget_diseqc_send_burst; budget->dvb_frontend->ops.diseqc_send_burst = budget_diseqc_send_burst;
budget->dvb_frontend->ops->set_tone = budget_set_tone; budget->dvb_frontend->ops.set_tone = budget_set_tone;
break; break;
} }
break; break;
...@@ -367,8 +367,8 @@ static void frontend_init(struct budget_patch* budget) ...@@ -367,8 +367,8 @@ static void frontend_init(struct budget_patch* budget)
} else { } else {
if (dvb_register_frontend(&budget->dvb_adapter, budget->dvb_frontend)) { if (dvb_register_frontend(&budget->dvb_adapter, budget->dvb_frontend)) {
printk("budget-av: Frontend registration failed!\n"); printk("budget-av: Frontend registration failed!\n");
if (budget->dvb_frontend->ops->release) if (budget->dvb_frontend->ops.release)
budget->dvb_frontend->ops->release(budget->dvb_frontend); budget->dvb_frontend->ops.release(budget->dvb_frontend);
budget->dvb_frontend = NULL; budget->dvb_frontend = NULL;
} }
} }
......
...@@ -209,8 +209,8 @@ static int alps_bsrv2_tuner_set_params(struct dvb_frontend* fe, struct dvb_front ...@@ -209,8 +209,8 @@ static int alps_bsrv2_tuner_set_params(struct dvb_frontend* fe, struct dvb_front
// NOTE: since we're using a prescaler of 2, we set the // NOTE: since we're using a prescaler of 2, we set the
// divisor frequency to 62.5kHz and divide by 125 above // divisor frequency to 62.5kHz and divide by 125 above
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer (&budget->i2c_adap, &msg, 1) != 1) return -EIO; if (i2c_transfer (&budget->i2c_adap, &msg, 1) != 1) return -EIO;
return 0; return 0;
} }
...@@ -236,8 +236,8 @@ static int alps_tdbe2_tuner_set_params(struct dvb_frontend* fe, struct dvb_front ...@@ -236,8 +236,8 @@ static int alps_tdbe2_tuner_set_params(struct dvb_frontend* fe, struct dvb_front
data[2] = 0x85 | ((div >> 10) & 0x60); data[2] = 0x85 | ((div >> 10) & 0x60);
data[3] = (params->frequency < 174000000 ? 0x88 : params->frequency < 470000000 ? 0x84 : 0x81); data[3] = (params->frequency < 174000000 ? 0x88 : params->frequency < 470000000 ? 0x84 : 0x81);
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer (&budget->i2c_adap, &msg, 1) != 1) return -EIO; if (i2c_transfer (&budget->i2c_adap, &msg, 1) != 1) return -EIO;
return 0; return 0;
} }
...@@ -276,8 +276,8 @@ static int grundig_29504_401_tuner_set_params(struct dvb_frontend* fe, struct dv ...@@ -276,8 +276,8 @@ static int grundig_29504_401_tuner_set_params(struct dvb_frontend* fe, struct dv
data[2] = ((div >> 10) & 0x60) | cfg; data[2] = ((div >> 10) & 0x60) | cfg;
data[3] = (cpump << 6) | band_select; data[3] = (cpump << 6) | band_select;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer (&budget->i2c_adap, &msg, 1) != 1) return -EIO; if (i2c_transfer (&budget->i2c_adap, &msg, 1) != 1) return -EIO;
return 0; return 0;
} }
...@@ -299,8 +299,8 @@ static int grundig_29504_451_tuner_set_params(struct dvb_frontend* fe, struct dv ...@@ -299,8 +299,8 @@ static int grundig_29504_451_tuner_set_params(struct dvb_frontend* fe, struct dv
data[2] = 0x8e; data[2] = 0x8e;
data[3] = 0x00; data[3] = 0x00;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer (&budget->i2c_adap, &msg, 1) != 1) return -EIO; if (i2c_transfer (&budget->i2c_adap, &msg, 1) != 1) return -EIO;
return 0; return 0;
} }
...@@ -330,8 +330,8 @@ static int s5h1420_tuner_set_params(struct dvb_frontend* fe, struct dvb_frontend ...@@ -330,8 +330,8 @@ static int s5h1420_tuner_set_params(struct dvb_frontend* fe, struct dvb_frontend
else else
data[3] = 0xc0; data[3] = 0xc0;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer (&budget->i2c_adap, &msg, 1) != 1) return -EIO; if (i2c_transfer (&budget->i2c_adap, &msg, 1) != 1) return -EIO;
return 0; return 0;
...@@ -363,21 +363,21 @@ static void frontend_init(struct budget *budget) ...@@ -363,21 +363,21 @@ static void frontend_init(struct budget *budget)
// try the ALPS BSRV2 first of all // try the ALPS BSRV2 first of all
budget->dvb_frontend = ves1x93_attach(&alps_bsrv2_config, &budget->i2c_adap); budget->dvb_frontend = ves1x93_attach(&alps_bsrv2_config, &budget->i2c_adap);
if (budget->dvb_frontend) { if (budget->dvb_frontend) {
budget->dvb_frontend->ops->tuner_ops.set_params = alps_bsrv2_tuner_set_params; budget->dvb_frontend->ops.tuner_ops.set_params = alps_bsrv2_tuner_set_params;
budget->dvb_frontend->ops->diseqc_send_master_cmd = budget_diseqc_send_master_cmd; budget->dvb_frontend->ops.diseqc_send_master_cmd = budget_diseqc_send_master_cmd;
budget->dvb_frontend->ops->diseqc_send_burst = budget_diseqc_send_burst; budget->dvb_frontend->ops.diseqc_send_burst = budget_diseqc_send_burst;
budget->dvb_frontend->ops->set_tone = budget_set_tone; budget->dvb_frontend->ops.set_tone = budget_set_tone;
break; break;
} }
// try the ALPS BSRU6 now // try the ALPS BSRU6 now
budget->dvb_frontend = stv0299_attach(&alps_bsru6_config, &budget->i2c_adap); budget->dvb_frontend = stv0299_attach(&alps_bsru6_config, &budget->i2c_adap);
if (budget->dvb_frontend) { if (budget->dvb_frontend) {
budget->dvb_frontend->ops->tuner_ops.set_params = alps_bsru6_tuner_set_params; budget->dvb_frontend->ops.tuner_ops.set_params = alps_bsru6_tuner_set_params;
budget->dvb_frontend->tuner_priv = &budget->i2c_adap; budget->dvb_frontend->tuner_priv = &budget->i2c_adap;
budget->dvb_frontend->ops->diseqc_send_master_cmd = budget_diseqc_send_master_cmd; budget->dvb_frontend->ops.diseqc_send_master_cmd = budget_diseqc_send_master_cmd;
budget->dvb_frontend->ops->diseqc_send_burst = budget_diseqc_send_burst; budget->dvb_frontend->ops.diseqc_send_burst = budget_diseqc_send_burst;
budget->dvb_frontend->ops->set_tone = budget_set_tone; budget->dvb_frontend->ops.set_tone = budget_set_tone;
break; break;
} }
break; break;
...@@ -386,7 +386,7 @@ static void frontend_init(struct budget *budget) ...@@ -386,7 +386,7 @@ static void frontend_init(struct budget *budget)
budget->dvb_frontend = ves1820_attach(&alps_tdbe2_config, &budget->i2c_adap, read_pwm(budget)); budget->dvb_frontend = ves1820_attach(&alps_tdbe2_config, &budget->i2c_adap, read_pwm(budget));
if (budget->dvb_frontend) { if (budget->dvb_frontend) {
budget->dvb_frontend->ops->tuner_ops.set_params = alps_tdbe2_tuner_set_params; budget->dvb_frontend->ops.tuner_ops.set_params = alps_tdbe2_tuner_set_params;
break; break;
} }
break; break;
...@@ -395,7 +395,7 @@ static void frontend_init(struct budget *budget) ...@@ -395,7 +395,7 @@ static void frontend_init(struct budget *budget)
budget->dvb_frontend = l64781_attach(&grundig_29504_401_config, &budget->i2c_adap); budget->dvb_frontend = l64781_attach(&grundig_29504_401_config, &budget->i2c_adap);
if (budget->dvb_frontend) { if (budget->dvb_frontend) {
budget->dvb_frontend->ops->tuner_ops.set_params = grundig_29504_401_tuner_set_params; budget->dvb_frontend->ops.tuner_ops.set_params = grundig_29504_401_tuner_set_params;
break; break;
} }
break; break;
...@@ -403,26 +403,26 @@ static void frontend_init(struct budget *budget) ...@@ -403,26 +403,26 @@ static void frontend_init(struct budget *budget)
case 0x4f60: // Fujitsu Siemens Activy Budget-S PCI rev AL (stv0299/ALPS BSRU6(tsa5059)) case 0x4f60: // Fujitsu Siemens Activy Budget-S PCI rev AL (stv0299/ALPS BSRU6(tsa5059))
budget->dvb_frontend = stv0299_attach(&alps_bsru6_config, &budget->i2c_adap); budget->dvb_frontend = stv0299_attach(&alps_bsru6_config, &budget->i2c_adap);
if (budget->dvb_frontend) { if (budget->dvb_frontend) {
budget->dvb_frontend->ops->tuner_ops.set_params = alps_bsru6_tuner_set_params; budget->dvb_frontend->ops.tuner_ops.set_params = alps_bsru6_tuner_set_params;
budget->dvb_frontend->tuner_priv = &budget->i2c_adap; budget->dvb_frontend->tuner_priv = &budget->i2c_adap;
budget->dvb_frontend->ops->set_voltage = siemens_budget_set_voltage; budget->dvb_frontend->ops.set_voltage = siemens_budget_set_voltage;
budget->dvb_frontend->ops->dishnetwork_send_legacy_command = NULL; budget->dvb_frontend->ops.dishnetwork_send_legacy_command = NULL;
} }
break; break;
case 0x4f61: // Fujitsu Siemens Activy Budget-S PCI rev GR (tda8083/Grundig 29504-451(tsa5522)) case 0x4f61: // Fujitsu Siemens Activy Budget-S PCI rev GR (tda8083/Grundig 29504-451(tsa5522))
budget->dvb_frontend = tda8083_attach(&grundig_29504_451_config, &budget->i2c_adap); budget->dvb_frontend = tda8083_attach(&grundig_29504_451_config, &budget->i2c_adap);
if (budget->dvb_frontend) { if (budget->dvb_frontend) {
budget->dvb_frontend->ops->tuner_ops.set_params = grundig_29504_451_tuner_set_params; budget->dvb_frontend->ops.tuner_ops.set_params = grundig_29504_451_tuner_set_params;
budget->dvb_frontend->ops->set_voltage = siemens_budget_set_voltage; budget->dvb_frontend->ops.set_voltage = siemens_budget_set_voltage;
budget->dvb_frontend->ops->dishnetwork_send_legacy_command = NULL; budget->dvb_frontend->ops.dishnetwork_send_legacy_command = NULL;
} }
break; break;
case 0x1016: // Hauppauge/TT Nova-S SE (samsung s5h1420/????(tda8260)) case 0x1016: // Hauppauge/TT Nova-S SE (samsung s5h1420/????(tda8260))
budget->dvb_frontend = s5h1420_attach(&s5h1420_config, &budget->i2c_adap); budget->dvb_frontend = s5h1420_attach(&s5h1420_config, &budget->i2c_adap);
if (budget->dvb_frontend) { if (budget->dvb_frontend) {
budget->dvb_frontend->ops->tuner_ops.set_params = s5h1420_tuner_set_params; budget->dvb_frontend->ops.tuner_ops.set_params = s5h1420_tuner_set_params;
if (lnbp21_attach(budget->dvb_frontend, &budget->i2c_adap, 0, 0)) { if (lnbp21_attach(budget->dvb_frontend, &budget->i2c_adap, 0, 0)) {
printk("%s: No LNBP21 found!\n", __FUNCTION__); printk("%s: No LNBP21 found!\n", __FUNCTION__);
goto error_out; goto error_out;
...@@ -445,8 +445,8 @@ static void frontend_init(struct budget *budget) ...@@ -445,8 +445,8 @@ static void frontend_init(struct budget *budget)
error_out: error_out:
printk("budget: Frontend registration failed!\n"); printk("budget: Frontend registration failed!\n");
if (budget->dvb_frontend->ops->release) if (budget->dvb_frontend->ops.release)
budget->dvb_frontend->ops->release(budget->dvb_frontend); budget->dvb_frontend->ops.release(budget->dvb_frontend);
budget->dvb_frontend = NULL; budget->dvb_frontend = NULL;
return; return;
} }
......
...@@ -1039,8 +1039,8 @@ static int alps_tdmb7_tuner_set_params(struct dvb_frontend* fe, struct dvb_front ...@@ -1039,8 +1039,8 @@ static int alps_tdmb7_tuner_set_params(struct dvb_frontend* fe, struct dvb_front
data[2] = ((div >> 10) & 0x60) | 0x85; data[2] = ((div >> 10) & 0x60) | 0x85;
data[3] = params->frequency < 592000000 ? 0x40 : 0x80; data[3] = params->frequency < 592000000 ? 0x40 : 0x80;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(&ttusb->i2c_adap, &msg, 1) != 1) return -EIO; if (i2c_transfer(&ttusb->i2c_adap, &msg, 1) != 1) return -EIO;
return 0; return 0;
} }
...@@ -1061,8 +1061,8 @@ static int philips_tdm1316l_tuner_init(struct dvb_frontend* fe) ...@@ -1061,8 +1061,8 @@ static int philips_tdm1316l_tuner_init(struct dvb_frontend* fe)
struct i2c_msg tuner_msg = { .addr=0x60, .flags=0, .buf=td1316_init, .len=sizeof(td1316_init) }; struct i2c_msg tuner_msg = { .addr=0x60, .flags=0, .buf=td1316_init, .len=sizeof(td1316_init) };
// setup PLL configuration // setup PLL configuration
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(&ttusb->i2c_adap, &tuner_msg, 1) != 1) return -EIO; if (i2c_transfer(&ttusb->i2c_adap, &tuner_msg, 1) != 1) return -EIO;
msleep(1); msleep(1);
...@@ -1070,8 +1070,8 @@ static int philips_tdm1316l_tuner_init(struct dvb_frontend* fe) ...@@ -1070,8 +1070,8 @@ static int philips_tdm1316l_tuner_init(struct dvb_frontend* fe)
tuner_msg.addr = 0x65; tuner_msg.addr = 0x65;
tuner_msg.buf = disable_mc44BC374c; tuner_msg.buf = disable_mc44BC374c;
tuner_msg.len = sizeof(disable_mc44BC374c); tuner_msg.len = sizeof(disable_mc44BC374c);
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(&ttusb->i2c_adap, &tuner_msg, 1) != 1) { if (i2c_transfer(&ttusb->i2c_adap, &tuner_msg, 1) != 1) {
i2c_transfer(&ttusb->i2c_adap, &tuner_msg, 1); i2c_transfer(&ttusb->i2c_adap, &tuner_msg, 1);
} }
...@@ -1139,8 +1139,8 @@ static int philips_tdm1316l_tuner_set_params(struct dvb_frontend* fe, struct dvb ...@@ -1139,8 +1139,8 @@ static int philips_tdm1316l_tuner_set_params(struct dvb_frontend* fe, struct dvb
tuner_buf[2] = 0xca; tuner_buf[2] = 0xca;
tuner_buf[3] = (cp << 5) | (filter << 3) | band; tuner_buf[3] = (cp << 5) | (filter << 3) | band;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(&ttusb->i2c_adap, &tuner_msg, 1) != 1) if (i2c_transfer(&ttusb->i2c_adap, &tuner_msg, 1) != 1)
return -EIO; return -EIO;
...@@ -1304,8 +1304,8 @@ static int philips_tsa5059_tuner_set_params(struct dvb_frontend *fe, struct dvb_ ...@@ -1304,8 +1304,8 @@ static int philips_tsa5059_tuner_set_params(struct dvb_frontend *fe, struct dvb_
if (ttusb->revision == TTUSB_REV_2_2) if (ttusb->revision == TTUSB_REV_2_2)
buf[3] |= 0x20; buf[3] |= 0x20;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(&ttusb->i2c_adap, &msg, 1) != 1) if (i2c_transfer(&ttusb->i2c_adap, &msg, 1) != 1)
return -EIO; return -EIO;
...@@ -1338,8 +1338,8 @@ static int ttusb_novas_grundig_29504_491_tuner_set_params(struct dvb_frontend *f ...@@ -1338,8 +1338,8 @@ static int ttusb_novas_grundig_29504_491_tuner_set_params(struct dvb_frontend *f
buf[2] = 0x8e; buf[2] = 0x8e;
buf[3] = 0x00; buf[3] = 0x00;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(&ttusb->i2c_adap, &msg, 1) != 1) if (i2c_transfer(&ttusb->i2c_adap, &msg, 1) != 1)
return -EIO; return -EIO;
...@@ -1365,8 +1365,8 @@ static int alps_tdbe2_tuner_set_params(struct dvb_frontend* fe, struct dvb_front ...@@ -1365,8 +1365,8 @@ static int alps_tdbe2_tuner_set_params(struct dvb_frontend* fe, struct dvb_front
data[2] = 0x85 | ((div >> 10) & 0x60); data[2] = 0x85 | ((div >> 10) & 0x60);
data[3] = (params->frequency < 174000000 ? 0x88 : params->frequency < 470000000 ? 0x84 : 0x81); data[3] = (params->frequency < 174000000 ? 0x88 : params->frequency < 470000000 ? 0x84 : 0x81);
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer (&ttusb->i2c_adap, &msg, 1) != 1) if (i2c_transfer (&ttusb->i2c_adap, &msg, 1) != 1)
return -EIO; return -EIO;
...@@ -1434,8 +1434,8 @@ static int dvbc_philips_tdm1316l_tuner_set_params(struct dvb_frontend *fe, struc ...@@ -1434,8 +1434,8 @@ static int dvbc_philips_tdm1316l_tuner_set_params(struct dvb_frontend *fe, struc
tuner_buf[3] = (cp << 5) | (filter << 3) | band; tuner_buf[3] = (cp << 5) | (filter << 3) | band;
tuner_buf[4] = 0x80; tuner_buf[4] = 0x80;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(&ttusb->i2c_adap, &tuner_msg, 1) != 1) { if (i2c_transfer(&ttusb->i2c_adap, &tuner_msg, 1) != 1) {
printk("dvb-ttusb-budget: dvbc_philips_tdm1316l_pll_set Error 1\n"); printk("dvb-ttusb-budget: dvbc_philips_tdm1316l_pll_set Error 1\n");
return -EIO; return -EIO;
...@@ -1443,8 +1443,8 @@ static int dvbc_philips_tdm1316l_tuner_set_params(struct dvb_frontend *fe, struc ...@@ -1443,8 +1443,8 @@ static int dvbc_philips_tdm1316l_tuner_set_params(struct dvb_frontend *fe, struc
msleep(50); msleep(50);
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(&ttusb->i2c_adap, &tuner_msg, 1) != 1) { if (i2c_transfer(&ttusb->i2c_adap, &tuner_msg, 1) != 1) {
printk("dvb-ttusb-budget: dvbc_philips_tdm1316l_pll_set Error 2\n"); printk("dvb-ttusb-budget: dvbc_philips_tdm1316l_pll_set Error 2\n");
return -EIO; return -EIO;
...@@ -1570,13 +1570,13 @@ static void frontend_init(struct ttusb* ttusb) ...@@ -1570,13 +1570,13 @@ static void frontend_init(struct ttusb* ttusb)
// try the stv0299 based first // try the stv0299 based first
ttusb->fe = stv0299_attach(&alps_stv0299_config, &ttusb->i2c_adap); ttusb->fe = stv0299_attach(&alps_stv0299_config, &ttusb->i2c_adap);
if (ttusb->fe != NULL) { if (ttusb->fe != NULL) {
ttusb->fe->ops->tuner_ops.set_params = philips_tsa5059_tuner_set_params; ttusb->fe->ops.tuner_ops.set_params = philips_tsa5059_tuner_set_params;
if(ttusb->revision == TTUSB_REV_2_2) { // ALPS BSBE1 if(ttusb->revision == TTUSB_REV_2_2) { // ALPS BSBE1
alps_stv0299_config.inittab = alps_bsbe1_inittab; alps_stv0299_config.inittab = alps_bsbe1_inittab;
lnbp21_attach(ttusb->fe, &ttusb->i2c_adap, 0, 0); lnbp21_attach(ttusb->fe, &ttusb->i2c_adap, 0, 0);
} else { // ALPS BSRU6 } else { // ALPS BSRU6
ttusb->fe->ops->set_voltage = ttusb_set_voltage; ttusb->fe->ops.set_voltage = ttusb_set_voltage;
} }
break; break;
} }
...@@ -1584,8 +1584,8 @@ static void frontend_init(struct ttusb* ttusb) ...@@ -1584,8 +1584,8 @@ static void frontend_init(struct ttusb* ttusb)
// Grundig 29504-491 // Grundig 29504-491
ttusb->fe = tda8083_attach(&ttusb_novas_grundig_29504_491_config, &ttusb->i2c_adap); ttusb->fe = tda8083_attach(&ttusb_novas_grundig_29504_491_config, &ttusb->i2c_adap);
if (ttusb->fe != NULL) { if (ttusb->fe != NULL) {
ttusb->fe->ops->tuner_ops.set_params = ttusb_novas_grundig_29504_491_tuner_set_params; ttusb->fe->ops.tuner_ops.set_params = ttusb_novas_grundig_29504_491_tuner_set_params;
ttusb->fe->ops->set_voltage = ttusb_set_voltage; ttusb->fe->ops.set_voltage = ttusb_set_voltage;
break; break;
} }
break; break;
...@@ -1593,13 +1593,13 @@ static void frontend_init(struct ttusb* ttusb) ...@@ -1593,13 +1593,13 @@ static void frontend_init(struct ttusb* ttusb)
case 0x1004: // Hauppauge/TT DVB-C budget (ves1820/ALPS TDBE2(sp5659)) case 0x1004: // Hauppauge/TT DVB-C budget (ves1820/ALPS TDBE2(sp5659))
ttusb->fe = ves1820_attach(&alps_tdbe2_config, &ttusb->i2c_adap, read_pwm(ttusb)); ttusb->fe = ves1820_attach(&alps_tdbe2_config, &ttusb->i2c_adap, read_pwm(ttusb));
if (ttusb->fe != NULL) { if (ttusb->fe != NULL) {
ttusb->fe->ops->tuner_ops.set_params = alps_tdbe2_tuner_set_params; ttusb->fe->ops.tuner_ops.set_params = alps_tdbe2_tuner_set_params;
break; break;
} }
ttusb->fe = stv0297_attach(&dvbc_philips_tdm1316l_config, &ttusb->i2c_adap); ttusb->fe = stv0297_attach(&dvbc_philips_tdm1316l_config, &ttusb->i2c_adap);
if (ttusb->fe != NULL) { if (ttusb->fe != NULL) {
ttusb->fe->ops->tuner_ops.set_params = dvbc_philips_tdm1316l_tuner_set_params; ttusb->fe->ops.tuner_ops.set_params = dvbc_philips_tdm1316l_tuner_set_params;
break; break;
} }
break; break;
...@@ -1608,15 +1608,15 @@ static void frontend_init(struct ttusb* ttusb) ...@@ -1608,15 +1608,15 @@ static void frontend_init(struct ttusb* ttusb)
// try the ALPS TDMB7 first // try the ALPS TDMB7 first
ttusb->fe = cx22700_attach(&alps_tdmb7_config, &ttusb->i2c_adap); ttusb->fe = cx22700_attach(&alps_tdmb7_config, &ttusb->i2c_adap);
if (ttusb->fe != NULL) { if (ttusb->fe != NULL) {
ttusb->fe->ops->tuner_ops.set_params = alps_tdmb7_tuner_set_params; ttusb->fe->ops.tuner_ops.set_params = alps_tdmb7_tuner_set_params;
break; break;
} }
// Philips td1316 // Philips td1316
ttusb->fe = tda10046_attach(&philips_tdm1316l_config, &ttusb->i2c_adap); ttusb->fe = tda10046_attach(&philips_tdm1316l_config, &ttusb->i2c_adap);
if (ttusb->fe != NULL) { if (ttusb->fe != NULL) {
ttusb->fe->ops->tuner_ops.init = philips_tdm1316l_tuner_init; ttusb->fe->ops.tuner_ops.init = philips_tdm1316l_tuner_init;
ttusb->fe->ops->tuner_ops.set_params = philips_tdm1316l_tuner_set_params; ttusb->fe->ops.tuner_ops.set_params = philips_tdm1316l_tuner_set_params;
break; break;
} }
break; break;
...@@ -1629,8 +1629,8 @@ static void frontend_init(struct ttusb* ttusb) ...@@ -1629,8 +1629,8 @@ static void frontend_init(struct ttusb* ttusb)
} else { } else {
if (dvb_register_frontend(&ttusb->adapter, ttusb->fe)) { if (dvb_register_frontend(&ttusb->adapter, ttusb->fe)) {
printk("dvb-ttusb-budget: Frontend registration failed!\n"); printk("dvb-ttusb-budget: Frontend registration failed!\n");
if (ttusb->fe->ops->release) if (ttusb->fe->ops.release)
ttusb->fe->ops->release(ttusb->fe); ttusb->fe->ops.release(ttusb->fe);
ttusb->fe = NULL; ttusb->fe = NULL;
} }
} }
......
...@@ -1657,8 +1657,8 @@ static int ttusb_dec_probe(struct usb_interface *intf, ...@@ -1657,8 +1657,8 @@ static int ttusb_dec_probe(struct usb_interface *intf,
} else { } else {
if (dvb_register_frontend(&dec->adapter, dec->fe)) { if (dvb_register_frontend(&dec->adapter, dec->fe)) {
printk("budget-ci: Frontend registration failed!\n"); printk("budget-ci: Frontend registration failed!\n");
if (dec->fe->ops->release) if (dec->fe->ops.release)
dec->fe->ops->release(dec->fe); dec->fe->ops.release(dec->fe);
dec->fe = NULL; dec->fe = NULL;
} }
} }
......
...@@ -28,8 +28,6 @@ ...@@ -28,8 +28,6 @@
struct ttusbdecfe_state { struct ttusbdecfe_state {
struct dvb_frontend_ops ops;
/* configuration settings */ /* configuration settings */
const struct ttusbdecfe_config* config; const struct ttusbdecfe_config* config;
...@@ -203,10 +201,9 @@ struct dvb_frontend* ttusbdecfe_dvbt_attach(const struct ttusbdecfe_config* conf ...@@ -203,10 +201,9 @@ struct dvb_frontend* ttusbdecfe_dvbt_attach(const struct ttusbdecfe_config* conf
/* setup the state */ /* setup the state */
state->config = config; state->config = config;
memcpy(&state->ops, &ttusbdecfe_dvbt_ops, sizeof(struct dvb_frontend_ops));
/* create dvb_frontend */ /* create dvb_frontend */
state->frontend.ops = &state->ops; memcpy(&state->frontend.ops, &ttusbdecfe_dvbt_ops, sizeof(struct dvb_frontend_ops));
state->frontend.demodulator_priv = state; state->frontend.demodulator_priv = state;
return &state->frontend; return &state->frontend;
} }
...@@ -226,10 +223,9 @@ struct dvb_frontend* ttusbdecfe_dvbs_attach(const struct ttusbdecfe_config* conf ...@@ -226,10 +223,9 @@ struct dvb_frontend* ttusbdecfe_dvbs_attach(const struct ttusbdecfe_config* conf
state->config = config; state->config = config;
state->voltage = 0; state->voltage = 0;
state->hi_band = 0; state->hi_band = 0;
memcpy(&state->ops, &ttusbdecfe_dvbs_ops, sizeof(struct dvb_frontend_ops));
/* create dvb_frontend */ /* create dvb_frontend */
state->frontend.ops = &state->ops; memcpy(&state->frontend.ops, &ttusbdecfe_dvbs_ops, sizeof(struct dvb_frontend_ops));
state->frontend.demodulator_priv = state; state->frontend.demodulator_priv = state;
return &state->frontend; return &state->frontend;
} }
......
...@@ -230,8 +230,8 @@ static int philips_fmd1216_pll_init(struct dvb_frontend *fe) ...@@ -230,8 +230,8 @@ static int philips_fmd1216_pll_init(struct dvb_frontend *fe)
.buf = fmd1216_init, .len = sizeof(fmd1216_init) }; .buf = fmd1216_init, .len = sizeof(fmd1216_init) };
int err; int err;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if ((err = i2c_transfer(&dev->core->i2c_adap, &msg, 1)) != 1) { if ((err = i2c_transfer(&dev->core->i2c_adap, &msg, 1)) != 1) {
if (err < 0) if (err < 0)
return err; return err;
...@@ -261,8 +261,8 @@ static int dntv_live_dvbt_pro_tuner_set_params(struct dvb_frontend* fe, ...@@ -261,8 +261,8 @@ static int dntv_live_dvbt_pro_tuner_set_params(struct dvb_frontend* fe,
dvb_pll_configure(dev->core->pll_desc, buf, dvb_pll_configure(dev->core->pll_desc, buf,
params->frequency, params->frequency,
params->u.ofdm.bandwidth); params->u.ofdm.bandwidth);
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if ((err = i2c_transfer(&dev->core->i2c_adap, &msg, 1)) != 1) { if ((err = i2c_transfer(&dev->core->i2c_adap, &msg, 1)) != 1) {
printk(KERN_WARNING "cx88-dvb: %s error " printk(KERN_WARNING "cx88-dvb: %s error "
...@@ -300,8 +300,8 @@ static int dvico_hybrid_tuner_set_params(struct dvb_frontend *fe, ...@@ -300,8 +300,8 @@ static int dvico_hybrid_tuner_set_params(struct dvb_frontend *fe,
params->frequency, params->frequency,
params->u.ofdm.bandwidth); params->u.ofdm.bandwidth);
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if ((err = i2c_transfer(&dev->core->i2c_adap, &msg, 1)) != 1) { if ((err = i2c_transfer(&dev->core->i2c_adap, &msg, 1)) != 1) {
printk(KERN_WARNING "cx88-dvb: %s error " printk(KERN_WARNING "cx88-dvb: %s error "
"(addr %02x <- %02x, err = %i)\n", "(addr %02x <- %02x, err = %i)\n",
...@@ -375,8 +375,8 @@ static int lgdt3302_tuner_set_params(struct dvb_frontend* fe, ...@@ -375,8 +375,8 @@ static int lgdt3302_tuner_set_params(struct dvb_frontend* fe,
dprintk(1, "%s: tuner at 0x%02x bytes: 0x%02x 0x%02x 0x%02x 0x%02x\n", dprintk(1, "%s: tuner at 0x%02x bytes: 0x%02x 0x%02x 0x%02x 0x%02x\n",
__FUNCTION__, msg.addr, buf[0],buf[1],buf[2],buf[3]); __FUNCTION__, msg.addr, buf[0],buf[1],buf[2],buf[3]);
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if ((err = i2c_transfer(&core->i2c_adap, &msg, 1)) != 1) { if ((err = i2c_transfer(&core->i2c_adap, &msg, 1)) != 1) {
printk(KERN_WARNING "cx88-dvb: %s error " printk(KERN_WARNING "cx88-dvb: %s error "
"(addr %02x <- %02x, err = %i)\n", "(addr %02x <- %02x, err = %i)\n",
...@@ -586,7 +586,7 @@ static int dvb_register(struct cx8802_dev *dev) ...@@ -586,7 +586,7 @@ static int dvb_register(struct cx8802_dev *dev)
dev->dvb.frontend = mt352_attach(&dntv_live_dvbt_pro_config, dev->dvb.frontend = mt352_attach(&dntv_live_dvbt_pro_config,
&((struct vp3054_i2c_state *)dev->card_priv)->adap); &((struct vp3054_i2c_state *)dev->card_priv)->adap);
if (dev->dvb.frontend != NULL) { if (dev->dvb.frontend != NULL) {
dev->dvb.frontend->ops->tuner_ops.set_params = dntv_live_dvbt_pro_tuner_set_params; dev->dvb.frontend->ops.tuner_ops.set_params = dntv_live_dvbt_pro_tuner_set_params;
} }
#else #else
printk("%s: built without vp3054 support\n", dev->core->name); printk("%s: built without vp3054 support\n", dev->core->name);
...@@ -609,7 +609,7 @@ static int dvb_register(struct cx8802_dev *dev) ...@@ -609,7 +609,7 @@ static int dvb_register(struct cx8802_dev *dev)
dev->dvb.frontend = zl10353_attach(&dvico_fusionhdtv_hybrid, dev->dvb.frontend = zl10353_attach(&dvico_fusionhdtv_hybrid,
&dev->core->i2c_adap); &dev->core->i2c_adap);
if (dev->dvb.frontend != NULL) { if (dev->dvb.frontend != NULL) {
dev->dvb.frontend->ops->tuner_ops.set_params = dvico_hybrid_tuner_set_params; dev->dvb.frontend->ops.tuner_ops.set_params = dvico_hybrid_tuner_set_params;
} }
break; break;
#endif #endif
...@@ -641,7 +641,7 @@ static int dvb_register(struct cx8802_dev *dev) ...@@ -641,7 +641,7 @@ static int dvb_register(struct cx8802_dev *dev)
dev->dvb.frontend = lgdt330x_attach(&fusionhdtv_3_gold, dev->dvb.frontend = lgdt330x_attach(&fusionhdtv_3_gold,
&dev->core->i2c_adap); &dev->core->i2c_adap);
if (dev->dvb.frontend != NULL) { if (dev->dvb.frontend != NULL) {
dev->dvb.frontend->ops->tuner_ops.set_params = lgdt3302_tuner_set_params; dev->dvb.frontend->ops.tuner_ops.set_params = lgdt3302_tuner_set_params;
} }
} }
break; break;
...@@ -660,7 +660,7 @@ static int dvb_register(struct cx8802_dev *dev) ...@@ -660,7 +660,7 @@ static int dvb_register(struct cx8802_dev *dev)
dev->dvb.frontend = lgdt330x_attach(&fusionhdtv_3_gold, dev->dvb.frontend = lgdt330x_attach(&fusionhdtv_3_gold,
&dev->core->i2c_adap); &dev->core->i2c_adap);
if (dev->dvb.frontend != NULL) { if (dev->dvb.frontend != NULL) {
dev->dvb.frontend->ops->tuner_ops.set_params = lgdt3302_tuner_set_params; dev->dvb.frontend->ops.tuner_ops.set_params = lgdt3302_tuner_set_params;
} }
} }
break; break;
...@@ -677,7 +677,7 @@ static int dvb_register(struct cx8802_dev *dev) ...@@ -677,7 +677,7 @@ static int dvb_register(struct cx8802_dev *dev)
dev->dvb.frontend = lgdt330x_attach(&fusionhdtv_5_gold, dev->dvb.frontend = lgdt330x_attach(&fusionhdtv_5_gold,
&dev->core->i2c_adap); &dev->core->i2c_adap);
if (dev->dvb.frontend != NULL) { if (dev->dvb.frontend != NULL) {
dev->dvb.frontend->ops->tuner_ops.set_params = lgdt3303_tuner_set_params; dev->dvb.frontend->ops.tuner_ops.set_params = lgdt3303_tuner_set_params;
} }
} }
break; break;
...@@ -694,7 +694,7 @@ static int dvb_register(struct cx8802_dev *dev) ...@@ -694,7 +694,7 @@ static int dvb_register(struct cx8802_dev *dev)
dev->dvb.frontend = lgdt330x_attach(&pchdtv_hd5500, dev->dvb.frontend = lgdt330x_attach(&pchdtv_hd5500,
&dev->core->i2c_adap); &dev->core->i2c_adap);
if (dev->dvb.frontend != NULL) { if (dev->dvb.frontend != NULL) {
dev->dvb.frontend->ops->tuner_ops.set_params = lgdt3303_tuner_set_params; dev->dvb.frontend->ops.tuner_ops.set_params = lgdt3303_tuner_set_params;
} }
} }
break; break;
...@@ -721,8 +721,8 @@ static int dvb_register(struct cx8802_dev *dev) ...@@ -721,8 +721,8 @@ static int dvb_register(struct cx8802_dev *dev)
dev->dvb.frontend = cx24123_attach(&kworld_dvbs_100_config, dev->dvb.frontend = cx24123_attach(&kworld_dvbs_100_config,
&dev->core->i2c_adap); &dev->core->i2c_adap);
if (dev->dvb.frontend) { if (dev->dvb.frontend) {
dev->core->prev_set_voltage = dev->dvb.frontend->ops->set_voltage; dev->core->prev_set_voltage = dev->dvb.frontend->ops.set_voltage;
dev->dvb.frontend->ops->set_voltage = kworld_dvbs_100_set_voltage; dev->dvb.frontend->ops.set_voltage = kworld_dvbs_100_set_voltage;
} }
break; break;
#endif #endif
...@@ -737,8 +737,8 @@ static int dvb_register(struct cx8802_dev *dev) ...@@ -737,8 +737,8 @@ static int dvb_register(struct cx8802_dev *dev)
} }
if (dev->core->pll_desc) { if (dev->core->pll_desc) {
dev->dvb.frontend->ops->info.frequency_min = dev->core->pll_desc->min; dev->dvb.frontend->ops.info.frequency_min = dev->core->pll_desc->min;
dev->dvb.frontend->ops->info.frequency_max = dev->core->pll_desc->max; dev->dvb.frontend->ops.info.frequency_max = dev->core->pll_desc->max;
} }
/* Put the analog decoder in standby to keep it quiet */ /* Put the analog decoder in standby to keep it quiet */
......
...@@ -138,13 +138,13 @@ void cx88_call_i2c_clients(struct cx88_core *core, unsigned int cmd, void *arg) ...@@ -138,13 +138,13 @@ void cx88_call_i2c_clients(struct cx88_core *core, unsigned int cmd, void *arg)
return; return;
if (core->dvbdev) { if (core->dvbdev) {
if (core->dvbdev->dvb.frontend->ops->i2c_gate_ctrl) if (core->dvbdev->dvb.frontend->ops.i2c_gate_ctrl)
core->dvbdev->dvb.frontend->ops->i2c_gate_ctrl(core->dvbdev->dvb.frontend, 1); core->dvbdev->dvb.frontend->ops.i2c_gate_ctrl(core->dvbdev->dvb.frontend, 1);
i2c_clients_command(&core->i2c_adap, cmd, arg); i2c_clients_command(&core->i2c_adap, cmd, arg);
if (core->dvbdev->dvb.frontend->ops->i2c_gate_ctrl) if (core->dvbdev->dvb.frontend->ops.i2c_gate_ctrl)
core->dvbdev->dvb.frontend->ops->i2c_gate_ctrl(core->dvbdev->dvb.frontend, 0); core->dvbdev->dvb.frontend->ops.i2c_gate_ctrl(core->dvbdev->dvb.frontend, 0);
} else } else
i2c_clients_command(&core->i2c_adap, cmd, arg); i2c_clients_command(&core->i2c_adap, cmd, arg);
} }
......
...@@ -146,13 +146,13 @@ static int mt352_pinnacle_tuner_set_params(struct dvb_frontend* fe, ...@@ -146,13 +146,13 @@ static int mt352_pinnacle_tuner_set_params(struct dvb_frontend* fe,
f.tuner = 0; f.tuner = 0;
f.type = V4L2_TUNER_DIGITAL_TV; f.type = V4L2_TUNER_DIGITAL_TV;
f.frequency = params->frequency / 1000 * 16 / 1000; f.frequency = params->frequency / 1000 * 16 / 1000;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
i2c_transfer(&dev->i2c_adap, &msg, 1); i2c_transfer(&dev->i2c_adap, &msg, 1);
saa7134_i2c_call_clients(dev,VIDIOC_S_FREQUENCY,&f); saa7134_i2c_call_clients(dev,VIDIOC_S_FREQUENCY,&f);
msg.buf = on; msg.buf = on;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
i2c_transfer(&dev->i2c_adap, &msg, 1); i2c_transfer(&dev->i2c_adap, &msg, 1);
pinnacle_antenna_pwr(dev, antenna_pwr); pinnacle_antenna_pwr(dev, antenna_pwr);
...@@ -266,8 +266,8 @@ static int philips_tda6651_pll_set(u8 addr, struct dvb_frontend *fe, struct dvb_ ...@@ -266,8 +266,8 @@ static int philips_tda6651_pll_set(u8 addr, struct dvb_frontend *fe, struct dvb_
tuner_buf[2] = 0xca; tuner_buf[2] = 0xca;
tuner_buf[3] = (cp << 5) | (filter << 3) | band; tuner_buf[3] = (cp << 5) | (filter << 3) | band;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(&dev->i2c_adap, &tuner_msg, 1) != 1) if (i2c_transfer(&dev->i2c_adap, &tuner_msg, 1) != 1)
return -EIO; return -EIO;
msleep(1); msleep(1);
...@@ -281,8 +281,8 @@ static int philips_tda6651_pll_init(u8 addr, struct dvb_frontend *fe) ...@@ -281,8 +281,8 @@ static int philips_tda6651_pll_init(u8 addr, struct dvb_frontend *fe)
struct i2c_msg tuner_msg = {.addr = addr,.flags = 0,.buf = tu1216_init,.len = sizeof(tu1216_init) }; struct i2c_msg tuner_msg = {.addr = addr,.flags = 0,.buf = tu1216_init,.len = sizeof(tu1216_init) };
/* setup PLL configuration */ /* setup PLL configuration */
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(&dev->i2c_adap, &tuner_msg, 1) != 1) if (i2c_transfer(&dev->i2c_adap, &tuner_msg, 1) != 1)
return -EIO; return -EIO;
msleep(1); msleep(1);
...@@ -352,8 +352,8 @@ static int philips_europa_tuner_init(struct dvb_frontend *fe) ...@@ -352,8 +352,8 @@ static int philips_europa_tuner_init(struct dvb_frontend *fe)
struct i2c_msg init_msg = {.addr = 0x61,.flags = 0,.buf = msg,.len = sizeof(msg) }; struct i2c_msg init_msg = {.addr = 0x61,.flags = 0,.buf = msg,.len = sizeof(msg) };
/* setup PLL configuration */ /* setup PLL configuration */
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(&dev->i2c_adap, &init_msg, 1) != 1) if (i2c_transfer(&dev->i2c_adap, &init_msg, 1) != 1)
return -EIO; return -EIO;
msleep(1); msleep(1);
...@@ -363,8 +363,8 @@ static int philips_europa_tuner_init(struct dvb_frontend *fe) ...@@ -363,8 +363,8 @@ static int philips_europa_tuner_init(struct dvb_frontend *fe)
init_msg.len = 0x02; init_msg.len = 0x02;
msg[0] = 0x00; msg[0] = 0x00;
msg[1] = 0x40; msg[1] = 0x40;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(&dev->i2c_adap, &init_msg, 1) != 1) if (i2c_transfer(&dev->i2c_adap, &init_msg, 1) != 1)
return -EIO; return -EIO;
...@@ -391,8 +391,8 @@ static int philips_europa_tuner_sleep(struct dvb_frontend *fe) ...@@ -391,8 +391,8 @@ static int philips_europa_tuner_sleep(struct dvb_frontend *fe)
analog_msg.len = 0x02; analog_msg.len = 0x02;
msg[0] = 0x00; msg[0] = 0x00;
msg[1] = 0x14; msg[1] = 0x14;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
i2c_transfer(&dev->i2c_adap, &analog_msg, 1); i2c_transfer(&dev->i2c_adap, &analog_msg, 1);
return 0; return 0;
} }
...@@ -403,7 +403,7 @@ static int philips_europa_demod_sleep(struct dvb_frontend *fe) ...@@ -403,7 +403,7 @@ static int philips_europa_demod_sleep(struct dvb_frontend *fe)
if (dev->original_demod_sleep) if (dev->original_demod_sleep)
dev->original_demod_sleep(fe); dev->original_demod_sleep(fe);
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
return 0; return 0;
} }
...@@ -427,8 +427,8 @@ static int philips_fmd1216_tuner_init(struct dvb_frontend *fe) ...@@ -427,8 +427,8 @@ static int philips_fmd1216_tuner_init(struct dvb_frontend *fe)
static u8 fmd1216_init[] = { 0x0b, 0xdc, 0x9c, 0xa0 }; static u8 fmd1216_init[] = { 0x0b, 0xdc, 0x9c, 0xa0 };
struct i2c_msg tuner_msg = {.addr = 0x61,.flags = 0,.buf = fmd1216_init,.len = sizeof(fmd1216_init) }; struct i2c_msg tuner_msg = {.addr = 0x61,.flags = 0,.buf = fmd1216_init,.len = sizeof(fmd1216_init) };
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(&dev->i2c_adap, &tuner_msg, 1) != 1) if (i2c_transfer(&dev->i2c_adap, &tuner_msg, 1) != 1)
return -EIO; return -EIO;
msleep(1); msleep(1);
...@@ -443,14 +443,14 @@ static int philips_fmd1216_tuner_sleep(struct dvb_frontend *fe) ...@@ -443,14 +443,14 @@ static int philips_fmd1216_tuner_sleep(struct dvb_frontend *fe)
static u8 fmd1216_init[] = { 0x0b, 0xdc, 0x9c, 0x60 }; static u8 fmd1216_init[] = { 0x0b, 0xdc, 0x9c, 0x60 };
struct i2c_msg tuner_msg = {.addr = 0x61,.flags = 0,.buf = fmd1216_init,.len = sizeof(fmd1216_init) }; struct i2c_msg tuner_msg = {.addr = 0x61,.flags = 0,.buf = fmd1216_init,.len = sizeof(fmd1216_init) };
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
i2c_transfer(&dev->i2c_adap, &tuner_msg, 1); i2c_transfer(&dev->i2c_adap, &tuner_msg, 1);
msleep(1); msleep(1);
fmd1216_init[2] = 0x86; fmd1216_init[2] = 0x86;
fmd1216_init[3] = 0x54; fmd1216_init[3] = 0x54;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
i2c_transfer(&dev->i2c_adap, &tuner_msg, 1); i2c_transfer(&dev->i2c_adap, &tuner_msg, 1);
msleep(1); msleep(1);
return 0; return 0;
...@@ -533,8 +533,8 @@ static int philips_fmd1216_tuner_set_params(struct dvb_frontend *fe, struct dvb_ ...@@ -533,8 +533,8 @@ static int philips_fmd1216_tuner_set_params(struct dvb_frontend *fe, struct dvb_
tuner_buf[2] = 0x80 | (cp << 6) | (mode << 3) | 4; tuner_buf[2] = 0x80 | (cp << 6) | (mode << 3) | 4;
tuner_buf[3] = 0x40 | band; tuner_buf[3] = 0x40 | band;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(&dev->i2c_adap, &tuner_msg, 1) != 1) if (i2c_transfer(&dev->i2c_adap, &tuner_msg, 1) != 1)
return -EIO; return -EIO;
return 0; return 0;
...@@ -646,8 +646,8 @@ static int philips_tda827x_tuner_set_params(struct dvb_frontend *fe, struct dvb_ ...@@ -646,8 +646,8 @@ static int philips_tda827x_tuner_set_params(struct dvb_frontend *fe, struct dvb_
tuner_buf[13] = 0x40; tuner_buf[13] = 0x40;
tuner_msg.len = 14; tuner_msg.len = 14;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(&dev->i2c_adap, &tuner_msg, 1) != 1) if (i2c_transfer(&dev->i2c_adap, &tuner_msg, 1) != 1)
return -EIO; return -EIO;
...@@ -656,8 +656,8 @@ static int philips_tda827x_tuner_set_params(struct dvb_frontend *fe, struct dvb_ ...@@ -656,8 +656,8 @@ static int philips_tda827x_tuner_set_params(struct dvb_frontend *fe, struct dvb_
tuner_buf[0] = 0x30; tuner_buf[0] = 0x30;
tuner_buf[1] = 0x50 + tda827x_dvbt[i].cp; tuner_buf[1] = 0x50 + tda827x_dvbt[i].cp;
tuner_msg.len = 2; tuner_msg.len = 2;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
i2c_transfer(&dev->i2c_adap, &tuner_msg, 1); i2c_transfer(&dev->i2c_adap, &tuner_msg, 1);
return 0; return 0;
...@@ -669,8 +669,8 @@ static int philips_tda827x_tuner_sleep(struct dvb_frontend *fe) ...@@ -669,8 +669,8 @@ static int philips_tda827x_tuner_sleep(struct dvb_frontend *fe)
static u8 tda827x_sleep[] = { 0x30, 0xd0}; static u8 tda827x_sleep[] = { 0x30, 0xd0};
struct i2c_msg tuner_msg = {.addr = 0x60,.flags = 0,.buf = tda827x_sleep, struct i2c_msg tuner_msg = {.addr = 0x60,.flags = 0,.buf = tda827x_sleep,
.len = sizeof(tda827x_sleep) }; .len = sizeof(tda827x_sleep) };
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
i2c_transfer(&dev->i2c_adap, &tuner_msg, 1); i2c_transfer(&dev->i2c_adap, &tuner_msg, 1);
return 0; return 0;
} }
...@@ -773,8 +773,8 @@ static int philips_tda827xa_pll_set(u8 addr, struct dvb_frontend *fe, struct dvb ...@@ -773,8 +773,8 @@ static int philips_tda827xa_pll_set(u8 addr, struct dvb_frontend *fe, struct dvb
tuner_buf[12] = 0x00; tuner_buf[12] = 0x00;
tuner_buf[13] = 0x39; // lpsel tuner_buf[13] = 0x39; // lpsel
msg.len = 14; msg.len = 14;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(&dev->i2c_adap, &msg, 1) != 1) if (i2c_transfer(&dev->i2c_adap, &msg, 1) != 1)
return -EIO; return -EIO;
...@@ -782,14 +782,14 @@ static int philips_tda827xa_pll_set(u8 addr, struct dvb_frontend *fe, struct dvb ...@@ -782,14 +782,14 @@ static int philips_tda827xa_pll_set(u8 addr, struct dvb_frontend *fe, struct dvb
msg.len = 2; msg.len = 2;
reg2[0] = 0x60; reg2[0] = 0x60;
reg2[1] = 0x3c; reg2[1] = 0x3c;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
i2c_transfer(&dev->i2c_adap, &msg, 1); i2c_transfer(&dev->i2c_adap, &msg, 1);
reg2[0] = 0xa0; reg2[0] = 0xa0;
reg2[1] = 0x40; reg2[1] = 0x40;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
i2c_transfer(&dev->i2c_adap, &msg, 1); i2c_transfer(&dev->i2c_adap, &msg, 1);
msleep(2); msleep(2);
...@@ -797,15 +797,15 @@ static int philips_tda827xa_pll_set(u8 addr, struct dvb_frontend *fe, struct dvb ...@@ -797,15 +797,15 @@ static int philips_tda827xa_pll_set(u8 addr, struct dvb_frontend *fe, struct dvb
reg2[0] = 0x30; reg2[0] = 0x30;
reg2[1] = 0x10 + tda827xa_dvbt[i].scr; reg2[1] = 0x10 + tda827xa_dvbt[i].scr;
msg.len = 2; msg.len = 2;
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
i2c_transfer(&dev->i2c_adap, &msg, 1); i2c_transfer(&dev->i2c_adap, &msg, 1);
msleep(550); msleep(550);
reg2[0] = 0x50; reg2[0] = 0x50;
reg2[1] = 0x4f + (tda827xa_dvbt[i].gc3 << 4); reg2[1] = 0x4f + (tda827xa_dvbt[i].gc3 << 4);
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
i2c_transfer(&dev->i2c_adap, &msg, 1); i2c_transfer(&dev->i2c_adap, &msg, 1);
return 0; return 0;
...@@ -818,8 +818,8 @@ static int philips_tda827xa_tuner_sleep(u8 addr, struct dvb_frontend *fe) ...@@ -818,8 +818,8 @@ static int philips_tda827xa_tuner_sleep(u8 addr, struct dvb_frontend *fe)
static u8 tda827xa_sleep[] = { 0x30, 0x90}; static u8 tda827xa_sleep[] = { 0x30, 0x90};
struct i2c_msg tuner_msg = {.addr = addr,.flags = 0,.buf = tda827xa_sleep, struct i2c_msg tuner_msg = {.addr = addr,.flags = 0,.buf = tda827xa_sleep,
.len = sizeof(tda827xa_sleep) }; .len = sizeof(tda827xa_sleep) };
if (fe->ops->i2c_gate_ctrl) if (fe->ops.i2c_gate_ctrl)
fe->ops->i2c_gate_ctrl(fe, 1); fe->ops.i2c_gate_ctrl(fe, 1);
i2c_transfer(&dev->i2c_adap, &tuner_msg, 1); i2c_transfer(&dev->i2c_adap, &tuner_msg, 1);
return 0; return 0;
} }
...@@ -1015,7 +1015,7 @@ static int dvb_init(struct saa7134_dev *dev) ...@@ -1015,7 +1015,7 @@ static int dvb_init(struct saa7134_dev *dev)
dev->dvb.frontend = mt352_attach(&pinnacle_300i, dev->dvb.frontend = mt352_attach(&pinnacle_300i,
&dev->i2c_adap); &dev->i2c_adap);
if (dev->dvb.frontend) { if (dev->dvb.frontend) {
dev->dvb.frontend->ops->tuner_ops.set_params = mt352_pinnacle_tuner_set_params; dev->dvb.frontend->ops.tuner_ops.set_params = mt352_pinnacle_tuner_set_params;
} }
break; break;
...@@ -1024,7 +1024,7 @@ static int dvb_init(struct saa7134_dev *dev) ...@@ -1024,7 +1024,7 @@ static int dvb_init(struct saa7134_dev *dev)
dev->dvb.frontend = mt352_attach(&avermedia_777, dev->dvb.frontend = mt352_attach(&avermedia_777,
&dev->i2c_adap); &dev->i2c_adap);
if (dev->dvb.frontend) { if (dev->dvb.frontend) {
dev->dvb.frontend->ops->tuner_ops.calc_regs = mt352_aver777_tuner_calc_regs; dev->dvb.frontend->ops.tuner_ops.calc_regs = mt352_aver777_tuner_calc_regs;
} }
break; break;
#endif #endif
...@@ -1033,124 +1033,124 @@ static int dvb_init(struct saa7134_dev *dev) ...@@ -1033,124 +1033,124 @@ static int dvb_init(struct saa7134_dev *dev)
dev->dvb.frontend = tda10046_attach(&medion_cardbus, dev->dvb.frontend = tda10046_attach(&medion_cardbus,
&dev->i2c_adap); &dev->i2c_adap);
if (dev->dvb.frontend) { if (dev->dvb.frontend) {
dev->dvb.frontend->ops->tuner_ops.init = philips_fmd1216_tuner_init; dev->dvb.frontend->ops.tuner_ops.init = philips_fmd1216_tuner_init;
dev->dvb.frontend->ops->tuner_ops.sleep = philips_fmd1216_tuner_sleep; dev->dvb.frontend->ops.tuner_ops.sleep = philips_fmd1216_tuner_sleep;
dev->dvb.frontend->ops->tuner_ops.set_params = philips_fmd1216_tuner_set_params; dev->dvb.frontend->ops.tuner_ops.set_params = philips_fmd1216_tuner_set_params;
} }
break; break;
case SAA7134_BOARD_PHILIPS_TOUGH: case SAA7134_BOARD_PHILIPS_TOUGH:
dev->dvb.frontend = tda10046_attach(&philips_tu1216_60_config, dev->dvb.frontend = tda10046_attach(&philips_tu1216_60_config,
&dev->i2c_adap); &dev->i2c_adap);
if (dev->dvb.frontend) { if (dev->dvb.frontend) {
dev->dvb.frontend->ops->tuner_ops.init = philips_tu1216_tuner_60_init; dev->dvb.frontend->ops.tuner_ops.init = philips_tu1216_tuner_60_init;
dev->dvb.frontend->ops->tuner_ops.set_params = philips_tu1216_tuner_60_set_params; dev->dvb.frontend->ops.tuner_ops.set_params = philips_tu1216_tuner_60_set_params;
} }
break; break;
case SAA7134_BOARD_FLYDVBTDUO: case SAA7134_BOARD_FLYDVBTDUO:
dev->dvb.frontend = tda10046_attach(&tda827x_lifeview_config, dev->dvb.frontend = tda10046_attach(&tda827x_lifeview_config,
&dev->i2c_adap); &dev->i2c_adap);
if (dev->dvb.frontend) { if (dev->dvb.frontend) {
dev->dvb.frontend->ops->tuner_ops.init = philips_tda827x_tuner_init; dev->dvb.frontend->ops.tuner_ops.init = philips_tda827x_tuner_init;
dev->dvb.frontend->ops->tuner_ops.sleep = philips_tda827x_tuner_sleep; dev->dvb.frontend->ops.tuner_ops.sleep = philips_tda827x_tuner_sleep;
dev->dvb.frontend->ops->tuner_ops.set_params = philips_tda827x_tuner_set_params; dev->dvb.frontend->ops.tuner_ops.set_params = philips_tda827x_tuner_set_params;
} }
break; break;
case SAA7134_BOARD_FLYDVBT_DUO_CARDBUS: case SAA7134_BOARD_FLYDVBT_DUO_CARDBUS:
dev->dvb.frontend = tda10046_attach(&tda827x_lifeview_config, dev->dvb.frontend = tda10046_attach(&tda827x_lifeview_config,
&dev->i2c_adap); &dev->i2c_adap);
if (dev->dvb.frontend) { if (dev->dvb.frontend) {
dev->dvb.frontend->ops->tuner_ops.init = philips_tda827x_tuner_init; dev->dvb.frontend->ops.tuner_ops.init = philips_tda827x_tuner_init;
dev->dvb.frontend->ops->tuner_ops.sleep = philips_tda827x_tuner_sleep; dev->dvb.frontend->ops.tuner_ops.sleep = philips_tda827x_tuner_sleep;
dev->dvb.frontend->ops->tuner_ops.set_params = philips_tda827x_tuner_set_params; dev->dvb.frontend->ops.tuner_ops.set_params = philips_tda827x_tuner_set_params;
} }
break; break;
case SAA7134_BOARD_PHILIPS_EUROPA: case SAA7134_BOARD_PHILIPS_EUROPA:
dev->dvb.frontend = tda10046_attach(&philips_europa_config, dev->dvb.frontend = tda10046_attach(&philips_europa_config,
&dev->i2c_adap); &dev->i2c_adap);
if (dev->dvb.frontend) { if (dev->dvb.frontend) {
dev->original_demod_sleep = dev->dvb.frontend->ops->sleep; dev->original_demod_sleep = dev->dvb.frontend->ops.sleep;
dev->dvb.frontend->ops->sleep = philips_europa_demod_sleep; dev->dvb.frontend->ops.sleep = philips_europa_demod_sleep;
dev->dvb.frontend->ops->tuner_ops.init = philips_europa_tuner_init; dev->dvb.frontend->ops.tuner_ops.init = philips_europa_tuner_init;
dev->dvb.frontend->ops->tuner_ops.sleep = philips_europa_tuner_sleep; dev->dvb.frontend->ops.tuner_ops.sleep = philips_europa_tuner_sleep;
dev->dvb.frontend->ops->tuner_ops.set_params = philips_td1316_tuner_set_params; dev->dvb.frontend->ops.tuner_ops.set_params = philips_td1316_tuner_set_params;
} }
break; break;
case SAA7134_BOARD_VIDEOMATE_DVBT_300: case SAA7134_BOARD_VIDEOMATE_DVBT_300:
dev->dvb.frontend = tda10046_attach(&philips_europa_config, dev->dvb.frontend = tda10046_attach(&philips_europa_config,
&dev->i2c_adap); &dev->i2c_adap);
if (dev->dvb.frontend) { if (dev->dvb.frontend) {
dev->dvb.frontend->ops->tuner_ops.init = philips_europa_tuner_init; dev->dvb.frontend->ops.tuner_ops.init = philips_europa_tuner_init;
dev->dvb.frontend->ops->tuner_ops.sleep = philips_europa_tuner_sleep; dev->dvb.frontend->ops.tuner_ops.sleep = philips_europa_tuner_sleep;
dev->dvb.frontend->ops->tuner_ops.set_params = philips_td1316_tuner_set_params; dev->dvb.frontend->ops.tuner_ops.set_params = philips_td1316_tuner_set_params;
} }
break; break;
case SAA7134_BOARD_VIDEOMATE_DVBT_200: case SAA7134_BOARD_VIDEOMATE_DVBT_200:
dev->dvb.frontend = tda10046_attach(&philips_tu1216_61_config, dev->dvb.frontend = tda10046_attach(&philips_tu1216_61_config,
&dev->i2c_adap); &dev->i2c_adap);
if (dev->dvb.frontend) { if (dev->dvb.frontend) {
dev->dvb.frontend->ops->tuner_ops.init = philips_tu1216_tuner_61_init; dev->dvb.frontend->ops.tuner_ops.init = philips_tu1216_tuner_61_init;
dev->dvb.frontend->ops->tuner_ops.set_params = philips_tu1216_tuner_61_set_params; dev->dvb.frontend->ops.tuner_ops.set_params = philips_tu1216_tuner_61_set_params;
} }
break; break;
case SAA7134_BOARD_PHILIPS_TIGER: case SAA7134_BOARD_PHILIPS_TIGER:
dev->dvb.frontend = tda10046_attach(&philips_tiger_config, dev->dvb.frontend = tda10046_attach(&philips_tiger_config,
&dev->i2c_adap); &dev->i2c_adap);
if (dev->dvb.frontend) { if (dev->dvb.frontend) {
dev->dvb.frontend->ops->tuner_ops.init = philips_tiger_tuner_init; dev->dvb.frontend->ops.tuner_ops.init = philips_tiger_tuner_init;
dev->dvb.frontend->ops->tuner_ops.sleep = philips_tiger_tuner_sleep; dev->dvb.frontend->ops.tuner_ops.sleep = philips_tiger_tuner_sleep;
dev->dvb.frontend->ops->tuner_ops.set_params = philips_tiger_tuner_set_params; dev->dvb.frontend->ops.tuner_ops.set_params = philips_tiger_tuner_set_params;
} }
break; break;
case SAA7134_BOARD_ASUSTeK_P7131_DUAL: case SAA7134_BOARD_ASUSTeK_P7131_DUAL:
dev->dvb.frontend = tda10046_attach(&philips_tiger_config, dev->dvb.frontend = tda10046_attach(&philips_tiger_config,
&dev->i2c_adap); &dev->i2c_adap);
if (dev->dvb.frontend) { if (dev->dvb.frontend) {
dev->dvb.frontend->ops->tuner_ops.init = philips_tiger_tuner_init; dev->dvb.frontend->ops.tuner_ops.init = philips_tiger_tuner_init;
dev->dvb.frontend->ops->tuner_ops.sleep = philips_tiger_tuner_sleep; dev->dvb.frontend->ops.tuner_ops.sleep = philips_tiger_tuner_sleep;
dev->dvb.frontend->ops->tuner_ops.set_params = philips_tiger_tuner_set_params; dev->dvb.frontend->ops.tuner_ops.set_params = philips_tiger_tuner_set_params;
} }
break; break;
case SAA7134_BOARD_FLYDVBT_LR301: case SAA7134_BOARD_FLYDVBT_LR301:
dev->dvb.frontend = tda10046_attach(&tda827x_lifeview_config, dev->dvb.frontend = tda10046_attach(&tda827x_lifeview_config,
&dev->i2c_adap); &dev->i2c_adap);
if (dev->dvb.frontend) { if (dev->dvb.frontend) {
dev->dvb.frontend->ops->tuner_ops.init = philips_tda827x_tuner_init; dev->dvb.frontend->ops.tuner_ops.init = philips_tda827x_tuner_init;
dev->dvb.frontend->ops->tuner_ops.sleep = philips_tda827x_tuner_sleep; dev->dvb.frontend->ops.tuner_ops.sleep = philips_tda827x_tuner_sleep;
dev->dvb.frontend->ops->tuner_ops.set_params = philips_tda827x_tuner_set_params; dev->dvb.frontend->ops.tuner_ops.set_params = philips_tda827x_tuner_set_params;
} }
break; break;
case SAA7134_BOARD_FLYDVB_TRIO: case SAA7134_BOARD_FLYDVB_TRIO:
dev->dvb.frontend = tda10046_attach(&lifeview_trio_config, dev->dvb.frontend = tda10046_attach(&lifeview_trio_config,
&dev->i2c_adap); &dev->i2c_adap);
if (dev->dvb.frontend) { if (dev->dvb.frontend) {
dev->dvb.frontend->ops->tuner_ops.sleep = lifeview_trio_tuner_sleep; dev->dvb.frontend->ops.tuner_ops.sleep = lifeview_trio_tuner_sleep;
dev->dvb.frontend->ops->tuner_ops.set_params = lifeview_trio_tuner_set_params; dev->dvb.frontend->ops.tuner_ops.set_params = lifeview_trio_tuner_set_params;
} }
break; break;
case SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331: case SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331:
dev->dvb.frontend = tda10046_attach(&ads_tech_duo_config, dev->dvb.frontend = tda10046_attach(&ads_tech_duo_config,
&dev->i2c_adap); &dev->i2c_adap);
if (dev->dvb.frontend) { if (dev->dvb.frontend) {
dev->dvb.frontend->ops->tuner_ops.init = ads_duo_tuner_init; dev->dvb.frontend->ops.tuner_ops.init = ads_duo_tuner_init;
dev->dvb.frontend->ops->tuner_ops.sleep = ads_duo_tuner_sleep; dev->dvb.frontend->ops.tuner_ops.sleep = ads_duo_tuner_sleep;
dev->dvb.frontend->ops->tuner_ops.set_params = ads_duo_tuner_set_params; dev->dvb.frontend->ops.tuner_ops.set_params = ads_duo_tuner_set_params;
} }
break; break;
case SAA7134_BOARD_TEVION_DVBT_220RF: case SAA7134_BOARD_TEVION_DVBT_220RF:
dev->dvb.frontend = tda10046_attach(&tevion_dvbt220rf_config, dev->dvb.frontend = tda10046_attach(&tevion_dvbt220rf_config,
&dev->i2c_adap); &dev->i2c_adap);
if (dev->dvb.frontend) { if (dev->dvb.frontend) {
dev->dvb.frontend->ops->tuner_ops.sleep = tevion_dvb220rf_tuner_sleep; dev->dvb.frontend->ops.tuner_ops.sleep = tevion_dvb220rf_tuner_sleep;
dev->dvb.frontend->ops->tuner_ops.set_params = tevion_dvb220rf_tuner_set_params; dev->dvb.frontend->ops.tuner_ops.set_params = tevion_dvb220rf_tuner_set_params;
} }
break; break;
case SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS: case SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS:
dev->dvb.frontend = tda10046_attach(&ads_tech_duo_config, dev->dvb.frontend = tda10046_attach(&ads_tech_duo_config,
&dev->i2c_adap); &dev->i2c_adap);
if (dev->dvb.frontend) { if (dev->dvb.frontend) {
dev->dvb.frontend->ops->tuner_ops.init = ads_duo_tuner_init; dev->dvb.frontend->ops.tuner_ops.init = ads_duo_tuner_init;
dev->dvb.frontend->ops->tuner_ops.sleep = ads_duo_tuner_sleep; dev->dvb.frontend->ops.tuner_ops.sleep = ads_duo_tuner_sleep;
dev->dvb.frontend->ops->tuner_ops.set_params = ads_duo_tuner_set_params; dev->dvb.frontend->ops.tuner_ops.set_params = ads_duo_tuner_set_params;
} }
break; break;
#endif #endif
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册