V4L/DVB (6384): Replace TDA9887_SET_CONFIG by TUNER_SET_CONFIG
Currently, the only tuner-specific device that allows special
configurations is tda9887. However, tea5767 also may require some
special configurations (for example, to specify a different Xtal freq).
This patch replaces TDA9887_SET_CONFIG by a more generic internal ioctl
(TUNER_SET_CONFIG). The newer one allows specifying what tuner is
appliable to a configuration set, and allows an arbitrary configuration
struct.
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
diff --git a/drivers/media/video/tuner-core.c b/drivers/media/video/tuner-core.c
index 9e99f363..d1d6c66 100644
--- a/drivers/media/video/tuner-core.c
+++ b/drivers/media/video/tuner-core.c
@@ -889,14 +889,29 @@
return 0;
}
#endif
- case TDA9887_SET_CONFIG:
- if (t->type == TUNER_TDA9887) {
- int *i = arg;
+ case TUNER_SET_CONFIG:
+ {
+ struct dvb_tuner_ops *fe_tuner_ops = &t->fe.ops.tuner_ops;
+ struct v4l2_priv_tun_config *cfg = arg;
- t->tda9887_config = *i;
+ if (t->type != cfg->tuner)
+ break;
+
+ if (t->type == TUNER_TDA9887) {
+ t->tda9887_config = *(unsigned int *)cfg->priv;
set_freq(client, t->tv_freq);
+ break;
}
+
+ if (NULL == fe_tuner_ops->set_config) {
+ tuner_warn("Tuner frontend module has no way to "
+ "set config\n");
+ break;
+ }
+ fe_tuner_ops->set_config(&t->fe, cfg->priv);
+
break;
+ }
/* --- v4l ioctls --- */
/* take care: bttv does userspace copying, we'll get a
kernel pointer here... */