Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media into next
Pull media updates from Mauro Carvalho Chehab: "This contains: - a new frontend/tuner driver set for si2168 and sa2157 - Videobuf 2 core now supports DVB too - A new gspca sub-driver (dtcs033) - saa7134 is now converted to use videobuf2 - add support for 4K timings - several other driver fixes and improvements PS. This pull request is shorter than usual, partly because I have some other patches on topic branches that I'll be sending you later this week" * 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (286 commits) [media] au0828-dvb: restore its permission to 644 [media] xc5000: delay tuner sleep to 5 seconds [media] xc5000: Don't use whitespace before tabs [media] xc5000: fix CamelCase [media] xc5000: Don't wrap msleep() [media] xc5000: get rid of positive error codes [media] au0828: reset streaming when a new frequency is set [media] au0828: Improve debug messages for urb_completion [media] au0828: Cancel stream-restart operation if frontend is disconnected [media] dib0700: fix RC support on Hauppauge Nova-TD [media] USB: as102_usb_drv.c: Remove useless return variables [media] v4l: Fix documentation of V4L2_PIX_FMT_H264_MVC and VP8 pixel formats [media] m5mols: Replace missing header [media] staging: lirc: Fix sparse warnings [media] fix mceusb endpoint type identification/handling [media] az6027: Added the PID for a new revision of the Elgato EyeTV Sat DVB-S Tuner [media] DocBook media: fix typo [media] adv7604: Add missing include to linux/types.h [media] v4l: Validate fields in the core code for subdev EDID ioctls [media] v4l: Add support for DV timings ioctls on subdev nodes ...
This commit is contained in:
@@ -75,7 +75,7 @@ struct v4l2_edid {
|
||||
__u32 start_block;
|
||||
__u32 blocks;
|
||||
__u32 reserved[5];
|
||||
__u8 __user *edid;
|
||||
__u8 *edid;
|
||||
};
|
||||
|
||||
#endif /* __V4L2_COMMON__ */
|
||||
|
@@ -173,6 +173,76 @@
|
||||
V4L2_DV_FL_CAN_REDUCE_FPS) \
|
||||
}
|
||||
|
||||
#define V4L2_DV_BT_CEA_3840X2160P24 { \
|
||||
.type = V4L2_DV_BT_656_1120, \
|
||||
V4L2_INIT_BT_TIMINGS(3840, 2160, 0, V4L2_DV_HSYNC_POS_POL, \
|
||||
297000000, 1276, 88, 296, 8, 10, 72, 0, 0, 0, \
|
||||
V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_CAN_REDUCE_FPS) \
|
||||
}
|
||||
|
||||
#define V4L2_DV_BT_CEA_3840X2160P25 { \
|
||||
.type = V4L2_DV_BT_656_1120, \
|
||||
V4L2_INIT_BT_TIMINGS(3840, 2160, 0, V4L2_DV_HSYNC_POS_POL, \
|
||||
297000000, 1056, 88, 296, 8, 10, 72, 0, 0, 0, \
|
||||
V4L2_DV_BT_STD_CEA861, 0) \
|
||||
}
|
||||
|
||||
#define V4L2_DV_BT_CEA_3840X2160P30 { \
|
||||
.type = V4L2_DV_BT_656_1120, \
|
||||
V4L2_INIT_BT_TIMINGS(3840, 2160, 0, V4L2_DV_HSYNC_POS_POL, \
|
||||
297000000, 176, 88, 296, 8, 10, 72, 0, 0, 0, \
|
||||
V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_CAN_REDUCE_FPS) \
|
||||
}
|
||||
|
||||
#define V4L2_DV_BT_CEA_3840X2160P50 { \
|
||||
.type = V4L2_DV_BT_656_1120, \
|
||||
V4L2_INIT_BT_TIMINGS(3840, 2160, 0, V4L2_DV_HSYNC_POS_POL, \
|
||||
594000000, 1056, 88, 296, 8, 10, 72, 0, 0, 0, \
|
||||
V4L2_DV_BT_STD_CEA861, 0) \
|
||||
}
|
||||
|
||||
#define V4L2_DV_BT_CEA_3840X2160P60 { \
|
||||
.type = V4L2_DV_BT_656_1120, \
|
||||
V4L2_INIT_BT_TIMINGS(3840, 2160, 0, V4L2_DV_HSYNC_POS_POL, \
|
||||
594000000, 176, 88, 296, 8, 10, 72, 0, 0, 0, \
|
||||
V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_CAN_REDUCE_FPS) \
|
||||
}
|
||||
|
||||
#define V4L2_DV_BT_CEA_4096X2160P24 { \
|
||||
.type = V4L2_DV_BT_656_1120, \
|
||||
V4L2_INIT_BT_TIMINGS(4096, 2160, 0, V4L2_DV_HSYNC_POS_POL, \
|
||||
297000000, 1020, 88, 296, 8, 10, 72, 0, 0, 0, \
|
||||
V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_CAN_REDUCE_FPS) \
|
||||
}
|
||||
|
||||
#define V4L2_DV_BT_CEA_4096X2160P25 { \
|
||||
.type = V4L2_DV_BT_656_1120, \
|
||||
V4L2_INIT_BT_TIMINGS(4096, 2160, 0, V4L2_DV_HSYNC_POS_POL, \
|
||||
297000000, 968, 88, 128, 8, 10, 72, 0, 0, 0, \
|
||||
V4L2_DV_BT_STD_CEA861, 0) \
|
||||
}
|
||||
|
||||
#define V4L2_DV_BT_CEA_4096X2160P30 { \
|
||||
.type = V4L2_DV_BT_656_1120, \
|
||||
V4L2_INIT_BT_TIMINGS(4096, 2160, 0, V4L2_DV_HSYNC_POS_POL, \
|
||||
297000000, 88, 88, 128, 8, 10, 72, 0, 0, 0, \
|
||||
V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_CAN_REDUCE_FPS) \
|
||||
}
|
||||
|
||||
#define V4L2_DV_BT_CEA_4096X2160P50 { \
|
||||
.type = V4L2_DV_BT_656_1120, \
|
||||
V4L2_INIT_BT_TIMINGS(4096, 2160, 0, V4L2_DV_HSYNC_POS_POL, \
|
||||
594000000, 968, 88, 128, 8, 10, 72, 0, 0, 0, \
|
||||
V4L2_DV_BT_STD_CEA861, 0) \
|
||||
}
|
||||
|
||||
#define V4L2_DV_BT_CEA_4096X2160P60 { \
|
||||
.type = V4L2_DV_BT_656_1120, \
|
||||
V4L2_INIT_BT_TIMINGS(4096, 2160, 0, V4L2_DV_HSYNC_POS_POL, \
|
||||
594000000, 88, 88, 128, 8, 10, 72, 0, 0, 0, \
|
||||
V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_CAN_REDUCE_FPS) \
|
||||
}
|
||||
|
||||
|
||||
/* VESA Discrete Monitor Timings as per version 1.0, revision 12 */
|
||||
|
||||
|
@@ -52,7 +52,7 @@ enum v4l2_mbus_pixelcode {
|
||||
V4L2_MBUS_FMT_RGB888_2X12_LE = 0x100c,
|
||||
V4L2_MBUS_FMT_ARGB8888_1X32 = 0x100d,
|
||||
|
||||
/* YUV (including grey) - next is 0x2018 */
|
||||
/* YUV (including grey) - next is 0x2024 */
|
||||
V4L2_MBUS_FMT_Y8_1X8 = 0x2001,
|
||||
V4L2_MBUS_FMT_UV8_1X8 = 0x2015,
|
||||
V4L2_MBUS_FMT_UYVY8_1_5X8 = 0x2002,
|
||||
@@ -64,6 +64,8 @@ enum v4l2_mbus_pixelcode {
|
||||
V4L2_MBUS_FMT_YUYV8_2X8 = 0x2008,
|
||||
V4L2_MBUS_FMT_YVYU8_2X8 = 0x2009,
|
||||
V4L2_MBUS_FMT_Y10_1X10 = 0x200a,
|
||||
V4L2_MBUS_FMT_UYVY10_2X10 = 0x2018,
|
||||
V4L2_MBUS_FMT_VYUY10_2X10 = 0x2019,
|
||||
V4L2_MBUS_FMT_YUYV10_2X10 = 0x200b,
|
||||
V4L2_MBUS_FMT_YVYU10_2X10 = 0x200c,
|
||||
V4L2_MBUS_FMT_Y12_1X12 = 0x2013,
|
||||
@@ -72,10 +74,20 @@ enum v4l2_mbus_pixelcode {
|
||||
V4L2_MBUS_FMT_YUYV8_1X16 = 0x2011,
|
||||
V4L2_MBUS_FMT_YVYU8_1X16 = 0x2012,
|
||||
V4L2_MBUS_FMT_YDYUYDYV8_1X16 = 0x2014,
|
||||
V4L2_MBUS_FMT_UYVY10_1X20 = 0x201a,
|
||||
V4L2_MBUS_FMT_VYUY10_1X20 = 0x201b,
|
||||
V4L2_MBUS_FMT_YUYV10_1X20 = 0x200d,
|
||||
V4L2_MBUS_FMT_YVYU10_1X20 = 0x200e,
|
||||
V4L2_MBUS_FMT_YUV10_1X30 = 0x2016,
|
||||
V4L2_MBUS_FMT_AYUV8_1X32 = 0x2017,
|
||||
V4L2_MBUS_FMT_UYVY12_2X12 = 0x201c,
|
||||
V4L2_MBUS_FMT_VYUY12_2X12 = 0x201d,
|
||||
V4L2_MBUS_FMT_YUYV12_2X12 = 0x201e,
|
||||
V4L2_MBUS_FMT_YVYU12_2X12 = 0x201f,
|
||||
V4L2_MBUS_FMT_UYVY12_1X24 = 0x2020,
|
||||
V4L2_MBUS_FMT_VYUY12_1X24 = 0x2021,
|
||||
V4L2_MBUS_FMT_YUYV12_1X24 = 0x2022,
|
||||
V4L2_MBUS_FMT_YVYU12_1X24 = 0x2023,
|
||||
|
||||
/* Bayer - next is 0x3019 */
|
||||
V4L2_MBUS_FMT_SBGGR8_1X8 = 0x3001,
|
||||
|
@@ -151,26 +151,24 @@ struct v4l2_subdev_selection {
|
||||
/* Backwards compatibility define --- to be removed */
|
||||
#define v4l2_subdev_edid v4l2_edid
|
||||
|
||||
#define VIDIOC_SUBDEV_G_FMT _IOWR('V', 4, struct v4l2_subdev_format)
|
||||
#define VIDIOC_SUBDEV_S_FMT _IOWR('V', 5, struct v4l2_subdev_format)
|
||||
#define VIDIOC_SUBDEV_G_FRAME_INTERVAL \
|
||||
_IOWR('V', 21, struct v4l2_subdev_frame_interval)
|
||||
#define VIDIOC_SUBDEV_S_FRAME_INTERVAL \
|
||||
_IOWR('V', 22, struct v4l2_subdev_frame_interval)
|
||||
#define VIDIOC_SUBDEV_ENUM_MBUS_CODE \
|
||||
_IOWR('V', 2, struct v4l2_subdev_mbus_code_enum)
|
||||
#define VIDIOC_SUBDEV_ENUM_FRAME_SIZE \
|
||||
_IOWR('V', 74, struct v4l2_subdev_frame_size_enum)
|
||||
#define VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL \
|
||||
_IOWR('V', 75, struct v4l2_subdev_frame_interval_enum)
|
||||
#define VIDIOC_SUBDEV_G_CROP _IOWR('V', 59, struct v4l2_subdev_crop)
|
||||
#define VIDIOC_SUBDEV_S_CROP _IOWR('V', 60, struct v4l2_subdev_crop)
|
||||
#define VIDIOC_SUBDEV_G_SELECTION \
|
||||
_IOWR('V', 61, struct v4l2_subdev_selection)
|
||||
#define VIDIOC_SUBDEV_S_SELECTION \
|
||||
_IOWR('V', 62, struct v4l2_subdev_selection)
|
||||
/* These two G/S_EDID ioctls are identical to the ioctls in videodev2.h */
|
||||
#define VIDIOC_SUBDEV_G_EDID _IOWR('V', 40, struct v4l2_edid)
|
||||
#define VIDIOC_SUBDEV_S_EDID _IOWR('V', 41, struct v4l2_edid)
|
||||
#define VIDIOC_SUBDEV_G_FMT _IOWR('V', 4, struct v4l2_subdev_format)
|
||||
#define VIDIOC_SUBDEV_S_FMT _IOWR('V', 5, struct v4l2_subdev_format)
|
||||
#define VIDIOC_SUBDEV_G_FRAME_INTERVAL _IOWR('V', 21, struct v4l2_subdev_frame_interval)
|
||||
#define VIDIOC_SUBDEV_S_FRAME_INTERVAL _IOWR('V', 22, struct v4l2_subdev_frame_interval)
|
||||
#define VIDIOC_SUBDEV_ENUM_MBUS_CODE _IOWR('V', 2, struct v4l2_subdev_mbus_code_enum)
|
||||
#define VIDIOC_SUBDEV_ENUM_FRAME_SIZE _IOWR('V', 74, struct v4l2_subdev_frame_size_enum)
|
||||
#define VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL _IOWR('V', 75, struct v4l2_subdev_frame_interval_enum)
|
||||
#define VIDIOC_SUBDEV_G_CROP _IOWR('V', 59, struct v4l2_subdev_crop)
|
||||
#define VIDIOC_SUBDEV_S_CROP _IOWR('V', 60, struct v4l2_subdev_crop)
|
||||
#define VIDIOC_SUBDEV_G_SELECTION _IOWR('V', 61, struct v4l2_subdev_selection)
|
||||
#define VIDIOC_SUBDEV_S_SELECTION _IOWR('V', 62, struct v4l2_subdev_selection)
|
||||
/* The following ioctls are identical to the ioctls in videodev2.h */
|
||||
#define VIDIOC_SUBDEV_G_EDID _IOWR('V', 40, struct v4l2_edid)
|
||||
#define VIDIOC_SUBDEV_S_EDID _IOWR('V', 41, struct v4l2_edid)
|
||||
#define VIDIOC_SUBDEV_S_DV_TIMINGS _IOWR('V', 87, struct v4l2_dv_timings)
|
||||
#define VIDIOC_SUBDEV_G_DV_TIMINGS _IOWR('V', 88, struct v4l2_dv_timings)
|
||||
#define VIDIOC_SUBDEV_ENUM_DV_TIMINGS _IOWR('V', 98, struct v4l2_enum_dv_timings)
|
||||
#define VIDIOC_SUBDEV_QUERY_DV_TIMINGS _IOR('V', 99, struct v4l2_dv_timings)
|
||||
#define VIDIOC_SUBDEV_DV_TIMINGS_CAP _IOWR('V', 100, struct v4l2_dv_timings_cap)
|
||||
|
||||
#endif
|
||||
|
@@ -649,7 +649,6 @@ struct v4l2_plane {
|
||||
* @length: size in bytes of the buffer (NOT its payload) for single-plane
|
||||
* buffers (when type != *_MPLANE); number of elements in the
|
||||
* planes array for multi-plane buffers
|
||||
* @input: input number from which the video data has has been captured
|
||||
*
|
||||
* Contains data exchanged by application and driver using one of the Streaming
|
||||
* I/O methods.
|
||||
@@ -1107,12 +1106,15 @@ struct v4l2_dv_timings {
|
||||
|
||||
/** struct v4l2_enum_dv_timings - DV timings enumeration
|
||||
* @index: enumeration index
|
||||
* @pad: the pad number for which to enumerate timings (used with
|
||||
* v4l-subdev nodes only)
|
||||
* @reserved: must be zeroed
|
||||
* @timings: the timings for the given index
|
||||
*/
|
||||
struct v4l2_enum_dv_timings {
|
||||
__u32 index;
|
||||
__u32 reserved[3];
|
||||
__u32 pad;
|
||||
__u32 reserved[2];
|
||||
struct v4l2_dv_timings timings;
|
||||
};
|
||||
|
||||
@@ -1150,11 +1152,14 @@ struct v4l2_bt_timings_cap {
|
||||
|
||||
/** struct v4l2_dv_timings_cap - DV timings capabilities
|
||||
* @type: the type of the timings (same as in struct v4l2_dv_timings)
|
||||
* @pad: the pad number for which to query capabilities (used with
|
||||
* v4l-subdev nodes only)
|
||||
* @bt: the BT656/1120 timings capabilities
|
||||
*/
|
||||
struct v4l2_dv_timings_cap {
|
||||
__u32 type;
|
||||
__u32 reserved[3];
|
||||
__u32 pad;
|
||||
__u32 reserved[2];
|
||||
union {
|
||||
struct v4l2_bt_timings_cap bt;
|
||||
__u32 raw_data[32];
|
||||
@@ -1765,6 +1770,7 @@ struct v4l2_streamparm {
|
||||
#define V4L2_EVENT_EOS 2
|
||||
#define V4L2_EVENT_CTRL 3
|
||||
#define V4L2_EVENT_FRAME_SYNC 4
|
||||
#define V4L2_EVENT_SOURCE_CHANGE 5
|
||||
#define V4L2_EVENT_PRIVATE_START 0x08000000
|
||||
|
||||
/* Payload for V4L2_EVENT_VSYNC */
|
||||
@@ -1796,12 +1802,19 @@ struct v4l2_event_frame_sync {
|
||||
__u32 frame_sequence;
|
||||
};
|
||||
|
||||
#define V4L2_EVENT_SRC_CH_RESOLUTION (1 << 0)
|
||||
|
||||
struct v4l2_event_src_change {
|
||||
__u32 changes;
|
||||
};
|
||||
|
||||
struct v4l2_event {
|
||||
__u32 type;
|
||||
union {
|
||||
struct v4l2_event_vsync vsync;
|
||||
struct v4l2_event_ctrl ctrl;
|
||||
struct v4l2_event_frame_sync frame_sync;
|
||||
struct v4l2_event_src_change src_change;
|
||||
__u8 data[64];
|
||||
} u;
|
||||
__u32 pending;
|
||||
|
Reference in New Issue
Block a user