Commit 7389e6ef authored by Charles-Antoine Couret's avatar Charles-Antoine Couret Committed by Mauro Carvalho Chehab

[media] SDI: add flag for SDI formats and SMPTE 125M definition

Adding others generic flags, which could be used by many
components like GS1662.
Signed-off-by: default avatarCharles-Antoine Couret <charles-antoine.couret@nexvision.fr>
Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent 618cd932
...@@ -306,7 +306,7 @@ void v4l2_print_dv_timings(const char *dev_prefix, const char *prefix, ...@@ -306,7 +306,7 @@ void v4l2_print_dv_timings(const char *dev_prefix, const char *prefix,
(bt->polarities & V4L2_DV_VSYNC_POS_POL) ? "+" : "-", (bt->polarities & V4L2_DV_VSYNC_POS_POL) ? "+" : "-",
bt->il_vsync, bt->il_vbackporch); bt->il_vsync, bt->il_vbackporch);
pr_info("%s: pixelclock: %llu\n", dev_prefix, bt->pixelclock); pr_info("%s: pixelclock: %llu\n", dev_prefix, bt->pixelclock);
pr_info("%s: flags (0x%x):%s%s%s%s%s%s\n", dev_prefix, bt->flags, pr_info("%s: flags (0x%x):%s%s%s%s%s%s%s\n", dev_prefix, bt->flags,
(bt->flags & V4L2_DV_FL_REDUCED_BLANKING) ? (bt->flags & V4L2_DV_FL_REDUCED_BLANKING) ?
" REDUCED_BLANKING" : "", " REDUCED_BLANKING" : "",
((bt->flags & V4L2_DV_FL_REDUCED_BLANKING) && ((bt->flags & V4L2_DV_FL_REDUCED_BLANKING) &&
...@@ -318,12 +318,15 @@ void v4l2_print_dv_timings(const char *dev_prefix, const char *prefix, ...@@ -318,12 +318,15 @@ void v4l2_print_dv_timings(const char *dev_prefix, const char *prefix,
(bt->flags & V4L2_DV_FL_HALF_LINE) ? (bt->flags & V4L2_DV_FL_HALF_LINE) ?
" HALF_LINE" : "", " HALF_LINE" : "",
(bt->flags & V4L2_DV_FL_IS_CE_VIDEO) ? (bt->flags & V4L2_DV_FL_IS_CE_VIDEO) ?
" CE_VIDEO" : ""); " CE_VIDEO" : "",
pr_info("%s: standards (0x%x):%s%s%s%s\n", dev_prefix, bt->standards, (bt->flags & V4L2_DV_FL_FIRST_FIELD_EXTRA_LINE) ?
" FIRST_FIELD_EXTRA_LINE" : "");
pr_info("%s: standards (0x%x):%s%s%s%s%s\n", dev_prefix, bt->standards,
(bt->standards & V4L2_DV_BT_STD_CEA861) ? " CEA" : "", (bt->standards & V4L2_DV_BT_STD_CEA861) ? " CEA" : "",
(bt->standards & V4L2_DV_BT_STD_DMT) ? " DMT" : "", (bt->standards & V4L2_DV_BT_STD_DMT) ? " DMT" : "",
(bt->standards & V4L2_DV_BT_STD_CVT) ? " CVT" : "", (bt->standards & V4L2_DV_BT_STD_CVT) ? " CVT" : "",
(bt->standards & V4L2_DV_BT_STD_GTF) ? " GTF" : ""); (bt->standards & V4L2_DV_BT_STD_GTF) ? " GTF" : "",
(bt->standards & V4L2_DV_BT_STD_SDI) ? " SDI" : "");
} }
EXPORT_SYMBOL_GPL(v4l2_print_dv_timings); EXPORT_SYMBOL_GPL(v4l2_print_dv_timings);
......
...@@ -934,4 +934,16 @@ ...@@ -934,4 +934,16 @@
V4L2_DV_FL_REDUCED_BLANKING) \ V4L2_DV_FL_REDUCED_BLANKING) \
} }
/* SDI timings definitions */
/* SMPTE-125M */
#define V4L2_DV_BT_SDI_720X487I60 { \
.type = V4L2_DV_BT_656_1120, \
V4L2_INIT_BT_TIMINGS(720, 487, 1, \
V4L2_DV_HSYNC_POS_POL, \
13500000, 16, 121, 0, 0, 19, 0, 0, 19, 0, \
V4L2_DV_BT_STD_SDI, \
V4L2_DV_FL_FIRST_FIELD_EXTRA_LINE) \
}
#endif #endif
...@@ -1274,6 +1274,7 @@ struct v4l2_bt_timings { ...@@ -1274,6 +1274,7 @@ struct v4l2_bt_timings {
#define V4L2_DV_BT_STD_DMT (1 << 1) /* VESA Discrete Monitor Timings */ #define V4L2_DV_BT_STD_DMT (1 << 1) /* VESA Discrete Monitor Timings */
#define V4L2_DV_BT_STD_CVT (1 << 2) /* VESA Coordinated Video Timings */ #define V4L2_DV_BT_STD_CVT (1 << 2) /* VESA Coordinated Video Timings */
#define V4L2_DV_BT_STD_GTF (1 << 3) /* VESA Generalized Timings Formula */ #define V4L2_DV_BT_STD_GTF (1 << 3) /* VESA Generalized Timings Formula */
#define V4L2_DV_BT_STD_SDI (1 << 4) /* SDI Timings */
/* Flags */ /* Flags */
...@@ -1305,6 +1306,11 @@ struct v4l2_bt_timings { ...@@ -1305,6 +1306,11 @@ struct v4l2_bt_timings {
* use the range 16-235) as opposed to 0-255. All formats defined in CEA-861 * use the range 16-235) as opposed to 0-255. All formats defined in CEA-861
* except for the 640x480 format are CE formats. */ * except for the 640x480 format are CE formats. */
#define V4L2_DV_FL_IS_CE_VIDEO (1 << 4) #define V4L2_DV_FL_IS_CE_VIDEO (1 << 4)
/* Some formats like SMPTE-125M have an interlaced signal with a odd
* total height. For these formats, if this flag is set, the first
* field has the extra line. If not, it is the second field.
*/
#define V4L2_DV_FL_FIRST_FIELD_EXTRA_LINE (1 << 5)
/* A few useful defines to calculate the total blanking and frame sizes */ /* A few useful defines to calculate the total blanking and frame sizes */
#define V4L2_DV_BT_BLANKING_WIDTH(bt) \ #define V4L2_DV_BT_BLANKING_WIDTH(bt) \
...@@ -1429,6 +1435,8 @@ struct v4l2_input { ...@@ -1429,6 +1435,8 @@ struct v4l2_input {
/* field 'status' - analog */ /* field 'status' - analog */
#define V4L2_IN_ST_NO_H_LOCK 0x00000100 /* No horizontal sync lock */ #define V4L2_IN_ST_NO_H_LOCK 0x00000100 /* No horizontal sync lock */
#define V4L2_IN_ST_COLOR_KILL 0x00000200 /* Color killer is active */ #define V4L2_IN_ST_COLOR_KILL 0x00000200 /* Color killer is active */
#define V4L2_IN_ST_NO_V_LOCK 0x00000400 /* No vertical sync lock */
#define V4L2_IN_ST_NO_STD_LOCK 0x00000800 /* No standard format lock */
/* field 'status' - digital */ /* field 'status' - digital */
#define V4L2_IN_ST_NO_SYNC 0x00010000 /* No synchronization lock */ #define V4L2_IN_ST_NO_SYNC 0x00010000 /* No synchronization lock */
......
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