|
@@ -1020,112 +1020,144 @@ static int dvb_init(struct saa7134_dev *dev)
|
|
|
printk("%s: pinnacle 300i dvb setup\n",dev->name);
|
|
|
dev->dvb.frontend = mt352_attach(&pinnacle_300i,
|
|
|
&dev->i2c_adap);
|
|
|
- dev->dvb.frontend->ops->tuner_ops.calc_regs = mt352_pinnacle_tuner_calc_regs;
|
|
|
+ if (dev->dvb.frontend) {
|
|
|
+ dev->dvb.frontend->ops->tuner_ops.calc_regs = mt352_pinnacle_tuner_calc_regs;
|
|
|
+ }
|
|
|
break;
|
|
|
|
|
|
case SAA7134_BOARD_AVERMEDIA_777:
|
|
|
printk("%s: avertv 777 dvb setup\n",dev->name);
|
|
|
dev->dvb.frontend = mt352_attach(&avermedia_777,
|
|
|
&dev->i2c_adap);
|
|
|
- dev->dvb.frontend->ops->tuner_ops.calc_regs = mt352_aver777_tuner_calc_regs;
|
|
|
+ if (dev->dvb.frontend) {
|
|
|
+ dev->dvb.frontend->ops->tuner_ops.calc_regs = mt352_aver777_tuner_calc_regs;
|
|
|
+ }
|
|
|
break;
|
|
|
#endif
|
|
|
#ifdef HAVE_TDA1004X
|
|
|
case SAA7134_BOARD_MD7134:
|
|
|
dev->dvb.frontend = tda10046_attach(&medion_cardbus,
|
|
|
&dev->i2c_adap);
|
|
|
- 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.set_params = philips_fmd1216_tuner_set_params;
|
|
|
+ if (dev->dvb.frontend) {
|
|
|
+ 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.set_params = philips_fmd1216_tuner_set_params;
|
|
|
+ }
|
|
|
break;
|
|
|
case SAA7134_BOARD_PHILIPS_TOUGH:
|
|
|
dev->dvb.frontend = tda10046_attach(&philips_tu1216_60_config,
|
|
|
&dev->i2c_adap);
|
|
|
- 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;
|
|
|
+ if (dev->dvb.frontend) {
|
|
|
+ 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;
|
|
|
+ }
|
|
|
break;
|
|
|
case SAA7134_BOARD_FLYDVBTDUO:
|
|
|
dev->dvb.frontend = tda10046_attach(&tda827x_lifeview_config,
|
|
|
&dev->i2c_adap);
|
|
|
- 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.set_params = philips_tda827x_tuner_set_params;
|
|
|
+ if (dev->dvb.frontend) {
|
|
|
+ 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.set_params = philips_tda827x_tuner_set_params;
|
|
|
+ }
|
|
|
break;
|
|
|
case SAA7134_BOARD_FLYDVBT_DUO_CARDBUS:
|
|
|
dev->dvb.frontend = tda10046_attach(&tda827x_lifeview_config,
|
|
|
&dev->i2c_adap);
|
|
|
- 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.set_params = philips_tda827x_tuner_set_params;
|
|
|
+ if (dev->dvb.frontend) {
|
|
|
+ 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.set_params = philips_tda827x_tuner_set_params;
|
|
|
+ }
|
|
|
break;
|
|
|
case SAA7134_BOARD_PHILIPS_EUROPA:
|
|
|
dev->dvb.frontend = tda10046_attach(&philips_europa_config,
|
|
|
&dev->i2c_adap);
|
|
|
- dev->original_demod_sleep = dev->dvb.frontend->ops->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.sleep = philips_europa_tuner_sleep;
|
|
|
- dev->dvb.frontend->ops->tuner_ops.set_params = philips_td1316_tuner_set_params;
|
|
|
+ if (dev->dvb.frontend) {
|
|
|
+ dev->original_demod_sleep = dev->dvb.frontend->ops->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.sleep = philips_europa_tuner_sleep;
|
|
|
+ dev->dvb.frontend->ops->tuner_ops.set_params = philips_td1316_tuner_set_params;
|
|
|
+ }
|
|
|
break;
|
|
|
case SAA7134_BOARD_VIDEOMATE_DVBT_300:
|
|
|
dev->dvb.frontend = tda10046_attach(&philips_europa_config,
|
|
|
&dev->i2c_adap);
|
|
|
- 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.set_params = philips_td1316_tuner_set_params;
|
|
|
+ if (dev->dvb.frontend) {
|
|
|
+ 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.set_params = philips_td1316_tuner_set_params;
|
|
|
+ }
|
|
|
break;
|
|
|
case SAA7134_BOARD_VIDEOMATE_DVBT_200:
|
|
|
dev->dvb.frontend = tda10046_attach(&philips_tu1216_61_config,
|
|
|
&dev->i2c_adap);
|
|
|
- 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;
|
|
|
+ if (dev->dvb.frontend) {
|
|
|
+ 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;
|
|
|
+ }
|
|
|
break;
|
|
|
case SAA7134_BOARD_PHILIPS_TIGER:
|
|
|
dev->dvb.frontend = tda10046_attach(&philips_tiger_config,
|
|
|
&dev->i2c_adap);
|
|
|
- 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.set_params = philips_tiger_tuner_set_params;
|
|
|
+ if (dev->dvb.frontend) {
|
|
|
+ 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.set_params = philips_tiger_tuner_set_params;
|
|
|
+ }
|
|
|
break;
|
|
|
case SAA7134_BOARD_ASUSTeK_P7131_DUAL:
|
|
|
dev->dvb.frontend = tda10046_attach(&philips_tiger_config,
|
|
|
&dev->i2c_adap);
|
|
|
- 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.set_params = philips_tiger_tuner_set_params;
|
|
|
+ if (dev->dvb.frontend) {
|
|
|
+ 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.set_params = philips_tiger_tuner_set_params;
|
|
|
+ }
|
|
|
break;
|
|
|
case SAA7134_BOARD_FLYDVBT_LR301:
|
|
|
dev->dvb.frontend = tda10046_attach(&tda827x_lifeview_config,
|
|
|
&dev->i2c_adap);
|
|
|
- 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.set_params = philips_tda827x_tuner_set_params;
|
|
|
+ if (dev->dvb.frontend) {
|
|
|
+ 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.set_params = philips_tda827x_tuner_set_params;
|
|
|
+ }
|
|
|
break;
|
|
|
case SAA7134_BOARD_FLYDVB_TRIO:
|
|
|
dev->dvb.frontend = tda10046_attach(&lifeview_trio_config,
|
|
|
&dev->i2c_adap);
|
|
|
- dev->dvb.frontend->ops->tuner_ops.sleep = lifeview_trio_tuner_sleep;
|
|
|
- dev->dvb.frontend->ops->tuner_ops.set_params = lifeview_trio_tuner_set_params;
|
|
|
+ if (dev->dvb.frontend) {
|
|
|
+ dev->dvb.frontend->ops->tuner_ops.sleep = lifeview_trio_tuner_sleep;
|
|
|
+ dev->dvb.frontend->ops->tuner_ops.set_params = lifeview_trio_tuner_set_params;
|
|
|
+ }
|
|
|
break;
|
|
|
case SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331:
|
|
|
dev->dvb.frontend = tda10046_attach(&ads_tech_duo_config,
|
|
|
&dev->i2c_adap);
|
|
|
- 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.set_params = ads_duo_tuner_set_params;
|
|
|
+ if (dev->dvb.frontend) {
|
|
|
+ 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.set_params = ads_duo_tuner_set_params;
|
|
|
+ }
|
|
|
break;
|
|
|
case SAA7134_BOARD_TEVION_DVBT_220RF:
|
|
|
dev->dvb.frontend = tda10046_attach(&tevion_dvbt220rf_config,
|
|
|
&dev->i2c_adap);
|
|
|
- dev->dvb.frontend->ops->tuner_ops.sleep = tevion_dvb220rf_tuner_sleep;
|
|
|
- dev->dvb.frontend->ops->tuner_ops.set_params = tevion_dvb220rf_tuner_set_params;
|
|
|
+ if (dev->dvb.frontend) {
|
|
|
+ dev->dvb.frontend->ops->tuner_ops.sleep = tevion_dvb220rf_tuner_sleep;
|
|
|
+ dev->dvb.frontend->ops->tuner_ops.set_params = tevion_dvb220rf_tuner_set_params;
|
|
|
+ }
|
|
|
break;
|
|
|
case SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS:
|
|
|
dev->dvb.frontend = tda10046_attach(&ads_tech_duo_config,
|
|
|
&dev->i2c_adap);
|
|
|
- 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.set_params = ads_duo_tuner_set_params;
|
|
|
+ if (dev->dvb.frontend) {
|
|
|
+ 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.set_params = ads_duo_tuner_set_params;
|
|
|
+ }
|
|
|
break;
|
|
|
#endif
|
|
|
#ifdef HAVE_NXT200X
|