From 6a3a13477ca4efd946e4fa76c102bcef7a7b9518 Mon Sep 17 00:00:00 2001 From: Hans Verkuil Date: Fri, 22 Mar 2013 13:32:20 -0300 Subject: [PATCH] --- yaml --- r: 366857 b: refs/heads/master c: e1cf6587d5ba2085d7e5eae064b1adde5d07f801 h: refs/heads/master i: 366855: 22116616e1633787db8e3393efb1a0c54dda7369 v: v3 --- [refs] | 2 +- trunk/drivers/media/usb/au0828/au0828-video.c | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index ee82a2ce1280..9aaa6c7b926e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 59e0548453bc24077e32748857e754d4bda2ab73 +refs/heads/master: e1cf6587d5ba2085d7e5eae064b1adde5d07f801 diff --git a/trunk/drivers/media/usb/au0828/au0828-video.c b/trunk/drivers/media/usb/au0828/au0828-video.c index ba90ffb3d921..8562cca80b36 100644 --- a/trunk/drivers/media/usb/au0828/au0828-video.c +++ b/trunk/drivers/media/usb/au0828/au0828-video.c @@ -1542,7 +1542,8 @@ static int vidioc_g_frequency(struct file *file, void *priv, struct au0828_fh *fh = priv; struct au0828_dev *dev = fh->dev; - freq->type = V4L2_TUNER_ANALOG_TV; + if (freq->tuner != 0) + return -EINVAL; freq->frequency = dev->ctrl_freq; return 0; } @@ -1552,13 +1553,10 @@ static int vidioc_s_frequency(struct file *file, void *priv, { struct au0828_fh *fh = priv; struct au0828_dev *dev = fh->dev; + struct v4l2_frequency new_freq = *freq; if (freq->tuner != 0) return -EINVAL; - if (freq->type != V4L2_TUNER_ANALOG_TV) - return -EINVAL; - - dev->ctrl_freq = freq->frequency; if (dev->dvb.frontend && dev->dvb.frontend->ops.analog_ops.i2c_gate_ctrl) dev->dvb.frontend->ops.analog_ops.i2c_gate_ctrl(dev->dvb.frontend, 1); @@ -1573,6 +1571,9 @@ static int vidioc_s_frequency(struct file *file, void *priv, } v4l2_device_call_all(&dev->v4l2_dev, 0, tuner, s_frequency, freq); + /* Get the actual set (and possibly clamped) frequency */ + v4l2_device_call_all(&dev->v4l2_dev, 0, tuner, g_frequency, &new_freq); + dev->ctrl_freq = new_freq.frequency; if (dev->dvb.frontend && dev->dvb.frontend->ops.analog_ops.i2c_gate_ctrl) dev->dvb.frontend->ops.analog_ops.i2c_gate_ctrl(dev->dvb.frontend, 0); @@ -1976,6 +1977,7 @@ int au0828_analog_register(struct au0828_dev *dev, dev->frame_size = dev->field_size << 1; dev->bytesperline = dev->width << 1; dev->ctrl_ainput = 0; + dev->ctrl_freq = 960; /* allocate and fill v4l2 video struct */ dev->vdev = video_device_alloc();