Commit da4ae5a7 authored by Hans Verkuil's avatar Hans Verkuil Committed by Mauro Carvalho Chehab

V4L/DVB (3280): Added VIDIOC_QUERYCTRL to saa7115


- Added VIDIOC_QUERYCTRL to saa7115
Signed-off-by: default avatarHans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@brturbo.com.br>
parent d92c20e0
...@@ -1012,6 +1012,48 @@ static void saa7115_decode_vbi_line(struct i2c_client *client, ...@@ -1012,6 +1012,48 @@ static void saa7115_decode_vbi_line(struct i2c_client *client,
/* ============ SAA7115 AUDIO settings (end) ============= */ /* ============ SAA7115 AUDIO settings (end) ============= */
static struct v4l2_queryctrl saa7115_qctrl[] = {
{
.id = V4L2_CID_BRIGHTNESS,
.type = V4L2_CTRL_TYPE_INTEGER,
.name = "Brightness",
.minimum = 0,
.maximum = 255,
.step = 1,
.default_value = 128,
.flags = 0,
}, {
.id = V4L2_CID_CONTRAST,
.type = V4L2_CTRL_TYPE_INTEGER,
.name = "Contrast",
.minimum = 0,
.maximum = 255,
.step = 1,
.default_value = 64,
.flags = 0,
}, {
.id = V4L2_CID_SATURATION,
.type = V4L2_CTRL_TYPE_INTEGER,
.name = "Saturation",
.minimum = 0,
.maximum = 255,
.step = 1,
.default_value = 64,
.flags = 0,
}, {
.id = V4L2_CID_HUE,
.type = V4L2_CTRL_TYPE_INTEGER,
.name = "Hue",
.minimum = -128,
.maximum = 127,
.step = 1,
.default_value = 0,
.flags = 0,
},
};
/* ----------------------------------------------------------------------- */
static int saa7115_command(struct i2c_client *client, unsigned int cmd, void *arg) static int saa7115_command(struct i2c_client *client, unsigned int cmd, void *arg)
{ {
struct saa7115_state *state = i2c_get_clientdata(client); struct saa7115_state *state = i2c_get_clientdata(client);
...@@ -1052,6 +1094,19 @@ static int saa7115_command(struct i2c_client *client, unsigned int cmd, void *ar ...@@ -1052,6 +1094,19 @@ static int saa7115_command(struct i2c_client *client, unsigned int cmd, void *ar
case VIDIOC_S_CTRL: case VIDIOC_S_CTRL:
return saa7115_set_v4lctrl(client, (struct v4l2_control *)arg); return saa7115_set_v4lctrl(client, (struct v4l2_control *)arg);
case VIDIOC_QUERYCTRL:
{
struct v4l2_queryctrl *qc = arg;
int i;
for (i = 0; i < ARRAY_SIZE(saa7115_qctrl); i++)
if (qc->id && qc->id == saa7115_qctrl[i].id) {
memcpy(qc, &saa7115_qctrl[i], sizeof(*qc));
return 0;
}
return -EINVAL;
}
case VIDIOC_G_STD: case VIDIOC_G_STD:
*(v4l2_std_id *)arg = saa7115_get_v4lstd(client); *(v4l2_std_id *)arg = saa7115_get_v4lstd(client);
break; break;
......
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