This is an automatic generated email to let you know that the following patch 
were queued at the 
http://git.linuxtv.org/cgit.cgi/v4l-utils.git tree:

Subject: sync it with Kernel headers, as will be found on 4.16-rc1
Author:  Mauro Carvalho Chehab <mche...@s-opensource.com>
Date:    Fri Feb 9 11:35:26 2018 -0200

As some changes happened upstream, sync them with v4l-utils.

Please notice that the changes at those files:
        utils/common/v4l2-tpg-colors.c
        utils/common/v4l2-tpg-core.c
        utils/common/v4l2-tpg.h

Had to be reverted, as they were causing compilation breakages.

Signed-off-by: Mauro Carvalho Chehab <mche...@s-opensource.com>

 contrib/freebsd/include/linux/v4l2-controls.h |  96 ++--
 contrib/freebsd/include/linux/videodev2.h     |  63 ++-
 contrib/test/ioctl-test.h                     |   8 +
 contrib/test/ioctl_32.h                       |   5 +
 contrib/test/ioctl_64.h                       |   5 +
 include/linux/dvb/dmx.h                       |  61 +++
 include/linux/dvb/frontend.h                  |  40 +-
 include/linux/v4l2-controls.h                 |  96 ++--
 include/linux/videodev2.h                     |  63 ++-
 lib/include/libdvbv5/dvb-fe.h                 |   2 +-
 lib/include/libdvbv5/dvb-frontend.h           | 755 ++++++++++++++++++++------
 lib/libdvbv5/dvb-v5.c                         |   5 +-
 lib/libdvbv5/dvb-v5.h                         |   2 +-
 13 files changed, 856 insertions(+), 345 deletions(-)

---

http://git.linuxtv.org/cgit.cgi/v4l-utils.git/commit/?id=3fe24fe6064d3c148ef86410d512426ad1115c07
diff --git a/contrib/freebsd/include/linux/v4l2-controls.h 
b/contrib/freebsd/include/linux/v4l2-controls.h
index a692623e0236..cbbb750d87d1 100644
--- a/contrib/freebsd/include/linux/v4l2-controls.h
+++ b/contrib/freebsd/include/linux/v4l2-controls.h
@@ -67,8 +67,8 @@
 /* User-class control IDs */
 
 #define V4L2_CID_BASE                  (V4L2_CTRL_CLASS_USER | 0x900)
-#define V4L2_CID_USER_BASE             V4L2_CID_BASE
-#define V4L2_CID_USER_CLASS            (V4L2_CTRL_CLASS_USER | 1)
+#define V4L2_CID_USER_BASE             V4L2_CID_BASE
+#define V4L2_CID_USER_CLASS            (V4L2_CTRL_CLASS_USER | 1)
 #define V4L2_CID_BRIGHTNESS            (V4L2_CID_BASE+0)
 #define V4L2_CID_CONTRAST              (V4L2_CID_BASE+1)
 #define V4L2_CID_SATURATION            (V4L2_CID_BASE+2)
