Commit 959d1507 authored by Ricardo Ribalda's avatar Ricardo Ribalda Committed by Mauro Carvalho Chehab
Browse files

media: atomisp: Replace queryctrl with query_ext_ctrl



The ioctl framework provides an emulator of queryctrl using
query_ext_ctrl.
Replace our implementation of queryctrl to support both.

Now that we are at it:
- Add comment about missing functionality.
- Remove superfluous clear of reserved[0].
- Remove ret var.

Signed-off-by: default avatarRicardo Ribalda <ribalda@chromium.org>
Signed-off-by: default avatarHans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent b810697e
Loading
Loading
Loading
Loading
+18 −15
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@ static const char *CARD = "ATOM ISP"; /* max size 31 */
 * FIXME: ISP should not know beforehand all CIDs supported by sensor.
 * Instead, it needs to propagate to sensor unknown CIDs.
 */
static struct v4l2_queryctrl ci_v4l2_controls[] = {
static struct v4l2_query_ext_ctrl ci_v4l2_controls[] = {
	{
		.id = V4L2_CID_AUTO_WHITE_BALANCE,
		.type = V4L2_CTRL_TYPE_BOOLEAN,
@@ -1140,31 +1140,34 @@ static int atomisp_s_ctrl(struct file *file, void *fh,

/*
 * To query the attributes of a control.
 * applications set the id field of a struct v4l2_queryctrl and call the
 * applications set the id field of a struct v4l2_query_ext_ctrl and call the
 * this ioctl with a pointer to this structure. The driver fills
 * the rest of the structure.
 */
static int atomisp_queryctl(struct file *file, void *fh,
			    struct v4l2_queryctrl *qc)
static int atomisp_query_ext_ctrl(struct file *file, void *fh,
				  struct v4l2_query_ext_ctrl *qc)
{
	int i, ret = -EINVAL;
	int i;

	/* TODO: implement V4L2_CTRL_FLAG_NEXT_CTRL */
	if (qc->id & V4L2_CTRL_FLAG_NEXT_CTRL)
		return ret;
		return -EINVAL;

	for (i = 0; i < ctrls_num; i++) {
		if (ci_v4l2_controls[i].id == qc->id) {
			memcpy(qc, &ci_v4l2_controls[i],
			       sizeof(struct v4l2_queryctrl));
			qc->reserved[0] = 0;
			ret = 0;
			break;
			*qc = ci_v4l2_controls[i];
			qc->elems = 1;
			qc->elem_size = 4;
			return 0;
		}
	}
	if (ret != 0)
		qc->flags = V4L2_CTRL_FLAG_DISABLED;

	return ret;
	/*
	 * This is probably not needed, but this flag has been set for
	 * many kernel versions. Leave it to avoid breaking any apps.
	 */
	qc->flags = V4L2_CTRL_FLAG_DISABLED;
	return -EINVAL;
}

static int atomisp_camera_g_ext_ctrls(struct file *file, void *fh,
@@ -1561,7 +1564,7 @@ const struct v4l2_ioctl_ops atomisp_ioctl_ops = {
	.vidioc_enum_input = atomisp_enum_input,
	.vidioc_g_input = atomisp_g_input,
	.vidioc_s_input = atomisp_s_input,
	.vidioc_queryctrl = atomisp_queryctl,
	.vidioc_query_ext_ctrl = atomisp_query_ext_ctrl,
	.vidioc_s_ctrl = atomisp_s_ctrl,
	.vidioc_g_ctrl = atomisp_g_ctrl,
	.vidioc_s_ext_ctrls = atomisp_s_ext_ctrls,