aboutsummaryrefslogtreecommitdiff
path: root/drivers/media/v4l2-core/tuner-core.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/v4l2-core/tuner-core.c')
-rw-r--r--drivers/media/v4l2-core/tuner-core.c29
1 files changed, 13 insertions, 16 deletions
diff --git a/drivers/media/v4l2-core/tuner-core.c b/drivers/media/v4l2-core/tuner-core.c
index a0b10e6b55e..ddc9379eb27 100644
--- a/drivers/media/v4l2-core/tuner-core.c
+++ b/drivers/media/v4l2-core/tuner-core.c
@@ -218,16 +218,6 @@ static void fe_standby(struct dvb_frontend *fe)
fe_tuner_ops->sleep(fe);
}
-static int fe_has_signal(struct dvb_frontend *fe)
-{
- u16 strength;
-
- if (fe->ops.tuner_ops.get_rf_strength(fe, &strength) < 0)
- return 0;
-
- return strength;
-}
-
static int fe_set_config(struct dvb_frontend *fe, void *priv_cfg)
{
struct dvb_tuner_ops *fe_tuner_ops = &fe->ops.tuner_ops;
@@ -436,7 +426,7 @@ static void set_type(struct i2c_client *c, unsigned int type,
sizeof(struct analog_demod_ops));
if (fe_tuner_ops->get_rf_strength)
- analog_ops->has_signal = fe_has_signal;
+ analog_ops->has_signal = fe_tuner_ops->get_rf_strength;
if (fe_tuner_ops->get_afc)
analog_ops->get_afc = fe_tuner_ops->get_afc;
@@ -1060,9 +1050,12 @@ static void tuner_status(struct dvb_frontend *fe)
if (tuner_status & TUNER_STATUS_STEREO)
tuner_info("Stereo: yes\n");
}
- if (analog_ops->has_signal)
- tuner_info("Signal strength: %d\n",
- analog_ops->has_signal(fe));
+ if (analog_ops->has_signal) {
+ u16 signal;
+
+ if (!analog_ops->has_signal(fe, &signal))
+ tuner_info("Signal strength: %hu\n", signal);
+ }
}
/*
@@ -1181,8 +1174,12 @@ static int tuner_g_tuner(struct v4l2_subdev *sd, struct v4l2_tuner *vt)
return 0;
if (vt->type == t->mode && analog_ops->get_afc)
analog_ops->get_afc(&t->fe, &vt->afc);
- if (analog_ops->has_signal)
- vt->signal = analog_ops->has_signal(&t->fe);
+ if (vt->type == t->mode && analog_ops->has_signal) {
+ u16 signal = (u16)vt->signal;
+
+ if (!analog_ops->has_signal(&t->fe, &signal))
+ vt->signal = signal;
+ }
if (vt->type != V4L2_TUNER_RADIO) {
vt->capability |= V4L2_TUNER_CAP_NORM;
vt->rangelow = tv_range[0] * 16;