mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-04-13 09:59:31 +00:00
media: v4l2-core: Introduce v4l2_query_ext_ctrl_to_v4l2_queryctrl
We use this logic in a couple of places. Refactor into a function. No functional change expected from this patch. Signed-off-by: Ricardo Ribalda <ribalda@chromium.org> Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
parent
0d75129312
commit
6494d3504c
3 changed files with 46 additions and 49 deletions
|
@ -1157,6 +1157,36 @@ int v4l2_query_ext_ctrl(struct v4l2_ctrl_handler *hdl, struct v4l2_query_ext_ctr
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(v4l2_query_ext_ctrl);
|
EXPORT_SYMBOL(v4l2_query_ext_ctrl);
|
||||||
|
|
||||||
|
void v4l2_query_ext_ctrl_to_v4l2_queryctrl(struct v4l2_queryctrl *to,
|
||||||
|
const struct v4l2_query_ext_ctrl *from)
|
||||||
|
{
|
||||||
|
to->id = from->id;
|
||||||
|
to->type = from->type;
|
||||||
|
to->flags = from->flags;
|
||||||
|
strscpy(to->name, from->name, sizeof(to->name));
|
||||||
|
|
||||||
|
switch (from->type) {
|
||||||
|
case V4L2_CTRL_TYPE_INTEGER:
|
||||||
|
case V4L2_CTRL_TYPE_BOOLEAN:
|
||||||
|
case V4L2_CTRL_TYPE_MENU:
|
||||||
|
case V4L2_CTRL_TYPE_INTEGER_MENU:
|
||||||
|
case V4L2_CTRL_TYPE_STRING:
|
||||||
|
case V4L2_CTRL_TYPE_BITMASK:
|
||||||
|
to->minimum = from->minimum;
|
||||||
|
to->maximum = from->maximum;
|
||||||
|
to->step = from->step;
|
||||||
|
to->default_value = from->default_value;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
to->minimum = 0;
|
||||||
|
to->maximum = 0;
|
||||||
|
to->step = 0;
|
||||||
|
to->default_value = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(v4l2_query_ext_ctrl_to_v4l2_queryctrl);
|
||||||
|
|
||||||
/* Implement VIDIOC_QUERYCTRL */
|
/* Implement VIDIOC_QUERYCTRL */
|
||||||
int v4l2_queryctrl(struct v4l2_ctrl_handler *hdl, struct v4l2_queryctrl *qc)
|
int v4l2_queryctrl(struct v4l2_ctrl_handler *hdl, struct v4l2_queryctrl *qc)
|
||||||
{
|
{
|
||||||
|
@ -1167,29 +1197,8 @@ int v4l2_queryctrl(struct v4l2_ctrl_handler *hdl, struct v4l2_queryctrl *qc)
|
||||||
if (rc)
|
if (rc)
|
||||||
return rc;
|
return rc;
|
||||||
|
|
||||||
qc->id = qec.id;
|
v4l2_query_ext_ctrl_to_v4l2_queryctrl(qc, &qec);
|
||||||
qc->type = qec.type;
|
|
||||||
qc->flags = qec.flags;
|
|
||||||
strscpy(qc->name, qec.name, sizeof(qc->name));
|
|
||||||
switch (qc->type) {
|
|
||||||
case V4L2_CTRL_TYPE_INTEGER:
|
|
||||||
case V4L2_CTRL_TYPE_BOOLEAN:
|
|
||||||
case V4L2_CTRL_TYPE_MENU:
|
|
||||||
case V4L2_CTRL_TYPE_INTEGER_MENU:
|
|
||||||
case V4L2_CTRL_TYPE_STRING:
|
|
||||||
case V4L2_CTRL_TYPE_BITMASK:
|
|
||||||
qc->minimum = qec.minimum;
|
|
||||||
qc->maximum = qec.maximum;
|
|
||||||
qc->step = qec.step;
|
|
||||||
qc->default_value = qec.default_value;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
qc->minimum = 0;
|
|
||||||
qc->maximum = 0;
|
|
||||||
qc->step = 0;
|
|
||||||
qc->default_value = 0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(v4l2_queryctrl);
|
EXPORT_SYMBOL(v4l2_queryctrl);
|
||||||
|
|
|
@ -2304,32 +2304,8 @@ static int v4l_queryctrl(const struct v4l2_ioctl_ops *ops,
|
||||||
ret = ops->vidioc_query_ext_ctrl(file, fh, &qec);
|
ret = ops->vidioc_query_ext_ctrl(file, fh, &qec);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
v4l2_query_ext_ctrl_to_v4l2_queryctrl(p, &qec);
|
||||||
p->id = qec.id;
|
return ret;
|
||||||
p->type = qec.type;
|
|
||||||
p->flags = qec.flags;
|
|
||||||
strscpy(p->name, qec.name, sizeof(p->name));
|
|
||||||
switch (p->type) {
|
|
||||||
case V4L2_CTRL_TYPE_INTEGER:
|
|
||||||
case V4L2_CTRL_TYPE_BOOLEAN:
|
|
||||||
case V4L2_CTRL_TYPE_MENU:
|
|
||||||
case V4L2_CTRL_TYPE_INTEGER_MENU:
|
|
||||||
case V4L2_CTRL_TYPE_STRING:
|
|
||||||
case V4L2_CTRL_TYPE_BITMASK:
|
|
||||||
p->minimum = qec.minimum;
|
|
||||||
p->maximum = qec.maximum;
|
|
||||||
p->step = qec.step;
|
|
||||||
p->default_value = qec.default_value;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
p->minimum = 0;
|
|
||||||
p->maximum = 0;
|
|
||||||
p->step = 0;
|
|
||||||
p->default_value = 0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int v4l_query_ext_ctrl(const struct v4l2_ioctl_ops *ops,
|
static int v4l_query_ext_ctrl(const struct v4l2_ioctl_ops *ops,
|
||||||
|
|
|
@ -1432,6 +1432,18 @@ v4l2_ctrl_request_hdl_ctrl_find(struct v4l2_ctrl_handler *hdl, u32 id);
|
||||||
*/
|
*/
|
||||||
int v4l2_queryctrl(struct v4l2_ctrl_handler *hdl, struct v4l2_queryctrl *qc);
|
int v4l2_queryctrl(struct v4l2_ctrl_handler *hdl, struct v4l2_queryctrl *qc);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* v4l2_query_ext_ctrl_to_v4l2_queryctrl - Convert a qec to qe.
|
||||||
|
*
|
||||||
|
* @to: The v4l2_queryctrl to write to.
|
||||||
|
* @from: The v4l2_query_ext_ctrl to read from.
|
||||||
|
*
|
||||||
|
* This function is a helper to convert a v4l2_query_ext_ctrl into a
|
||||||
|
* v4l2_queryctrl.
|
||||||
|
*/
|
||||||
|
void v4l2_query_ext_ctrl_to_v4l2_queryctrl(struct v4l2_queryctrl *to,
|
||||||
|
const struct v4l2_query_ext_ctrl *from);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* v4l2_query_ext_ctrl - Helper function to implement
|
* v4l2_query_ext_ctrl - Helper function to implement
|
||||||
* :ref:`VIDIOC_QUERY_EXT_CTRL <vidioc_queryctrl>` ioctl
|
* :ref:`VIDIOC_QUERY_EXT_CTRL <vidioc_queryctrl>` ioctl
|
||||||
|
|
Loading…
Add table
Reference in a new issue