diff options
author | Andrew de Quincey <adq_dvb@lidskialf.net> | 2006-04-20 12:01:47 -0300 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2006-06-25 01:59:38 -0300 |
commit | 6b3ccab75ce082f7d63a43903ebd75da4266f77e (patch) | |
tree | 866d08667706310aaf7151a9802595fb44a7b63f /drivers/media/dvb/ttpci | |
parent | 159f8a6eda8c2ee359bb87bf62be70da2da14918 (diff) |
V4L/DVB (3895): Additional frontend_init safety checks
Don't try and set the tuner ops if the demod was not detected.
Signed-off-by: Andrew de Quincey <adq_dvb@lidskialf.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers/media/dvb/ttpci')
-rw-r--r-- | drivers/media/dvb/ttpci/av7110.c | 24 | ||||
-rw-r--r-- | drivers/media/dvb/ttpci/budget-av.c | 4 |
2 files changed, 22 insertions, 6 deletions
diff --git a/drivers/media/dvb/ttpci/av7110.c b/drivers/media/dvb/ttpci/av7110.c index 939a493b525..5f976d5eda4 100644 --- a/drivers/media/dvb/ttpci/av7110.c +++ b/drivers/media/dvb/ttpci/av7110.c @@ -2083,7 +2083,9 @@ static int frontend_init(struct av7110 *av7110) case 0x0000: // Fujitsu/Siemens DVB-Cable (ves1820/Philips CD1516(??)) av7110->fe = ves1820_attach(&philips_cd1516_config, &av7110->i2c_adap, read_pwm(av7110)); - av7110->fe->ops->tuner_ops.set_params = philips_cd1516_tuner_set_params; + if (av7110->fe) { + av7110->fe->ops->tuner_ops.set_params = philips_cd1516_tuner_set_params; + } break; } @@ -2134,13 +2136,17 @@ static int frontend_init(struct av7110 *av7110) /* Siemens DVB-C (full-length card) VES1820/Philips CD1516 */ av7110->fe = ves1820_attach(&philips_cd1516_config, &av7110->i2c_adap, read_pwm(av7110)); - av7110->fe->ops->tuner_ops.set_params = philips_cd1516_tuner_set_params; + if (av7110->fe) { + av7110->fe->ops->tuner_ops.set_params = philips_cd1516_tuner_set_params; + } break; case 0x0003: /* Hauppauge DVB-C 2.1 VES1820/ALPS TDBE2 */ av7110->fe = ves1820_attach(&alps_tdbe2_config, &av7110->i2c_adap, read_pwm(av7110)); - av7110->fe->ops->tuner_ops.set_params = alps_tdbe2_tuner_set_params; + if (av7110->fe) { + av7110->fe->ops->tuner_ops.set_params = alps_tdbe2_tuner_set_params; + } break; } break; @@ -2149,13 +2155,17 @@ static int frontend_init(struct av7110 *av7110) // ALPS TDLB7 av7110->fe = sp8870_attach(&alps_tdlb7_config, &av7110->i2c_adap); - av7110->fe->ops->tuner_ops.set_params = alps_tdlb7_tuner_set_params; + if (av7110->fe) { + av7110->fe->ops->tuner_ops.set_params = alps_tdlb7_tuner_set_params; + } break; case 0x0002: // Hauppauge/TT DVB-C premium rev2.X av7110->fe = ves1820_attach(&alps_tdbe2_config, &av7110->i2c_adap, read_pwm(av7110)); - av7110->fe->ops->tuner_ops.set_params = alps_tdbe2_tuner_set_params; + if (av7110->fe) { + av7110->fe->ops->tuner_ops.set_params = alps_tdbe2_tuner_set_params; + } break; case 0x0004: // Galaxis DVB-S rev1.3 @@ -2185,7 +2195,9 @@ static int frontend_init(struct av7110 *av7110) case 0x0008: // Hauppauge/TT DVB-T av7110->fe = l64781_attach(&grundig_29504_401_config, &av7110->i2c_adap); - av7110->fe->ops->tuner_ops.set_params = grundig_29504_401_tuner_set_params; + if (av7110->fe) { + av7110->fe->ops->tuner_ops.set_params = grundig_29504_401_tuner_set_params; + } break; case 0x000A: // Hauppauge/TT Nexus-CA rev1.X diff --git a/drivers/media/dvb/ttpci/budget-av.c b/drivers/media/dvb/ttpci/budget-av.c index 9bd069e4e11..68004187860 100644 --- a/drivers/media/dvb/ttpci/budget-av.c +++ b/drivers/media/dvb/ttpci/budget-av.c @@ -1113,6 +1113,10 @@ static void frontend_init(struct budget_av *budget_av) case SUBID_DVBT_CINERGY1200: fe = tda10046_attach(&philips_tu1216_config, &budget_av->budget.i2c_adap); + if (fe) { + fe->ops->tuner_ops.init = philips_tu1216_tuner_init; + fe->ops->tuner_ops.set_params = philips_tu1216_tuner_set_params; + } break; } |