diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/videodev2.h | 173 |
1 files changed, 149 insertions, 24 deletions
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h index dc3e3ea28f99..13d84ed9d3a8 100644 --- a/include/linux/videodev2.h +++ b/include/linux/videodev2.h | |||
| @@ -991,29 +991,56 @@ struct v4l2_dv_enum_preset { | |||
| 991 | * D V B T T I M I N G S | 991 | * D V B T T I M I N G S |
| 992 | */ | 992 | */ |
| 993 | 993 | ||
| 994 | /* BT.656/BT.1120 timing data */ | 994 | /** struct v4l2_bt_timings - BT.656/BT.1120 timing data |
| 995 | * @width: total width of the active video in pixels | ||
| 996 | * @height: total height of the active video in lines | ||
| 997 | * @interlaced: Interlaced or progressive | ||
| 998 | * @polarities: Positive or negative polarities | ||
| 999 | * @pixelclock: Pixel clock in HZ. Ex. 74.25MHz->74250000 | ||
| 1000 | * @hfrontporch:Horizontal front porch in pixels | ||
| 1001 | * @hsync: Horizontal Sync length in pixels | ||
| 1002 | * @hbackporch: Horizontal back porch in pixels | ||
| 1003 | * @vfrontporch:Vertical front porch in lines | ||
| 1004 | * @vsync: Vertical Sync length in lines | ||
| 1005 | * @vbackporch: Vertical back porch in lines | ||
| 1006 | * @il_vfrontporch:Vertical front porch for the even field | ||
| 1007 | * (aka field 2) of interlaced field formats | ||
| 1008 | * @il_vsync: Vertical Sync length for the even field | ||
| 1009 | * (aka field 2) of interlaced field formats | ||
| 1010 | * @il_vbackporch:Vertical back porch for the even field | ||
| 1011 | * (aka field 2) of interlaced field formats | ||
| 1012 | * @standards: Standards the timing belongs to | ||
| 1013 | * @flags: Flags | ||
| 1014 | * @reserved: Reserved fields, must be zeroed. | ||
| 1015 | * | ||
| 1016 | * A note regarding vertical interlaced timings: height refers to the total | ||
| 1017 | * height of the active video frame (= two fields). The blanking timings refer | ||
| 1018 | * to the blanking of each field. So the height of the total frame is | ||
| 1019 | * calculated as follows: | ||
| 1020 | * | ||
| 1021 | * tot_height = height + vfrontporch + vsync + vbackporch + | ||
| 1022 | * il_vfrontporch + il_vsync + il_vbackporch | ||
| 1023 | * | ||
| 1024 | * The active height of each field is height / 2. | ||
| 1025 | */ | ||
| 995 | struct v4l2_bt_timings { | 1026 | struct v4l2_bt_timings { |
| 996 | __u32 width; /* width in pixels */ | 1027 | __u32 width; |
| 997 | __u32 height; /* height in lines */ | 1028 | __u32 height; |
| 998 | __u32 interlaced; /* Interlaced or progressive */ | 1029 | __u32 interlaced; |
| 999 | __u32 polarities; /* Positive or negative polarity */ | 1030 | __u32 polarities; |
| 1000 | __u64 pixelclock; /* Pixel clock in HZ. Ex. 74.25MHz->74250000 */ | 1031 | __u64 pixelclock; |
| 1001 | __u32 hfrontporch; /* Horizpontal front porch in pixels */ | 1032 | __u32 hfrontporch; |
| 1002 | __u32 hsync; /* Horizontal Sync length in pixels */ | 1033 | __u32 hsync; |
| 1003 | __u32 hbackporch; /* Horizontal back porch in pixels */ | 1034 | __u32 hbackporch; |
| 1004 | __u32 vfrontporch; /* Vertical front porch in pixels */ | 1035 | __u32 vfrontporch; |
| 1005 | __u32 vsync; /* Vertical Sync length in lines */ | 1036 | __u32 vsync; |
| 1006 | __u32 vbackporch; /* Vertical back porch in lines */ | 1037 | __u32 vbackporch; |
| 1007 | __u32 il_vfrontporch; /* Vertical front porch for bottom field of | 1038 | __u32 il_vfrontporch; |
| 1008 | * interlaced field formats | 1039 | __u32 il_vsync; |
| 1009 | */ | 1040 | __u32 il_vbackporch; |
| 1010 | __u32 il_vsync; /* Vertical sync length for bottom field of | 1041 | __u32 standards; |
| 1011 | * interlaced field formats | 1042 | __u32 flags; |
| 1012 | */ | 1043 | __u32 reserved[14]; |
| 1013 | __u32 il_vbackporch; /* Vertical back porch for bottom field of | ||
| 1014 | * interlaced field formats | ||
| 1015 | */ | ||
| 1016 | __u32 reserved[16]; | ||
| 1017 | } __attribute__ ((packed)); | 1044 | } __attribute__ ((packed)); |
| 1018 | 1045 | ||
| 1019 | /* Interlaced or progressive format */ | 1046 | /* Interlaced or progressive format */ |
| @@ -1024,8 +1051,42 @@ struct v4l2_bt_timings { | |||
| 1024 | #define V4L2_DV_VSYNC_POS_POL 0x00000001 | 1051 | #define V4L2_DV_VSYNC_POS_POL 0x00000001 |
| 1025 | #define V4L2_DV_HSYNC_POS_POL 0x00000002 | 1052 | #define V4L2_DV_HSYNC_POS_POL 0x00000002 |
| 1026 | 1053 | ||
| 1027 | 1054 | /* Timings standards */ | |
| 1028 | /* DV timings */ | 1055 | #define V4L2_DV_BT_STD_CEA861 (1 << 0) /* CEA-861 Digital TV Profile */ |
| 1056 | #define V4L2_DV_BT_STD_DMT (1 << 1) /* VESA Discrete Monitor Timings */ | ||
| 1057 | #define V4L2_DV_BT_STD_CVT (1 << 2) /* VESA Coordinated Video Timings */ | ||
| 1058 | #define V4L2_DV_BT_STD_GTF (1 << 3) /* VESA Generalized Timings Formula */ | ||
| 1059 | |||
| 1060 | /* Flags */ | ||
| 1061 | |||
| 1062 | /* CVT/GTF specific: timing uses reduced blanking (CVT) or the 'Secondary | ||
| 1063 | GTF' curve (GTF). In both cases the horizontal and/or vertical blanking | ||
| 1064 | intervals are reduced, allowing a higher resolution over the same | ||
| 1065 | bandwidth. This is a read-only flag. */ | ||
| 1066 | #define V4L2_DV_FL_REDUCED_BLANKING (1 << 0) | ||
| 1067 | /* CEA-861 specific: set for CEA-861 formats with a framerate of a multiple | ||
| 1068 | of six. These formats can be optionally played at 1 / 1.001 speed. | ||
| 1069 | This is a read-only flag. */ | ||
| 1070 | #define V4L2_DV_FL_CAN_REDUCE_FPS (1 << 1) | ||
| 1071 | /* CEA-861 specific: only valid for video transmitters, the flag is cleared | ||
| 1072 | by receivers. | ||
| 1073 | If the framerate of the format is a multiple of six, then the pixelclock | ||
| 1074 | used to set up the transmitter is divided by 1.001 to make it compatible | ||
| 1075 | with 60 Hz based standards such as NTSC and PAL-M that use a framerate of | ||
| 1076 | 29.97 Hz. Otherwise this flag is cleared. If the transmitter can't generate | ||
| 1077 | such frequencies, then the flag will also be cleared. */ | ||
| 1078 | #define V4L2_DV_FL_REDUCED_FPS (1 << 2) | ||
| 1079 | /* Specific to interlaced formats: if set, then field 1 is really one half-line | ||
| 1080 | longer and field 2 is really one half-line shorter, so each field has | ||
| 1081 | exactly the same number of half-lines. Whether half-lines can be detected | ||
| 1082 | or used depends on the hardware. */ | ||
| 1083 | #define V4L2_DV_FL_HALF_LINE (1 << 0) | ||
| 1084 | |||
| 1085 | |||
| 1086 | /** struct v4l2_dv_timings - DV timings | ||
| 1087 | * @type: the type of the timings | ||
| 1088 | * @bt: BT656/1120 timings | ||
| 1089 | */ | ||
| 1029 | struct v4l2_dv_timings { | 1090 | struct v4l2_dv_timings { |
| 1030 | __u32 type; | 1091 | __u32 type; |
| 1031 | union { | 1092 | union { |
| @@ -1037,6 +1098,64 @@ struct v4l2_dv_timings { | |||
| 1037 | /* Values for the type field */ | 1098 | /* Values for the type field */ |
| 1038 | #define V4L2_DV_BT_656_1120 0 /* BT.656/1120 timing type */ | 1099 | #define V4L2_DV_BT_656_1120 0 /* BT.656/1120 timing type */ |
| 1039 | 1100 | ||
| 1101 | |||
| 1102 | /** struct v4l2_enum_dv_timings - DV timings enumeration | ||
| 1103 | * @index: enumeration index | ||
| 1104 | * @reserved: must be zeroed | ||
| 1105 | * @timings: the timings for the given index | ||
| 1106 | */ | ||
| 1107 | struct v4l2_enum_dv_timings { | ||
| 1108 | __u32 index; | ||
| 1109 | __u32 reserved[3]; | ||
| 1110 | struct v4l2_dv_timings timings; | ||
| 1111 | }; | ||
| 1112 | |||
| 1113 | /** struct v4l2_bt_timings_cap - BT.656/BT.1120 timing capabilities | ||
| 1114 | * @min_width: width in pixels | ||
| 1115 | * @max_width: width in pixels | ||
| 1116 | * @min_height: height in lines | ||
| 1117 | * @max_height: height in lines | ||
| 1118 | * @min_pixelclock: Pixel clock in HZ. Ex. 74.25MHz->74250000 | ||
| 1119 | * @max_pixelclock: Pixel clock in HZ. Ex. 74.25MHz->74250000 | ||
| 1120 | * @standards: Supported standards | ||
| 1121 | * @capabilities: Supported capabilities | ||
| 1122 | * @reserved: Must be zeroed | ||
| 1123 | */ | ||
| 1124 | struct v4l2_bt_timings_cap { | ||
| 1125 | __u32 min_width; | ||
| 1126 | __u32 max_width; | ||
| 1127 | __u32 min_height; | ||
| 1128 | __u32 max_height; | ||
| 1129 | __u64 min_pixelclock; | ||
| 1130 | __u64 max_pixelclock; | ||
| 1131 | __u32 standards; | ||
| 1132 | __u32 capabilities; | ||
| 1133 | __u32 reserved[16]; | ||
| 1134 | } __attribute__ ((packed)); | ||
| 1135 | |||
| 1136 | /* Supports interlaced formats */ | ||
| 1137 | #define V4L2_DV_BT_CAP_INTERLACED (1 << 0) | ||
| 1138 | /* Supports progressive formats */ | ||
| 1139 | #define V4L2_DV_BT_CAP_PROGRESSIVE (1 << 1) | ||
| 1140 | /* Supports CVT/GTF reduced blanking */ | ||
| 1141 | #define V4L2_DV_BT_CAP_REDUCED_BLANKING (1 << 2) | ||
| 1142 | /* Supports custom formats */ | ||
| 1143 | #define V4L2_DV_BT_CAP_CUSTOM (1 << 3) | ||
| 1144 | |||
| 1145 | /** struct v4l2_dv_timings_cap - DV timings capabilities | ||
| 1146 | * @type: the type of the timings (same as in struct v4l2_dv_timings) | ||
| 1147 | * @bt: the BT656/1120 timings capabilities | ||
| 1148 | */ | ||
| 1149 | struct v4l2_dv_timings_cap { | ||
| 1150 | __u32 type; | ||
| 1151 | __u32 reserved[3]; | ||
| 1152 | union { | ||
| 1153 | struct v4l2_bt_timings_cap bt; | ||
| 1154 | __u32 raw_data[32]; | ||
| 1155 | }; | ||
| 1156 | }; | ||
| 1157 | |||
| 1158 | |||
| 1040 | /* | 1159 | /* |
| 1041 | * V I D E O I N P U T S | 1160 | * V I D E O I N P U T S |
| 1042 | */ | 1161 | */ |
| @@ -2513,6 +2632,12 @@ struct v4l2_create_buffers { | |||
| 2513 | #define VIDIOC_DECODER_CMD _IOWR('V', 96, struct v4l2_decoder_cmd) | 2632 | #define VIDIOC_DECODER_CMD _IOWR('V', 96, struct v4l2_decoder_cmd) |
| 2514 | #define VIDIOC_TRY_DECODER_CMD _IOWR('V', 97, struct v4l2_decoder_cmd) | 2633 | #define VIDIOC_TRY_DECODER_CMD _IOWR('V', 97, struct v4l2_decoder_cmd) |
| 2515 | 2634 | ||
| 2635 | /* Experimental, these three ioctls may change over the next couple of kernel | ||
| 2636 | versions. */ | ||
| 2637 | #define VIDIOC_ENUM_DV_TIMINGS _IOWR('V', 96, struct v4l2_enum_dv_timings) | ||
| 2638 | #define VIDIOC_QUERY_DV_TIMINGS _IOR('V', 97, struct v4l2_dv_timings) | ||
| 2639 | #define VIDIOC_DV_TIMINGS_CAP _IOWR('V', 98, struct v4l2_dv_timings_cap) | ||
| 2640 | |||
| 2516 | /* Reminder: when adding new ioctls please add support for them to | 2641 | /* Reminder: when adding new ioctls please add support for them to |
| 2517 | drivers/media/video/v4l2-compat-ioctl32.c as well! */ | 2642 | drivers/media/video/v4l2-compat-ioctl32.c as well! */ |
| 2518 | 2643 | ||
