|
@@ -1952,7 +1952,22 @@ static int v4l_s_parm(const struct v4l2_ioctl_ops *ops,
|
|
struct v4l2_streamparm *p = arg;
|
|
struct v4l2_streamparm *p = arg;
|
|
int ret = check_fmt(file, p->type);
|
|
int ret = check_fmt(file, p->type);
|
|
|
|
|
|
- return ret ? ret : ops->vidioc_s_parm(file, fh, p);
|
|
|
|
|
|
+ if (ret)
|
|
|
|
+ return ret;
|
|
|
|
+
|
|
|
|
+ /* Note: extendedmode is never used in drivers */
|
|
|
|
+ if (V4L2_TYPE_IS_OUTPUT(p->type)) {
|
|
|
|
+ memset(p->parm.output.reserved, 0,
|
|
|
|
+ sizeof(p->parm.output.reserved));
|
|
|
|
+ p->parm.output.extendedmode = 0;
|
|
|
|
+ p->parm.output.outputmode &= V4L2_MODE_HIGHQUALITY;
|
|
|
|
+ } else {
|
|
|
|
+ memset(p->parm.capture.reserved, 0,
|
|
|
|
+ sizeof(p->parm.capture.reserved));
|
|
|
|
+ p->parm.capture.extendedmode = 0;
|
|
|
|
+ p->parm.capture.capturemode &= V4L2_MODE_HIGHQUALITY;
|
|
|
|
+ }
|
|
|
|
+ return ops->vidioc_s_parm(file, fh, p);
|
|
}
|
|
}
|
|
|
|
|
|
static int v4l_queryctrl(const struct v4l2_ioctl_ops *ops,
|
|
static int v4l_queryctrl(const struct v4l2_ioctl_ops *ops,
|