summaryrefslogtreecommitdiff
path: root/linux/drivers/media/video/tuner-core.c
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@infradead.org>2007-10-26 02:04:46 -0200
committerMauro Carvalho Chehab <mchehab@infradead.org>2007-10-26 02:04:46 -0200
commit37ec66afc95aef6493a0f3617b1f5fff6bbef7cd (patch)
treea1ce6bf55008043cb777496cd2b120d8335c963c /linux/drivers/media/video/tuner-core.c
parentb296024463558f0e9fe5dff04fdfd91903f15bd5 (diff)
parent8d0865f57c653ef13eb27ce8ca78901ba6058d57 (diff)
downloadmediapointer-dvb-s2-37ec66afc95aef6493a0f3617b1f5fff6bbef7cd.tar.gz
mediapointer-dvb-s2-37ec66afc95aef6493a0f3617b1f5fff6bbef7cd.tar.bz2
merge: http://linuxtv.org/hg/~hverkuil/v4l-dvb-fixes
From: Mauro Carvalho Chehab <mchehab@infradead.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'linux/drivers/media/video/tuner-core.c')
-rw-r--r--linux/drivers/media/video/tuner-core.c23
1 files changed, 19 insertions, 4 deletions
diff --git a/linux/drivers/media/video/tuner-core.c b/linux/drivers/media/video/tuner-core.c
index b3d765c32..79c2d1981 100644
--- a/linux/drivers/media/video/tuner-core.c
+++ b/linux/drivers/media/video/tuner-core.c
@@ -959,14 +959,29 @@ static int tuner_command(struct i2c_client *client, unsigned int cmd, void *arg)
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;
+
+ if (t->type != cfg->tuner)
+ break;
- t->tda9887_config = *i;
+ 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... */