diff options
author | Hans Verkuil <hans.verkuil@cisco.com> | 2014-03-07 05:18:37 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <m.chehab@samsung.com> | 2014-03-11 09:06:53 -0400 |
commit | dd519bb34a09d86db720f8a65e7dee1a85b2e90f (patch) | |
tree | dc68633c2a98b9bb5015c5c39c230cc6f766f794 /drivers/media/v4l2-core/v4l2-ioctl.c | |
parent | 254a47770163f9322333660ebdabf99ba49873da (diff) |
[media] v4l2: add VIDIOC_G/S_EDID support to the v4l2 core
Support this ioctl as part of the v4l2 core. Use the new ioctl
name and struct v4l2_edid type in the existing core code.
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
Diffstat (limited to 'drivers/media/v4l2-core/v4l2-ioctl.c')
-rw-r--r-- | drivers/media/v4l2-core/v4l2-ioctl.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c index 95dd4f15ab6e..6536e15c45e5 100644 --- a/drivers/media/v4l2-core/v4l2-ioctl.c +++ b/drivers/media/v4l2-core/v4l2-ioctl.c | |||
@@ -844,6 +844,14 @@ static void v4l_print_freq_band(const void *arg, bool write_only) | |||
844 | p->rangehigh, p->modulation); | 844 | p->rangehigh, p->modulation); |
845 | } | 845 | } |
846 | 846 | ||
847 | static void v4l_print_edid(const void *arg, bool write_only) | ||
848 | { | ||
849 | const struct v4l2_edid *p = arg; | ||
850 | |||
851 | pr_cont("pad=%u, start_block=%u, blocks=%u\n", | ||
852 | p->pad, p->start_block, p->blocks); | ||
853 | } | ||
854 | |||
847 | static void v4l_print_u32(const void *arg, bool write_only) | 855 | static void v4l_print_u32(const void *arg, bool write_only) |
848 | { | 856 | { |
849 | pr_cont("value=%u\n", *(const u32 *)arg); | 857 | pr_cont("value=%u\n", *(const u32 *)arg); |
@@ -2062,6 +2070,8 @@ static struct v4l2_ioctl_info v4l2_ioctls[] = { | |||
2062 | IOCTL_INFO_FNC(VIDIOC_QUERYMENU, v4l_querymenu, v4l_print_querymenu, INFO_FL_CTRL | INFO_FL_CLEAR(v4l2_querymenu, index)), | 2070 | IOCTL_INFO_FNC(VIDIOC_QUERYMENU, v4l_querymenu, v4l_print_querymenu, INFO_FL_CTRL | INFO_FL_CLEAR(v4l2_querymenu, index)), |
2063 | IOCTL_INFO_STD(VIDIOC_G_INPUT, vidioc_g_input, v4l_print_u32, 0), | 2071 | IOCTL_INFO_STD(VIDIOC_G_INPUT, vidioc_g_input, v4l_print_u32, 0), |
2064 | IOCTL_INFO_FNC(VIDIOC_S_INPUT, v4l_s_input, v4l_print_u32, INFO_FL_PRIO), | 2072 | IOCTL_INFO_FNC(VIDIOC_S_INPUT, v4l_s_input, v4l_print_u32, INFO_FL_PRIO), |
2073 | IOCTL_INFO_STD(VIDIOC_G_EDID, vidioc_g_edid, v4l_print_edid, INFO_FL_CLEAR(v4l2_edid, edid)), | ||
2074 | IOCTL_INFO_STD(VIDIOC_S_EDID, vidioc_s_edid, v4l_print_edid, INFO_FL_PRIO | INFO_FL_CLEAR(v4l2_edid, edid)), | ||
2065 | IOCTL_INFO_STD(VIDIOC_G_OUTPUT, vidioc_g_output, v4l_print_u32, 0), | 2075 | IOCTL_INFO_STD(VIDIOC_G_OUTPUT, vidioc_g_output, v4l_print_u32, 0), |
2066 | IOCTL_INFO_FNC(VIDIOC_S_OUTPUT, v4l_s_output, v4l_print_u32, INFO_FL_PRIO), | 2076 | IOCTL_INFO_FNC(VIDIOC_S_OUTPUT, v4l_s_output, v4l_print_u32, INFO_FL_PRIO), |
2067 | IOCTL_INFO_FNC(VIDIOC_ENUMOUTPUT, v4l_enumoutput, v4l_print_enumoutput, INFO_FL_CLEAR(v4l2_output, index)), | 2077 | IOCTL_INFO_FNC(VIDIOC_ENUMOUTPUT, v4l_enumoutput, v4l_print_enumoutput, INFO_FL_CLEAR(v4l2_output, index)), |
@@ -2274,9 +2284,9 @@ static int check_array_args(unsigned int cmd, void *parg, size_t *array_size, | |||
2274 | break; | 2284 | break; |
2275 | } | 2285 | } |
2276 | 2286 | ||
2277 | case VIDIOC_SUBDEV_G_EDID: | 2287 | case VIDIOC_G_EDID: |
2278 | case VIDIOC_SUBDEV_S_EDID: { | 2288 | case VIDIOC_S_EDID: { |
2279 | struct v4l2_subdev_edid *edid = parg; | 2289 | struct v4l2_edid *edid = parg; |
2280 | 2290 | ||
2281 | if (edid->blocks) { | 2291 | if (edid->blocks) { |
2282 | if (edid->blocks > 256) { | 2292 | if (edid->blocks > 256) { |