@@ -102,7 +102,7 @@ enum v4l2_power_line_frequency {
 #define V4L2_CID_HUE_AUTO                      (V4L2_CID_BASE+25)
 #define V4L2_CID_WHITE_BALANCE_TEMPERATURE     (V4L2_CID_BASE+26)
 #define V4L2_CID_SHARPNESS                     (V4L2_CID_BASE+27)
-#define V4L2_CID_BACKLIGHT_COMPENSATION        (V4L2_CID_BASE+28)
+#define V4L2_CID_BACKLIGHT_COMPENSATION                (V4L2_CID_BASE+28)
 #define V4L2_CID_CHROMA_AGC                     (V4L2_CID_BASE+29)
 #define V4L2_CID_COLOR_KILLER                   (V4L2_CID_BASE+30)
 #define V4L2_CID_COLORFX                       (V4L2_CID_BASE+31)
@@ -194,11 +194,11 @@ enum v4l2_colorfx {
 /* The MPEG controls are applicable to all codec controls
  * and the 'MPEG' part of the define is historical */
 
-#define V4L2_CID_MPEG_BASE                     (V4L2_CTRL_CLASS_MPEG | 0x900)
-#define V4L2_CID_MPEG_CLASS                    (V4L2_CTRL_CLASS_MPEG | 1)
+#define V4L2_CID_MPEG_BASE                     (V4L2_CTRL_CLASS_MPEG | 0x900)
+#define V4L2_CID_MPEG_CLASS                    (V4L2_CTRL_CLASS_MPEG | 1)
 
 /*  MPEG streams, specific to multiplexed streams */
-#define V4L2_CID_MPEG_STREAM_TYPE              (V4L2_CID_MPEG_BASE+0)
+#define V4L2_CID_MPEG_STREAM_TYPE              (V4L2_CID_MPEG_BASE+0)
 enum v4l2_mpeg_stream_type {
        V4L2_MPEG_STREAM_TYPE_MPEG2_PS   = 0, /* MPEG-2 program stream */
        V4L2_MPEG_STREAM_TYPE_MPEG2_TS   = 1, /* MPEG-2 transport stream */
@@ -207,26 +207,26 @@ enum v4l2_mpeg_stream_type {
        V4L2_MPEG_STREAM_TYPE_MPEG1_VCD  = 4, /* MPEG-1 VCD-compatible stream */
        V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD = 5, /* MPEG-2 SVCD-compatible stream 
*/
 };
-#define V4L2_CID_MPEG_STREAM_PID_PMT           (V4L2_CID_MPEG_BASE+1)
-#define V4L2_CID_MPEG_STREAM_PID_AUDIO                 (V4L2_CID_MPEG_BASE+2)
-#define V4L2_CID_MPEG_STREAM_PID_VIDEO                 (V4L2_CID_MPEG_BASE+3)
-#define V4L2_CID_MPEG_STREAM_PID_PCR           (V4L2_CID_MPEG_BASE+4)
-#define V4L2_CID_MPEG_STREAM_PES_ID_AUDIO      (V4L2_CID_MPEG_BASE+5)
-#define V4L2_CID_MPEG_STREAM_PES_ID_VIDEO      (V4L2_CID_MPEG_BASE+6)
-#define V4L2_CID_MPEG_STREAM_VBI_FMT           (V4L2_CID_MPEG_BASE+7)
+#define V4L2_CID_MPEG_STREAM_PID_PMT           (V4L2_CID_MPEG_BASE+1)
+#define V4L2_CID_MPEG_STREAM_PID_AUDIO         (V4L2_CID_MPEG_BASE+2)
+#define V4L2_CID_MPEG_STREAM_PID_VIDEO         (V4L2_CID_MPEG_BASE+3)
+#define V4L2_CID_MPEG_STREAM_PID_PCR           (V4L2_CID_MPEG_BASE+4)
+#define V4L2_CID_MPEG_STREAM_PES_ID_AUDIO      (V4L2_CID_MPEG_BASE+5)
+#define V4L2_CID_MPEG_STREAM_PES_ID_VIDEO      (V4L2_CID_MPEG_BASE+6)
+#define V4L2_CID_MPEG_STREAM_VBI_FMT           (V4L2_CID_MPEG_BASE+7)
 enum v4l2_mpeg_stream_vbi_fmt {
        V4L2_MPEG_STREAM_VBI_FMT_NONE = 0,  /* No VBI in the MPEG stream */
        V4L2_MPEG_STREAM_VBI_FMT_IVTV = 1,  /* VBI in private packets, IVTV 
format */
 };
 
 /*  MPEG audio controls specific to multiplexed streams  */
-#define V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ      (V4L2_CID_MPEG_BASE+100)
+#define V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ      (V4L2_CID_MPEG_BASE+100)
 enum v4l2_mpeg_audio_sampling_freq {
        V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100 = 0,
        V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000 = 1,
        V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000 = 2,
 };
-#define V4L2_CID_MPEG_AUDIO_ENCODING           (V4L2_CID_MPEG_BASE+101)
+#define V4L2_CID_MPEG_AUDIO_ENCODING           (V4L2_CID_MPEG_BASE+101)
 enum v4l2_mpeg_audio_encoding {
        V4L2_MPEG_AUDIO_ENCODING_LAYER_1 = 0,
        V4L2_MPEG_AUDIO_ENCODING_LAYER_2 = 1,
@@ -234,7 +234,7 @@ enum v4l2_mpeg_audio_encoding {
        V4L2_MPEG_AUDIO_ENCODING_AAC     = 3,
        V4L2_MPEG_AUDIO_ENCODING_AC3     = 4,
 };
-#define V4L2_CID_MPEG_AUDIO_L1_BITRATE                 (V4L2_CID_MPEG_BASE+102)
+#define V4L2_CID_MPEG_AUDIO_L1_BITRATE         (V4L2_CID_MPEG_BASE+102)
 enum v4l2_mpeg_audio_l1_bitrate {
        V4L2_MPEG_AUDIO_L1_BITRATE_32K  = 0,
        V4L2_MPEG_AUDIO_L1_BITRATE_64K  = 1,
@@ -251,7 +251,7 @@ enum v4l2_mpeg_audio_l1_bitrate {
        V4L2_MPEG_AUDIO_L1_BITRATE_416K = 12,
        V4L2_MPEG_AUDIO_L1_BITRATE_448K = 13,
 };
-#define V4L2_CID_MPEG_AUDIO_L2_BITRATE                 (V4L2_CID_MPEG_BASE+103)
+#define V4L2_CID_MPEG_AUDIO_L2_BITRATE         (V4L2_CID_MPEG_BASE+103)
 enum v4l2_mpeg_audio_l2_bitrate {
        V4L2_MPEG_AUDIO_L2_BITRATE_32K  = 0,
        V4L2_MPEG_AUDIO_L2_BITRATE_48K  = 1,
@@ -268,7 +268,7 @@ enum v4l2_mpeg_audio_l2_bitrate {
        V4L2_MPEG_AUDIO_L2_BITRATE_320K = 12,
        V4L2_MPEG_AUDIO_L2_BITRATE_384K = 13,
 };
-#define V4L2_CID_MPEG_AUDIO_L3_BITRATE                 (V4L2_CID_MPEG_BASE+104)
+#define V4L2_CID_MPEG_AUDIO_L3_BITRATE         (V4L2_CID_MPEG_BASE+104)
 enum v4l2_mpeg_audio_l3_bitrate {
        V4L2_MPEG_AUDIO_L3_BITRATE_32K  = 0,
        V4L2_MPEG_AUDIO_L3_BITRATE_40K  = 1,
@@ -285,32 +285,32 @@ enum v4l2_mpeg_audio_l3_bitrate {
        V4L2_MPEG_AUDIO_L3_BITRATE_256K = 12,
        V4L2_MPEG_AUDIO_L3_BITRATE_320K = 13,
 };
-#define V4L2_CID_MPEG_AUDIO_MODE               (V4L2_CID_MPEG_BASE+105)
+#define V4L2_CID_MPEG_AUDIO_MODE               (V4L2_CID_MPEG_BASE+105)
 enum v4l2_mpeg_audio_mode {
        V4L2_MPEG_AUDIO_MODE_STEREO       = 0,
        V4L2_MPEG_AUDIO_MODE_JOINT_STEREO = 1,
        V4L2_MPEG_AUDIO_MODE_DUAL         = 2,
        V4L2_MPEG_AUDIO_MODE_MONO         = 3,
 };
-#define V4L2_CID_MPEG_AUDIO_MODE_EXTENSION     (V4L2_CID_MPEG_BASE+106)
+#define V4L2_CID_MPEG_AUDIO_MODE_EXTENSION     (V4L2_CID_MPEG_BASE+106)
 enum v4l2_mpeg_audio_mode_extension {
        V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4  = 0,
        V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_8  = 1,
        V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_12 = 2,
        V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_16 = 3,
 };
-#define V4L2_CID_MPEG_AUDIO_EMPHASIS           (V4L2_CID_MPEG_BASE+107)
+#define V4L2_CID_MPEG_AUDIO_EMPHASIS           (V4L2_CID_MPEG_BASE+107)
 enum v4l2_mpeg_audio_emphasis {
        V4L2_MPEG_AUDIO_EMPHASIS_NONE         = 0,
        V4L2_MPEG_AUDIO_EMPHASIS_50_DIV_15_uS = 1,
        V4L2_MPEG_AUDIO_EMPHASIS_CCITT_J17    = 2,
 };
-#define V4L2_CID_MPEG_AUDIO_CRC                (V4L2_CID_MPEG_BASE+108)
+#define V4L2_CID_MPEG_AUDIO_CRC                        (V4L2_CID_MPEG_BASE+108)
 enum v4l2_mpeg_audio_crc {
        V4L2_MPEG_AUDIO_CRC_NONE  = 0,
        V4L2_MPEG_AUDIO_CRC_CRC16 = 1,
 };
-#define V4L2_CID_MPEG_AUDIO_MUTE               (V4L2_CID_MPEG_BASE+109)
+#define V4L2_CID_MPEG_AUDIO_MUTE               (V4L2_CID_MPEG_BASE+109)
 #define V4L2_CID_MPEG_AUDIO_AAC_BITRATE                (V4L2_CID_MPEG_BASE+110)
 #define V4L2_CID_MPEG_AUDIO_AC3_BITRATE                (V4L2_CID_MPEG_BASE+111)
 enum v4l2_mpeg_audio_ac3_bitrate {
@@ -346,33 +346,33 @@ enum v4l2_mpeg_audio_dec_playback {
 #define V4L2_CID_MPEG_AUDIO_DEC_MULTILINGUAL_PLAYBACK (V4L2_CID_MPEG_BASE+113)
 
 /*  MPEG video controls specific to multiplexed streams */
-#define V4L2_CID_MPEG_VIDEO_ENCODING           (V4L2_CID_MPEG_BASE+200)
+#define V4L2_CID_MPEG_VIDEO_ENCODING           (V4L2_CID_MPEG_BASE+200)
 enum v4l2_mpeg_video_encoding {
        V4L2_MPEG_VIDEO_ENCODING_MPEG_1     = 0,
        V4L2_MPEG_VIDEO_ENCODING_MPEG_2     = 1,
        V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC = 2,
 };
-#define V4L2_CID_MPEG_VIDEO_ASPECT             (V4L2_CID_MPEG_BASE+201)
+#define V4L2_CID_MPEG_VIDEO_ASPECT             (V4L2_CID_MPEG_BASE+201)
 enum v4l2_mpeg_video_aspect {
        V4L2_MPEG_VIDEO_ASPECT_1x1     = 0,
        V4L2_MPEG_VIDEO_ASPECT_4x3     = 1,
        V4L2_MPEG_VIDEO_ASPECT_16x9    = 2,
        V4L2_MPEG_VIDEO_ASPECT_221x100 = 3,
 };
-#define V4L2_CID_MPEG_VIDEO_B_FRAMES           (V4L2_CID_MPEG_BASE+202)
-#define V4L2_CID_MPEG_VIDEO_GOP_SIZE           (V4L2_CID_MPEG_BASE+203)
-#define V4L2_CID_MPEG_VIDEO_GOP_CLOSURE        (V4L2_CID_MPEG_BASE+204)
-#define V4L2_CID_MPEG_VIDEO_PULLDOWN           (V4L2_CID_MPEG_BASE+205)
-#define V4L2_CID_MPEG_VIDEO_BITRATE_MODE       (V4L2_CID_MPEG_BASE+206)
+#define V4L2_CID_MPEG_VIDEO_B_FRAMES           (V4L2_CID_MPEG_BASE+202)
+#define V4L2_CID_MPEG_VIDEO_GOP_SIZE           (V4L2_CID_MPEG_BASE+203)
+#define V4L2_CID_MPEG_VIDEO_GOP_CLOSURE                (V4L2_CID_MPEG_BASE+204)
+#define V4L2_CID_MPEG_VIDEO_PULLDOWN           (V4L2_CID_MPEG_BASE+205)
+#define V4L2_CID_MPEG_VIDEO_BITRATE_MODE       (V4L2_CID_MPEG_BASE+206)
 enum v4l2_mpeg_video_bitrate_mode {
        V4L2_MPEG_VIDEO_BITRATE_MODE_VBR = 0,
        V4L2_MPEG_VIDEO_BITRATE_MODE_CBR = 1,
 };
-#define V4L2_CID_MPEG_VIDEO_BITRATE            (V4L2_CID_MPEG_BASE+207)
-#define V4L2_CID_MPEG_VIDEO_BITRATE_PEAK       (V4L2_CID_MPEG_BASE+208)
+#define V4L2_CID_MPEG_VIDEO_BITRATE            (V4L2_CID_MPEG_BASE+207)
+#define V4L2_CID_MPEG_VIDEO_BITRATE_PEAK       (V4L2_CID_MPEG_BASE+208)
 #define V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION (V4L2_CID_MPEG_BASE+209)
-#define V4L2_CID_MPEG_VIDEO_MUTE               (V4L2_CID_MPEG_BASE+210)
-#define V4L2_CID_MPEG_VIDEO_MUTE_YUV           (V4L2_CID_MPEG_BASE+211)
+#define V4L2_CID_MPEG_VIDEO_MUTE               (V4L2_CID_MPEG_BASE+210)
+#define V4L2_CID_MPEG_VIDEO_MUTE_YUV           (V4L2_CID_MPEG_BASE+211)
 #define V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE            
(V4L2_CID_MPEG_BASE+212)
 #define V4L2_CID_MPEG_VIDEO_DECODER_MPEG4_DEBLOCK_FILTER       
(V4L2_CID_MPEG_BASE+213)
 #define V4L2_CID_MPEG_VIDEO_CYCLIC_INTRA_REFRESH_MB            
(V4L2_CID_MPEG_BASE+214)
@@ -590,14 +590,14 @@ enum v4l2_vp8_golden_frame_sel {
 #define V4L2_CID_MPEG_VIDEO_VPX_PROFILE                        
(V4L2_CID_MPEG_BASE+511)
 
 /*  MPEG-class control IDs specific to the CX2341x driver as defined by V4L2 */
-#define V4L2_CID_MPEG_CX2341X_BASE                             
(V4L2_CTRL_CLASS_MPEG | 0x1000)
-#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE        
(V4L2_CID_MPEG_CX2341X_BASE+0)
+#define V4L2_CID_MPEG_CX2341X_BASE                             
(V4L2_CTRL_CLASS_MPEG | 0x1000)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE                
(V4L2_CID_MPEG_CX2341X_BASE+0)
 enum v4l2_mpeg_cx2341x_video_spatial_filter_mode {
        V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_MANUAL = 0,
        V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_AUTO   = 1,
 };
-#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER             
(V4L2_CID_MPEG_CX2341X_BASE+1)
-#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE   
(V4L2_CID_MPEG_CX2341X_BASE+2)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER             
(V4L2_CID_MPEG_CX2341X_BASE+1)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE   
(V4L2_CID_MPEG_CX2341X_BASE+2)
 enum v4l2_mpeg_cx2341x_video_luma_spatial_filter_type {
        V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_OFF                  = 
0,
        V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_HOR               = 
1,
@@ -605,18 +605,18 @@ enum v4l2_mpeg_cx2341x_video_luma_spatial_filter_type {
        V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_HV_SEPARABLE      = 
3,
        V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_SYM_NON_SEPARABLE = 
4,
 };
-#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE         
(V4L2_CID_MPEG_CX2341X_BASE+3)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE 
(V4L2_CID_MPEG_CX2341X_BASE+3)
 enum v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type {
        V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_OFF    = 0,
        V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_1D_HOR = 1,
 };
-#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE       
(V4L2_CID_MPEG_CX2341X_BASE+4)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE       
(V4L2_CID_MPEG_CX2341X_BASE+4)
 enum v4l2_mpeg_cx2341x_video_temporal_filter_mode {
        V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_MANUAL = 0,
        V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_AUTO   = 1,
 };
-#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER            
(V4L2_CID_MPEG_CX2341X_BASE+5)
-#define V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE                 
(V4L2_CID_MPEG_CX2341X_BASE+6)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER            
(V4L2_CID_MPEG_CX2341X_BASE+5)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE         
(V4L2_CID_MPEG_CX2341X_BASE+6)
 enum v4l2_mpeg_cx2341x_video_median_filter_type {
        V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_OFF      = 0,
        V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR      = 1,
@@ -624,11 +624,11 @@ enum v4l2_mpeg_cx2341x_video_median_filter_type {
        V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR_VERT = 3,
        V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_DIAG     = 4,
 };
-#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM  
(V4L2_CID_MPEG_CX2341X_BASE+7)
-#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP     
(V4L2_CID_MPEG_CX2341X_BASE+8)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM  
(V4L2_CID_MPEG_CX2341X_BASE+7)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP     
(V4L2_CID_MPEG_CX2341X_BASE+8)
 #define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM        
(V4L2_CID_MPEG_CX2341X_BASE+9)
-#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP   
(V4L2_CID_MPEG_CX2341X_BASE+10)
-#define V4L2_CID_MPEG_CX2341X_STREAM_INSERT_NAV_PACKETS        
(V4L2_CID_MPEG_CX2341X_BASE+11)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP   
(V4L2_CID_MPEG_CX2341X_BASE+10)
+#define V4L2_CID_MPEG_CX2341X_STREAM_INSERT_NAV_PACKETS                
(V4L2_CID_MPEG_CX2341X_BASE+11)
 
 /*  MPEG-class control IDs specific to the Samsung MFC 5.1 driver as defined 
by V4L2 */
 #define V4L2_CID_MPEG_MFC51_BASE                               
(V4L2_CTRL_CLASS_MPEG | 0x1100)
@@ -660,8 +660,8 @@ enum v4l2_mpeg_mfc51_video_force_frame_type {
 
 /*  Camera class control IDs */
 
-#define V4L2_CID_CAMERA_CLASS_BASE     (V4L2_CTRL_CLASS_CAMERA | 0x900)
-#define V4L2_CID_CAMERA_CLASS          (V4L2_CTRL_CLASS_CAMERA | 1)
+#define V4L2_CID_CAMERA_CLASS_BASE     (V4L2_CTRL_CLASS_CAMERA | 0x900)
+#define V4L2_CID_CAMERA_CLASS          (V4L2_CTRL_CLASS_CAMERA | 1)
 
 #define V4L2_CID_EXPOSURE_AUTO                 (V4L2_CID_CAMERA_CLASS_BASE+1)
 enum  v4l2_exposure_auto_type {
diff --git a/contrib/freebsd/include/linux/videodev2.h 
b/contrib/freebsd/include/linux/videodev2.h
index 70cf58d06bf7..f35873dbd618 100644
--- a/contrib/freebsd/include/linux/videodev2.h
+++ b/contrib/freebsd/include/linux/videodev2.h
@@ -139,14 +139,14 @@ enum v4l2_field {
                                         transmitted first */
 };
 #define V4L2_FIELD_HAS_TOP(field)      \
-       ((field) == V4L2_FIELD_TOP      ||\
+       ((field) == V4L2_FIELD_TOP      ||\
         (field) == V4L2_FIELD_INTERLACED ||\
         (field) == V4L2_FIELD_INTERLACED_TB ||\
         (field) == V4L2_FIELD_INTERLACED_BT ||\
         (field) == V4L2_FIELD_SEQ_TB   ||\
         (field) == V4L2_FIELD_SEQ_BT)
 #define V4L2_FIELD_HAS_BOTTOM(field)   \
-       ((field) == V4L2_FIELD_BOTTOM   ||\
+       ((field) == V4L2_FIELD_BOTTOM   ||\
         (field) == V4L2_FIELD_INTERLACED ||\
         (field) == V4L2_FIELD_INTERLACED_TB ||\
         (field) == V4L2_FIELD_INTERLACED_BT ||\
@@ -497,12 +497,12 @@ struct v4l2_capability {
  *     V I D E O   I M A G E   F O R M A T
  */
 struct v4l2_pix_format {
-       uint32_t                        width;
+       uint32_t                        width;
        uint32_t                        height;
        uint32_t                        pixelformat;
        uint32_t                        field;          /* enum v4l2_field */
-       uint32_t                bytesperline;   /* for padding, zero if unused 
*/
-       uint32_t                        sizeimage;
+       uint32_t                        bytesperline;   /* for padding, zero if 
unused */
+       uint32_t                        sizeimage;
        uint32_t                        colorspace;     /* enum v4l2_colorspace 
*/
        uint32_t                        priv;           /* private data, 
depends on pixelformat */
        uint32_t                        flags;          /* format flags 
(V4L2_PIX_FMT_FLAG_*) */
@@ -699,6 +699,12 @@ struct v4l2_pix_format {
 #define V4L2_PIX_FMT_MT21C    v4l2_fourcc('M', 'T', '2', '1') /* Mediatek 
compressed block mode  */
 #define V4L2_PIX_FMT_INZI     v4l2_fourcc('I', 'N', 'Z', 'I') /* Intel Planar 
Greyscale 10-bit and Depth 16-bit */
 
+/* 10bit raw bayer packed, 32 bytes for every 25 pixels, last LSB 6 bits 
unused */
+#define V4L2_PIX_FMT_IPU3_SBGGR10      v4l2_fourcc('i', 'p', '3', 'b') /* IPU3 
packed 10-bit BGGR bayer */
+#define V4L2_PIX_FMT_IPU3_SGBRG10      v4l2_fourcc('i', 'p', '3', 'g') /* IPU3 
packed 10-bit GBRG bayer */
+#define V4L2_PIX_FMT_IPU3_SGRBG10      v4l2_fourcc('i', 'p', '3', 'G') /* IPU3 
packed 10-bit GRBG bayer */
+#define V4L2_PIX_FMT_IPU3_SRGGB10      v4l2_fourcc('i', 'p', '3', 'r') /* IPU3 
packed 10-bit RGGB bayer */
+
 /* SDR formats - used only for Software Defined Radio devices */
 #define V4L2_SDR_FMT_CU8          v4l2_fourcc('C', 'U', '0', '8') /* IQ u8 */
 #define V4L2_SDR_FMT_CU16LE       v4l2_fourcc('C', 'U', '1', '6') /* IQ u16le 
*/
@@ -718,6 +724,7 @@ struct v4l2_pix_format {
 /* Meta-data formats */
 #define V4L2_META_FMT_VSP1_HGO    v4l2_fourcc('V', 'S', 'P', 'H') /* R-Car 
VSP1 1-D Histogram */
 #define V4L2_META_FMT_VSP1_HGT    v4l2_fourcc('V', 'S', 'P', 'T') /* R-Car 
VSP1 2-D Histogram */
+#define V4L2_META_FMT_UVC         v4l2_fourcc('U', 'V', 'C', 'H') /* UVC 
Payload Header metadata */
 
 /* priv field value to indicates that subsequent fields are valid. */
 #define V4L2_PIX_FMT_PRIV_MAGIC                0xfeedcafe
@@ -1196,7 +1203,7 @@ typedef uint64_t v4l2_std_id;
                                 V4L2_STD_NTSC_M_JP     |\
                                 V4L2_STD_NTSC_M_KR)
 /* Secam macros */
-#define V4L2_STD_SECAM_DK              (V4L2_STD_SECAM_D       |\
+#define V4L2_STD_SECAM_DK      (V4L2_STD_SECAM_D       |\
                                 V4L2_STD_SECAM_K       |\
                                 V4L2_STD_SECAM_K1)
 /* All Secam Standards */
@@ -1277,7 +1284,7 @@ struct v4l2_standard {
 };
 
 /*
- *     D V     B T     T I M I N G S
+ *     D V     B T     T I M I N G S
  */
 
 /** struct v4l2_bt_timings - BT.656/BT.1120 timing data
@@ -1616,7 +1623,7 @@ struct v4l2_ext_controls {
        struct v4l2_ext_control *controls;
 };
 
-#define V4L2_CTRL_ID_MASK                (0x0fffffff)
+#define V4L2_CTRL_ID_MASK        (0x0fffffff)
 #define V4L2_CTRL_ID2CLASS(id)    ((id) & 0x0fff0000UL)
 #define V4L2_CTRL_ID2WHICH(id)    ((id) & 0x0fff0000UL)
 #define V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000)
@@ -1686,11 +1693,11 @@ struct v4l2_querymenu {
 /*  Control flags  */
 #define V4L2_CTRL_FLAG_DISABLED                0x0001
 #define V4L2_CTRL_FLAG_GRABBED         0x0002
-#define V4L2_CTRL_FLAG_READ_ONLY       0x0004
-#define V4L2_CTRL_FLAG_UPDATE          0x0008
-#define V4L2_CTRL_FLAG_INACTIVE        0x0010
-#define V4L2_CTRL_FLAG_SLIDER          0x0020
-#define V4L2_CTRL_FLAG_WRITE_ONLY      0x0040
+#define V4L2_CTRL_FLAG_READ_ONLY       0x0004
+#define V4L2_CTRL_FLAG_UPDATE          0x0008
+#define V4L2_CTRL_FLAG_INACTIVE                0x0010
+#define V4L2_CTRL_FLAG_SLIDER          0x0020
+#define V4L2_CTRL_FLAG_WRITE_ONLY      0x0040
 #define V4L2_CTRL_FLAG_VOLATILE                0x0080
 #define V4L2_CTRL_FLAG_HAS_PAYLOAD     0x0100
 #define V4L2_CTRL_FLAG_EXECUTE_ON_WRITE        0x0200
@@ -1804,21 +1811,21 @@ struct v4l2_hw_freq_seek {
  */
 
 struct v4l2_rds_data {
-       uint8_t         lsb;
-       uint8_t         msb;
-       uint8_t         block;
+       uint8_t lsb;
+       uint8_t msb;
+       uint8_t block;
 } __attribute__ ((packed));
 
-#define V4L2_RDS_BLOCK_MSK      0x7
-#define V4L2_RDS_BLOCK_A        0
-#define V4L2_RDS_BLOCK_B        1
-#define V4L2_RDS_BLOCK_C        2
-#define V4L2_RDS_BLOCK_D        3
-#define V4L2_RDS_BLOCK_C_ALT    4
-#define V4L2_RDS_BLOCK_INVALID          7
+#define V4L2_RDS_BLOCK_MSK      0x7
+#define V4L2_RDS_BLOCK_A        0
+#define V4L2_RDS_BLOCK_B        1
+#define V4L2_RDS_BLOCK_C        2
+#define V4L2_RDS_BLOCK_D        3
+#define V4L2_RDS_BLOCK_C_ALT    4
+#define V4L2_RDS_BLOCK_INVALID  7
 
 #define V4L2_RDS_BLOCK_CORRECTED 0x40
-#define V4L2_RDS_BLOCK_ERROR    0x80
+#define V4L2_RDS_BLOCK_ERROR    0x80
 
 /*
  *     A U D I O
@@ -2374,8 +2381,8 @@ struct v4l2_create_buffers {
 #define VIDIOC_S_CROP           _IOW('V', 60, struct v4l2_crop)
 #define VIDIOC_G_JPEGCOMP       _IOR('V', 61, struct v4l2_jpegcompression)
 #define VIDIOC_S_JPEGCOMP       _IOW('V', 62, struct v4l2_jpegcompression)
-#define VIDIOC_QUERYSTD         _IOR('V', 63, v4l2_std_id)
-#define VIDIOC_TRY_FMT         _IOWR('V', 64, struct v4l2_format)
+#define VIDIOC_QUERYSTD                 _IOR('V', 63, v4l2_std_id)
+#define VIDIOC_TRY_FMT         _IOWR('V', 64, struct v4l2_format)
 #define VIDIOC_ENUMAUDIO       _IOWR('V', 65, struct v4l2_audio)
 #define VIDIOC_ENUMAUDOUT      _IOWR('V', 66, struct v4l2_audioout)
 #define VIDIOC_G_PRIORITY       _IOR('V', 67, uint32_t) /* enum v4l2_priority 
*/
@@ -2396,8 +2403,8 @@ struct v4l2_create_buffers {
  * Only implemented if CONFIG_VIDEO_ADV_DEBUG is defined.
  * You must be root to use these ioctls. Never use these in applications!
  */
-#define        VIDIOC_DBG_S_REGISTER    _IOW('V', 79, struct v4l2_dbg_register)
-#define        VIDIOC_DBG_G_REGISTER   _IOWR('V', 80, struct v4l2_dbg_register)
+#define        VIDIOC_DBG_S_REGISTER    _IOW('V', 79, struct v4l2_dbg_register)
+#define        VIDIOC_DBG_G_REGISTER   _IOWR('V', 80, struct v4l2_dbg_register)
 
 #define VIDIOC_S_HW_FREQ_SEEK   _IOW('V', 82, struct v4l2_hw_freq_seek)
 #define        VIDIOC_S_DV_TIMINGS     _IOWR('V', 87, struct v4l2_dv_timings)
diff --git a/contrib/test/ioctl-test.h b/contrib/test/ioctl-test.h
index 8e824be6adc3..82df4d7aad6b 100644
--- a/contrib/test/ioctl-test.h
+++ b/contrib/test/ioctl-test.h
@@ -15,7 +15,10 @@ union v4l_parms {
        enum v4l2_priority prio;
 
        /* ioctl structs */
+       struct dmx_buffer                       p_dmx_buffer;
+       struct dmx_exportbuffer                 p_dmx_exportbuffer;
        struct dmx_pes_filter_params            p_dmx_pes_filter_params;
+       struct dmx_requestbuffers               p_dmx_requestbuffers;
        struct dmx_sct_filter_params            p_dmx_sct_filter_params;
        struct dmx_stc                          p_dmx_stc;
        struct dtv_properties                   p_dtv_properties;
@@ -86,9 +89,14 @@ static const struct {
 } ioctls[] = {
        /* ioctl structs */
        ioc(demux, DMX_ADD_PID),                                                
        /*  __u16 */
+       ioc(demux, DMX_DQBUF),                                                  
        /*  struct dmx_buffer */
+       ioc(demux, DMX_EXPBUF),                                                 
        /*  struct dmx_exportbuffer */
        ioc(demux, DMX_GET_PES_PIDS),                                           
        /*  __u16[5] */
        ioc(demux, DMX_GET_STC),                                                
        /*  struct dmx_stc */
+       ioc(demux, DMX_QBUF),                                                   
        /*  struct dmx_buffer */
+       ioc(demux, DMX_QUERYBUF),                                               
        /*  struct dmx_buffer */
        ioc(demux, DMX_REMOVE_PID),                                             
        /*  __u16 */
+       ioc(demux, DMX_REQBUFS),                                                
        /*  struct dmx_requestbuffers */
        ioc(demux, DMX_SET_BUFFER_SIZE),                                        
        /*  void */
        ioc(demux, DMX_SET_FILTER),                                             
        /*  struct dmx_sct_filter_params */
        ioc(demux, DMX_SET_PES_FILTER),                                         
        /*  struct dmx_pes_filter_params */
diff --git a/contrib/test/ioctl_32.h b/contrib/test/ioctl_32.h
index 45fd4a77eba7..b0b7b76b8d68 100644
--- a/contrib/test/ioctl_32.h
+++ b/contrib/test/ioctl_32.h
@@ -1,9 +1,14 @@
 /* This file is auto-generated by make sync-with-kernel */
 
 #define CMD32_DMX_ADD_PID 0x40026f33
+#define CMD32_DMX_DQBUF 0xc0106f40
+#define CMD32_DMX_EXPBUF 0xc00c6f3e
 #define CMD32_DMX_GET_PES_PIDS 0x800a6f2f
 #define CMD32_DMX_GET_STC 0xc0106f32
+#define CMD32_DMX_QBUF 0xc0106f3f
+#define CMD32_DMX_QUERYBUF 0xc0106f3d
 #define CMD32_DMX_REMOVE_PID 0x40026f34
+#define CMD32_DMX_REQBUFS 0xc0086f3c
 #define CMD32_DMX_SET_BUFFER_SIZE 0x6f2d
 #define CMD32_DMX_SET_FILTER 0x403c6f2b
 #define CMD32_DMX_SET_PES_FILTER 0x40146f2c
diff --git a/contrib/test/ioctl_64.h b/contrib/test/ioctl_64.h
index 8abde5868484..d21eb8185c82 100644
--- a/contrib/test/ioctl_64.h
+++ b/contrib/test/ioctl_64.h
@@ -1,9 +1,14 @@
 /* This file is auto-generated by make sync-with-kernel */
 
 #define CMD64_DMX_ADD_PID 0x40026f33
+#define CMD64_DMX_DQBUF 0xc0106f40
+#define CMD64_DMX_EXPBUF 0xc00c6f3e
 #define CMD64_DMX_GET_PES_PIDS 0x800a6f2f
 #define CMD64_DMX_GET_STC 0xc0106f32
+#define CMD64_DMX_QBUF 0xc0106f3f
+#define CMD64_DMX_QUERYBUF 0xc0106f3d
 #define CMD64_DMX_REMOVE_PID 0x40026f34
+#define CMD64_DMX_REQBUFS 0xc0086f3c
 #define CMD64_DMX_SET_BUFFER_SIZE 0x6f2d
 #define CMD64_DMX_SET_FILTER 0x403c6f2b
 #define CMD64_DMX_SET_PES_FILTER 0x40146f2c
diff --git a/include/linux/dvb/dmx.h b/include/linux/dvb/dmx.h
index 7d27bf5c1d20..238432f8f79b 100644
--- a/include/linux/dvb/dmx.h
+++ b/include/linux/dvb/dmx.h
@@ -209,6 +209,61 @@ struct dmx_stc {
        __u64 stc;
 };
 
+/**
+ * struct dmx_buffer - dmx buffer info
+ *
+ * @index:     id number of the buffer
+ * @bytesused: number of bytes occupied by data in the buffer (payload);
+ * @offset:    for buffers with memory == DMX_MEMORY_MMAP;
+ *             offset from the start of the device memory for this plane,
+ *             (or a "cookie" that should be passed to mmap() as offset)
+ * @length:    size in bytes of the buffer
+ *
+ * Contains data exchanged by application and driver using one of the streaming
+ * I/O methods.
+ */
+struct dmx_buffer {
+       __u32                   index;
+       __u32                   bytesused;
+       __u32                   offset;
+       __u32                   length;
+};
+
+/**
+ * struct dmx_requestbuffers - request dmx buffer information
+ *
+ * @count:     number of requested buffers,
+ * @size:      size in bytes of the requested buffer
+ *
+ * Contains data used for requesting a dmx buffer.
+ * All reserved fields must be set to zero.
+ */
+struct dmx_requestbuffers {
+       __u32                   count;
+       __u32                   size;
+};
+
+/**
+ * struct dmx_exportbuffer - export of dmx buffer as DMABUF file descriptor
+ *
+ * @index:     id number of the buffer
+ * @flags:     flags for newly created file, currently only O_CLOEXEC is
+ *             supported, refer to manual of open syscall for more details
+ * @fd:                file descriptor associated with DMABUF (set by driver)
+ *
+ * Contains data used for exporting a dmx buffer as DMABUF file descriptor.
+ * The buffer is identified by a 'cookie' returned by DMX_QUERYBUF
+ * (identical to the cookie used to mmap() the buffer to userspace). All
+ * reserved fields must be set to zero. The field reserved0 is expected to
+ * become a structure 'type' allowing an alternative layout of the structure
+ * content. Therefore this field should not be used for any other extensions.
+ */
+struct dmx_exportbuffer {
+       __u32           index;
+       __u32           flags;
+       __s32           fd;
+};
+
 #define DMX_START                _IO('o', 41)
 #define DMX_STOP                 _IO('o', 42)
 #define DMX_SET_FILTER           _IOW('o', 43, struct dmx_sct_filter_params)
@@ -227,4 +282,10 @@ typedef enum dmx_ts_pes dmx_pes_type_t;
 typedef struct dmx_filter dmx_filter_t;
 
 
+#define DMX_REQBUFS              _IOWR('o', 60, struct dmx_requestbuffers)
+#define DMX_QUERYBUF             _IOWR('o', 61, struct dmx_buffer)
+#define DMX_EXPBUF               _IOWR('o', 62, struct dmx_exportbuffer)
+#define DMX_QBUF                 _IOWR('o', 63, struct dmx_buffer)
+#define DMX_DQBUF                _IOWR('o', 64, struct dmx_buffer)
+
 #endif /* _DVBDMX_H_ */
diff --git a/include/linux/dvb/frontend.h b/include/linux/dvb/frontend.h
index e7953d8fee3c..5f00fc1ff126 100644
--- a/include/linux/dvb/frontend.h
+++ b/include/linux/dvb/frontend.h
@@ -547,7 +547,10 @@ enum fe_interleaving {
 #define DTV_STAT_ERROR_BLOCK_COUNT     68
 #define DTV_STAT_TOTAL_BLOCK_COUNT     69
 
-#define DTV_MAX_COMMAND                DTV_STAT_TOTAL_BLOCK_COUNT
+/* Physical layer scrambling */
+#define DTV_SCRAMBLING_SEQUENCE_INDEX  70
+
+#define DTV_MAX_COMMAND                DTV_SCRAMBLING_SEQUENCE_INDEX
 
 /**
  * enum fe_pilot - Type of pilot tone
@@ -756,16 +759,15 @@ enum fecap_scale_params {
 /**
  * struct dtv_stats - Used for reading a DTV status property
  *
- * @scale:     Filled with enum fecap_scale_params - the scale
- *             in usage for that parameter
- *
- * The ``{unnamed_union}`` may have either one of the values below:
+ * @scale:
+ *     Filled with enum fecap_scale_params - the scale in usage
+ *     for that parameter
  *
- * %svalue
+ * @svalue:
  *     integer value of the measure, for %FE_SCALE_DECIBEL,
  *     used for dB measures. The unit is 0.001 dB.
  *
- * %uvalue
+ * @uvalue:
  *     unsigned integer value of the measure, used when @scale is
  *     either %FE_SCALE_RELATIVE or %FE_SCALE_COUNTER.
  *
@@ -828,19 +830,19 @@ struct dtv_fe_stats {
 /**
  * struct dtv_property - store one of frontend command and its value
  *
- * @cmd:       Digital TV command.
- * @reserved:  Not used.
- * @u:         Union with the values for the command.
- * @result:    Unused
- *
- * The @u union may have either one of the values below:
+ * @cmd:               Digital TV command.
+ * @reserved:          Not used.
+ * @u:                 Union with the values for the command.
+ * @u.data:            A unsigned 32 bits integer with command value.
+ * @u.buffer:          Struct to store bigger properties.
+ *                     Currently unused.
+ * @u.buffer.data:     an unsigned 32-bits array.
+ * @u.buffer.len:      number of elements of the buffer.
+ * @u.buffer.reserved1:        Reserved.
+ * @u.buffer.reserved2:        Reserved.
+ * @u.st:              a &struct dtv_fe_stats array of statistics.
+ * @result:            Currently unused.
  *
- * %data
- *     an unsigned 32-bits number.
- * %st
- *     a &struct dtv_fe_stats array of statistics.
- * %buffer
- *     a buffer of up to 32 characters (currently unused).
  */
 struct dtv_property {
        __u32 cmd;
diff --git a/include/linux/v4l2-controls.h b/include/linux/v4l2-controls.h
index a692623e0236..cbbb750d87d1 100644
--- a/include/linux/v4l2-controls.h
+++ b/include/linux/v4l2-controls.h
@@ -67,8 +67,8 @@
 /* User-class control IDs */
 
 #define V4L2_CID_BASE                  (V4L2_CTRL_CLASS_USER | 0x900)
-#define V4L2_CID_USER_BASE             V4L2_CID_BASE
-#define V4L2_CID_USER_CLASS            (V4L2_CTRL_CLASS_USER | 1)
+#define V4L2_CID_USER_BASE             V4L2_CID_BASE
+#define V4L2_CID_USER_CLASS            (V4L2_CTRL_CLASS_USER | 1)
 #define V4L2_CID_BRIGHTNESS            (V4L2_CID_BASE+0)
 #define V4L2_CID_CONTRAST              (V4L2_CID_BASE+1)
 #define V4L2_CID_SATURATION            (V4L2_CID_BASE+2)
@@ -102,7 +102,7 @@ enum v4l2_power_line_frequency {
 #define V4L2_CID_HUE_AUTO                      (V4L2_CID_BASE+25)
 #define V4L2_CID_WHITE_BALANCE_TEMPERATURE     (V4L2_CID_BASE+26)
 #define V4L2_CID_SHARPNESS                     (V4L2_CID_BASE+27)
-#define V4L2_CID_BACKLIGHT_COMPENSATION        (V4L2_CID_BASE+28)
+#define V4L2_CID_BACKLIGHT_COMPENSATION                (V4L2_CID_BASE+28)
 #define V4L2_CID_CHROMA_AGC                     (V4L2_CID_BASE+29)
 #define V4L2_CID_COLOR_KILLER                   (V4L2_CID_BASE+30)
 #define V4L2_CID_COLORFX                       (V4L2_CID_BASE+31)
@@ -194,11 +194,11 @@ enum v4l2_colorfx {
 /* The MPEG controls are applicable to all codec controls
  * and the 'MPEG' part of the define is historical */
 
-#define V4L2_CID_MPEG_BASE                     (V4L2_CTRL_CLASS_MPEG | 0x900)
-#define V4L2_CID_MPEG_CLASS                    (V4L2_CTRL_CLASS_MPEG | 1)
+#define V4L2_CID_MPEG_BASE                     (V4L2_CTRL_CLASS_MPEG | 0x900)
+#define V4L2_CID_MPEG_CLASS                    (V4L2_CTRL_CLASS_MPEG | 1)
 
 /*  MPEG streams, specific to multiplexed streams */
-#define V4L2_CID_MPEG_STREAM_TYPE              (V4L2_CID_MPEG_BASE+0)
+#define V4L2_CID_MPEG_STREAM_TYPE              (V4L2_CID_MPEG_BASE+0)
 enum v4l2_mpeg_stream_type {
        V4L2_MPEG_STREAM_TYPE_MPEG2_PS   = 0, /* MPEG-2 program stream */
        V4L2_MPEG_STREAM_TYPE_MPEG2_TS   = 1, /* MPEG-2 transport stream */
@@ -207,26 +207,26 @@ enum v4l2_mpeg_stream_type {
        V4L2_MPEG_STREAM_TYPE_MPEG1_VCD  = 4, /* MPEG-1 VCD-compatible stream */
        V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD = 5, /* MPEG-2 SVCD-compatible stream 
*/
 };
-#define V4L2_CID_MPEG_STREAM_PID_PMT           (V4L2_CID_MPEG_BASE+1)
-#define V4L2_CID_MPEG_STREAM_PID_AUDIO                 (V4L2_CID_MPEG_BASE+2)
-#define V4L2_CID_MPEG_STREAM_PID_VIDEO                 (V4L2_CID_MPEG_BASE+3)
-#define V4L2_CID_MPEG_STREAM_PID_PCR           (V4L2_CID_MPEG_BASE+4)
-#define V4L2_CID_MPEG_STREAM_PES_ID_AUDIO      (V4L2_CID_MPEG_BASE+5)
-#define V4L2_CID_MPEG_STREAM_PES_ID_VIDEO      (V4L2_CID_MPEG_BASE+6)
-#define V4L2_CID_MPEG_STREAM_VBI_FMT           (V4L2_CID_MPEG_BASE+7)
+#define V4L2_CID_MPEG_STREAM_PID_PMT           (V4L2_CID_MPEG_BASE+1)
+#define V4L2_CID_MPEG_STREAM_PID_AUDIO         (V4L2_CID_MPEG_BASE+2)
+#define V4L2_CID_MPEG_STREAM_PID_VIDEO         (V4L2_CID_MPEG_BASE+3)
+#define V4L2_CID_MPEG_STREAM_PID_PCR           (V4L2_CID_MPEG_BASE+4)
+#define V4L2_CID_MPEG_STREAM_PES_ID_AUDIO      (V4L2_CID_MPEG_BASE+5)
+#define V4L2_CID_MPEG_STREAM_PES_ID_VIDEO      (V4L2_CID_MPEG_BASE+6)
+#define V4L2_CID_MPEG_STREAM_VBI_FMT           (V4L2_CID_MPEG_BASE+7)
 enum v4l2_mpeg_stream_vbi_fmt {
        V4L2_MPEG_STREAM_VBI_FMT_NONE = 0,  /* No VBI in the MPEG stream */
        V4L2_MPEG_STREAM_VBI_FMT_IVTV = 1,  /* VBI in private packets, IVTV 
format */
 };
 
 /*  MPEG audio controls specific to multiplexed streams  */
-#define V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ      (V4L2_CID_MPEG_BASE+100)
+#define V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ      (V4L2_CID_MPEG_BASE+100)
 enum v4l2_mpeg_audio_sampling_freq {
        V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100 = 0,
        V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000 = 1,
        V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000 = 2,
 };
-#define V4L2_CID_MPEG_AUDIO_ENCODING           (V4L2_CID_MPEG_BASE+101)
+#define V4L2_CID_MPEG_AUDIO_ENCODING           (V4L2_CID_MPEG_BASE+101)
 enum v4l2_mpeg_audio_encoding {
        V4L2_MPEG_AUDIO_ENCODING_LAYER_1 = 0,
        V4L2_MPEG_AUDIO_ENCODING_LAYER_2 = 1,
@@ -234,7 +234,7 @@ enum v4l2_mpeg_audio_encoding {
        V4L2_MPEG_AUDIO_ENCODING_AAC     = 3,
        V4L2_MPEG_AUDIO_ENCODING_AC3     = 4,
 };
-#define V4L2_CID_MPEG_AUDIO_L1_BITRATE                 (V4L2_CID_MPEG_BASE+102)
+#define V4L2_CID_MPEG_AUDIO_L1_BITRATE         (V4L2_CID_MPEG_BASE+102)
 enum v4l2_mpeg_audio_l1_bitrate {
        V4L2_MPEG_AUDIO_L1_BITRATE_32K  = 0,
        V4L2_MPEG_AUDIO_L1_BITRATE_64K  = 1,
@@ -251,7 +251,7 @@ enum v4l2_mpeg_audio_l1_bitrate {
        V4L2_MPEG_AUDIO_L1_BITRATE_416K = 12,
        V4L2_MPEG_AUDIO_L1_BITRATE_448K = 13,
 };
-#define V4L2_CID_MPEG_AUDIO_L2_BITRATE                 (V4L2_CID_MPEG_BASE+103)
+#define V4L2_CID_MPEG_AUDIO_L2_BITRATE         (V4L2_CID_MPEG_BASE+103)
 enum v4l2_mpeg_audio_l2_bitrate {
        V4L2_MPEG_AUDIO_L2_BITRATE_32K  = 0,
        V4L2_MPEG_AUDIO_L2_BITRATE_48K  = 1,
@@ -268,7 +268,7 @@ enum v4l2_mpeg_audio_l2_bitrate {
        V4L2_MPEG_AUDIO_L2_BITRATE_320K = 12,
        V4L2_MPEG_AUDIO_L2_BITRATE_384K = 13,
 };
-#define V4L2_CID_MPEG_AUDIO_L3_BITRATE                 (V4L2_CID_MPEG_BASE+104)
+#define V4L2_CID_MPEG_AUDIO_L3_BITRATE         (V4L2_CID_MPEG_BASE+104)
 enum v4l2_mpeg_audio_l3_bitrate {
        V4L2_MPEG_AUDIO_L3_BITRATE_32K  = 0,
        V4L2_MPEG_AUDIO_L3_BITRATE_40K  = 1,
@@ -285,32 +285,32 @@ enum v4l2_mpeg_audio_l3_bitrate {
        V4L2_MPEG_AUDIO_L3_BITRATE_256K = 12,
        V4L2_MPEG_AUDIO_L3_BITRATE_320K = 13,
 };
-#define V4L2_CID_MPEG_AUDIO_MODE               (V4L2_CID_MPEG_BASE+105)
+#define V4L2_CID_MPEG_AUDIO_MODE               (V4L2_CID_MPEG_BASE+105)
 enum v4l2_mpeg_audio_mode {
        V4L2_MPEG_AUDIO_MODE_STEREO       = 0,
        V4L2_MPEG_AUDIO_MODE_JOINT_STEREO = 1,
        V4L2_MPEG_AUDIO_MODE_DUAL         = 2,
        V4L2_MPEG_AUDIO_MODE_MONO         = 3,
 };
-#define V4L2_CID_MPEG_AUDIO_MODE_EXTENSION     (V4L2_CID_MPEG_BASE+106)
+#define V4L2_CID_MPEG_AUDIO_MODE_EXTENSION     (V4L2_CID_MPEG_BASE+106)
 enum v4l2_mpeg_audio_mode_extension {
        V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4  = 0,
        V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_8  = 1,
        V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_12 = 2,
        V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_16 = 3,
 };
-#define V4L2_CID_MPEG_AUDIO_EMPHASIS           (V4L2_CID_MPEG_BASE+107)
+#define V4L2_CID_MPEG_AUDIO_EMPHASIS           (V4L2_CID_MPEG_BASE+107)
 enum v4l2_mpeg_audio_emphasis {
        V4L2_MPEG_AUDIO_EMPHASIS_NONE         = 0,
        V4L2_MPEG_AUDIO_EMPHASIS_50_DIV_15_uS = 1,
        V4L2_MPEG_AUDIO_EMPHASIS_CCITT_J17    = 2,
 };
-#define V4L2_CID_MPEG_AUDIO_CRC                (V4L2_CID_MPEG_BASE+108)
+#define V4L2_CID_MPEG_AUDIO_CRC                        (V4L2_CID_MPEG_BASE+108)
 enum v4l2_mpeg_audio_crc {
        V4L2_MPEG_AUDIO_CRC_NONE  = 0,
        V4L2_MPEG_AUDIO_CRC_CRC16 = 1,
 };
-#define V4L2_CID_MPEG_AUDIO_MUTE               (V4L2_CID_MPEG_BASE+109)
+#define V4L2_CID_MPEG_AUDIO_MUTE               (V4L2_CID_MPEG_BASE+109)
 #define V4L2_CID_MPEG_AUDIO_AAC_BITRATE                (V4L2_CID_MPEG_BASE+110)
 #define V4L2_CID_MPEG_AUDIO_AC3_BITRATE                (V4L2_CID_MPEG_BASE+111)
 enum v4l2_mpeg_audio_ac3_bitrate {
@@ -346,33 +346,33 @@ enum v4l2_mpeg_audio_dec_playback {
 #define V4L2_CID_MPEG_AUDIO_DEC_MULTILINGUAL_PLAYBACK (V4L2_CID_MPEG_BASE+113)
 
 /*  MPEG video controls specific to multiplexed streams */
-#define V4L2_CID_MPEG_VIDEO_ENCODING           (V4L2_CID_MPEG_BASE+200)
+#define V4L2_CID_MPEG_VIDEO_ENCODING           (V4L2_CID_MPEG_BASE+200)
 enum v4l2_mpeg_video_encoding {
        V4L2_MPEG_VIDEO_ENCODING_MPEG_1     = 0,
        V4L2_MPEG_VIDEO_ENCODING_MPEG_2     = 1,
        V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC = 2,
 };
-#define V4L2_CID_MPEG_VIDEO_ASPECT             (V4L2_CID_MPEG_BASE+201)
+#define V4L2_CID_MPEG_VIDEO_ASPECT             (V4L2_CID_MPEG_BASE+201)
 enum v4l2_mpeg_video_aspect {
        V4L2_MPEG_VIDEO_ASPECT_1x1     = 0,
        V4L2_MPEG_VIDEO_ASPECT_4x3     = 1,
        V4L2_MPEG_VIDEO_ASPECT_16x9    = 2,
        V4L2_MPEG_VIDEO_ASPECT_221x100 = 3,
 };
-#define V4L2_CID_MPEG_VIDEO_B_FRAMES           (V4L2_CID_MPEG_BASE+202)
-#define V4L2_CID_MPEG_VIDEO_GOP_SIZE           (V4L2_CID_MPEG_BASE+203)
-#define V4L2_CID_MPEG_VIDEO_GOP_CLOSURE        (V4L2_CID_MPEG_BASE+204)
-#define V4L2_CID_MPEG_VIDEO_PULLDOWN           (V4L2_CID_MPEG_BASE+205)
-#define V4L2_CID_MPEG_VIDEO_BITRATE_MODE       (V4L2_CID_MPEG_BASE+206)
+#define V4L2_CID_MPEG_VIDEO_B_FRAMES           (V4L2_CID_MPEG_BASE+202)
+#define V4L2_CID_MPEG_VIDEO_GOP_SIZE           (V4L2_CID_MPEG_BASE+203)
+#define V4L2_CID_MPEG_VIDEO_GOP_CLOSURE                (V4L2_CID_MPEG_BASE+204)
+#define V4L2_CID_MPEG_VIDEO_PULLDOWN           (V4L2_CID_MPEG_BASE+205)
+#define V4L2_CID_MPEG_VIDEO_BITRATE_MODE       (V4L2_CID_MPEG_BASE+206)
 enum v4l2_mpeg_video_bitrate_mode {
        V4L2_MPEG_VIDEO_BITRATE_MODE_VBR = 0,
        V4L2_MPEG_VIDEO_BITRATE_MODE_CBR = 1,
 };
-#define V4L2_CID_MPEG_VIDEO_BITRATE            (V4L2_CID_MPEG_BASE+207)
-#define V4L2_CID_MPEG_VIDEO_BITRATE_PEAK       (V4L2_CID_MPEG_BASE+208)
+#define V4L2_CID_MPEG_VIDEO_BITRATE            (V4L2_CID_MPEG_BASE+207)
+#define V4L2_CID_MPEG_VIDEO_BITRATE_PEAK       (V4L2_CID_MPEG_BASE+208)
 #define V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION (V4L2_CID_MPEG_BASE+209)
-#define V4L2_CID_MPEG_VIDEO_MUTE               (V4L2_CID_MPEG_BASE+210)
-#define V4L2_CID_MPEG_VIDEO_MUTE_YUV           (V4L2_CID_MPEG_BASE+211)
+#define V4L2_CID_MPEG_VIDEO_MUTE               (V4L2_CID_MPEG_BASE+210)
+#define V4L2_CID_MPEG_VIDEO_MUTE_YUV           (V4L2_CID_MPEG_BASE+211)
 #define V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE            
(V4L2_CID_MPEG_BASE+212)
 #define V4L2_CID_MPEG_VIDEO_DECODER_MPEG4_DEBLOCK_FILTER       
(V4L2_CID_MPEG_BASE+213)
 #define V4L2_CID_MPEG_VIDEO_CYCLIC_INTRA_REFRESH_MB            
(V4L2_CID_MPEG_BASE+214)
@@ -590,14 +590,14 @@ enum v4l2_vp8_golden_frame_sel {
 #define V4L2_CID_MPEG_VIDEO_VPX_PROFILE                        
(V4L2_CID_MPEG_BASE+511)
 
 /*  MPEG-class control IDs specific to the CX2341x driver as defined by V4L2 */
-#define V4L2_CID_MPEG_CX2341X_BASE                             
(V4L2_CTRL_CLASS_MPEG | 0x1000)
-#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE        
(V4L2_CID_MPEG_CX2341X_BASE+0)
+#define V4L2_CID_MPEG_CX2341X_BASE                             
(V4L2_CTRL_CLASS_MPEG | 0x1000)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE                
(V4L2_CID_MPEG_CX2341X_BASE+0)
 enum v4l2_mpeg_cx2341x_video_spatial_filter_mode {
        V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_MANUAL = 0,
        V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_AUTO   = 1,
 };
-#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER             
(V4L2_CID_MPEG_CX2341X_BASE+1)
-#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE   
(V4L2_CID_MPEG_CX2341X_BASE+2)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER             
(V4L2_CID_MPEG_CX2341X_BASE+1)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE   
(V4L2_CID_MPEG_CX2341X_BASE+2)
 enum v4l2_mpeg_cx2341x_video_luma_spatial_filter_type {
        V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_OFF                  = 
0,
        V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_HOR               = 
1,
@@ -605,18 +605,18 @@ enum v4l2_mpeg_cx2341x_video_luma_spatial_filter_type {
        V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_HV_SEPARABLE      = 
3,
        V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_SYM_NON_SEPARABLE = 
4,
 };
-#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE         
(V4L2_CID_MPEG_CX2341X_BASE+3)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE 
(V4L2_CID_MPEG_CX2341X_BASE+3)
 enum v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type {
        V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_OFF    = 0,
        V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_1D_HOR = 1,
 };
-#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE       
(V4L2_CID_MPEG_CX2341X_BASE+4)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE       
(V4L2_CID_MPEG_CX2341X_BASE+4)
 enum v4l2_mpeg_cx2341x_video_temporal_filter_mode {
        V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_MANUAL = 0,
        V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_AUTO   = 1,
 };
-#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER            
(V4L2_CID_MPEG_CX2341X_BASE+5)
-#define V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE                 
(V4L2_CID_MPEG_CX2341X_BASE+6)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER            
(V4L2_CID_MPEG_CX2341X_BASE+5)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE         
(V4L2_CID_MPEG_CX2341X_BASE+6)
 enum v4l2_mpeg_cx2341x_video_median_filter_type {
        V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_OFF      = 0,
        V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR      = 1,
@@ -624,11 +624,11 @@ enum v4l2_mpeg_cx2341x_video_median_filter_type {
        V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR_VERT = 3,
        V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_DIAG     = 4,
 };
-#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM  
(V4L2_CID_MPEG_CX2341X_BASE+7)
-#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP     
(V4L2_CID_MPEG_CX2341X_BASE+8)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM  
(V4L2_CID_MPEG_CX2341X_BASE+7)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP     
(V4L2_CID_MPEG_CX2341X_BASE+8)
 #define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM        
(V4L2_CID_MPEG_CX2341X_BASE+9)
-#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP   
(V4L2_CID_MPEG_CX2341X_BASE+10)
-#define V4L2_CID_MPEG_CX2341X_STREAM_INSERT_NAV_PACKETS        
(V4L2_CID_MPEG_CX2341X_BASE+11)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP   
(V4L2_CID_MPEG_CX2341X_BASE+10)
+#define V4L2_CID_MPEG_CX2341X_STREAM_INSERT_NAV_PACKETS                
(V4L2_CID_MPEG_CX2341X_BASE+11)
 
 /*  MPEG-class control IDs specific to the Samsung MFC 5.1 driver as defined 
by V4L2 */
 #define V4L2_CID_MPEG_MFC51_BASE                               
(V4L2_CTRL_CLASS_MPEG | 0x1100)
@@ -660,8 +660,8 @@ enum v4l2_mpeg_mfc51_video_force_frame_type {
 
 /*  Camera class control IDs */
 
-#define V4L2_CID_CAMERA_CLASS_BASE     (V4L2_CTRL_CLASS_CAMERA | 0x900)
-#define V4L2_CID_CAMERA_CLASS          (V4L2_CTRL_CLASS_CAMERA | 1)
+#define V4L2_CID_CAMERA_CLASS_BASE     (V4L2_CTRL_CLASS_CAMERA | 0x900)
+#define V4L2_CID_CAMERA_CLASS          (V4L2_CTRL_CLASS_CAMERA | 1)
 
 #define V4L2_CID_EXPOSURE_AUTO                 (V4L2_CID_CAMERA_CLASS_BASE+1)
 enum  v4l2_exposure_auto_type {
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h
index 489433edd3d1..84a9153aa7cb 100644
--- a/include/linux/videodev2.h
+++ b/include/linux/videodev2.h
@@ -105,14 +105,14 @@ enum v4l2_field {
                                         transmitted first */
 };
 #define V4L2_FIELD_HAS_TOP(field)      \
-       ((field) == V4L2_FIELD_TOP      ||\
+       ((field) == V4L2_FIELD_TOP      ||\
         (field) == V4L2_FIELD_INTERLACED ||\
         (field) == V4L2_FIELD_INTERLACED_TB ||\
         (field) == V4L2_FIELD_INTERLACED_BT ||\
         (field) == V4L2_FIELD_SEQ_TB   ||\
         (field) == V4L2_FIELD_SEQ_BT)
 #define V4L2_FIELD_HAS_BOTTOM(field)   \
-       ((field) == V4L2_FIELD_BOTTOM   ||\
+       ((field) == V4L2_FIELD_BOTTOM   ||\
         (field) == V4L2_FIELD_INTERLACED ||\
         (field) == V4L2_FIELD_INTERLACED_TB ||\
         (field) == V4L2_FIELD_INTERLACED_BT ||\
@@ -463,12 +463,12 @@ struct v4l2_capability {
  *     V I D E O   I M A G E   F O R M A T
  */
 struct v4l2_pix_format {
-       __u32                   width;
+       __u32                   width;
        __u32                   height;
        __u32                   pixelformat;
        __u32                   field;          /* enum v4l2_field */
-       __u32                   bytesperline;   /* for padding, zero if unused 
*/
-       __u32                   sizeimage;
+       __u32                   bytesperline;   /* for padding, zero if unused 
*/
+       __u32                   sizeimage;
        __u32                   colorspace;     /* enum v4l2_colorspace */
        __u32                   priv;           /* private data, depends on 
pixelformat */
        __u32                   flags;          /* format flags 
(V4L2_PIX_FMT_FLAG_*) */
@@ -665,6 +665,12 @@ struct v4l2_pix_format {
 #define V4L2_PIX_FMT_MT21C    v4l2_fourcc('M', 'T', '2', '1') /* Mediatek 
compressed block mode  */
 #define V4L2_PIX_FMT_INZI     v4l2_fourcc('I', 'N', 'Z', 'I') /* Intel Planar 
Greyscale 10-bit and Depth 16-bit */
 
+/* 10bit raw bayer packed, 32 bytes for every 25 pixels, last LSB 6 bits 
unused */
+#define V4L2_PIX_FMT_IPU3_SBGGR10      v4l2_fourcc('i', 'p', '3', 'b') /* IPU3 
packed 10-bit BGGR bayer */
+#define V4L2_PIX_FMT_IPU3_SGBRG10      v4l2_fourcc('i', 'p', '3', 'g') /* IPU3 
packed 10-bit GBRG bayer */
+#define V4L2_PIX_FMT_IPU3_SGRBG10      v4l2_fourcc('i', 'p', '3', 'G') /* IPU3 
packed 10-bit GRBG bayer */
+#define V4L2_PIX_FMT_IPU3_SRGGB10      v4l2_fourcc('i', 'p', '3', 'r') /* IPU3 
packed 10-bit RGGB bayer */
+
 /* SDR formats - used only for Software Defined Radio devices */
 #define V4L2_SDR_FMT_CU8          v4l2_fourcc('C', 'U', '0', '8') /* IQ u8 */
 #define V4L2_SDR_FMT_CU16LE       v4l2_fourcc('C', 'U', '1', '6') /* IQ u16le 
*/
@@ -684,6 +690,7 @@ struct v4l2_pix_format {
 /* Meta-data formats */
 #define V4L2_META_FMT_VSP1_HGO    v4l2_fourcc('V', 'S', 'P', 'H') /* R-Car 
VSP1 1-D Histogram */
 #define V4L2_META_FMT_VSP1_HGT    v4l2_fourcc('V', 'S', 'P', 'T') /* R-Car 
VSP1 2-D Histogram */
+#define V4L2_META_FMT_UVC         v4l2_fourcc('U', 'V', 'C', 'H') /* UVC 
Payload Header metadata */
 
 /* priv field value to indicates that subsequent fields are valid. */
 #define V4L2_PIX_FMT_PRIV_MAGIC                0xfeedcafe
@@ -1162,7 +1169,7 @@ typedef __u64 v4l2_std_id;
                                 V4L2_STD_NTSC_M_JP     |\
                                 V4L2_STD_NTSC_M_KR)
 /* Secam macros */
-#define V4L2_STD_SECAM_DK              (V4L2_STD_SECAM_D       |\
+#define V4L2_STD_SECAM_DK      (V4L2_STD_SECAM_D       |\
                                 V4L2_STD_SECAM_K       |\
                                 V4L2_STD_SECAM_K1)
 /* All Secam Standards */
@@ -1243,7 +1250,7 @@ struct v4l2_standard {
 };
 
 /*
- *     D V     B T     T I M I N G S
+ *     D V     B T     T I M I N G S
  */
 
 /** struct v4l2_bt_timings - BT.656/BT.1120 timing data
@@ -1582,7 +1589,7 @@ struct v4l2_ext_controls {
        struct v4l2_ext_control *controls;
 };
 
-#define V4L2_CTRL_ID_MASK                (0x0fffffff)
+#define V4L2_CTRL_ID_MASK        (0x0fffffff)
 #define V4L2_CTRL_ID2CLASS(id)    ((id) & 0x0fff0000UL)
 #define V4L2_CTRL_ID2WHICH(id)    ((id) & 0x0fff0000UL)
 #define V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000)
@@ -1652,11 +1659,11 @@ struct v4l2_querymenu {
 /*  Control flags  */
 #define V4L2_CTRL_FLAG_DISABLED                0x0001
 #define V4L2_CTRL_FLAG_GRABBED         0x0002
-#define V4L2_CTRL_FLAG_READ_ONLY       0x0004
-#define V4L2_CTRL_FLAG_UPDATE          0x0008
-#define V4L2_CTRL_FLAG_INACTIVE        0x0010
-#define V4L2_CTRL_FLAG_SLIDER          0x0020
-#define V4L2_CTRL_FLAG_WRITE_ONLY      0x0040
+#define V4L2_CTRL_FLAG_READ_ONLY       0x0004
+#define V4L2_CTRL_FLAG_UPDATE          0x0008
+#define V4L2_CTRL_FLAG_INACTIVE                0x0010
+#define V4L2_CTRL_FLAG_SLIDER          0x0020
+#define V4L2_CTRL_FLAG_WRITE_ONLY      0x0040
 #define V4L2_CTRL_FLAG_VOLATILE                0x0080
 #define V4L2_CTRL_FLAG_HAS_PAYLOAD     0x0100
 #define V4L2_CTRL_FLAG_EXECUTE_ON_WRITE        0x0200
@@ -1770,21 +1777,21 @@ struct v4l2_hw_freq_seek {
  */
 
 struct v4l2_rds_data {
-       __u8    lsb;
-       __u8    msb;
-       __u8    block;
+       __u8    lsb;
+       __u8    msb;
+       __u8    block;
 } __attribute__ ((packed));
 
-#define V4L2_RDS_BLOCK_MSK      0x7
-#define V4L2_RDS_BLOCK_A        0
-#define V4L2_RDS_BLOCK_B        1
-#define V4L2_RDS_BLOCK_C        2
-#define V4L2_RDS_BLOCK_D        3
-#define V4L2_RDS_BLOCK_C_ALT    4
-#define V4L2_RDS_BLOCK_INVALID          7
+#define V4L2_RDS_BLOCK_MSK      0x7
+#define V4L2_RDS_BLOCK_A        0
+#define V4L2_RDS_BLOCK_B        1
+#define V4L2_RDS_BLOCK_C        2
+#define V4L2_RDS_BLOCK_D        3
+#define V4L2_RDS_BLOCK_C_ALT    4
+#define V4L2_RDS_BLOCK_INVALID  7
 
 #define V4L2_RDS_BLOCK_CORRECTED 0x40
-#define V4L2_RDS_BLOCK_ERROR    0x80
+#define V4L2_RDS_BLOCK_ERROR    0x80
 
 /*
  *     A U D I O
@@ -2340,8 +2347,8 @@ struct v4l2_create_buffers {
 #define VIDIOC_S_CROP           _IOW('V', 60, struct v4l2_crop)
 #define VIDIOC_G_JPEGCOMP       _IOR('V', 61, struct v4l2_jpegcompression)
 #define VIDIOC_S_JPEGCOMP       _IOW('V', 62, struct v4l2_jpegcompression)
-#define VIDIOC_QUERYSTD         _IOR('V', 63, v4l2_std_id)
-#define VIDIOC_TRY_FMT         _IOWR('V', 64, struct v4l2_format)
+#define VIDIOC_QUERYSTD                 _IOR('V', 63, v4l2_std_id)
+#define VIDIOC_TRY_FMT         _IOWR('V', 64, struct v4l2_format)
 #define VIDIOC_ENUMAUDIO       _IOWR('V', 65, struct v4l2_audio)
 #define VIDIOC_ENUMAUDOUT      _IOWR('V', 66, struct v4l2_audioout)
 #define VIDIOC_G_PRIORITY       _IOR('V', 67, __u32) /* enum v4l2_priority */
@@ -2362,8 +2369,8 @@ struct v4l2_create_buffers {
  * Only implemented if CONFIG_VIDEO_ADV_DEBUG is defined.
  * You must be root to use these ioctls. Never use these in applications!
  */
-#define        VIDIOC_DBG_S_REGISTER    _IOW('V', 79, struct v4l2_dbg_register)
-#define        VIDIOC_DBG_G_REGISTER   _IOWR('V', 80, struct v4l2_dbg_register)
+#define        VIDIOC_DBG_S_REGISTER    _IOW('V', 79, struct v4l2_dbg_register)
+#define        VIDIOC_DBG_G_REGISTER   _IOWR('V', 80, struct v4l2_dbg_register)
 
 #define VIDIOC_S_HW_FREQ_SEEK   _IOW('V', 82, struct v4l2_hw_freq_seek)
 #define        VIDIOC_S_DV_TIMINGS     _IOWR('V', 87, struct v4l2_dv_timings)
diff --git a/lib/include/libdvbv5/dvb-fe.h b/lib/include/libdvbv5/dvb-fe.h
index 1d3565ec732a..96657013e261 100644
--- a/lib/include/libdvbv5/dvb-fe.h
+++ b/lib/include/libdvbv5/dvb-fe.h
@@ -750,7 +750,7 @@ int dvb_fe_set_default_country(struct dvb_v5_fe_parms 
*parms,
 #ifndef _DOXYGEN
 
 extern const unsigned fe_bandwidth_name[8];
-extern const char *dvb_v5_name[71];
+extern const char *dvb_v5_name[72];
 extern const void *dvb_v5_attr_names[];
 extern const char *delivery_system_name[20];
 extern const char *fe_code_rate_name[14];
diff --git a/lib/include/libdvbv5/dvb-frontend.h 
b/lib/include/libdvbv5/dvb-frontend.h
index a1cd88c5e38b..5f00fc1ff126 100644
--- a/lib/include/libdvbv5/dvb-frontend.h
+++ b/lib/include/libdvbv5/dvb-frontend.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: LGPL-2.1+ WITH Linux-syscall-note */
 /*
  * frontend.h
  *
@@ -28,15 +29,47 @@
 
 #include <linux/types.h>
 
-typedef enum fe_type {
-       FE_QPSK,
-       FE_QAM,
-       FE_OFDM,
-       FE_ATSC
-} fe_type_t;
-
-
-typedef enum fe_caps {
+/**
+ * enum fe_caps - Frontend capabilities
+ *
+ * @FE_IS_STUPID:                      There's something wrong at the
+ *                                     frontend, and it can't report its
+ *                                     capabilities.
+ * @FE_CAN_INVERSION_AUTO:             Can auto-detect frequency spectral
+ *                                     band inversion
+ * @FE_CAN_FEC_1_2:                    Supports FEC 1/2
+ * @FE_CAN_FEC_2_3:                    Supports FEC 2/3
+ * @FE_CAN_FEC_3_4:                    Supports FEC 3/4
+ * @FE_CAN_FEC_4_5:                    Supports FEC 4/5
+ * @FE_CAN_FEC_5_6:                    Supports FEC 5/6
+ * @FE_CAN_FEC_6_7:                    Supports FEC 6/7
+ * @FE_CAN_FEC_7_8:                    Supports FEC 7/8
+ * @FE_CAN_FEC_8_9:                    Supports FEC 8/9
+ * @FE_CAN_FEC_AUTO:                   Can auto-detect FEC
+ * @FE_CAN_QPSK:                       Supports QPSK modulation
+ * @FE_CAN_QAM_16:                     Supports 16-QAM modulation
+ * @FE_CAN_QAM_32:                     Supports 32-QAM modulation
+ * @FE_CAN_QAM_64:                     Supports 64-QAM modulation
+ * @FE_CAN_QAM_128:                    Supports 128-QAM modulation
+ * @FE_CAN_QAM_256:                    Supports 256-QAM modulation
+ * @FE_CAN_QAM_AUTO:                   Can auto-detect QAM modulation
+ * @FE_CAN_TRANSMISSION_MODE_AUTO:     Can auto-detect transmission mode
+ * @FE_CAN_BANDWIDTH_AUTO:             Can auto-detect bandwidth
+ * @FE_CAN_GUARD_INTERVAL_AUTO:                Can auto-detect guard interval
+ * @FE_CAN_HIERARCHY_AUTO:             Can auto-detect hierarchy
+ * @FE_CAN_8VSB:                       Supports 8-VSB modulation
+ * @FE_CAN_16VSB:                      Supporta 16-VSB modulation
+ * @FE_HAS_EXTENDED_CAPS:              Unused
+ * @FE_CAN_MULTISTREAM:                        Supports multistream filtering
+ * @FE_CAN_TURBO_FEC:                  Supports "turbo FEC" modulation
+ * @FE_CAN_2G_MODULATION:              Supports "2nd generation" modulation,
+ *                                     e. g. DVB-S2, DVB-T2, DVB-C2
+ * @FE_NEEDS_BENDING:                  Unused
+ * @FE_CAN_RECOVER:                    Can recover from a cable unplug
+ *                                     automatically
+ * @FE_CAN_MUTE_TS:                    Can stop spurious TS data output
+ */
+enum fe_caps {
        FE_IS_STUPID                    = 0,
        FE_CAN_INVERSION_AUTO           = 0x1,
        FE_CAN_FEC_1_2                  = 0x2,
@@ -61,80 +94,162 @@ typedef enum fe_caps {
        FE_CAN_HIERARCHY_AUTO           = 0x100000,
        FE_CAN_8VSB                     = 0x200000,
        FE_CAN_16VSB                    = 0x400000,
-       FE_HAS_EXTENDED_CAPS            = 0x800000,   /* We need more bitspace 
for newer APIs, indicate this. */
-       FE_CAN_MULTISTREAM              = 0x4000000,  /* frontend supports 
multistream filtering */
-       FE_CAN_TURBO_FEC                = 0x8000000,  /* frontend supports 
"turbo fec modulation" */
-       FE_CAN_2G_MODULATION            = 0x10000000, /* frontend supports "2nd 
generation modulation" (DVB-S2) */
-       FE_NEEDS_BENDING                = 0x20000000, /* not supported anymore, 
don't use (frontend requires frequency bending) */
-       FE_CAN_RECOVER                  = 0x40000000, /* frontend can recover 
from a cable unplug automatically */
-       FE_CAN_MUTE_TS                  = 0x80000000  /* frontend can stop 
spurious TS data output */
-} fe_caps_t;
+       FE_HAS_EXTENDED_CAPS            = 0x800000,
+       FE_CAN_MULTISTREAM              = 0x4000000,
+       FE_CAN_TURBO_FEC                = 0x8000000,
+       FE_CAN_2G_MODULATION            = 0x10000000,
+       FE_NEEDS_BENDING                = 0x20000000,
+       FE_CAN_RECOVER                  = 0x40000000,
+       FE_CAN_MUTE_TS                  = 0x80000000
+};
 
+/*
+ * DEPRECATED: Should be kept just due to backward compatibility.
+ */
+enum fe_type {
+       FE_QPSK,
+       FE_QAM,
+       FE_OFDM,
+       FE_ATSC
+};
 
+/**
+ * struct dvb_frontend_info - Frontend properties and capabilities
+ *
+ * @name:                      Name of the frontend
+ * @type:                      **DEPRECATED**.
+ *                             Should not be used on modern programs,
+ *                             as a frontend may have more than one type.
+ *                             In order to get the support types of a given
+ *                             frontend, use :c:type:`DTV_ENUM_DELSYS`
+ *                             instead.
+ * @frequency_min:             Minimal frequency supported by the frontend.
+ * @frequency_max:             Minimal frequency supported by the frontend.
+ * @frequency_stepsize:                All frequencies are multiple of this 
value.
+ * @frequency_tolerance:       Frequency tolerance.
+ * @symbol_rate_min:           Minimal symbol rate, in bauds
+ *                             (for Cable/Satellite systems).
+ * @symbol_rate_max:           Maximal symbol rate, in bauds
+ *                             (for Cable/Satellite systems).
+ * @symbol_rate_tolerance:     Maximal symbol rate tolerance, in ppm
+ *                             (for Cable/Satellite systems).
+ * @notifier_delay:            **DEPRECATED**. Not used by any driver.
+ * @caps:                      Capabilities supported by the frontend,
+ *                             as specified in &enum fe_caps.
+ *
+ * .. note:
+ *
+ *    #. The frequencies are specified in Hz for Terrestrial and Cable
+ *       systems.
+ *    #. The frequencies are specified in kHz for Satellite systems.
+ */
 struct dvb_frontend_info {
        char       name[128];
-       fe_type_t  type;                        /* DEPRECATED. Use 
DTV_ENUM_DELSYS instead */
+       enum fe_type type;      /* DEPRECATED. Use DTV_ENUM_DELSYS instead */
        __u32      frequency_min;
        __u32      frequency_max;
        __u32      frequency_stepsize;
        __u32      frequency_tolerance;
        __u32      symbol_rate_min;
        __u32      symbol_rate_max;
-       __u32      symbol_rate_tolerance;       /* ppm */
+       __u32      symbol_rate_tolerance;
        __u32      notifier_delay;              /* DEPRECATED */
-       fe_caps_t  caps;
+       enum fe_caps caps;
 };
 
-
 /**
- *  Check out the DiSEqC bus spec available on http://www.eutelsat.org/ for
- *  the meaning of this struct...
+ * struct dvb_diseqc_master_cmd - DiSEqC master command
+ *
+ * @msg:
+ *     DiSEqC message to be sent. It contains a 3 bytes header with:
+ *     framing + address + command, and an optional argument
+ *     of up to 3 bytes of data.
+ * @msg_len:
+ *     Length of the DiSEqC message. Valid values are 3 to 6.
+ *
+ * Check out the DiSEqC bus spec available on http://www.eutelsat.org/ for
+ * the possible messages that can be used.
  */
 struct dvb_diseqc_master_cmd {
-       __u8 msg [6];   /*  { framing, address, command, data [3] } */
-       __u8 msg_len;   /*  valid values are 3...6  */
+       __u8 msg[6];
+       __u8 msg_len;
 };
 
-
+/**
+ * struct dvb_diseqc_slave_reply - DiSEqC received data
+ *
+ * @msg:
+ *     DiSEqC message buffer to store a message received via DiSEqC.
+ *     It contains one byte header with: framing and
+ *     an optional argument of up to 3 bytes of data.
+ * @msg_len:
+ *     Length of the DiSEqC message. Valid values are 0 to 4,
+ *     where 0 means no message.
+ * @timeout:
+ *     Return from ioctl after timeout ms with errorcode when
+ *     no message was received.
+ *
+ * Check out the DiSEqC bus spec available on http://www.eutelsat.org/ for
+ * the possible messages that can be used.
+ */
 struct dvb_diseqc_slave_reply {
-       __u8 msg [4];   /*  { framing, data [3] } */
-       __u8 msg_len;   /*  valid values are 0...4, 0 means no msg  */
-       int  timeout;   /*  return from ioctl after timeout ms with */
-};                     /*  errorcode when no message was received  */
-
+       __u8 msg[4];
+       __u8 msg_len;
+       int  timeout;
+};
 
-typedef enum fe_sec_voltage {
+/**
+ * enum fe_sec_voltage - DC Voltage used to feed the LNBf
+ *
+ * @SEC_VOLTAGE_13:    Output 13V to the LNBf
+ * @SEC_VOLTAGE_18:    Output 18V to the LNBf
+ * @SEC_VOLTAGE_OFF:   Don't feed the LNBf with a DC voltage
+ */
+enum fe_sec_voltage {
        SEC_VOLTAGE_13,
        SEC_VOLTAGE_18,
        SEC_VOLTAGE_OFF
-} fe_sec_voltage_t;
-
+};
 
-typedef enum fe_sec_tone_mode {
+/**
+ * enum fe_sec_tone_mode - Type of tone to be send to the LNBf.
+ * @SEC_TONE_ON:       Sends a 22kHz tone burst to the antenna.
+ * @SEC_TONE_OFF:      Don't send a 22kHz tone to the antenna (except
+ *                     if the ``FE_DISEQC_*`` ioctls are called).
+ */
+enum fe_sec_tone_mode {
        SEC_TONE_ON,
        SEC_TONE_OFF
-} fe_sec_tone_mode_t;
-
+};
 
-typedef enum fe_sec_mini_cmd {
+/**
+ * enum fe_sec_mini_cmd - Type of mini burst to be sent
+ *
+ * @SEC_MINI_A:                Sends a mini-DiSEqC 22kHz '0' Tone Burst to 
select
+ *                     satellite-A
+ * @SEC_MINI_B:                Sends a mini-DiSEqC 22kHz '1' Data Burst to 
select
+ *                     satellite-B
+ */
+enum fe_sec_mini_cmd {
        SEC_MINI_A,
        SEC_MINI_B
-} fe_sec_mini_cmd_t;
-
+};
 
 /**
- * enum fe_status - enumerates the possible frontend status
- * @FE_HAS_SIGNAL:     found something above the noise level
- * @FE_HAS_CARRIER:    found a DVB signal
- * @FE_HAS_VITERBI:    FEC is stable
- * @FE_HAS_SYNC:       found sync bytes
- * @FE_HAS_LOCK:       everything's working
- * @FE_TIMEDOUT:       no lock within the last ~2 seconds
- * @FE_REINIT:         frontend was reinitialized, application is recommended
- *                     to reset DiSEqC, tone and parameters
- */
-
-typedef enum fe_status {
+ * enum fe_status - Enumerates the possible frontend status.
+ * @FE_NONE:           The frontend doesn't have any kind of lock.
+ *                     That's the initial frontend status
+ * @FE_HAS_SIGNAL:     Has found something above the noise level.
+ * @FE_HAS_CARRIER:    Has found a signal.
+ * @FE_HAS_VITERBI:    FEC inner coding (Viterbi, LDPC or other inner code).
+ *                     is stable.
+ * @FE_HAS_SYNC:       Synchronization bytes was found.
+ * @FE_HAS_LOCK:       Digital TV were locked and everything is working.
+ * @FE_TIMEDOUT:       Fo lock within the last about 2 seconds.
+ * @FE_REINIT:         Frontend was reinitialized, application is recommended
+ *                     to reset DiSEqC, tone and parameters.
+ */
+enum fe_status {
        FE_NONE                 = 0x00,
        FE_HAS_SIGNAL           = 0x01,
        FE_HAS_CARRIER          = 0x02,
@@ -143,16 +258,48 @@ typedef enum fe_status {
        FE_HAS_LOCK             = 0x10,
        FE_TIMEDOUT             = 0x20,
        FE_REINIT               = 0x40,
-} fe_status_t;
+};
 
-typedef enum fe_spectral_inversion {
+/**
+ * enum fe_spectral_inversion - Type of inversion band
+ *
+ * @INVERSION_OFF:     Don't do spectral band inversion.
+ * @INVERSION_ON:      Do spectral band inversion.
+ * @INVERSION_AUTO:    Autodetect spectral band inversion.
+ *
+ * This parameter indicates if spectral inversion should be presumed or
+ * not. In the automatic setting (``INVERSION_AUTO``) the hardware will try
+ * to figure out the correct setting by itself. If the hardware doesn't
+ * support, the %dvb_frontend will try to lock at the carrier first with
+ * inversion off. If it fails, it will try to enable inversion.
+ */
+enum fe_spectral_inversion {
        INVERSION_OFF,
        INVERSION_ON,
        INVERSION_AUTO
-} fe_spectral_inversion_t;
-
+};
 
-typedef enum fe_code_rate {
+/**
+ * enum fe_code_rate - Type of Forward Error Correction (FEC)
+ *
+ *
+ * @FEC_NONE: No Forward Error Correction Code
+ * @FEC_1_2:  Forward Error Correction Code 1/2
+ * @FEC_2_3:  Forward Error Correction Code 2/3
+ * @FEC_3_4:  Forward Error Correction Code 3/4
+ * @FEC_4_5:  Forward Error Correction Code 4/5
+ * @FEC_5_6:  Forward Error Correction Code 5/6
+ * @FEC_6_7:  Forward Error Correction Code 6/7
+ * @FEC_7_8:  Forward Error Correction Code 7/8
+ * @FEC_8_9:  Forward Error Correction Code 8/9
+ * @FEC_AUTO: Autodetect Error Correction Code
+ * @FEC_3_5:  Forward Error Correction Code 3/5
+ * @FEC_9_10: Forward Error Correction Code 9/10
+ * @FEC_2_5:  Forward Error Correction Code 2/5
+ *
+ * Please note that not all FEC types are supported by a given standard.
+ */
+enum fe_code_rate {
        FEC_NONE = 0,
        FEC_1_2,
        FEC_2_3,
@@ -166,10 +313,29 @@ typedef enum fe_code_rate {
        FEC_3_5,
        FEC_9_10,
        FEC_2_5,
-} fe_code_rate_t;
-
+};
 
-typedef enum fe_modulation {
+/**
+ * enum fe_modulation - Type of modulation/constellation
+ * @QPSK:      QPSK modulation
+ * @QAM_16:    16-QAM modulation
+ * @QAM_32:    32-QAM modulation
+ * @QAM_64:    64-QAM modulation
+ * @QAM_128:   128-QAM modulation
+ * @QAM_256:   256-QAM modulation
+ * @QAM_AUTO:  Autodetect QAM modulation
+ * @VSB_8:     8-VSB modulation
+ * @VSB_16:    16-VSB modulation
+ * @PSK_8:     8-PSK modulation
+ * @APSK_16:   16-APSK modulation
+ * @APSK_32:   32-APSK modulation
+ * @DQPSK:     DQPSK modulation
+ * @QAM_4_NR:  4-QAM-NR modulation
+ *
+ * Please note that not all modulations are supported by a given standard.
+ *
+ */
+enum fe_modulation {
        QPSK,
        QAM_16,
        QAM_32,
@@ -184,9 +350,35 @@ typedef enum fe_modulation {
        APSK_32,
        DQPSK,
        QAM_4_NR,
-} fe_modulation_t;
+};
 
-typedef enum fe_transmit_mode {
+/**
+ * enum fe_transmit_mode - Transmission mode
+ *
+ * @TRANSMISSION_MODE_AUTO:
+ *     Autodetect transmission mode. The hardware will try to find the
+ *     correct FFT-size (if capable) to fill in the missing parameters.
+ * @TRANSMISSION_MODE_1K:
+ *     Transmission mode 1K
+ * @TRANSMISSION_MODE_2K:
+ *     Transmission mode 2K
+ * @TRANSMISSION_MODE_8K:
+ *     Transmission mode 8K
+ * @TRANSMISSION_MODE_4K:
+ *     Transmission mode 4K
+ * @TRANSMISSION_MODE_16K:
+ *     Transmission mode 16K
+ * @TRANSMISSION_MODE_32K:
+ *     Transmission mode 32K
+ * @TRANSMISSION_MODE_C1:
+ *     Single Carrier (C=1) transmission mode (DTMB only)
+ * @TRANSMISSION_MODE_C3780:
+ *     Multi Carrier (C=3780) transmission mode (DTMB only)
+ *
+ * Please note that not all transmission modes are supported by a given
+ * standard.
+ */
+enum fe_transmit_mode {
        TRANSMISSION_MODE_2K,
        TRANSMISSION_MODE_8K,
        TRANSMISSION_MODE_AUTO,
@@ -196,21 +388,26 @@ typedef enum fe_transmit_mode {
        TRANSMISSION_MODE_32K,
        TRANSMISSION_MODE_C1,
        TRANSMISSION_MODE_C3780,
-} fe_transmit_mode_t;
-
-#if defined(__DVB_CORE__) || !defined (__KERNEL__)
-typedef enum fe_bandwidth {
-       BANDWIDTH_8_MHZ,
-       BANDWIDTH_7_MHZ,
-       BANDWIDTH_6_MHZ,
-       BANDWIDTH_AUTO,
-       BANDWIDTH_5_MHZ,
-       BANDWIDTH_10_MHZ,
-       BANDWIDTH_1_712_MHZ,
-} fe_bandwidth_t;
-#endif
+};
 
-typedef enum fe_guard_interval {
+/**
+ * enum fe_guard_interval - Guard interval
+ *
+ * @GUARD_INTERVAL_AUTO:       Autodetect the guard interval
+ * @GUARD_INTERVAL_1_128:      Guard interval 1/128
+ * @GUARD_INTERVAL_1_32:       Guard interval 1/32
+ * @GUARD_INTERVAL_1_16:       Guard interval 1/16
+ * @GUARD_INTERVAL_1_8:                Guard interval 1/8
+ * @GUARD_INTERVAL_1_4:                Guard interval 1/4
+ * @GUARD_INTERVAL_19_128:     Guard interval 19/128
+ * @GUARD_INTERVAL_19_256:     Guard interval 19/256
+ * @GUARD_INTERVAL_PN420:      PN length 420 (1/4)
+ * @GUARD_INTERVAL_PN595:      PN length 595 (1/6)
+ * @GUARD_INTERVAL_PN945:      PN length 945 (1/9)
+ *
+ * Please note that not all guard intervals are supported by a given standard.
+ */
+enum fe_guard_interval {
        GUARD_INTERVAL_1_32,
        GUARD_INTERVAL_1_16,
        GUARD_INTERVAL_1_8,
@@ -222,17 +419,35 @@ typedef enum fe_guard_interval {
        GUARD_INTERVAL_PN420,
        GUARD_INTERVAL_PN595,
        GUARD_INTERVAL_PN945,
-} fe_guard_interval_t;
-
+};
 
-typedef enum fe_hierarchy {
+/**
+ * enum fe_hierarchy - Hierarchy
+ * @HIERARCHY_NONE:    No hierarchy
+ * @HIERARCHY_AUTO:    Autodetect hierarchy (if supported)
+ * @HIERARCHY_1:       Hierarchy 1
+ * @HIERARCHY_2:       Hierarchy 2
+ * @HIERARCHY_4:       Hierarchy 4
+ *
+ * Please note that not all hierarchy types are supported by a given standard.
+ */
+enum fe_hierarchy {
        HIERARCHY_NONE,
        HIERARCHY_1,
        HIERARCHY_2,
        HIERARCHY_4,
        HIERARCHY_AUTO
-} fe_hierarchy_t;
+};
 
+/**
+ * enum fe_interleaving - Interleaving
+ * @INTERLEAVING_NONE: No interleaving.
+ * @INTERLEAVING_AUTO: Auto-detect interleaving.
+ * @INTERLEAVING_240:  Interleaving of 240 symbols.
+ * @INTERLEAVING_720:  Interleaving of 720 symbols.
+ *
+ * Please note that, currently, only DTMB uses it.
+ */
 enum fe_interleaving {
        INTERLEAVING_NONE,
        INTERLEAVING_AUTO,
@@ -240,52 +455,8 @@ enum fe_interleaving {
        INTERLEAVING_720,
 };
 
-#if defined(__DVB_CORE__) || !defined (__KERNEL__)
-struct dvb_qpsk_parameters {
-       __u32           symbol_rate;  /* symbol rate in Symbols per second */
-       fe_code_rate_t  fec_inner;    /* forward error correction (see above) */
-};
-
-struct dvb_qam_parameters {
-       __u32           symbol_rate; /* symbol rate in Symbols per second */
-       fe_code_rate_t  fec_inner;   /* forward error correction (see above) */
-       fe_modulation_t modulation;  /* modulation type (see above) */
-};
-
-struct dvb_vsb_parameters {
-       fe_modulation_t modulation;  /* modulation type (see above) */
-};
-
-struct dvb_ofdm_parameters {
-       fe_bandwidth_t      bandwidth;
-       fe_code_rate_t      code_rate_HP;  /* high priority stream code rate */
-       fe_code_rate_t      code_rate_LP;  /* low priority stream code rate */
-       fe_modulation_t     constellation; /* modulation type (see above) */
-       fe_transmit_mode_t  transmission_mode;
-       fe_guard_interval_t guard_interval;
-       fe_hierarchy_t      hierarchy_information;
-};
-
-
-struct dvb_frontend_parameters {
-       __u32 frequency;     /* (absolute) frequency in Hz for QAM/OFDM/ATSC */
-                            /* intermediate frequency in kHz for QPSK */
-       fe_spectral_inversion_t inversion;
-       union {
-               struct dvb_qpsk_parameters qpsk;
-               struct dvb_qam_parameters  qam;
-               struct dvb_ofdm_parameters ofdm;
-               struct dvb_vsb_parameters vsb;
-       } u;
-};
-
-struct dvb_frontend_event {
-       fe_status_t status;
-       struct dvb_frontend_parameters parameters;
-};
-#endif
+/* DVBv5 property Commands */
 
-/* S2API Commands */
 #define DTV_UNDEFINED          0
 #define DTV_TUNE               1
 #define DTV_CLEAR              2
@@ -376,22 +547,85 @@ struct dvb_frontend_event {
 #define DTV_STAT_ERROR_BLOCK_COUNT     68
 #define DTV_STAT_TOTAL_BLOCK_COUNT     69
 
-#define DTV_MAX_COMMAND                DTV_STAT_TOTAL_BLOCK_COUNT
+/* Physical layer scrambling */
+#define DTV_SCRAMBLING_SEQUENCE_INDEX  70
 
-typedef enum fe_pilot {
+#define DTV_MAX_COMMAND                DTV_SCRAMBLING_SEQUENCE_INDEX
+
+/**
+ * enum fe_pilot - Type of pilot tone
+ *
+ * @PILOT_ON:  Pilot tones enabled
+ * @PILOT_OFF: Pilot tones disabled
+ * @PILOT_AUTO:        Autodetect pilot tones
+ */
+enum fe_pilot {
        PILOT_ON,
        PILOT_OFF,
        PILOT_AUTO,
-} fe_pilot_t;
+};
 
-typedef enum fe_rolloff {
-       ROLLOFF_35, /* Implied value in DVB-S, default for DVB-S2 */
+/**
+ * enum fe_rolloff - Rolloff factor
+ * @ROLLOFF_35:                Roloff factor: α=35%
+ * @ROLLOFF_20:                Roloff factor: α=20%
+ * @ROLLOFF_25:                Roloff factor: α=25%
+ * @ROLLOFF_AUTO:      Auto-detect the roloff factor.
+ *
+ * .. note:
+ *
+ *    Roloff factor of 35% is implied on DVB-S. On DVB-S2, it is default.
+ */
+enum fe_rolloff {
+       ROLLOFF_35,
        ROLLOFF_20,
        ROLLOFF_25,
        ROLLOFF_AUTO,
-} fe_rolloff_t;
+};
 
-typedef enum fe_delivery_system {
+/**
+ * enum fe_delivery_system - Type of the delivery system
+ *
+ * @SYS_UNDEFINED:
+ *     Undefined standard. Generally, indicates an error
+ * @SYS_DVBC_ANNEX_A:
+ *     Cable TV: DVB-C following ITU-T J.83 Annex A spec
+ * @SYS_DVBC_ANNEX_B:
+ *     Cable TV: DVB-C following ITU-T J.83 Annex B spec (ClearQAM)
+ * @SYS_DVBC_ANNEX_C:
+ *     Cable TV: DVB-C following ITU-T J.83 Annex C spec
+ * @SYS_ISDBC:
+ *     Cable TV: ISDB-C (no drivers yet)
+ * @SYS_DVBT:
+ *     Terrestrial TV: DVB-T
+ * @SYS_DVBT2:
+ *     Terrestrial TV: DVB-T2
+ * @SYS_ISDBT:
+ *     Terrestrial TV: ISDB-T
+ * @SYS_ATSC:
+ *     Terrestrial TV: ATSC
+ * @SYS_ATSCMH:
+ *     Terrestrial TV (mobile): ATSC-M/H
+ * @SYS_DTMB:
+ *     Terrestrial TV: DTMB
+ * @SYS_DVBS:
+ *     Satellite TV: DVB-S
+ * @SYS_DVBS2:
+ *     Satellite TV: DVB-S2
+ * @SYS_TURBO:
+ *     Satellite TV: DVB-S Turbo
+ * @SYS_ISDBS:
+ *     Satellite TV: ISDB-S
+ * @SYS_DAB:
+ *     Digital audio: DAB (not fully supported)
+ * @SYS_DSS:
+ *     Satellite TV: DSS (not fully supported)
+ * @SYS_CMMB:
+ *     Terrestrial TV (mobile): CMMB (not fully supported)
+ * @SYS_DVBH:
+ *     Terrestrial TV (mobile): DVB-H (standard deprecated)
+ */
+enum fe_delivery_system {
        SYS_UNDEFINED,
        SYS_DVBC_ANNEX_A,
        SYS_DVBC_ANNEX_B,
@@ -411,37 +645,87 @@ typedef enum fe_delivery_system {
        SYS_DVBT2,
        SYS_TURBO,
        SYS_DVBC_ANNEX_C,
-} fe_delivery_system_t;
+};
 
-/* backward compatibility */
+/* backward compatibility definitions for delivery systems */
 #define SYS_DVBC_ANNEX_AC      SYS_DVBC_ANNEX_A
-#define SYS_DMBTH SYS_DTMB /* DMB-TH is legacy name, use DTMB instead */
+#define SYS_DMBTH              SYS_DTMB /* DMB-TH is legacy name, use DTMB */
 
-/* ATSC-MH */
+/* ATSC-MH specific parameters */
 
+/**
+ * enum atscmh_sccc_block_mode - Type of Series Concatenated Convolutional
+ *                              Code Block Mode.
+ *
+ * @ATSCMH_SCCC_BLK_SEP:
+ *     Separate SCCC: the SCCC outer code mode shall be set independently
+ *     for each Group Region (A, B, C, D)
+ * @ATSCMH_SCCC_BLK_COMB:
+ *     Combined SCCC: all four Regions shall have the same SCCC outer
+ *     code mode.
+ * @ATSCMH_SCCC_BLK_RES:
+ *     Reserved. Shouldn't be used.
+ */
 enum atscmh_sccc_block_mode {
        ATSCMH_SCCC_BLK_SEP      = 0,
        ATSCMH_SCCC_BLK_COMB     = 1,
        ATSCMH_SCCC_BLK_RES      = 2,
 };
 
+/**
+ * enum atscmh_sccc_code_mode - Type of Series Concatenated Convolutional
+ *                             Code Rate.
+ *
+ * @ATSCMH_SCCC_CODE_HLF:
+ *     The outer code rate of a SCCC Block is 1/2 rate.
+ * @ATSCMH_SCCC_CODE_QTR:
+ *     The outer code rate of a SCCC Block is 1/4 rate.
+ * @ATSCMH_SCCC_CODE_RES:
+ *     Reserved. Should not be used.
+ */
 enum atscmh_sccc_code_mode {
        ATSCMH_SCCC_CODE_HLF     = 0,
        ATSCMH_SCCC_CODE_QTR     = 1,
        ATSCMH_SCCC_CODE_RES     = 2,
 };
 
+/**
+ * enum atscmh_rs_frame_ensemble - Reed Solomon(RS) frame ensemble.
+ *
+ * @ATSCMH_RSFRAME_ENS_PRI:    Primary Ensemble.
+ * @ATSCMH_RSFRAME_ENS_SEC:    Secondary Ensemble.
+ */
 enum atscmh_rs_frame_ensemble {
        ATSCMH_RSFRAME_ENS_PRI   = 0,
        ATSCMH_RSFRAME_ENS_SEC   = 1,
 };
 
+/**
+ * enum atscmh_rs_frame_mode - Reed Solomon (RS) frame mode.
+ *
+ * @ATSCMH_RSFRAME_PRI_ONLY:
+ *     Single Frame: There is only a primary RS Frame for all Group
+ *     Regions.
+ * @ATSCMH_RSFRAME_PRI_SEC:
+ *     Dual Frame: There are two separate RS Frames: Primary RS Frame for
+ *     Group Region A and B and Secondary RS Frame for Group Region C and
+ *     D.
+ * @ATSCMH_RSFRAME_RES:
+ *     Reserved. Shouldn't be used.
+ */
 enum atscmh_rs_frame_mode {
        ATSCMH_RSFRAME_PRI_ONLY  = 0,
        ATSCMH_RSFRAME_PRI_SEC   = 1,
        ATSCMH_RSFRAME_RES       = 2,
 };
 
+/**
+ * enum atscmh_rs_code_mode
+ * @ATSCMH_RSCODE_211_187:     Reed Solomon code (211,187).
+ * @ATSCMH_RSCODE_223_187:     Reed Solomon code (223,187).
+ * @ATSCMH_RSCODE_235_187:     Reed Solomon code (235,187).
+ * @ATSCMH_RSCODE_RES:         Reserved. Shouldn't be used.
+ */
 enum atscmh_rs_code_mode {
        ATSCMH_RSCODE_211_187    = 0,
        ATSCMH_RSCODE_223_187    = 1,
@@ -452,28 +736,18 @@ enum atscmh_rs_code_mode {
 #define NO_STREAM_ID_FILTER    (~0U)
 #define LNA_AUTO                (~0U)
 
-struct dtv_cmds_h {
-       char    *name;          /* A display name for debugging purposes */
-
-       __u32   cmd;            /* A unique ID */
-
-       /* Flags */
-       __u32   set:1;          /* Either a set or get property */
-       __u32   buffer:1;       /* Does this property use the buffer? */
-       __u32   reserved:30;    /* Align */
-};
-
 /**
- * Scale types for the quality parameters.
+ * enum fecap_scale_params - scale types for the quality parameters.
+ *
  * @FE_SCALE_NOT_AVAILABLE: That QoS measure is not available. That
  *                         could indicate a temporary or a permanent
  *                         condition.
- * @FE_SCALE_DECIBEL: The scale is measured in 0.0001 dB steps, typically
- *               used on signal measures.
+ * @FE_SCALE_DECIBEL: The scale is measured in 0.001 dB steps, typically
+ *                   used on signal measures.
  * @FE_SCALE_RELATIVE: The scale is a relative percentual measure,
- *                     ranging from 0 (0%) to 0xffff (100%).
+ *                    ranging from 0 (0%) to 0xffff (100%).
  * @FE_SCALE_COUNTER: The scale counts the occurrence of an event, like
- *                     bit error, block error, lapsed time.
+ *                   bit error, block error, lapsed time.
  */
 enum fecap_scale_params {
        FE_SCALE_NOT_AVAILABLE = 0,
@@ -485,50 +759,91 @@ enum fecap_scale_params {
 /**
  * struct dtv_stats - Used for reading a DTV status property
  *
- * @value:     value of the measure. Should range from 0 to 0xffff;
- * @scale:     Filled with enum fecap_scale_params - the scale
- *             in usage for that parameter
+ * @scale:
+ *     Filled with enum fecap_scale_params - the scale in usage
+ *     for that parameter
+ *
+ * @svalue:
+ *     integer value of the measure, for %FE_SCALE_DECIBEL,
+ *     used for dB measures. The unit is 0.001 dB.
+ *
+ * @uvalue:
+ *     unsigned integer value of the measure, used when @scale is
+ *     either %FE_SCALE_RELATIVE or %FE_SCALE_COUNTER.
  *
  * For most delivery systems, this will return a single value for each
  * parameter.
+ *
  * It should be noticed, however, that new OFDM delivery systems like
  * ISDB can use different modulation types for each group of carriers.
  * On such standards, up to 8 groups of statistics can be provided, one
  * for each carrier group (called "layer" on ISDB).
+ *
  * In order to be consistent with other delivery systems, the first
  * value refers to the entire set of carriers ("global").
- * dtv_status:scale should use the value FE_SCALE_NOT_AVAILABLE when
+ *
+ * @scale should use the value %FE_SCALE_NOT_AVAILABLE when
  * the value for the entire group of carriers or from one specific layer
  * is not provided by the hardware.
- * st.len should be filled with the latest filled status + 1.
  *
- * In other words, for ISDB, those values should be filled like:
+ * @len should be filled with the latest filled status + 1.
+ *
+ * In other words, for ISDB, those values should be filled like::
+ *
  *     u.st.stat.svalue[0] = global statistics;
- *     u.st.stat.scale[0] = FE_SCALE_DECIBELS;
+ *     u.st.stat.scale[0] = FE_SCALE_DECIBEL;
  *     u.st.stat.value[1] = layer A statistics;
  *     u.st.stat.scale[1] = FE_SCALE_NOT_AVAILABLE (if not available);
  *     u.st.stat.svalue[2] = layer B statistics;
- *     u.st.stat.scale[2] = FE_SCALE_DECIBELS;
+ *     u.st.stat.scale[2] = FE_SCALE_DECIBEL;
  *     u.st.stat.svalue[3] = layer C statistics;
- *     u.st.stat.scale[3] = FE_SCALE_DECIBELS;
+ *     u.st.stat.scale[3] = FE_SCALE_DECIBEL;
  *     u.st.len = 4;
  */
 struct dtv_stats {
        __u8 scale;     /* enum fecap_scale_params type */
        union {
                __u64 uvalue;   /* for counters and relative scales */
-               __s64 svalue;   /* for 0.0001 dB measures */
+               __s64 svalue;   /* for 0.001 dB measures */
        };
 } __attribute__ ((packed));
 
 
 #define MAX_DTV_STATS   4
 
+/**
+ * struct dtv_fe_stats - store Digital TV frontend statistics
+ *
+ * @len:       length of the statistics - if zero, stats is disabled.
+ * @stat:      array with digital TV statistics.
+ *
+ * On most standards, @len can either be 0 or 1. However, for ISDB, each
+ * layer is modulated in separate. So, each layer may have its own set
+ * of statistics. If so, stat[0] carries on a global value for the property.
+ * Indexes 1 to 3 means layer A to B.
+ */
 struct dtv_fe_stats {
        __u8 len;
        struct dtv_stats stat[MAX_DTV_STATS];
 } __attribute__ ((packed));
 
+/**
+ * struct dtv_property - store one of frontend command and its value
+ *
+ * @cmd:               Digital TV command.
+ * @reserved:          Not used.
+ * @u:                 Union with the values for the command.
+ * @u.data:            A unsigned 32 bits integer with command value.
+ * @u.buffer:          Struct to store bigger properties.
+ *                     Currently unused.
+ * @u.buffer.data:     an unsigned 32-bits array.
+ * @u.buffer.len:      number of elements of the buffer.
+ * @u.buffer.reserved1:        Reserved.
+ * @u.buffer.reserved2:        Reserved.
+ * @u.st:              a &struct dtv_fe_stats array of statistics.
+ * @result:            Currently unused.
+ *
+ */
 struct dtv_property {
        __u32 cmd;
        __u32 reserved[3];
@@ -548,24 +863,27 @@ struct dtv_property {
 /* num of properties cannot exceed DTV_IOCTL_MAX_MSGS per ioctl */
 #define DTV_IOCTL_MAX_MSGS 64
 
+/**
+ * struct dtv_properties - a set of command/value pairs.
+ *
+ * @num:       amount of commands stored at the struct.
+ * @props:     a pointer to &struct dtv_property.
+ */
 struct dtv_properties {
        __u32 num;
        struct dtv_property *props;
 };
 
-#define FE_SET_PROPERTY                   _IOW('o', 82, struct dtv_properties)
-#define FE_GET_PROPERTY                   _IOR('o', 83, struct dtv_properties)
-
-
-/**
+/*
  * When set, this flag will disable any zigzagging or other "normal" tuning
- * behaviour. Additionally, there will be no automatic monitoring of the lock
+ * behavior. Additionally, there will be no automatic monitoring of the lock
  * status, and hence no frontend events will be generated. If a frontend device
  * is closed, this flag will be automatically turned off when the device is
  * reopened read-write.
  */
 #define FE_TUNE_MODE_ONESHOT 0x01
 
+/* Digital TV Frontend API calls */
 
 #define FE_GET_INFO               _IOR('o', 61, struct dvb_frontend_info)
 
@@ -584,11 +902,108 @@ struct dtv_properties {
 #define FE_READ_SNR               _IOR('o', 72, __u16)
 #define FE_READ_UNCORRECTED_BLOCKS _IOR('o', 73, __u32)
 
-#define FE_SET_FRONTEND                   _IOW('o', 76, struct 
dvb_frontend_parameters)
-#define FE_GET_FRONTEND                   _IOR('o', 77, struct 
dvb_frontend_parameters)
 #define FE_SET_FRONTEND_TUNE_MODE  _IO('o', 81) /* unsigned int */
 #define FE_GET_EVENT              _IOR('o', 78, struct dvb_frontend_event)
 
 #define FE_DISHNETWORK_SEND_LEGACY_CMD _IO('o', 80) /* unsigned int */
 
+#define FE_SET_PROPERTY                   _IOW('o', 82, struct dtv_properties)
+#define FE_GET_PROPERTY                   _IOR('o', 83, struct dtv_properties)
+
+
+/*
+ * DEPRECATED: Everything below is deprecated in favor of DVBv5 API
+ *
+ * The DVBv3 only ioctls, structs and enums should not be used on
+ * newer programs, as it doesn't support the second generation of
+ * digital TV standards, nor supports newer delivery systems.
+ * They also don't support modern frontends with usually support multiple
+ * delivery systems.
+ *
+ * Drivers shouldn't use them.
+ *
+ * New applications should use DVBv5 delivery system instead
+ */
+
+/*
+ */
+
+enum fe_bandwidth {
+       BANDWIDTH_8_MHZ,
+       BANDWIDTH_7_MHZ,
+       BANDWIDTH_6_MHZ,
+       BANDWIDTH_AUTO,
+       BANDWIDTH_5_MHZ,
+       BANDWIDTH_10_MHZ,
+       BANDWIDTH_1_712_MHZ,
+};
+
+/* This is kept for legacy userspace support */
+typedef enum fe_sec_voltage fe_sec_voltage_t;
+typedef enum fe_caps fe_caps_t;
+typedef enum fe_type fe_type_t;
+typedef enum fe_sec_tone_mode fe_sec_tone_mode_t;
+typedef enum fe_sec_mini_cmd fe_sec_mini_cmd_t;
+typedef enum fe_status fe_status_t;
+typedef enum fe_spectral_inversion fe_spectral_inversion_t;
+typedef enum fe_code_rate fe_code_rate_t;
+typedef enum fe_modulation fe_modulation_t;
+typedef enum fe_transmit_mode fe_transmit_mode_t;
+typedef enum fe_bandwidth fe_bandwidth_t;
+typedef enum fe_guard_interval fe_guard_interval_t;
+typedef enum fe_hierarchy fe_hierarchy_t;
+typedef enum fe_pilot fe_pilot_t;
+typedef enum fe_rolloff fe_rolloff_t;
+typedef enum fe_delivery_system fe_delivery_system_t;
+
+/* DVBv3 structs */
+
+struct dvb_qpsk_parameters {
+       __u32           symbol_rate;  /* symbol rate in Symbols per second */
+       fe_code_rate_t  fec_inner;    /* forward error correction (see above) */
+};
+
+struct dvb_qam_parameters {
+       __u32           symbol_rate; /* symbol rate in Symbols per second */
+       fe_code_rate_t  fec_inner;   /* forward error correction (see above) */
+       fe_modulation_t modulation;  /* modulation type (see above) */
+};
+
+struct dvb_vsb_parameters {
+       fe_modulation_t modulation;  /* modulation type (see above) */
+};
+
+struct dvb_ofdm_parameters {
+       fe_bandwidth_t      bandwidth;
+       fe_code_rate_t      code_rate_HP;  /* high priority stream code rate */
+       fe_code_rate_t      code_rate_LP;  /* low priority stream code rate */
+       fe_modulation_t     constellation; /* modulation type (see above) */
+       fe_transmit_mode_t  transmission_mode;
+       fe_guard_interval_t guard_interval;
+       fe_hierarchy_t      hierarchy_information;
+};
+
+struct dvb_frontend_parameters {
+       __u32 frequency;  /* (absolute) frequency in Hz for DVB-C/DVB-T/ATSC */
+                         /* intermediate frequency in kHz for DVB-S */
+       fe_spectral_inversion_t inversion;
+       union {
+               struct dvb_qpsk_parameters qpsk;        /* DVB-S */
+               struct dvb_qam_parameters  qam;         /* DVB-C */
+               struct dvb_ofdm_parameters ofdm;        /* DVB-T */
+               struct dvb_vsb_parameters vsb;          /* ATSC */
+       } u;
+};
+
+struct dvb_frontend_event {
+       fe_status_t status;
+       struct dvb_frontend_parameters parameters;
+};
+
+/* DVBv3 API calls */
+
+#define FE_SET_FRONTEND                   _IOW('o', 76, struct 
dvb_frontend_parameters)
+#define FE_GET_FRONTEND                   _IOR('o', 77, struct 
dvb_frontend_parameters)
+
+
 #endif /*_DVBFRONTEND_H_*/
diff --git a/lib/libdvbv5/dvb-v5.c b/lib/libdvbv5/dvb-v5.c
index b90ceacdfc28..37e921258e60 100644
--- a/lib/libdvbv5/dvb-v5.c
+++ b/lib/libdvbv5/dvb-v5.c
@@ -168,7 +168,7 @@ const char *fe_rolloff_name[5] = {
        [4] = NULL,
 };
 
-const char *dvb_v5_name[71] = {
+const char *dvb_v5_name[72] = {
        [DTV_API_VERSION] =                    "API_VERSION",
        [DTV_ATSCMH_FIC_VER] =                 "ATSCMH_FIC_VER",
        [DTV_ATSCMH_NOG] =                     "ATSCMH_NOG",
@@ -224,6 +224,7 @@ const char *dvb_v5_name[71] = {
        [DTV_MODULATION] =                     "MODULATION",
        [DTV_PILOT] =                          "PILOT",
        [DTV_ROLLOFF] =                        "ROLLOFF",
+       [DTV_SCRAMBLING_SEQUENCE_INDEX] =      "SCRAMBLING_SEQUENCE_INDEX",
        [DTV_STAT_CNR] =                       "STAT_CNR",
        [DTV_STAT_ERROR_BLOCK_COUNT] =         "STAT_ERROR_BLOCK_COUNT",
        [DTV_STAT_POST_ERROR_BIT_COUNT] =      "STAT_POST_ERROR_BIT_COUNT",
@@ -239,7 +240,7 @@ const char *dvb_v5_name[71] = {
        [DTV_TUNE] =                           "TUNE",
        [DTV_UNDEFINED] =                      "UNDEFINED",
        [DTV_VOLTAGE] =                        "VOLTAGE",
-       [70] = NULL,
+       [71] = NULL,
 };
 
 const char *delivery_system_name[20] = {
diff --git a/lib/libdvbv5/dvb-v5.h b/lib/libdvbv5/dvb-v5.h
index 1865952e9461..45aaddda4f30 100644
--- a/lib/libdvbv5/dvb-v5.h
+++ b/lib/libdvbv5/dvb-v5.h
@@ -25,6 +25,6 @@ const char *fe_tone_name[3];
 const char *fe_inversion_name[4];
 const char *fe_pilot_name[4];
 const char *fe_rolloff_name[5];
-const char *dvb_v5_name[71];
+const char *dvb_v5_name[72];
 const char *delivery_system_name[20];
 #endif

_______________________________________________
linuxtv-commits mailing list
linuxtv-commits@linuxtv.org
https://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to