Struct v4l2_subdev_edid and the VIDIOC_SUBDEV_G/S_EDID ioctls were specific for subdevices, but for hardware with a simple video pipeline you do not need/want to create subdevice nodes to just get/set the EDID. Move the v4l2_subdev_edid struct to v4l2-common.h and rename as v4l2_edid. Add the same ioctls to videodev2.h as well, thus allowing this API to be used with both video nodes and v4l-subdev nodes.
Showing the changes to include/uapi/linux (3 of 3 files). Show all
Unified · Split
| @@ -68,4 +68,12 @@ · 67 unmodified lines | ||
| 68 | 68 | #define V4L2_SUBDEV_SEL_FLAG_SIZE_LE V4L2_SEL_FLAG_LE |
| 69 | 69 | #define V4L2_SUBDEV_SEL_FLAG_KEEP_CONFIG V4L2_SEL_FLAG_KEEP_CONFIG |
| 70 | 70 | |
| 71 | +struct v4l2_edid { | |
| 72 | + __u32 pad; | |
| 73 | + __u32 start_block; | |
| 74 | + __u32 blocks; | |
| 75 | + __u32 reserved[5]; | |
| 76 | + __u8 __user *edid; | |
| 77 | +}; | |
| 78 | + | |
| 71 | 79 | #endif /* __V4L2_COMMON__ */ |
| @@ -148,13 +148,8 @@ struct v4l2_subdev_selection { · 147 unmodified lines | ||
| 148 | 148 | __u32 reserved[8]; |
| 149 | 149 | }; |
| 150 | 150 | |
| 151 | −struct v4l2_subdev_edid { | |
| 152 | − __u32 pad; | |
| 153 | − __u32 start_block; | |
| 154 | − __u32 blocks; | |
| 155 | − __u32 reserved[5]; | |
| 156 | − __u8 __user *edid; | |
| 157 | −}; | |
| 151 | +/* Backwards compatibility define --- to be removed */ | |
| 152 | +#define v4l2_subdev_edid v4l2_edid | |
| 158 | 153 | |
| 159 | 154 | #define VIDIOC_SUBDEV_G_FMT _IOWR('V', 4, struct v4l2_subdev_format) |
| 160 | 155 | #define VIDIOC_SUBDEV_S_FMT _IOWR('V', 5, struct v4l2_subdev_format) |
| @@ -174,7 +169,8 @@ struct v4l2_subdev_edid { · 13 unmodified lines | ||
| 174 | 169 | _IOWR('V', 61, struct v4l2_subdev_selection) |
| 175 | 170 | #define VIDIOC_SUBDEV_S_SELECTION \ |
| 176 | 171 | _IOWR('V', 62, struct v4l2_subdev_selection) |
| 177 | −#define VIDIOC_SUBDEV_G_EDID _IOWR('V', 40, struct v4l2_subdev_edid) | |
| 178 | −#define VIDIOC_SUBDEV_S_EDID _IOWR('V', 41, struct v4l2_subdev_edid) | |
| 172 | +/* These two G/S_EDID ioctls are identical to the ioctls in videodev2.h */ | |
| 173 | +#define VIDIOC_SUBDEV_G_EDID _IOWR('V', 40, struct v4l2_edid) | |
| 174 | +#define VIDIOC_SUBDEV_S_EDID _IOWR('V', 41, struct v4l2_edid) | |
| 179 | 175 | |
| 180 | 176 | #endif |
| @@ -1913,6 +1913,8 @@ struct v4l2_create_buffers { · 1912 unmodified lines | ||
| 1913 | 1913 | #define VIDIOC_QUERYMENU _IOWR('V', 37, struct v4l2_querymenu) |
| 1914 | 1914 | #define VIDIOC_G_INPUT _IOR('V', 38, int) |
| 1915 | 1915 | #define VIDIOC_S_INPUT _IOWR('V', 39, int) |
| 1916 | +#define VIDIOC_G_EDID _IOWR('V', 40, struct v4l2_edid) | |
| 1917 | +#define VIDIOC_S_EDID _IOWR('V', 41, struct v4l2_edid) | |
| 1916 | 1918 | #define VIDIOC_G_OUTPUT _IOR('V', 46, int) |
| 1917 | 1919 | #define VIDIOC_S_OUTPUT _IOWR('V', 47, int) |
| 1918 | 1920 | #define VIDIOC_ENUMOUTPUT _IOWR('V', 48, struct v4l2_output) |