Commit 668f44a6 authored by Jean-François Moine's avatar Jean-François Moine Committed by Mauro Carvalho Chehab

[media] gspca: Use the global error status for get/set streamparm

Also, in ov534, don't check the parm type.
Signed-off-by: default avatarJean-François Moine <moinejf@free.fr>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 76ebc16b
...@@ -1708,12 +1708,13 @@ static int vidioc_g_parm(struct file *filp, void *priv, ...@@ -1708,12 +1708,13 @@ static int vidioc_g_parm(struct file *filp, void *priv,
if (mutex_lock_interruptible(&gspca_dev->usb_lock)) if (mutex_lock_interruptible(&gspca_dev->usb_lock))
return -ERESTARTSYS; return -ERESTARTSYS;
gspca_dev->usb_err = 0; if (gspca_dev->present) {
if (gspca_dev->present) gspca_dev->usb_err = 0;
ret = gspca_dev->sd_desc->get_streamparm(gspca_dev, gspca_dev->sd_desc->get_streamparm(gspca_dev, parm);
parm); ret = gspca_dev->usb_err;
else } else {
ret = -ENODEV; ret = -ENODEV;
}
mutex_unlock(&gspca_dev->usb_lock); mutex_unlock(&gspca_dev->usb_lock);
return ret; return ret;
} }
...@@ -1738,12 +1739,13 @@ static int vidioc_s_parm(struct file *filp, void *priv, ...@@ -1738,12 +1739,13 @@ static int vidioc_s_parm(struct file *filp, void *priv,
if (mutex_lock_interruptible(&gspca_dev->usb_lock)) if (mutex_lock_interruptible(&gspca_dev->usb_lock))
return -ERESTARTSYS; return -ERESTARTSYS;
gspca_dev->usb_err = 0; if (gspca_dev->present) {
if (gspca_dev->present) gspca_dev->usb_err = 0;
ret = gspca_dev->sd_desc->set_streamparm(gspca_dev, gspca_dev->sd_desc->set_streamparm(gspca_dev, parm);
parm); ret = gspca_dev->usb_err;
else } else {
ret = -ENODEV; ret = -ENODEV;
}
mutex_unlock(&gspca_dev->usb_lock); mutex_unlock(&gspca_dev->usb_lock);
return ret; return ret;
} }
......
...@@ -93,7 +93,7 @@ typedef int (*cam_reg_op) (struct gspca_dev *, ...@@ -93,7 +93,7 @@ typedef int (*cam_reg_op) (struct gspca_dev *,
struct v4l2_dbg_register *); struct v4l2_dbg_register *);
typedef int (*cam_ident_op) (struct gspca_dev *, typedef int (*cam_ident_op) (struct gspca_dev *,
struct v4l2_dbg_chip_ident *); struct v4l2_dbg_chip_ident *);
typedef int (*cam_streamparm_op) (struct gspca_dev *, typedef void (*cam_streamparm_op) (struct gspca_dev *,
struct v4l2_streamparm *); struct v4l2_streamparm *);
typedef int (*cam_qmnu_op) (struct gspca_dev *, typedef int (*cam_qmnu_op) (struct gspca_dev *,
struct v4l2_querymenu *); struct v4l2_querymenu *);
......
...@@ -1243,34 +1243,26 @@ static int sd_querymenu(struct gspca_dev *gspca_dev, ...@@ -1243,34 +1243,26 @@ static int sd_querymenu(struct gspca_dev *gspca_dev,
} }
/* get stream parameters (framerate) */ /* get stream parameters (framerate) */
static int sd_get_streamparm(struct gspca_dev *gspca_dev, static void sd_get_streamparm(struct gspca_dev *gspca_dev,
struct v4l2_streamparm *parm) struct v4l2_streamparm *parm)
{ {
struct v4l2_captureparm *cp = &parm->parm.capture; struct v4l2_captureparm *cp = &parm->parm.capture;
struct v4l2_fract *tpf = &cp->timeperframe; struct v4l2_fract *tpf = &cp->timeperframe;
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
if (parm->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
return -EINVAL;
cp->capability |= V4L2_CAP_TIMEPERFRAME; cp->capability |= V4L2_CAP_TIMEPERFRAME;
tpf->numerator = 1; tpf->numerator = 1;
tpf->denominator = sd->frame_rate; tpf->denominator = sd->frame_rate;
return 0;
} }
/* set stream parameters (framerate) */ /* set stream parameters (framerate) */
static int sd_set_streamparm(struct gspca_dev *gspca_dev, static void sd_set_streamparm(struct gspca_dev *gspca_dev,
struct v4l2_streamparm *parm) struct v4l2_streamparm *parm)
{ {
struct v4l2_captureparm *cp = &parm->parm.capture; struct v4l2_captureparm *cp = &parm->parm.capture;
struct v4l2_fract *tpf = &cp->timeperframe; struct v4l2_fract *tpf = &cp->timeperframe;
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
if (parm->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
return -EINVAL;
/* Set requested framerate */ /* Set requested framerate */
sd->frame_rate = tpf->denominator / tpf->numerator; sd->frame_rate = tpf->denominator / tpf->numerator;
if (gspca_dev->streaming) if (gspca_dev->streaming)
...@@ -1279,8 +1271,6 @@ static int sd_set_streamparm(struct gspca_dev *gspca_dev, ...@@ -1279,8 +1271,6 @@ static int sd_set_streamparm(struct gspca_dev *gspca_dev,
/* Return the actual framerate */ /* Return the actual framerate */
tpf->numerator = 1; tpf->numerator = 1;
tpf->denominator = sd->frame_rate; tpf->denominator = sd->frame_rate;
return 0;
} }
/* sub-driver description */ /* sub-driver description */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment