summaryrefslogtreecommitdiff
path: root/linux/drivers/media/video/cx88/cx88-blackbird.c
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@infradead.org>2007-01-20 14:59:29 -0200
committerMauro Carvalho Chehab <mchehab@infradead.org>2007-01-20 14:59:29 -0200
commitccae167cdcefc0489443c882938c7b839a65378f (patch)
tree53ad36cdc6389646191b8eca54319ec0a669217c /linux/drivers/media/video/cx88/cx88-blackbird.c
parent12858f895c978c0b291e7b913d961dff226bd4d1 (diff)
downloadmediapointer-dvb-s2-ccae167cdcefc0489443c882938c7b839a65378f.tar.gz
mediapointer-dvb-s2-ccae167cdcefc0489443c882938c7b839a65378f.tar.bz2
Do some cleanups at cx88-blackbird
From: Mauro Carvalho Chehab <mchehab@infradead.org> Signed-of-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'linux/drivers/media/video/cx88/cx88-blackbird.c')
-rw-r--r--linux/drivers/media/video/cx88/cx88-blackbird.c69
1 files changed, 29 insertions, 40 deletions
diff --git a/linux/drivers/media/video/cx88/cx88-blackbird.c b/linux/drivers/media/video/cx88/cx88-blackbird.c
index 3b15b7606..5ae3e1970 100644
--- a/linux/drivers/media/video/cx88/cx88-blackbird.c
+++ b/linux/drivers/media/video/cx88/cx88-blackbird.c
@@ -996,12 +996,31 @@ static int mpeg_do_ioctl(struct inode *inode, struct file *file,
}
case VIDIOC_S_FREQUENCY:
{
+ struct v4l2_frequency *f = arg;
+
blackbird_api_cmd(fh->dev, CX2341X_ENC_STOP_CAPTURE, 3, 0,
BLACKBIRD_END_NOW,
BLACKBIRD_MPEG_CAPTURE,
BLACKBIRD_RAW_BITS_NONE);
- cx88_do_ioctl(inode, file, 0, dev->core, cmd, arg, cx88_ioctl_hook);
+ if (UNSET == core->tuner_type)
+ return -EINVAL;
+ if (f->tuner != 0)
+ return -EINVAL;
+ if (0 == radio && f->type != V4L2_TUNER_ANALOG_TV)
+ return -EINVAL;
+ if (1 == radio && f->type != V4L2_TUNER_RADIO)
+ return -EINVAL;
+ mutex_lock(&core->lock);
+ core->freq = f->frequency;
+ cx88_newstation(core);
+ cx88_call_i2c_clients(core,VIDIOC_S_FREQUENCY,f);
+
+ /* When changing channels it is required to reset TVAUDIO */
+ msleep (10);
+ cx88_set_tvaudio(core);
+
+ mutex_unlock(&core->lock);
blackbird_initialize_codec(dev);
cx88_set_scale(dev->core, dev->width, dev->height,
@@ -1025,11 +1044,17 @@ static int mpeg_do_ioctl(struct inode *inode, struct file *file,
return blackbird_querymenu(dev, arg);
case VIDIOC_QUERYCTRL:
{
- struct v4l2_queryctrl *c = arg;
+ struct v4l2_queryctrl *qctrl = arg;
- if (blackbird_queryctrl(dev, c) == 0)
+ if (blackbird_queryctrl(dev, qctrl) == 0)
return 0;
- return cx88_do_ioctl(inode, file, 0, dev->core, cmd, arg, mpeg_do_ioctl);
+
+ struct v4l2_queryctrl *qctrl = arg;
+
+ qctrl->id = v4l2_ctrl_next(ctrl_classes, qctrl->id);
+ if (unlikely(qctrl->id == 0))
+ return -EINVAL;
+ return cx8800_ctrl_query(qctrl);
}
default:
@@ -1234,42 +1259,6 @@ int cx88_do_ioctl(struct inode *inode, struct file *file, int radio,
return -EINVAL;
}
#endif
-
- /* --- controls ---------------------------------------------- */
- case VIDIOC_QUERYCTRL:
- {
- struct v4l2_queryctrl *qctrl = arg;
-
- qctrl->id = v4l2_ctrl_next(ctrl_classes, qctrl->id);
- if (unlikely(qctrl->id == 0))
- return -EINVAL;
- return cx8800_ctrl_query(qctrl);
- }
- /* --- tuner ioctls ------------------------------------------ */
- case VIDIOC_S_FREQUENCY:
- {
- struct v4l2_frequency *f = arg;
-
- if (UNSET == core->tuner_type)
- return -EINVAL;
- if (f->tuner != 0)
- return -EINVAL;
- if (0 == radio && f->type != V4L2_TUNER_ANALOG_TV)
- return -EINVAL;
- if (1 == radio && f->type != V4L2_TUNER_RADIO)
- return -EINVAL;
- mutex_lock(&core->lock);
- core->freq = f->frequency;
- cx88_newstation(core);
- cx88_call_i2c_clients(core,VIDIOC_S_FREQUENCY,f);
-
- /* When changing channels it is required to reset TVAUDIO */
- msleep (10);
- cx88_set_tvaudio(core);
-
- mutex_unlock(&core->lock);
- return 0;
- }
#ifdef CONFIG_VIDEO_ADV_DEBUG
/* ioctls to allow direct acces to the cx2388x registers */
case VIDIOC_INT_G_REGISTER: