From b2fe22d0cf64708c50c26f11b3da8b79809c699b Mon Sep 17 00:00:00 2001 From: Nick Dyer Date: Mon, 18 Jul 2016 18:10:30 -0300 Subject: [media] v4l2-core: Add support for touch devices Some touch controllers send out touch data in a similar way to a greyscale frame grabber. Add new device type VFL_TYPE_TOUCH: - This uses a new device prefix v4l-touch for these devices, to stop generic capture software from treating them as webcams. Otherwise, touch is treated similarly to video capture. - Add V4L2_INPUT_TYPE_TOUCH - Add MEDIA_INTF_T_V4L_TOUCH - Add V4L2_CAP_TOUCH to indicate device is a touch device Add formats: - V4L2_TCH_FMT_DELTA_TD16 for signed 16-bit touch deltas - V4L2_TCH_FMT_DELTA_TD08 for signed 16-bit touch deltas - V4L2_TCH_FMT_TU16 for unsigned 16-bit touch data - V4L2_TCH_FMT_TU08 for unsigned 8-bit touch data This support will be used by: - Atmel maXTouch (atmel_mxt_ts) - Synaptics RMI4. - sur40 Signed-off-by: Nick Dyer Tested-by: Chris Healy Signed-off-by: Hans Verkuil Signed-off-by: Mauro Carvalho Chehab Acked-by: Dmitry Torokhov --- include/uapi/linux/media.h | 1 + include/uapi/linux/videodev2.h | 9 +++++++++ 2 files changed, 10 insertions(+) (limited to 'include/uapi/linux') diff --git a/include/uapi/linux/media.h b/include/uapi/linux/media.h index 7acf0f634f70..4890787731b8 100644 --- a/include/uapi/linux/media.h +++ b/include/uapi/linux/media.h @@ -307,6 +307,7 @@ struct media_links_enum { #define MEDIA_INTF_T_V4L_RADIO (MEDIA_INTF_T_V4L_BASE + 2) #define MEDIA_INTF_T_V4L_SUBDEV (MEDIA_INTF_T_V4L_BASE + 3) #define MEDIA_INTF_T_V4L_SWRADIO (MEDIA_INTF_T_V4L_BASE + 4) +#define MEDIA_INTF_T_V4L_TOUCH (MEDIA_INTF_T_V4L_BASE + 5) #define MEDIA_INTF_T_ALSA_PCM_CAPTURE (MEDIA_INTF_T_ALSA_BASE) #define MEDIA_INTF_T_ALSA_PCM_PLAYBACK (MEDIA_INTF_T_ALSA_BASE + 1) diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h index 724f43e69d03..22bad8c741fe 100644 --- a/include/uapi/linux/videodev2.h +++ b/include/uapi/linux/videodev2.h @@ -440,6 +440,8 @@ struct v4l2_capability { #define V4L2_CAP_ASYNCIO 0x02000000 /* async I/O */ #define V4L2_CAP_STREAMING 0x04000000 /* streaming I/O ioctls */ +#define V4L2_CAP_TOUCH 0x10000000 /* Is a touch device */ + #define V4L2_CAP_DEVICE_CAPS 0x80000000 /* sets device capabilities field */ /* @@ -635,6 +637,12 @@ struct v4l2_pix_format { #define V4L2_SDR_FMT_CS14LE v4l2_fourcc('C', 'S', '1', '4') /* complex s14le */ #define V4L2_SDR_FMT_RU12LE v4l2_fourcc('R', 'U', '1', '2') /* real u12le */ +/* Touch formats - used for Touch devices */ +#define V4L2_TCH_FMT_DELTA_TD16 v4l2_fourcc('T', 'D', '1', '6') /* 16-bit signed deltas */ +#define V4L2_TCH_FMT_DELTA_TD08 v4l2_fourcc('T', 'D', '0', '8') /* 8-bit signed deltas */ +#define V4L2_TCH_FMT_TU16 v4l2_fourcc('T', 'U', '1', '6') /* 16-bit unsigned touch data */ +#define V4L2_TCH_FMT_TU08 v4l2_fourcc('T', 'U', '0', '8') /* 8-bit unsigned touch data */ + /* priv field value to indicates that subsequent fields are valid. */ #define V4L2_PIX_FMT_PRIV_MAGIC 0xfeedcafe @@ -1401,6 +1409,7 @@ struct v4l2_input { /* Values for the 'type' field */ #define V4L2_INPUT_TYPE_TUNER 1 #define V4L2_INPUT_TYPE_CAMERA 2 +#define V4L2_INPUT_TYPE_TOUCH 3 /* field 'status' - general */ #define V4L2_IN_ST_NO_POWER 0x00000001 /* Attached device is off */ -- cgit v1.2.3-71-gd317 From 7e0739cd9c40752fc9d31cac86e3a31d5537be18 Mon Sep 17 00:00:00 2001 From: Hans Verkuil Date: Thu, 4 Aug 2016 05:51:12 -0300 Subject: [media] videodev2.h: fix sYCC/AdobeYCC default quantization range The default quantization range of the Y'CbCr encodings of sRGB and AdobeRGB are full range instead of limited range according to the corresponding standards. Fix this in the V4L2_MAP_QUANTIZATION_DEFAULT macro. Signed-off-by: Hans Verkuil Signed-off-by: Mauro Carvalho Chehab --- Documentation/media/uapi/v4l/pixfmt-007.rst | 4 ++-- include/uapi/linux/videodev2.h | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) (limited to 'include/uapi/linux') diff --git a/Documentation/media/uapi/v4l/pixfmt-007.rst b/Documentation/media/uapi/v4l/pixfmt-007.rst index f097268ffc54..c45d8794e8eb 100644 --- a/Documentation/media/uapi/v4l/pixfmt-007.rst +++ b/Documentation/media/uapi/v4l/pixfmt-007.rst @@ -367,7 +367,7 @@ The :ref:`adobergb` standard defines the colorspace used by computer graphics that use the AdobeRGB colorspace. This is also known as the :ref:`oprgb` standard. The default transfer function is ``V4L2_XFER_FUNC_ADOBERGB``. The default Y'CbCr encoding is -``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is limited +``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is full range. The chromaticities of the primary colors and the white reference are: @@ -448,7 +448,7 @@ the following ``V4L2_YCBCR_ENC_601`` encoding: Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range [-0.5…0.5]. This transform is identical to one defined in SMPTE -170M/BT.601. The Y'CbCr quantization is limited range. +170M/BT.601. The Y'CbCr quantization is full range. .. _col-bt2020: diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h index 22bad8c741fe..0ec15222a6ca 100644 --- a/include/uapi/linux/videodev2.h +++ b/include/uapi/linux/videodev2.h @@ -345,8 +345,8 @@ enum v4l2_quantization { /* * The default for R'G'B' quantization is always full range, except * for the BT2020 colorspace. For Y'CbCr the quantization is always - * limited range, except for COLORSPACE_JPEG, SYCC, XV601 or XV709: - * those are full range. + * limited range, except for COLORSPACE_JPEG, SRGB, ADOBERGB, + * XV601 or XV709: those are full range. */ V4L2_QUANTIZATION_DEFAULT = 0, V4L2_QUANTIZATION_FULL_RANGE = 1, @@ -361,7 +361,8 @@ enum v4l2_quantization { #define V4L2_MAP_QUANTIZATION_DEFAULT(is_rgb, colsp, ycbcr_enc) \ (((is_rgb) && (colsp) == V4L2_COLORSPACE_BT2020) ? V4L2_QUANTIZATION_LIM_RANGE : \ (((is_rgb) || (ycbcr_enc) == V4L2_YCBCR_ENC_XV601 || \ - (ycbcr_enc) == V4L2_YCBCR_ENC_XV709 || (colsp) == V4L2_COLORSPACE_JPEG) ? \ + (ycbcr_enc) == V4L2_YCBCR_ENC_XV709 || (colsp) == V4L2_COLORSPACE_JPEG) || \ + (colsp) == V4L2_COLORSPACE_ADOBERGB || (colsp) == V4L2_COLORSPACE_SRGB ? \ V4L2_QUANTIZATION_FULL_RANGE : V4L2_QUANTIZATION_LIM_RANGE)) enum v4l2_priority { -- cgit v1.2.3-71-gd317 From adca8c8e251fdbdb6b28e3ef7a5ca24b597b82d8 Mon Sep 17 00:00:00 2001 From: Hans Verkuil Date: Thu, 4 Aug 2016 06:01:48 -0300 Subject: [media] videodev2.h: put V4L2_YCBCR_ENC_SYCC under #ifndef __KERNEL__ This define is a duplicate of V4L2_YCBCR_ENC_601. So mark it as 'should not be used' and put it under #ifndef __KERNEL__ to prevent drivers from referring to it. Signed-off-by: Hans Verkuil Signed-off-by: Mauro Carvalho Chehab --- include/uapi/linux/videodev2.h | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'include/uapi/linux') diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h index 0ec15222a6ca..5529741202b5 100644 --- a/include/uapi/linux/videodev2.h +++ b/include/uapi/linux/videodev2.h @@ -292,13 +292,11 @@ enum v4l2_ycbcr_encoding { * various colorspaces: * * V4L2_COLORSPACE_SMPTE170M, V4L2_COLORSPACE_470_SYSTEM_M, - * V4L2_COLORSPACE_470_SYSTEM_BG, V4L2_COLORSPACE_ADOBERGB and - * V4L2_COLORSPACE_JPEG: V4L2_YCBCR_ENC_601 + * V4L2_COLORSPACE_470_SYSTEM_BG, V4L2_COLORSPACE_SRGB, + * V4L2_COLORSPACE_ADOBERGB and V4L2_COLORSPACE_JPEG: V4L2_YCBCR_ENC_601 * * V4L2_COLORSPACE_REC709 and V4L2_COLORSPACE_DCI_P3: V4L2_YCBCR_ENC_709 * - * V4L2_COLORSPACE_SRGB: V4L2_YCBCR_ENC_SYCC - * * V4L2_COLORSPACE_BT2020: V4L2_YCBCR_ENC_BT2020 * * V4L2_COLORSPACE_SMPTE240M: V4L2_YCBCR_ENC_SMPTE240M @@ -317,8 +315,14 @@ enum v4l2_ycbcr_encoding { /* Rec. 709/EN 61966-2-4 Extended Gamut -- HDTV */ V4L2_YCBCR_ENC_XV709 = 4, - /* sYCC (Y'CbCr encoding of sRGB) */ +#ifndef __KERNEL__ + /* + * sYCC (Y'CbCr encoding of sRGB), identical to ENC_601. It was added + * originally due to a misunderstanding of the sYCC standard. It should + * not be used, instead use V4L2_YCBCR_ENC_601. + */ V4L2_YCBCR_ENC_SYCC = 5, +#endif /* BT.2020 Non-constant Luminance Y'CbCr */ V4L2_YCBCR_ENC_BT2020 = 6, -- cgit v1.2.3-71-gd317 From 848d10314bfe1be79f5ca4deb3d2bf81f6adcf38 Mon Sep 17 00:00:00 2001 From: Mauro Carvalho Chehab Date: Wed, 31 Aug 2016 16:34:07 -0300 Subject: [media] fix broken references on dvb/video*rst Trivially fix those broken references, by copying the structs fron the header, just like other API documentation at the DVB side. This doesn't have the level of quality used at the V4L2 side of the API, but, as this documents a deprecated API, used only by av7110 driver, it doesn't make much sense to invest time making it better. Signed-off-by: Mauro Carvalho Chehab --- Documentation/media/uapi/dvb/video-command.rst | 30 ++++++++++++++++++++++ Documentation/media/uapi/dvb/video-get-event.rst | 17 ++++++++++++ Documentation/media/uapi/dvb/video-get-navi.rst | 10 +++++++- Documentation/media/uapi/dvb/video-get-size.rst | 10 ++++++++ Documentation/media/uapi/dvb/video-get-status.rst | 11 ++++++++ .../media/uapi/dvb/video-select-source.rst | 10 ++++++++ .../media/uapi/dvb/video-set-attributes.rst | 16 ++++++++++++ .../media/uapi/dvb/video-set-display-format.rst | 2 +- Documentation/media/uapi/dvb/video-set-format.rst | 9 +++++++ .../media/uapi/dvb/video-set-highlight.rst | 26 ++++++++++++++++++- .../media/uapi/dvb/video-set-spu-palette.rst | 10 +++++++- Documentation/media/uapi/dvb/video-set-spu.rst | 11 +++++++- include/uapi/linux/dvb/video.h | 3 ++- 13 files changed, 159 insertions(+), 6 deletions(-) (limited to 'include/uapi/linux') diff --git a/Documentation/media/uapi/dvb/video-command.rst b/Documentation/media/uapi/dvb/video-command.rst index 4772562036f1..536d0fdd8399 100644 --- a/Documentation/media/uapi/dvb/video-command.rst +++ b/Documentation/media/uapi/dvb/video-command.rst @@ -59,6 +59,36 @@ subset of the ``v4l2_decoder_cmd`` struct, so refer to the :ref:`VIDIOC_DECODER_CMD` documentation for more information. +.. c:type:: struct video_command + +.. code-block:: c + + /* The structure must be zeroed before use by the application + This ensures it can be extended safely in the future. */ + struct video_command { + __u32 cmd; + __u32 flags; + union { + struct { + __u64 pts; + } stop; + + struct { + /* 0 or 1000 specifies normal speed, + 1 specifies forward single stepping, + -1 specifies backward single stepping, + >1: playback at speed/1000 of the normal speed, + <-1: reverse playback at (-speed/1000) of the normal speed. */ + __s32 speed; + __u32 format; + } play; + + struct { + __u32 data[16]; + } raw; + }; + }; + Return Value ------------ diff --git a/Documentation/media/uapi/dvb/video-get-event.rst b/Documentation/media/uapi/dvb/video-get-event.rst index 8c0c622c380b..6ad14cdb894a 100644 --- a/Documentation/media/uapi/dvb/video-get-event.rst +++ b/Documentation/media/uapi/dvb/video-get-event.rst @@ -64,6 +64,23 @@ included in the exceptfds argument, and for poll(), POLLPRI should be specified as the wake-up condition. Read-only permissions are sufficient for this ioctl call. +.. c:type:: video_event + +.. code-block:: c + + struct video_event { + __s32 type; + #define VIDEO_EVENT_SIZE_CHANGED 1 + #define VIDEO_EVENT_FRAME_RATE_CHANGED 2 + #define VIDEO_EVENT_DECODER_STOPPED 3 + #define VIDEO_EVENT_VSYNC 4 + __kernel_time_t timestamp; + union { + video_size_t size; + unsigned int frame_rate; /* in frames per 1000sec */ + unsigned char vsync_field; /* unknown/odd/even/progressive */ + } u; + }; Return Value ------------ diff --git a/Documentation/media/uapi/dvb/video-get-navi.rst b/Documentation/media/uapi/dvb/video-get-navi.rst index b8de9ccf38c2..114a9ac48b9e 100644 --- a/Documentation/media/uapi/dvb/video-get-navi.rst +++ b/Documentation/media/uapi/dvb/video-get-navi.rst @@ -16,7 +16,7 @@ VIDEO_GET_NAVI Synopsis -------- -.. c:function:: int ioctl(fd, VIDEO_GET_NAVI , video_navi_pack_t *navipack) +.. c:function:: int ioctl(fd, VIDEO_GET_NAVI , struct video_navi_pack *navipack) :name: VIDEO_GET_NAVI @@ -54,6 +54,14 @@ This ioctl returns navigational information from the DVD stream. This is especially needed if an encoded stream has to be decoded by the hardware. +.. c:type:: video_navi_pack + +.. code-block::c + + typedef struct video_navi_pack { + int length; /* 0 ... 1024 */ + __u8 data[1024]; + } video_navi_pack_t; Return Value ------------ diff --git a/Documentation/media/uapi/dvb/video-get-size.rst b/Documentation/media/uapi/dvb/video-get-size.rst index ce8b4c6b41a5..d077fe2305a0 100644 --- a/Documentation/media/uapi/dvb/video-get-size.rst +++ b/Documentation/media/uapi/dvb/video-get-size.rst @@ -52,6 +52,16 @@ Description This ioctl returns the size and aspect ratio. +.. c:type:: video_size_t + +.. code-block::c + + typedef struct { + int w; + int h; + video_format_t aspect_ratio; + } video_size_t; + Return Value ------------ diff --git a/Documentation/media/uapi/dvb/video-get-status.rst b/Documentation/media/uapi/dvb/video-get-status.rst index 7b6a278b5246..ed6ea19827a6 100644 --- a/Documentation/media/uapi/dvb/video-get-status.rst +++ b/Documentation/media/uapi/dvb/video-get-status.rst @@ -53,6 +53,17 @@ Description This ioctl call asks the Video Device to return the current status of the device. +.. c:type:: video_status + +.. code-block:: c + + struct video_status { + int video_blank; /* blank video on freeze? */ + video_play_state_t play_state; /* current state of playback */ + video_stream_source_t stream_source; /* current source (demux/memory) */ + video_format_t video_format; /* current aspect ratio of stream*/ + video_displayformat_t display_format;/* selected cropping mode */ + }; Return Value ------------ diff --git a/Documentation/media/uapi/dvb/video-select-source.rst b/Documentation/media/uapi/dvb/video-select-source.rst index eaa1088f07da..2f4fbf4b490c 100644 --- a/Documentation/media/uapi/dvb/video-select-source.rst +++ b/Documentation/media/uapi/dvb/video-select-source.rst @@ -58,6 +58,16 @@ This ioctl call informs the video device which source shall be used for the input data. The possible sources are demux or memory. If memory is selected, the data is fed to the video device through the write command. +.. c:type:: video_stream_source_t + +.. code-block:: c + + typedef enum { + VIDEO_SOURCE_DEMUX, /* Select the demux as the main source */ + VIDEO_SOURCE_MEMORY /* If this source is selected, the stream + comes from the user through the write + system call */ + } video_stream_source_t; Return Value ------------ diff --git a/Documentation/media/uapi/dvb/video-set-attributes.rst b/Documentation/media/uapi/dvb/video-set-attributes.rst index 8901520d7e43..b2f11a6746e9 100644 --- a/Documentation/media/uapi/dvb/video-set-attributes.rst +++ b/Documentation/media/uapi/dvb/video-set-attributes.rst @@ -55,6 +55,22 @@ information about the stream. Some hardware may not need this information, but the call also tells the hardware to prepare for DVD playback. +.. c:type:: video_attributes_t + +.. code-block::c + + typedef __u16 video_attributes_t; + /* bits: descr. */ + /* 15-14 Video compression mode (0=MPEG-1, 1=MPEG-2) */ + /* 13-12 TV system (0=525/60, 1=625/50) */ + /* 11-10 Aspect ratio (0=4:3, 3=16:9) */ + /* 9- 8 permitted display mode on 4:3 monitor (0=both, 1=only pan-sca */ + /* 7 line 21-1 data present in GOP (1=yes, 0=no) */ + /* 6 line 21-2 data present in GOP (1=yes, 0=no) */ + /* 5- 3 source resolution (0=720x480/576, 1=704x480/576, 2=352x480/57 */ + /* 2 source letterboxed (1=yes, 0=no) */ + /* 0 film/camera mode (0=camera, 1=film (625/50 only)) */ + Return Value ------------ diff --git a/Documentation/media/uapi/dvb/video-set-display-format.rst b/Documentation/media/uapi/dvb/video-set-display-format.rst index 6abf19479939..2ef7401781be 100644 --- a/Documentation/media/uapi/dvb/video-set-display-format.rst +++ b/Documentation/media/uapi/dvb/video-set-display-format.rst @@ -16,7 +16,7 @@ VIDEO_SET_DISPLAY_FORMAT Synopsis -------- -.. c:function:: int ioctl(fd, VIDEO_SET_DISPLAY_FORMAT, video_display_format_t format) +.. c:function:: int ioctl(fd, VIDEO_SET_DISPLAY_FORMAT) :name: VIDEO_SET_DISPLAY_FORMAT diff --git a/Documentation/media/uapi/dvb/video-set-format.rst b/Documentation/media/uapi/dvb/video-set-format.rst index 117618525538..4239a4e365bb 100644 --- a/Documentation/media/uapi/dvb/video-set-format.rst +++ b/Documentation/media/uapi/dvb/video-set-format.rst @@ -54,6 +54,15 @@ This ioctl sets the screen format (aspect ratio) of the connected output device (TV) so that the output of the decoder can be adjusted accordingly. +.. c:type:: video_format_t + +.. code-block:: c + + typedef enum { + VIDEO_FORMAT_4_3, /* Select 4:3 format */ + VIDEO_FORMAT_16_9, /* Select 16:9 format. */ + VIDEO_FORMAT_221_1 /* 2.21:1 */ + } video_format_t; Return Value ------------ diff --git a/Documentation/media/uapi/dvb/video-set-highlight.rst b/Documentation/media/uapi/dvb/video-set-highlight.rst index d93b69eef15b..90aeafd923b7 100644 --- a/Documentation/media/uapi/dvb/video-set-highlight.rst +++ b/Documentation/media/uapi/dvb/video-set-highlight.rst @@ -16,7 +16,7 @@ VIDEO_SET_HIGHLIGHT Synopsis -------- -.. c:function:: int ioctl(fd, VIDEO_SET_HIGHLIGHT ,video_highlight_t *vhilite) +.. c:function:: int ioctl(fd, VIDEO_SET_HIGHLIGHT, struct video_highlight *vhilite) :name: VIDEO_SET_HIGHLIGHT @@ -53,6 +53,30 @@ Description This ioctl sets the SPU highlight information for the menu access of a DVD. +.. c:type:: video_highlight + +.. code-block:: c + + typedef + struct video_highlight { + int active; /* 1=show highlight, 0=hide highlight */ + __u8 contrast1; /* 7- 4 Pattern pixel contrast */ + /* 3- 0 Background pixel contrast */ + __u8 contrast2; /* 7- 4 Emphasis pixel-2 contrast */ + /* 3- 0 Emphasis pixel-1 contrast */ + __u8 color1; /* 7- 4 Pattern pixel color */ + /* 3- 0 Background pixel color */ + __u8 color2; /* 7- 4 Emphasis pixel-2 color */ + /* 3- 0 Emphasis pixel-1 color */ + __u32 ypos; /* 23-22 auto action mode */ + /* 21-12 start y */ + /* 9- 0 end y */ + __u32 xpos; /* 23-22 button color number */ + /* 21-12 start x */ + /* 9- 0 end x */ + } video_highlight_t; + + Return Value ------------ diff --git a/Documentation/media/uapi/dvb/video-set-spu-palette.rst b/Documentation/media/uapi/dvb/video-set-spu-palette.rst index b24f7882089a..51a1913d21d2 100644 --- a/Documentation/media/uapi/dvb/video-set-spu-palette.rst +++ b/Documentation/media/uapi/dvb/video-set-spu-palette.rst @@ -16,7 +16,7 @@ VIDEO_SET_SPU_PALETTE Synopsis -------- -.. c:function:: int ioctl(fd, VIDEO_SET_SPU_PALETTE, video_spu_palette_t *palette ) +.. c:function:: int ioctl(fd, VIDEO_SET_SPU_PALETTE, struct video_spu_palette *palette ) :name: VIDEO_SET_SPU_PALETTE @@ -52,6 +52,14 @@ Description This ioctl sets the SPU color palette. +.. c:type:: video_spu_palette + +.. code-block::c + + typedef struct video_spu_palette { /* SPU Palette information */ + int length; + __u8 __user *palette; + } video_spu_palette_t; Return Value ------------ diff --git a/Documentation/media/uapi/dvb/video-set-spu.rst b/Documentation/media/uapi/dvb/video-set-spu.rst index 2a7f0625de38..739e5e7bd133 100644 --- a/Documentation/media/uapi/dvb/video-set-spu.rst +++ b/Documentation/media/uapi/dvb/video-set-spu.rst @@ -16,7 +16,7 @@ VIDEO_SET_SPU Synopsis -------- -.. c:function:: int ioctl(fd, VIDEO_SET_SPU , video_spu_t *spu) +.. c:function:: int ioctl(fd, VIDEO_SET_SPU , struct video_spu *spu) :name: VIDEO_SET_SPU @@ -54,6 +54,15 @@ Description This ioctl activates or deactivates SPU decoding in a DVD input stream. It can only be used, if the driver is able to handle a DVD stream. +.. c:type:: struct video_spu + +.. code-block:: c + + typedef struct video_spu { + int active; + int stream_id; + } video_spu_t; + Return Value ------------ diff --git a/include/uapi/linux/dvb/video.h b/include/uapi/linux/dvb/video.h index 49392564f9d6..260f033a5b54 100644 --- a/include/uapi/linux/dvb/video.h +++ b/include/uapi/linux/dvb/video.h @@ -206,7 +206,8 @@ typedef __u16 video_attributes_t; /* 6 line 21-2 data present in GOP (1=yes, 0=no) */ /* 5- 3 source resolution (0=720x480/576, 1=704x480/576, 2=352x480/57 */ /* 2 source letterboxed (1=yes, 0=no) */ -/* 0 film/camera mode (0=camera, 1=film (625/50 only)) */ +/* 0 film/camera mode (0= + *camera, 1=film (625/50 only)) */ /* bit definitions for capabilities: */ -- cgit v1.2.3-71-gd317 From cfe41359942b933ee0058c73df7dcc00dae64885 Mon Sep 17 00:00:00 2001 From: Jouni Ukkonen Date: Mon, 25 Apr 2016 09:19:10 -0300 Subject: [media] media: Add 1X14 14-bit raw bayer media bus code definitions The codes will be called: MEDIA_BUS_FMT_SBGGR14_1X14 MEDIA_BUS_FMT_SGBRG14_1X14 MEDIA_BUS_FMT_SGRBG14_1X14 MEDIA_BUS_FMT_SRGGB14_1X14 Signed-off-by: Jouni Ukkonen Signed-off-by: Sakari Ailus Acked-by: Hans Verkuil Signed-off-by: Mauro Carvalho Chehab --- Documentation/media/uapi/v4l/subdev-formats.rst | 258 +++++++++++++++++++++++- include/uapi/linux/media-bus-format.h | 6 +- 2 files changed, 262 insertions(+), 2 deletions(-) (limited to 'include/uapi/linux') diff --git a/Documentation/media/uapi/v4l/subdev-formats.rst b/Documentation/media/uapi/v4l/subdev-formats.rst index 568d5dd56561..273ca484983d 100644 --- a/Documentation/media/uapi/v4l/subdev-formats.rst +++ b/Documentation/media/uapi/v4l/subdev-formats.rst @@ -2812,7 +2812,7 @@ organization is given as an example for the first pixel only. - Code - - - :cspan:`11` Data organization + - :cspan:`13` Data organization - .. row 2 @@ -2820,6 +2820,10 @@ organization is given as an example for the first pixel only. - - Bit + - 13 + + - 12 + - 11 - 10 @@ -2859,6 +2863,10 @@ organization is given as an example for the first pixel only. - + - - + + - - + - b\ :sub:`7` - b\ :sub:`6` @@ -2890,6 +2898,10 @@ organization is given as an example for the first pixel only. - + - - + + - - + - g\ :sub:`7` - g\ :sub:`6` @@ -2921,6 +2933,10 @@ organization is given as an example for the first pixel only. - + - - + + - - + - g\ :sub:`7` - g\ :sub:`6` @@ -2952,6 +2968,10 @@ organization is given as an example for the first pixel only. - + - - + + - - + - r\ :sub:`7` - r\ :sub:`6` @@ -2983,6 +3003,10 @@ organization is given as an example for the first pixel only. - + - - + + - - + - b\ :sub:`7` - b\ :sub:`6` @@ -3014,6 +3038,10 @@ organization is given as an example for the first pixel only. - + - - + + - - + - g\ :sub:`7` - g\ :sub:`6` @@ -3045,6 +3073,10 @@ organization is given as an example for the first pixel only. - + - - + + - - + - g\ :sub:`7` - g\ :sub:`6` @@ -3076,6 +3108,10 @@ organization is given as an example for the first pixel only. - + - - + + - - + - r\ :sub:`7` - r\ :sub:`6` @@ -3107,6 +3143,10 @@ organization is given as an example for the first pixel only. - + - - + + - - + - b\ :sub:`7` - b\ :sub:`6` @@ -3138,6 +3178,10 @@ organization is given as an example for the first pixel only. - + - - + + - - + - g\ :sub:`7` - g\ :sub:`6` @@ -3169,6 +3213,10 @@ organization is given as an example for the first pixel only. - + - - + + - - + - g\ :sub:`7` - g\ :sub:`6` @@ -3200,6 +3248,10 @@ organization is given as an example for the first pixel only. - + - - + + - - + - r\ :sub:`7` - r\ :sub:`6` @@ -3231,6 +3283,10 @@ organization is given as an example for the first pixel only. - + - - + + - - + - 0 - 0 @@ -3260,6 +3316,10 @@ organization is given as an example for the first pixel only. - + - - + + - - + - b\ :sub:`7` - b\ :sub:`6` @@ -3291,6 +3351,10 @@ organization is given as an example for the first pixel only. - + - - + + - - + - b\ :sub:`7` - b\ :sub:`6` @@ -3320,6 +3384,10 @@ organization is given as an example for the first pixel only. - + - - + + - - + - 0 - 0 @@ -3351,6 +3419,10 @@ organization is given as an example for the first pixel only. - + - - + + - - + - b\ :sub:`9` - b\ :sub:`8` @@ -3380,6 +3452,10 @@ organization is given as an example for the first pixel only. - + - - + + - - + - b\ :sub:`1` - b\ :sub:`0` @@ -3411,6 +3487,10 @@ organization is given as an example for the first pixel only. - + - - + + - - + - b\ :sub:`1` - b\ :sub:`0` @@ -3440,6 +3520,10 @@ organization is given as an example for the first pixel only. - + - - + + - - + - b\ :sub:`9` - b\ :sub:`8` @@ -3467,6 +3551,10 @@ organization is given as an example for the first pixel only. - + - - + + - - + - b\ :sub:`9` - b\ :sub:`8` @@ -3498,6 +3586,10 @@ organization is given as an example for the first pixel only. - + - - + + - - + - g\ :sub:`9` - g\ :sub:`8` @@ -3529,6 +3621,10 @@ organization is given as an example for the first pixel only. - + - - + + - - + - g\ :sub:`9` - g\ :sub:`8` @@ -3560,6 +3656,10 @@ organization is given as an example for the first pixel only. - + - - + + - - + - r\ :sub:`9` - r\ :sub:`8` @@ -3587,6 +3687,10 @@ organization is given as an example for the first pixel only. - 0x3008 - + - - + + - - + - b\ :sub:`11` - b\ :sub:`10` @@ -3618,6 +3722,10 @@ organization is given as an example for the first pixel only. - 0x3010 - + - - + + - - + - g\ :sub:`11` - g\ :sub:`10` @@ -3649,6 +3757,10 @@ organization is given as an example for the first pixel only. - 0x3011 - + - - + + - - + - g\ :sub:`11` - g\ :sub:`10` @@ -3680,6 +3792,150 @@ organization is given as an example for the first pixel only. - 0x3012 - + - - + + - - + + - r\ :sub:`11` + + - r\ :sub:`10` + + - r\ :sub:`9` + + - r\ :sub:`8` + + - r\ :sub:`7` + + - r\ :sub:`6` + + - r\ :sub:`5` + + - r\ :sub:`4` + + - r\ :sub:`3` + + - r\ :sub:`2` + + - r\ :sub:`1` + + - r\ :sub:`0` + + - .. _MEDIA-BUS-FMT-SBGGR14-1X14: + + - MEDIA_BUS_FMT_SBGGR14_1X14 + + - 0x3019 + + - + - b\ :sub:`13` + + - b\ :sub:`12` + + - b\ :sub:`11` + + - b\ :sub:`10` + + - b\ :sub:`9` + + - b\ :sub:`8` + + - b\ :sub:`7` + + - b\ :sub:`6` + + - b\ :sub:`5` + + - b\ :sub:`4` + + - b\ :sub:`3` + + - b\ :sub:`2` + + - b\ :sub:`1` + + - b\ :sub:`0` + + - .. _MEDIA-BUS-FMT-SGBRG14-1X14: + + - MEDIA_BUS_FMT_SGBRG14_1X14 + + - 0x301a + + - + - g\ :sub:`13` + + - g\ :sub:`12` + + - g\ :sub:`11` + + - g\ :sub:`10` + + - g\ :sub:`9` + + - g\ :sub:`8` + + - g\ :sub:`7` + + - g\ :sub:`6` + + - g\ :sub:`5` + + - g\ :sub:`4` + + - g\ :sub:`3` + + - g\ :sub:`2` + + - g\ :sub:`1` + + - g\ :sub:`0` + + - .. _MEDIA-BUS-FMT-SGRBG14-1X14: + + - MEDIA_BUS_FMT_SGRBG14_1X14 + + - 0x301b + + - + - g\ :sub:`13` + + - g\ :sub:`12` + + - g\ :sub:`11` + + - g\ :sub:`10` + + - g\ :sub:`9` + + - g\ :sub:`8` + + - g\ :sub:`7` + + - g\ :sub:`6` + + - g\ :sub:`5` + + - g\ :sub:`4` + + - g\ :sub:`3` + + - g\ :sub:`2` + + - g\ :sub:`1` + + - g\ :sub:`0` + + - .. _MEDIA-BUS-FMT-SRGGB14-1X14: + + - MEDIA_BUS_FMT_SRGGB14_1X14 + + - 0x301c + + - + - r\ :sub:`13` + + - r\ :sub:`12` + - r\ :sub:`11` - r\ :sub:`10` diff --git a/include/uapi/linux/media-bus-format.h b/include/uapi/linux/media-bus-format.h index 190d491d5b13..1dff459ab6ff 100644 --- a/include/uapi/linux/media-bus-format.h +++ b/include/uapi/linux/media-bus-format.h @@ -97,7 +97,7 @@ #define MEDIA_BUS_FMT_YUV10_1X30 0x2016 #define MEDIA_BUS_FMT_AYUV8_1X32 0x2017 -/* Bayer - next is 0x3019 */ +/* Bayer - next is 0x301d */ #define MEDIA_BUS_FMT_SBGGR8_1X8 0x3001 #define MEDIA_BUS_FMT_SGBRG8_1X8 0x3013 #define MEDIA_BUS_FMT_SGRBG8_1X8 0x3002 @@ -122,6 +122,10 @@ #define MEDIA_BUS_FMT_SGBRG12_1X12 0x3010 #define MEDIA_BUS_FMT_SGRBG12_1X12 0x3011 #define MEDIA_BUS_FMT_SRGGB12_1X12 0x3012 +#define MEDIA_BUS_FMT_SBGGR14_1X14 0x3019 +#define MEDIA_BUS_FMT_SGBRG14_1X14 0x301a +#define MEDIA_BUS_FMT_SGRBG14_1X14 0x301b +#define MEDIA_BUS_FMT_SRGGB14_1X14 0x301c /* JPEG compressed formats - next is 0x4002 */ #define MEDIA_BUS_FMT_JPEG_1X8 0x4001 -- cgit v1.2.3-71-gd317 From 82dec0a7db16f7691470b58c28e79a2f65e829c4 Mon Sep 17 00:00:00 2001 From: Sakari Ailus Date: Mon, 27 Jun 2016 11:15:57 -0300 Subject: [media] media: Add 1X16 16-bit raw bayer media bus code definitions The codes will be called: MEDIA_BUS_FMT_SBGGR16_1X16 MEDIA_BUS_FMT_SGBRG16_1X16 MEDIA_BUS_FMT_SGRBG16_1X16 MEDIA_BUS_FMT_SRGGB16_1X16 Signed-off-by: Sakari Ailus Signed-off-by: Mauro Carvalho Chehab --- Documentation/media/uapi/v4l/subdev-formats.rst | 290 +++++++++++++++++++++++- include/uapi/linux/media-bus-format.h | 6 +- 2 files changed, 294 insertions(+), 2 deletions(-) (limited to 'include/uapi/linux') diff --git a/Documentation/media/uapi/v4l/subdev-formats.rst b/Documentation/media/uapi/v4l/subdev-formats.rst index 273ca484983d..08d6532b0a26 100644 --- a/Documentation/media/uapi/v4l/subdev-formats.rst +++ b/Documentation/media/uapi/v4l/subdev-formats.rst @@ -2812,7 +2812,7 @@ organization is given as an example for the first pixel only. - Code - - - :cspan:`13` Data organization + - :cspan:`15` Data organization - .. row 2 @@ -2820,6 +2820,10 @@ organization is given as an example for the first pixel only. - - Bit + - 15 + + - 14 + - 13 - 12 @@ -2867,6 +2871,10 @@ organization is given as an example for the first pixel only. - - + - - + + - - + - b\ :sub:`7` - b\ :sub:`6` @@ -2902,6 +2910,10 @@ organization is given as an example for the first pixel only. - - + - - + + - - + - g\ :sub:`7` - g\ :sub:`6` @@ -2937,6 +2949,10 @@ organization is given as an example for the first pixel only. - - + - - + + - - + - g\ :sub:`7` - g\ :sub:`6` @@ -2972,6 +2988,10 @@ organization is given as an example for the first pixel only. - - + - - + + - - + - r\ :sub:`7` - r\ :sub:`6` @@ -3007,6 +3027,10 @@ organization is given as an example for the first pixel only. - - + - - + + - - + - b\ :sub:`7` - b\ :sub:`6` @@ -3042,6 +3066,10 @@ organization is given as an example for the first pixel only. - - + - - + + - - + - g\ :sub:`7` - g\ :sub:`6` @@ -3077,6 +3105,10 @@ organization is given as an example for the first pixel only. - - + - - + + - - + - g\ :sub:`7` - g\ :sub:`6` @@ -3112,6 +3144,10 @@ organization is given as an example for the first pixel only. - - + - - + + - - + - r\ :sub:`7` - r\ :sub:`6` @@ -3147,6 +3183,10 @@ organization is given as an example for the first pixel only. - - + - - + + - - + - b\ :sub:`7` - b\ :sub:`6` @@ -3182,6 +3222,10 @@ organization is given as an example for the first pixel only. - - + - - + + - - + - g\ :sub:`7` - g\ :sub:`6` @@ -3217,6 +3261,10 @@ organization is given as an example for the first pixel only. - - + - - + + - - + - g\ :sub:`7` - g\ :sub:`6` @@ -3252,6 +3300,10 @@ organization is given as an example for the first pixel only. - - + - - + + - - + - r\ :sub:`7` - r\ :sub:`6` @@ -3287,6 +3339,10 @@ organization is given as an example for the first pixel only. - - + - - + + - - + - 0 - 0 @@ -3320,6 +3376,10 @@ organization is given as an example for the first pixel only. - - + - - + + - - + - b\ :sub:`7` - b\ :sub:`6` @@ -3355,6 +3415,10 @@ organization is given as an example for the first pixel only. - - + - - + + - - + - b\ :sub:`7` - b\ :sub:`6` @@ -3388,6 +3452,10 @@ organization is given as an example for the first pixel only. - - + - - + + - - + - 0 - 0 @@ -3423,6 +3491,10 @@ organization is given as an example for the first pixel only. - - + - - + + - - + - b\ :sub:`9` - b\ :sub:`8` @@ -3456,6 +3528,10 @@ organization is given as an example for the first pixel only. - - + - - + + - - + - b\ :sub:`1` - b\ :sub:`0` @@ -3491,6 +3567,10 @@ organization is given as an example for the first pixel only. - - + - - + + - - + - b\ :sub:`1` - b\ :sub:`0` @@ -3524,6 +3604,10 @@ organization is given as an example for the first pixel only. - - + - - + + - - + - b\ :sub:`9` - b\ :sub:`8` @@ -3555,6 +3639,10 @@ organization is given as an example for the first pixel only. - - + - - + + - - + - b\ :sub:`9` - b\ :sub:`8` @@ -3590,6 +3678,10 @@ organization is given as an example for the first pixel only. - - + - - + + - - + - g\ :sub:`9` - g\ :sub:`8` @@ -3625,6 +3717,10 @@ organization is given as an example for the first pixel only. - - + - - + + - - + - g\ :sub:`9` - g\ :sub:`8` @@ -3660,6 +3756,10 @@ organization is given as an example for the first pixel only. - - + - - + + - - + - r\ :sub:`9` - r\ :sub:`8` @@ -3691,6 +3791,10 @@ organization is given as an example for the first pixel only. - - + - - + + - - + - b\ :sub:`11` - b\ :sub:`10` @@ -3726,6 +3830,10 @@ organization is given as an example for the first pixel only. - - + - - + + - - + - g\ :sub:`11` - g\ :sub:`10` @@ -3761,6 +3869,10 @@ organization is given as an example for the first pixel only. - - + - - + + - - + - g\ :sub:`11` - g\ :sub:`10` @@ -3796,6 +3908,10 @@ organization is given as an example for the first pixel only. - - + - - + + - - + - r\ :sub:`11` - r\ :sub:`10` @@ -3827,6 +3943,10 @@ organization is given as an example for the first pixel only. - 0x3019 - + - - + + - - + - b\ :sub:`13` - b\ :sub:`12` @@ -3862,6 +3982,10 @@ organization is given as an example for the first pixel only. - 0x301a - + - - + + - - + - g\ :sub:`13` - g\ :sub:`12` @@ -3897,6 +4021,10 @@ organization is given as an example for the first pixel only. - 0x301b - + - - + + - - + - g\ :sub:`13` - g\ :sub:`12` @@ -3932,6 +4060,166 @@ organization is given as an example for the first pixel only. - 0x301c - + - - + + - - + + - r\ :sub:`13` + + - r\ :sub:`12` + + - r\ :sub:`11` + + - r\ :sub:`10` + + - r\ :sub:`9` + + - r\ :sub:`8` + + - r\ :sub:`7` + + - r\ :sub:`6` + + - r\ :sub:`5` + + - r\ :sub:`4` + + - r\ :sub:`3` + + - r\ :sub:`2` + + - r\ :sub:`1` + + - r\ :sub:`0` + + - .. _MEDIA-BUS-FMT-SBGGR16-1X16: + + - MEDIA_BUS_FMT_SBGGR16_1X16 + + - 0x301d + + - + - b\ :sub:`15` + + - b\ :sub:`14` + + - b\ :sub:`13` + + - b\ :sub:`12` + + - b\ :sub:`11` + + - b\ :sub:`10` + + - b\ :sub:`9` + + - b\ :sub:`8` + + - b\ :sub:`7` + + - b\ :sub:`6` + + - b\ :sub:`5` + + - b\ :sub:`4` + + - b\ :sub:`3` + + - b\ :sub:`2` + + - b\ :sub:`1` + + - b\ :sub:`0` + + - .. _MEDIA-BUS-FMT-SGBRG16-1X16: + + - MEDIA_BUS_FMT_SGBRG16_1X16 + + - 0x301e + + - + - g\ :sub:`15` + + - g\ :sub:`14` + + - g\ :sub:`13` + + - g\ :sub:`12` + + - g\ :sub:`11` + + - g\ :sub:`10` + + - g\ :sub:`9` + + - g\ :sub:`8` + + - g\ :sub:`7` + + - g\ :sub:`6` + + - g\ :sub:`5` + + - g\ :sub:`4` + + - g\ :sub:`3` + + - g\ :sub:`2` + + - g\ :sub:`1` + + - g\ :sub:`0` + + - .. _MEDIA-BUS-FMT-SGRBG16-1X16: + + - MEDIA_BUS_FMT_SGRBG16_1X16 + + - 0x301f + + - + - g\ :sub:`15` + + - g\ :sub:`14` + + - g\ :sub:`13` + + - g\ :sub:`12` + + - g\ :sub:`11` + + - g\ :sub:`10` + + - g\ :sub:`9` + + - g\ :sub:`8` + + - g\ :sub:`7` + + - g\ :sub:`6` + + - g\ :sub:`5` + + - g\ :sub:`4` + + - g\ :sub:`3` + + - g\ :sub:`2` + + - g\ :sub:`1` + + - g\ :sub:`0` + + - .. _MEDIA-BUS-FMT-SRGGB16-1X16: + + - MEDIA_BUS_FMT_SRGGB16_1X16 + + - 0x3020 + + - + - r\ :sub:`15` + + - r\ :sub:`14` + - r\ :sub:`13` - r\ :sub:`12` diff --git a/include/uapi/linux/media-bus-format.h b/include/uapi/linux/media-bus-format.h index 1dff459ab6ff..2168759c1287 100644 --- a/include/uapi/linux/media-bus-format.h +++ b/include/uapi/linux/media-bus-format.h @@ -97,7 +97,7 @@ #define MEDIA_BUS_FMT_YUV10_1X30 0x2016 #define MEDIA_BUS_FMT_AYUV8_1X32 0x2017 -/* Bayer - next is 0x301d */ +/* Bayer - next is 0x3021 */ #define MEDIA_BUS_FMT_SBGGR8_1X8 0x3001 #define MEDIA_BUS_FMT_SGBRG8_1X8 0x3013 #define MEDIA_BUS_FMT_SGRBG8_1X8 0x3002 @@ -126,6 +126,10 @@ #define MEDIA_BUS_FMT_SGBRG14_1X14 0x301a #define MEDIA_BUS_FMT_SGRBG14_1X14 0x301b #define MEDIA_BUS_FMT_SRGGB14_1X14 0x301c +#define MEDIA_BUS_FMT_SBGGR16_1X16 0x301d +#define MEDIA_BUS_FMT_SGBRG16_1X16 0x301e +#define MEDIA_BUS_FMT_SGRBG16_1X16 0x301f +#define MEDIA_BUS_FMT_SRGGB16_1X16 0x3020 /* JPEG compressed formats - next is 0x4002 */ #define MEDIA_BUS_FMT_JPEG_1X8 0x4001 -- cgit v1.2.3-71-gd317 From 7389e6ef347443ac90116c2208bbdfb4f9d135ba Mon Sep 17 00:00:00 2001 From: Charles-Antoine Couret Date: Thu, 15 Sep 2016 12:29:50 -0300 Subject: [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: Charles-Antoine Couret Signed-off-by: Hans Verkuil Signed-off-by: Mauro Carvalho Chehab --- drivers/media/v4l2-core/v4l2-dv-timings.c | 11 +++++++---- include/uapi/linux/v4l2-dv-timings.h | 12 ++++++++++++ include/uapi/linux/videodev2.h | 8 ++++++++ 3 files changed, 27 insertions(+), 4 deletions(-) (limited to 'include/uapi/linux') diff --git a/drivers/media/v4l2-core/v4l2-dv-timings.c b/drivers/media/v4l2-core/v4l2-dv-timings.c index 889de0a32152..730a7c392c1d 100644 --- a/drivers/media/v4l2-core/v4l2-dv-timings.c +++ b/drivers/media/v4l2-core/v4l2-dv-timings.c @@ -306,7 +306,7 @@ void v4l2_print_dv_timings(const char *dev_prefix, const char *prefix, (bt->polarities & V4L2_DV_VSYNC_POS_POL) ? "+" : "-", bt->il_vsync, bt->il_vbackporch); 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) ? " 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, (bt->flags & V4L2_DV_FL_HALF_LINE) ? " HALF_LINE" : "", (bt->flags & V4L2_DV_FL_IS_CE_VIDEO) ? - " CE_VIDEO" : ""); - pr_info("%s: standards (0x%x):%s%s%s%s\n", dev_prefix, bt->standards, + " CE_VIDEO" : "", + (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_DMT) ? " DMT" : "", (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); diff --git a/include/uapi/linux/v4l2-dv-timings.h b/include/uapi/linux/v4l2-dv-timings.h index 086168e18ca8..f31957166337 100644 --- a/include/uapi/linux/v4l2-dv-timings.h +++ b/include/uapi/linux/v4l2-dv-timings.h @@ -934,4 +934,16 @@ 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 diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h index 5529741202b5..94f123f3e04e 100644 --- a/include/uapi/linux/videodev2.h +++ b/include/uapi/linux/videodev2.h @@ -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_CVT (1 << 2) /* VESA Coordinated Video Timings */ #define V4L2_DV_BT_STD_GTF (1 << 3) /* VESA Generalized Timings Formula */ +#define V4L2_DV_BT_STD_SDI (1 << 4) /* SDI Timings */ /* Flags */ @@ -1305,6 +1306,11 @@ struct v4l2_bt_timings { * use the range 16-235) as opposed to 0-255. All formats defined in CEA-861 * except for the 640x480 format are CE formats. */ #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 */ #define V4L2_DV_BT_BLANKING_WIDTH(bt) \ @@ -1429,6 +1435,8 @@ struct v4l2_input { /* field 'status' - analog */ #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_NO_V_LOCK 0x00000400 /* No vertical sync lock */ +#define V4L2_IN_ST_NO_STD_LOCK 0x00000800 /* No standard format lock */ /* field 'status' - digital */ #define V4L2_IN_ST_NO_SYNC 0x00010000 /* No synchronization lock */ -- cgit v1.2.3-71-gd317