History

Merge tag 'media/v4.14-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media

Pull media updates from Mauro Carvalho Chehab: "Brazil's Independence Day pull request :-) This is one of the biggest media pull requests, with 625 patches affecting almost all parts of media (RC, DVB, V4L2, CEC, docs). This contains: - A lot of new drivers: * DVB frontends: mxl5xx, stv0910, stv6111; * camera flash: as3645a led driver; * HDMI receiver: adv748X; * camera sensor: Omnivision 6650 5M driver (ov6650); * HDMI CEC: ao-cec meson driver; * V4L2: Qualcom camss driver; * Remote controller: gpio-ir-tx, pwm-ir-tx and zx-irdec drivers. - The DDbridge DVB driver got a massive update, with makes it in sync with modern hardware from that vendor; - There's an important milestone on this series: the DVB documentation was written in 2003, but only started to be updated in 2007. It also used to contain several gaps from the time it was kept out of tree, mentioning error codes and device nodes that never existed upstream. On this series, it received a massive update: all non-deprecated digital TV APIs are now in sync with the current implementation; - Some DVB APIs that aren't used by any upstream driver got removed; - Other parts of the media documentation algo got updated, fixing some bugs on its PDF output and making it compatible with Sphinx version 1.6. As the number of hacks required to build PDF output reduced, I hope we'll have less troubles as newer versions of our documentation toolchain are released (famous last words); - As usual, lots of driver cleanups and improvements" * tag 'media/v4.14-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (624 commits) media: leds: as3645a: add V4L2_FLASH_LED_CLASS dependency media: get rid of removed DMX_GET_CAPS and DMX_SET_SOURCE leftovers media: Revert "[media] v4l: async: make v4l2 coexist with devicetree nodes in a dt overlay" media: staging: atomisp: sh_css_calloc shall return a pointer to the allocated space media: Revert "[media] lirc_dev: remove superfluous get/put_device() calls" media: add qcom_camss.rst to v4l-drivers rst file media: dvb headers: make checkpatch happier media: dvb uapi: move frontend legacy API to another part of the book media: pixfmt-srggb12p.rst: better format the table for PDF output media: docs-rst: media: Don't use \small for V4L2_PIX_FMT_SRGGB10 documentation media: index.rst: don't write "Contents:" on PDF output media: pixfmt*.rst: replace a two dots by a comma media: vidioc-g-fmt.rst: adjust table format media: vivid.rst: add a blank line to correct ReST format media: v4l2 uapi book: get rid of driver programming's chapter media: format.rst: use the right markup for important notes media: docs-rst: cardlists: change their format to flat-tables media: em28xx-cardlist.rst: update to reflect last changes media: v4l2-event.rst: adjust table to fit on PDF output media: docs: don't show ToC for each part on PDF output ...

Linus Torvalds committed 9 years ago

Commit c0da4fa2 parents d969443 1efdf17888 files · +44749 −10692Browse files

Showing the changes to include/uapi/linux (8 of 888 files). Show all

Unified · Split

8 files
  1. include/uapi/linux/cec-funcs.h +1 −0
  2. include/uapi/linux/cec.h +7 −1
  3. include/uapi/linux/dvb/ca.h +106 −42
  4. include/uapi/linux/dvb/dmx.h +136 −58
  5. include/uapi/linux/dvb/frontend.h +502 −96
  6. include/uapi/linux/dvb/net.h +15 −0
  7. include/uapi/linux/media.h +3 −2
  8. include/uapi/linux/videodev2.h +5 −0
include/uapi/linux/cec-funcs.h+1−0
@@ -895,6 +895,7 @@ static inline void cec_ops_report_features(const struct cec_msg *msg, · 894 unmodified lines
895895 *cec_version = msg->msg[2];
896896 *all_device_types = msg->msg[3];
897897 *rc_profile = p;
898+ *dev_features = NULL;
898899 while (p < &msg->msg[14] && (*p & CEC_OP_FEAT_EXT))
899900 p++;
900901 if (!(*p & CEC_OP_FEAT_EXT)) {
include/uapi/linux/cec.h+7−1
@@ -318,6 +318,7 @@ static inline int cec_is_unconfigured(__u16 log_addr_mask) · 317 unmodified lines
318318 #define CEC_MODE_FOLLOWER (0x1 << 4)
319319 #define CEC_MODE_EXCL_FOLLOWER (0x2 << 4)
320320 #define CEC_MODE_EXCL_FOLLOWER_PASSTHRU (0x3 << 4)
321+#define CEC_MODE_MONITOR_PIN (0xd << 4)
321322 #define CEC_MODE_MONITOR (0xe << 4)
322323 #define CEC_MODE_MONITOR_ALL (0xf << 4)
323324 #define CEC_MODE_FOLLOWER_MSK 0xf0
@@ -338,6 +339,8 @@ static inline int cec_is_unconfigured(__u16 log_addr_mask) · 14 unmodified lines
338339 #define CEC_CAP_MONITOR_ALL (1 << 5)
339340 /* Hardware can use CEC only if the HDMI HPD pin is high. */
340341 #define CEC_CAP_NEEDS_HPD (1 << 6)
342+/* Hardware can monitor CEC pin transitions */
343+#define CEC_CAP_MONITOR_PIN (1 << 7)
341344
342345 /**
343346 * struct cec_caps - CEC capabilities structure.
@@ -405,8 +408,11 @@ struct cec_log_addrs { · 61 unmodified lines
405408 * didn't empty the message queue in time
406409 */
407410 #define CEC_EVENT_LOST_MSGS 2
411+#define CEC_EVENT_PIN_CEC_LOW 3
412+#define CEC_EVENT_PIN_CEC_HIGH 4
408413
409414 #define CEC_EVENT_FL_INITIAL_STATE (1 << 0)
415+#define CEC_EVENT_FL_DROPPED_EVENTS (1 << 1)
410416
411417 /**
412418 * struct cec_event_state_change - used when the CEC adapter changes state.
@@ -419,7 +425,7 @@ struct cec_event_state_change { · 6 unmodified lines
419425 };
420426
421427 /**
422− * struct cec_event_lost_msgs - tells you how many messages were lost due.
428+ * struct cec_event_lost_msgs - tells you how many messages were lost.
423429 * @lost_msgs: how many messages were lost.
424430 */
425431 struct cec_event_lost_msgs {
include/uapi/linux/dvb/ca.h+106−42
@@ -24,67 +24,131 @@ · 23 unmodified lines
2424 #ifndef _DVBCA_H_
2525 #define _DVBCA_H_
2626
27−/* slot interface types and info */
28−
29−typedef struct ca_slot_info {
30− int num; /* slot number */
27+/**
28+ * struct ca_slot_info - CA slot interface types and info.
29+ *
30+ * @num: slot number.
31+ * @type: slot type.
32+ * @flags: flags applicable to the slot.
33+ *
34+ * This struct stores the CA slot information.
35+ *
36+ * @type can be:
37+ *
38+ * - %CA_CI - CI high level interface;
39+ * - %CA_CI_LINK - CI link layer level interface;
40+ * - %CA_CI_PHYS - CI physical layer level interface;
41+ * - %CA_DESCR - built-in descrambler;
42+ * - %CA_SC -simple smart card interface.
43+ *
44+ * @flags can be:
45+ *
46+ * - %CA_CI_MODULE_PRESENT - module (or card) inserted;
47+ * - %CA_CI_MODULE_READY - module is ready for usage.
48+ */
3149
32− int type; /* CA interface this slot supports */
33−#define CA_CI 1 /* CI high level interface */
34−#define CA_CI_LINK 2 /* CI link layer level interface */
35−#define CA_CI_PHYS 4 /* CI physical layer level interface */
36−#define CA_DESCR 8 /* built-in descrambler */
37−#define CA_SC 128 /* simple smart card interface */
50+struct ca_slot_info {
51+ int num;
52+ int type;
53+#define CA_CI 1
54+#define CA_CI_LINK 2
55+#define CA_CI_PHYS 4
56+#define CA_DESCR 8
57+#define CA_SC 128
3858
3959 unsigned int flags;
40−#define CA_CI_MODULE_PRESENT 1 /* module (or card) inserted */
60+#define CA_CI_MODULE_PRESENT 1
4161 #define CA_CI_MODULE_READY 2
42−} ca_slot_info_t;
43−
62+};
4463
45−/* descrambler types and info */
4664
47−typedef struct ca_descr_info {
48− unsigned int num; /* number of available descramblers (keys) */
49− unsigned int type; /* type of supported scrambling system */
65+/**
66+ * struct ca_descr_info - descrambler types and info.
67+ *
68+ * @num: number of available descramblers (keys).
69+ * @type: type of supported scrambling system.
70+ *
71+ * Identifies the number of descramblers and their type.
72+ *
73+ * @type can be:
74+ *
75+ * - %CA_ECD - European Common Descrambler (ECD) hardware;
76+ * - %CA_NDS - Videoguard (NDS) hardware;
77+ * - %CA_DSS - Distributed Sample Scrambling (DSS) hardware.
78+ */
79+struct ca_descr_info {
80+ unsigned int num;
81+ unsigned int type;
5082 #define CA_ECD 1
5183 #define CA_NDS 2
5284 #define CA_DSS 4
53−} ca_descr_info_t;
85+};
5486
55−typedef struct ca_caps {
56− unsigned int slot_num; /* total number of CA card and module slots */
57− unsigned int slot_type; /* OR of all supported types */
58− unsigned int descr_num; /* total number of descrambler slots (keys) */
59− unsigned int descr_type; /* OR of all supported types */
60−} ca_caps_t;
87+/**
88+ * struct ca_caps - CA slot interface capabilities.
89+ *
90+ * @slot_num: total number of CA card and module slots.
91+ * @slot_type: bitmap with all supported types as defined at
92+ * &struct ca_slot_info (e. g. %CA_CI, %CA_CI_LINK, etc).
93+ * @descr_num: total number of descrambler slots (keys)
94+ * @descr_type: bitmap with all supported types as defined at
95+ * &struct ca_descr_info (e. g. %CA_ECD, %CA_NDS, etc).
96+ */
97+struct ca_caps {
98+ unsigned int slot_num;
99+ unsigned int slot_type;
100+ unsigned int descr_num;
101+ unsigned int descr_type;
102+};
61103
62−/* a message to/from a CI-CAM */
63−typedef struct ca_msg {
104+/**
105+ * struct ca_msg - a message to/from a CI-CAM
106+ *
107+ * @index: unused
108+ * @type: unused
109+ * @length: length of the message
110+ * @msg: message
111+ *
112+ * This struct carries a message to be send/received from a CI CA module.
113+ */
114+struct ca_msg {
64115 unsigned int index;
65116 unsigned int type;
66117 unsigned int length;
67118 unsigned char msg[256];
68−} ca_msg_t;
119+};
69120
70−typedef struct ca_descr {
121+/**
122+ * struct ca_descr - CA descrambler control words info
123+ *
124+ * @index: CA Descrambler slot
125+ * @parity: control words parity, where 0 means even and 1 means odd
126+ * @cw: CA Descrambler control words
127+ */
128+struct ca_descr {
71129 unsigned int index;
72− unsigned int parity; /* 0 == even, 1 == odd */
130+ unsigned int parity;
73131 unsigned char cw[8];
74−} ca_descr_t;
75−
76−typedef struct ca_pid {
77− unsigned int pid;
78− int index; /* -1 == disable*/
79−} ca_pid_t;
132+};
80133
81134 #define CA_RESET _IO('o', 128)
82−#define CA_GET_CAP _IOR('o', 129, ca_caps_t)
83−#define CA_GET_SLOT_INFO _IOR('o', 130, ca_slot_info_t)
84−#define CA_GET_DESCR_INFO _IOR('o', 131, ca_descr_info_t)
85−#define CA_GET_MSG _IOR('o', 132, ca_msg_t)
86−#define CA_SEND_MSG _IOW('o', 133, ca_msg_t)
87−#define CA_SET_DESCR _IOW('o', 134, ca_descr_t)
88−#define CA_SET_PID _IOW('o', 135, ca_pid_t)
135+#define CA_GET_CAP _IOR('o', 129, struct ca_caps)
136+#define CA_GET_SLOT_INFO _IOR('o', 130, struct ca_slot_info)
137+#define CA_GET_DESCR_INFO _IOR('o', 131, struct ca_descr_info)
138+#define CA_GET_MSG _IOR('o', 132, struct ca_msg)
139+#define CA_SEND_MSG _IOW('o', 133, struct ca_msg)
140+#define CA_SET_DESCR _IOW('o', 134, struct ca_descr)
141+
142+#if !defined(__KERNEL__)
143+
144+/* This is needed for legacy userspace support */
145+typedef struct ca_slot_info ca_slot_info_t;
146+typedef struct ca_descr_info ca_descr_info_t;
147+typedef struct ca_caps ca_caps_t;
148+typedef struct ca_msg ca_msg_t;
149+typedef struct ca_descr ca_descr_t;
150+
151+#endif
152+
89153
90154 #endif
include/uapi/linux/dvb/dmx.h+136−58
@@ -32,28 +32,74 @@ · 31 unmodified lines
3232
3333 #define DMX_FILTER_SIZE 16
3434
35−enum dmx_output
36−{
37− DMX_OUT_DECODER, /* Streaming directly to decoder. */
38− DMX_OUT_TAP, /* Output going to a memory buffer */
39− /* (to be retrieved via the read command).*/
40− DMX_OUT_TS_TAP, /* Output multiplexed into a new TS */
41− /* (to be retrieved by reading from the */
42− /* logical DVR device). */
43− DMX_OUT_TSDEMUX_TAP /* Like TS_TAP but retrieved from the DMX device */
35+/**
36+ * enum dmx_output - Output for the demux.
37+ *
38+ * @DMX_OUT_DECODER:
39+ * Streaming directly to decoder.
40+ * @DMX_OUT_TAP:
41+ * Output going to a memory buffer (to be retrieved via the read command).
42+ * Delivers the stream output to the demux device on which the ioctl
43+ * is called.
44+ * @DMX_OUT_TS_TAP:
45+ * Output multiplexed into a new TS (to be retrieved by reading from the
46+ * logical DVR device). Routes output to the logical DVR device
47+ * ``/dev/dvb/adapter?/dvr?``, which delivers a TS multiplexed from all
48+ * filters for which @DMX_OUT_TS_TAP was specified.
49+ * @DMX_OUT_TSDEMUX_TAP:
50+ * Like @DMX_OUT_TS_TAP but retrieved from the DMX device.
51+ */
52+enum dmx_output {
53+ DMX_OUT_DECODER,
54+ DMX_OUT_TAP,
55+ DMX_OUT_TS_TAP,
56+ DMX_OUT_TSDEMUX_TAP
4457 };
4558
46−typedef enum dmx_output dmx_output_t;
4759
48−typedef enum dmx_input
49−{
50− DMX_IN_FRONTEND, /* Input from a front-end device. */
51− DMX_IN_DVR /* Input from the logical DVR device. */
52−} dmx_input_t;
60+/**
61+ * enum dmx_input - Input from the demux.
62+ *
63+ * @DMX_IN_FRONTEND: Input from a front-end device.
64+ * @DMX_IN_DVR: Input from the logical DVR device.
65+ */
66+enum dmx_input {
67+ DMX_IN_FRONTEND,
68+ DMX_IN_DVR
69+};
5370
71+/**
72+ * enum dmx_ts_pes - type of the PES filter.
73+ *
74+ * @DMX_PES_AUDIO0: first audio PID. Also referred as @DMX_PES_AUDIO.
75+ * @DMX_PES_VIDEO0: first video PID. Also referred as @DMX_PES_VIDEO.
76+ * @DMX_PES_TELETEXT0: first teletext PID. Also referred as @DMX_PES_TELETEXT.
77+ * @DMX_PES_SUBTITLE0: first subtitle PID. Also referred as @DMX_PES_SUBTITLE.
78+ * @DMX_PES_PCR0: first Program Clock Reference PID.
79+ * Also referred as @DMX_PES_PCR.
80+ *
81+ * @DMX_PES_AUDIO1: second audio PID.
82+ * @DMX_PES_VIDEO1: second video PID.
83+ * @DMX_PES_TELETEXT1: second teletext PID.
84+ * @DMX_PES_SUBTITLE1: second subtitle PID.
85+ * @DMX_PES_PCR1: second Program Clock Reference PID.
86+ *
87+ * @DMX_PES_AUDIO2: third audio PID.
88+ * @DMX_PES_VIDEO2: third video PID.
89+ * @DMX_PES_TELETEXT2: third teletext PID.
90+ * @DMX_PES_SUBTITLE2: third subtitle PID.
91+ * @DMX_PES_PCR2: third Program Clock Reference PID.
92+ *
93+ * @DMX_PES_AUDIO3: fourth audio PID.
94+ * @DMX_PES_VIDEO3: fourth video PID.
95+ * @DMX_PES_TELETEXT3: fourth teletext PID.
96+ * @DMX_PES_SUBTITLE3: fourth subtitle PID.
97+ * @DMX_PES_PCR3: fourth Program Clock Reference PID.
98+ *
99+ * @DMX_PES_OTHER: any other PID.
100+ */
54101
55−typedef enum dmx_ts_pes
56−{
102+enum dmx_ts_pes {
57103 DMX_PES_AUDIO0,
58104 DMX_PES_VIDEO0,
59105 DMX_PES_TELETEXT0,
@@ -79,7 +125,7 @@ typedef enum dmx_ts_pes · 19 unmodified lines
79125 DMX_PES_PCR3,
80126
81127 DMX_PES_OTHER
82−} dmx_pes_type_t;
128+};
83129
84130 #define DMX_PES_AUDIO DMX_PES_AUDIO0
85131 #define DMX_PES_VIDEO DMX_PES_VIDEO0
@@ -88,56 +134,80 @@ typedef enum dmx_ts_pes · 2 unmodified lines
88134 #define DMX_PES_PCR DMX_PES_PCR0
89135
90136
91−typedef struct dmx_filter
92−{
137+
138+/**
139+ * struct dmx_filter - Specifies a section header filter.
140+ *
141+ * @filter: bit array with bits to be matched at the section header.
142+ * @mask: bits that are valid at the filter bit array.
143+ * @mode: mode of match: if bit is zero, it will match if equal (positive
144+ * match); if bit is one, it will match if the bit is negated.
145+ *
146+ * Note: All arrays in this struct have a size of DMX_FILTER_SIZE (16 bytes).
147+ */
148+struct dmx_filter {
93149 __u8 filter[DMX_FILTER_SIZE];
94150 __u8 mask[DMX_FILTER_SIZE];
95151 __u8 mode[DMX_FILTER_SIZE];
96−} dmx_filter_t;
97−
152+};
98153
99−struct dmx_sct_filter_params
100−{
101− __u16 pid;
102− dmx_filter_t filter;
103− __u32 timeout;
104− __u32 flags;
154+/**
155+ * struct dmx_sct_filter_params - Specifies a section filter.
156+ *
157+ * @pid: PID to be filtered.
158+ * @filter: section header filter, as defined by &struct dmx_filter.
159+ * @timeout: maximum time to filter, in milliseconds.
160+ * @flags: extra flags for the section filter.
161+ *
162+ * Carries the configuration for a MPEG-TS section filter.
163+ *
164+ * The @flags can be:
165+ *
166+ * - %DMX_CHECK_CRC - only deliver sections where the CRC check succeeded;
167+ * - %DMX_ONESHOT - disable the section filter after one section
168+ * has been delivered;
169+ * - %DMX_IMMEDIATE_START - Start filter immediately without requiring a
170+ * :ref:`DMX_START`.
171+ */
172+struct dmx_sct_filter_params {
173+ __u16 pid;
174+ struct dmx_filter filter;
175+ __u32 timeout;
176+ __u32 flags;
105177 #define DMX_CHECK_CRC 1
106178 #define DMX_ONESHOT 2
107179 #define DMX_IMMEDIATE_START 4
108−#define DMX_KERNEL_CLIENT 0x8000
109180 };
110181
111−
112−struct dmx_pes_filter_params
113−{
114− __u16 pid;
115− dmx_input_t input;
116− dmx_output_t output;
117− dmx_pes_type_t pes_type;
118− __u32 flags;
182+/**
183+ * struct dmx_pes_filter_params - Specifies Packetized Elementary Stream (PES)
184+ * filter parameters.
185+ *
186+ * @pid: PID to be filtered.
187+ * @input: Demux input, as specified by &enum dmx_input.
188+ * @output: Demux output, as specified by &enum dmx_output.
189+ * @pes_type: Type of the pes filter, as specified by &enum dmx_pes_type.
190+ * @flags: Demux PES flags.
191+ */
192+struct dmx_pes_filter_params {
193+ __u16 pid;
194+ enum dmx_input input;
195+ enum dmx_output output;
196+ enum dmx_ts_pes pes_type;
197+ __u32 flags;
119198 };
120199
121−typedef struct dmx_caps {
122− __u32 caps;
123− int num_decoders;
124−} dmx_caps_t;
125−
126−typedef enum dmx_source {
127− DMX_SOURCE_FRONT0 = 0,
128− DMX_SOURCE_FRONT1,
129− DMX_SOURCE_FRONT2,
130− DMX_SOURCE_FRONT3,
131− DMX_SOURCE_DVR0 = 16,
132− DMX_SOURCE_DVR1,
133− DMX_SOURCE_DVR2,
134− DMX_SOURCE_DVR3
135−} dmx_source_t;
136−
200+/**
201+ * struct dmx_stc - Stores System Time Counter (STC) information.
202+ *
203+ * @num: input data: number of the STC, from 0 to N.
204+ * @base: output: divisor for STC to get 90 kHz clock.
205+ * @stc: output: stc in @base * 90 kHz units.
206+ */
137207 struct dmx_stc {
138− unsigned int num; /* input : which STC? 0..N */
139− unsigned int base; /* output: divisor for stc to get 90 kHz clock */
140− __u64 stc; /* output: stc in 'base'*90 kHz units */
208+ unsigned int num;
209+ unsigned int base;
210+ __u64 stc;
141211 };
142212
143213 #define DMX_START _IO('o', 41)
@@ -146,10 +216,18 @@ struct dmx_stc { · 2 unmodified lines
146216 #define DMX_SET_PES_FILTER _IOW('o', 44, struct dmx_pes_filter_params)
147217 #define DMX_SET_BUFFER_SIZE _IO('o', 45)
148218 #define DMX_GET_PES_PIDS _IOR('o', 47, __u16[5])
149−#define DMX_GET_CAPS _IOR('o', 48, dmx_caps_t)
150−#define DMX_SET_SOURCE _IOW('o', 49, dmx_source_t)
151219 #define DMX_GET_STC _IOWR('o', 50, struct dmx_stc)
152220 #define DMX_ADD_PID _IOW('o', 51, __u16)
153221 #define DMX_REMOVE_PID _IOW('o', 52, __u16)
154222
223+#if !defined(__KERNEL__)
224+
225+/* This is needed for legacy userspace support */
226+typedef enum dmx_output dmx_output_t;
227+typedef enum dmx_input dmx_input_t;
228+typedef enum dmx_ts_pes dmx_pes_type_t;
229+typedef struct dmx_filter dmx_filter_t;
230+
231+#endif
232+
155233 #endif /* _UAPI_DVBDMX_H_ */
include/uapi/linux/dvb/frontend.h+502−96
@@ -28,13 +28,46 @@ · 27 unmodified lines
2828
2929 #include <linux/types.h>
3030
31−enum fe_type {
32− FE_QPSK,
33− FE_QAM,
34− FE_OFDM,
35− FE_ATSC
36−};
37−
31+/**
32+ * enum fe_caps - Frontend capabilities
33+ *
34+ * @FE_IS_STUPID: There's something wrong at the
35+ * frontend, and it can't report its
36+ * capabilities.
37+ * @FE_CAN_INVERSION_AUTO: Can auto-detect frequency spectral
38+ * band inversion
39+ * @FE_CAN_FEC_1_2: Supports FEC 1/2
40+ * @FE_CAN_FEC_2_3: Supports FEC 2/3
41+ * @FE_CAN_FEC_3_4: Supports FEC 3/4
42+ * @FE_CAN_FEC_4_5: Supports FEC 4/5
43+ * @FE_CAN_FEC_5_6: Supports FEC 5/6
44+ * @FE_CAN_FEC_6_7: Supports FEC 6/7
45+ * @FE_CAN_FEC_7_8: Supports FEC 7/8
46+ * @FE_CAN_FEC_8_9: Supports FEC 8/9
47+ * @FE_CAN_FEC_AUTO: Can auto-detect FEC
48+ * @FE_CAN_QPSK: Supports QPSK modulation
49+ * @FE_CAN_QAM_16: Supports 16-QAM modulation
50+ * @FE_CAN_QAM_32: Supports 32-QAM modulation
51+ * @FE_CAN_QAM_64: Supports 64-QAM modulation
52+ * @FE_CAN_QAM_128: Supports 128-QAM modulation
53+ * @FE_CAN_QAM_256: Supports 256-QAM modulation
54+ * @FE_CAN_QAM_AUTO: Can auto-detect QAM modulation
55+ * @FE_CAN_TRANSMISSION_MODE_AUTO: Can auto-detect transmission mode
56+ * @FE_CAN_BANDWIDTH_AUTO: Can auto-detect bandwidth
57+ * @FE_CAN_GUARD_INTERVAL_AUTO: Can auto-detect guard interval
58+ * @FE_CAN_HIERARCHY_AUTO: Can auto-detect hierarchy
59+ * @FE_CAN_8VSB: Supports 8-VSB modulation
60+ * @FE_CAN_16VSB: Supporta 16-VSB modulation
61+ * @FE_HAS_EXTENDED_CAPS: Unused
62+ * @FE_CAN_MULTISTREAM: Supports multistream filtering
63+ * @FE_CAN_TURBO_FEC: Supports "turbo FEC" modulation
64+ * @FE_CAN_2G_MODULATION: Supports "2nd generation" modulation,
65+ * e. g. DVB-S2, DVB-T2, DVB-C2
66+ * @FE_NEEDS_BENDING: Unused
67+ * @FE_CAN_RECOVER: Can recover from a cable unplug
68+ * automatically
69+ * @FE_CAN_MUTE_TS: Can stop spurious TS data output
70+ */
3871 enum fe_caps {
3972 FE_IS_STUPID = 0,
4073 FE_CAN_INVERSION_AUTO = 0x1,
@@ -60,15 +93,55 @@ enum fe_caps { · 19 unmodified lines
6093 FE_CAN_HIERARCHY_AUTO = 0x100000,
6194 FE_CAN_8VSB = 0x200000,
6295 FE_CAN_16VSB = 0x400000,
63− FE_HAS_EXTENDED_CAPS = 0x800000, /* We need more bitspace for newer APIs, indicate this. */
64− FE_CAN_MULTISTREAM = 0x4000000, /* frontend supports multistream filtering */
65− FE_CAN_TURBO_FEC = 0x8000000, /* frontend supports "turbo fec modulation" */
66− FE_CAN_2G_MODULATION = 0x10000000, /* frontend supports "2nd generation modulation" (DVB-S2) */
67− FE_NEEDS_BENDING = 0x20000000, /* not supported anymore, don't use (frontend requires frequency bending) */
68− FE_CAN_RECOVER = 0x40000000, /* frontend can recover from a cable unplug automatically */
69− FE_CAN_MUTE_TS = 0x80000000 /* frontend can stop spurious TS data output */
96+ FE_HAS_EXTENDED_CAPS = 0x800000,
97+ FE_CAN_MULTISTREAM = 0x4000000,
98+ FE_CAN_TURBO_FEC = 0x8000000,
99+ FE_CAN_2G_MODULATION = 0x10000000,
100+ FE_NEEDS_BENDING = 0x20000000,
101+ FE_CAN_RECOVER = 0x40000000,
102+ FE_CAN_MUTE_TS = 0x80000000
103+};
104+
105+/*
106+ * DEPRECATED: Should be kept just due to backward compatibility.
107+ */
108+enum fe_type {
109+ FE_QPSK,
110+ FE_QAM,
111+ FE_OFDM,
112+ FE_ATSC
70113 };
71114
115+/**
116+ * struct dvb_frontend_info - Frontend properties and capabilities
117+ *
118+ * @name: Name of the frontend
119+ * @type: **DEPRECATED**.
120+ * Should not be used on modern programs,
121+ * as a frontend may have more than one type.
122+ * In order to get the support types of a given
123+ * frontend, use :c:type:`DTV_ENUM_DELSYS`
124+ * instead.
125+ * @frequency_min: Minimal frequency supported by the frontend.
126+ * @frequency_max: Minimal frequency supported by the frontend.
127+ * @frequency_stepsize: All frequencies are multiple of this value.
128+ * @frequency_tolerance: Frequency tolerance.
129+ * @symbol_rate_min: Minimal symbol rate, in bauds
130+ * (for Cable/Satellite systems).
131+ * @symbol_rate_max: Maximal symbol rate, in bauds
132+ * (for Cable/Satellite systems).
133+ * @symbol_rate_tolerance: Maximal symbol rate tolerance, in ppm
134+ * (for Cable/Satellite systems).
135+ * @notifier_delay: **DEPRECATED**. Not used by any driver.
136+ * @caps: Capabilities supported by the frontend,
137+ * as specified in &enum fe_caps.
138+ *
139+ * .. note:
140+ *
141+ * #. The frequencies are specified in Hz for Terrestrial and Cable
142+ * systems.
143+ * #. The frequencies are specified in kHz for Satellite systems.
144+ */
72145 struct dvb_frontend_info {
73146 char name[128];
74147 enum fe_type type; /* DEPRECATED. Use DTV_ENUM_DELSYS instead */
@@ -78,55 +151,105 @@ struct dvb_frontend_info { · 3 unmodified lines
78151 __u32 frequency_tolerance;
79152 __u32 symbol_rate_min;
80153 __u32 symbol_rate_max;
81− __u32 symbol_rate_tolerance; /* ppm */
154+ __u32 symbol_rate_tolerance;
82155 __u32 notifier_delay; /* DEPRECATED */
83156 enum fe_caps caps;
84157 };
85158
86−
87159 /**
88− * Check out the DiSEqC bus spec available on http://www.eutelsat.org/ for
89− * the meaning of this struct...
160+ * struct dvb_diseqc_master_cmd - DiSEqC master command
161+ *
162+ * @msg:
163+ * DiSEqC message to be sent. It contains a 3 bytes header with:
164+ * framing + address + command, and an optional argument
165+ * of up to 3 bytes of data.
166+ * @msg_len:
167+ * Length of the DiSEqC message. Valid values are 3 to 6.
168+ *
169+ * Check out the DiSEqC bus spec available on http://www.eutelsat.org/ for
170+ * the possible messages that can be used.
90171 */
91172 struct dvb_diseqc_master_cmd {
92− __u8 msg [6]; /* { framing, address, command, data [3] } */
93− __u8 msg_len; /* valid values are 3...6 */
173+ __u8 msg[6];
174+ __u8 msg_len;
94175 };
95176
177+/**
178+ * struct dvb_diseqc_slave_reply - DiSEqC received data
179+ *
180+ * @msg:
181+ * DiSEqC message buffer to store a message received via DiSEqC.
182+ * It contains one byte header with: framing and
183+ * an optional argument of up to 3 bytes of data.
184+ * @msg_len:
185+ * Length of the DiSEqC message. Valid values are 0 to 4,
186+ * where 0 means no message.
187+ * @timeout:
188+ * Return from ioctl after timeout ms with errorcode when
189+ * no message was received.
190+ *
191+ * Check out the DiSEqC bus spec available on http://www.eutelsat.org/ for
192+ * the possible messages that can be used.
193+ */
96194 struct dvb_diseqc_slave_reply {
97− __u8 msg [4]; /* { framing, data [3] } */
98− __u8 msg_len; /* valid values are 0...4, 0 means no msg */
99− int timeout; /* return from ioctl after timeout ms with */
100−}; /* errorcode when no message was received */
195+ __u8 msg[4];
196+ __u8 msg_len;
197+ int timeout;
198+};
101199
200+/**
201+ * enum fe_sec_voltage - DC Voltage used to feed the LNBf
202+ *
203+ * @SEC_VOLTAGE_13: Output 13V to the LNBf
204+ * @SEC_VOLTAGE_18: Output 18V to the LNBf
205+ * @SEC_VOLTAGE_OFF: Don't feed the LNBf with a DC voltage
206+ */
102207 enum fe_sec_voltage {
103208 SEC_VOLTAGE_13,
104209 SEC_VOLTAGE_18,
105210 SEC_VOLTAGE_OFF
106211 };
107212
213+/**
214+ * enum fe_sec_tone_mode - Type of tone to be send to the LNBf.
215+ * @SEC_TONE_ON: Sends a 22kHz tone burst to the antenna.
216+ * @SEC_TONE_OFF: Don't send a 22kHz tone to the antenna (except
217+ * if the ``FE_DISEQC_*`` ioctls are called).
218+ */
108219 enum fe_sec_tone_mode {
109220 SEC_TONE_ON,
110221 SEC_TONE_OFF
111222 };
112223
224+/**
225+ * enum fe_sec_mini_cmd - Type of mini burst to be sent
226+ *
227+ * @SEC_MINI_A: Sends a mini-DiSEqC 22kHz '0' Tone Burst to select
228+ * satellite-A
229+ * @SEC_MINI_B: Sends a mini-DiSEqC 22kHz '1' Data Burst to select
230+ * satellite-B
231+ */
113232 enum fe_sec_mini_cmd {
114233 SEC_MINI_A,
115234 SEC_MINI_B
116235 };
117236
118237 /**
119− * enum fe_status - enumerates the possible frontend status
120− * @FE_HAS_SIGNAL: found something above the noise level
121− * @FE_HAS_CARRIER: found a DVB signal
122− * @FE_HAS_VITERBI: FEC is stable
123− * @FE_HAS_SYNC: found sync bytes
124− * @FE_HAS_LOCK: everything's working
125− * @FE_TIMEDOUT: no lock within the last ~2 seconds
126− * @FE_REINIT: frontend was reinitialized, application is recommended
127− * to reset DiSEqC, tone and parameters
238+ * enum fe_status - Enumerates the possible frontend status.
239+ * @FE_NONE: The frontend doesn't have any kind of lock.
240+ * That's the initial frontend status
241+ * @FE_HAS_SIGNAL: Has found something above the noise level.
242+ * @FE_HAS_CARRIER: Has found a signal.
243+ * @FE_HAS_VITERBI: FEC inner coding (Viterbi, LDPC or other inner code).
244+ * is stable.
245+ * @FE_HAS_SYNC: Synchronization bytes was found.
246+ * @FE_HAS_LOCK: Digital TV were locked and everything is working.
247+ * @FE_TIMEDOUT: Fo lock within the last about 2 seconds.
248+ * @FE_REINIT: Frontend was reinitialized, application is recommended
249+ * to reset DiSEqC, tone and parameters.
128250 */
129251 enum fe_status {
252+ FE_NONE = 0x00,
130253 FE_HAS_SIGNAL = 0x01,
131254 FE_HAS_CARRIER = 0x02,
132255 FE_HAS_VITERBI = 0x04,
@@ -136,12 +259,45 @@ enum fe_status { · 3 unmodified lines
136259 FE_REINIT = 0x40,
137260 };
138261
262+/**
263+ * enum fe_spectral_inversion - Type of inversion band
264+ *
265+ * @INVERSION_OFF: Don't do spectral band inversion.
266+ * @INVERSION_ON: Do spectral band inversion.
267+ * @INVERSION_AUTO: Autodetect spectral band inversion.
268+ *
269+ * This parameter indicates if spectral inversion should be presumed or
270+ * not. In the automatic setting (``INVERSION_AUTO``) the hardware will try
271+ * to figure out the correct setting by itself. If the hardware doesn't
272+ * support, the %dvb_frontend will try to lock at the carrier first with
273+ * inversion off. If it fails, it will try to enable inversion.
274+ */
139275 enum fe_spectral_inversion {
140276 INVERSION_OFF,
141277 INVERSION_ON,
142278 INVERSION_AUTO
143279 };
144280
281+/**
282+ * enum fe_code_rate - Type of Forward Error Correction (FEC)
283+ *
284+ *
285+ * @FEC_NONE: No Forward Error Correction Code
286+ * @FEC_1_2: Forward Error Correction Code 1/2
287+ * @FEC_2_3: Forward Error Correction Code 2/3
288+ * @FEC_3_4: Forward Error Correction Code 3/4
289+ * @FEC_4_5: Forward Error Correction Code 4/5
290+ * @FEC_5_6: Forward Error Correction Code 5/6
291+ * @FEC_6_7: Forward Error Correction Code 6/7
292+ * @FEC_7_8: Forward Error Correction Code 7/8
293+ * @FEC_8_9: Forward Error Correction Code 8/9
294+ * @FEC_AUTO: Autodetect Error Correction Code
295+ * @FEC_3_5: Forward Error Correction Code 3/5
296+ * @FEC_9_10: Forward Error Correction Code 9/10
297+ * @FEC_2_5: Forward Error Correction Code 2/5
298+ *
299+ * Please note that not all FEC types are supported by a given standard.
300+ */
145301 enum fe_code_rate {
146302 FEC_NONE = 0,
147303 FEC_1_2,
@@ -158,6 +314,26 @@ enum fe_code_rate { · 10 unmodified lines
158314 FEC_2_5,
159315 };
160316
317+/**
318+ * enum fe_modulation - Type of modulation/constellation
319+ * @QPSK: QPSK modulation
320+ * @QAM_16: 16-QAM modulation
321+ * @QAM_32: 32-QAM modulation
322+ * @QAM_64: 64-QAM modulation
323+ * @QAM_128: 128-QAM modulation
324+ * @QAM_256: 256-QAM modulation
325+ * @QAM_AUTO: Autodetect QAM modulation
326+ * @VSB_8: 8-VSB modulation
327+ * @VSB_16: 16-VSB modulation
328+ * @PSK_8: 8-PSK modulation
329+ * @APSK_16: 16-APSK modulation
330+ * @APSK_32: 32-APSK modulation
331+ * @DQPSK: DQPSK modulation
332+ * @QAM_4_NR: 4-QAM-NR modulation
333+ *
334+ * Please note that not all modulations are supported by a given standard.
335+ *
336+ */
161337 enum fe_modulation {
162338 QPSK,
163339 QAM_16,
@@ -175,6 +351,32 @@ enum fe_modulation { · 11 unmodified lines
175351 QAM_4_NR,
176352 };
177353
354+/**
355+ * enum fe_transmit_mode - Transmission mode
356+ *
357+ * @TRANSMISSION_MODE_AUTO:
358+ * Autodetect transmission mode. The hardware will try to find the
359+ * correct FFT-size (if capable) to fill in the missing parameters.
360+ * @TRANSMISSION_MODE_1K:
361+ * Transmission mode 1K
362+ * @TRANSMISSION_MODE_2K:
363+ * Transmission mode 2K
364+ * @TRANSMISSION_MODE_8K:
365+ * Transmission mode 8K
366+ * @TRANSMISSION_MODE_4K:
367+ * Transmission mode 4K
368+ * @TRANSMISSION_MODE_16K:
369+ * Transmission mode 16K
370+ * @TRANSMISSION_MODE_32K:
371+ * Transmission mode 32K
372+ * @TRANSMISSION_MODE_C1:
373+ * Single Carrier (C=1) transmission mode (DTMB only)
374+ * @TRANSMISSION_MODE_C3780:
375+ * Multi Carrier (C=3780) transmission mode (DTMB only)
376+ *
377+ * Please note that not all transmission modes are supported by a given
378+ * standard.
379+ */
178380 enum fe_transmit_mode {
179381 TRANSMISSION_MODE_2K,
180382 TRANSMISSION_MODE_8K,
@@ -187,6 +389,23 @@ enum fe_transmit_mode { · 6 unmodified lines
187389 TRANSMISSION_MODE_C3780,
188390 };
189391
392+/**
393+ * enum fe_guard_interval - Guard interval
394+ *
395+ * @GUARD_INTERVAL_AUTO: Autodetect the guard interval
396+ * @GUARD_INTERVAL_1_128: Guard interval 1/128
397+ * @GUARD_INTERVAL_1_32: Guard interval 1/32
398+ * @GUARD_INTERVAL_1_16: Guard interval 1/16
399+ * @GUARD_INTERVAL_1_8: Guard interval 1/8
400+ * @GUARD_INTERVAL_1_4: Guard interval 1/4
401+ * @GUARD_INTERVAL_19_128: Guard interval 19/128
402+ * @GUARD_INTERVAL_19_256: Guard interval 19/256
403+ * @GUARD_INTERVAL_PN420: PN length 420 (1/4)
404+ * @GUARD_INTERVAL_PN595: PN length 595 (1/6)
405+ * @GUARD_INTERVAL_PN945: PN length 945 (1/9)
406+ *
407+ * Please note that not all guard intervals are supported by a given standard.
408+ */
190409 enum fe_guard_interval {
191410 GUARD_INTERVAL_1_32,
192411 GUARD_INTERVAL_1_16,
@@ -201,6 +420,16 @@ enum fe_guard_interval { · 8 unmodified lines
201420 GUARD_INTERVAL_PN945,
202421 };
203422
423+/**
424+ * enum fe_hierarchy - Hierarchy
425+ * @HIERARCHY_NONE: No hierarchy
426+ * @HIERARCHY_AUTO: Autodetect hierarchy (if supported)
427+ * @HIERARCHY_1: Hierarchy 1
428+ * @HIERARCHY_2: Hierarchy 2
429+ * @HIERARCHY_4: Hierarchy 4
430+ *
431+ * Please note that not all hierarchy types are supported by a given standard.
432+ */
204433 enum fe_hierarchy {
205434 HIERARCHY_NONE,
206435 HIERARCHY_1,
@@ -209,6 +438,15 @@ enum fe_hierarchy { · 2 unmodified lines
209438 HIERARCHY_AUTO
210439 };
211440
441+/**
442+ * enum fe_interleaving - Interleaving
443+ * @INTERLEAVING_NONE: No interleaving.
444+ * @INTERLEAVING_AUTO: Auto-detect interleaving.
445+ * @INTERLEAVING_240: Interleaving of 240 symbols.
446+ * @INTERLEAVING_720: Interleaving of 720 symbols.
447+ *
448+ * Please note that, currently, only DTMB uses it.
449+ */
212450 enum fe_interleaving {
213451 INTERLEAVING_NONE,
214452 INTERLEAVING_AUTO,
@@ -216,7 +454,8 @@ enum fe_interleaving { · 1 unmodified line
216454 INTERLEAVING_720,
217455 };
218456
219−/* S2API Commands */
457+/* DVBv5 property Commands */
458+
220459 #define DTV_UNDEFINED 0
221460 #define DTV_TUNE 1
222461 #define DTV_CLEAR 2
@@ -309,19 +548,79 @@ enum fe_interleaving { · 86 unmodified lines
309548
310549 #define DTV_MAX_COMMAND DTV_STAT_TOTAL_BLOCK_COUNT
311550
551+/**
552+ * enum fe_pilot - Type of pilot tone
553+ *
554+ * @PILOT_ON: Pilot tones enabled
555+ * @PILOT_OFF: Pilot tones disabled
556+ * @PILOT_AUTO: Autodetect pilot tones
557+ */
312558 enum fe_pilot {
313559 PILOT_ON,
314560 PILOT_OFF,
315561 PILOT_AUTO,
316562 };
317563
564+/**
565+ * enum fe_rolloff - Rolloff factor
566+ * @ROLLOFF_35: Roloff factor: α=35%
567+ * @ROLLOFF_20: Roloff factor: α=20%
568+ * @ROLLOFF_25: Roloff factor: α=25%
569+ * @ROLLOFF_AUTO: Auto-detect the roloff factor.
570+ *
571+ * .. note:
572+ *
573+ * Roloff factor of 35% is implied on DVB-S. On DVB-S2, it is default.
574+ */
318575 enum fe_rolloff {
319− ROLLOFF_35, /* Implied value in DVB-S, default for DVB-S2 */
576+ ROLLOFF_35,
320577 ROLLOFF_20,
321578 ROLLOFF_25,
322579 ROLLOFF_AUTO,
323580 };
324581
582+/**
583+ * enum fe_delivery_system - Type of the delivery system
584+ *
585+ * @SYS_UNDEFINED:
586+ * Undefined standard. Generally, indicates an error
587+ * @SYS_DVBC_ANNEX_A:
588+ * Cable TV: DVB-C following ITU-T J.83 Annex A spec
589+ * @SYS_DVBC_ANNEX_B:
590+ * Cable TV: DVB-C following ITU-T J.83 Annex B spec (ClearQAM)
591+ * @SYS_DVBC_ANNEX_C:
592+ * Cable TV: DVB-C following ITU-T J.83 Annex C spec
593+ * @SYS_ISDBC:
594+ * Cable TV: ISDB-C (no drivers yet)
595+ * @SYS_DVBT:
596+ * Terrestrial TV: DVB-T
597+ * @SYS_DVBT2:
598+ * Terrestrial TV: DVB-T2
599+ * @SYS_ISDBT:
600+ * Terrestrial TV: ISDB-T
601+ * @SYS_ATSC:
602+ * Terrestrial TV: ATSC
603+ * @SYS_ATSCMH:
604+ * Terrestrial TV (mobile): ATSC-M/H
605+ * @SYS_DTMB:
606+ * Terrestrial TV: DTMB
607+ * @SYS_DVBS:
608+ * Satellite TV: DVB-S
609+ * @SYS_DVBS2:
610+ * Satellite TV: DVB-S2
611+ * @SYS_TURBO:
612+ * Satellite TV: DVB-S Turbo
613+ * @SYS_ISDBS:
614+ * Satellite TV: ISDB-S
615+ * @SYS_DAB:
616+ * Digital audio: DAB (not fully supported)
617+ * @SYS_DSS:
618+ * Satellite TV: DSS (not fully supported)
619+ * @SYS_CMMB:
620+ * Terrestrial TV (mobile): CMMB (not fully supported)
621+ * @SYS_DVBH:
622+ * Terrestrial TV (mobile): DVB-H (standard deprecated)
623+ */
325624 enum fe_delivery_system {
326625 SYS_UNDEFINED,
327626 SYS_DVBC_ANNEX_A,
@@ -344,35 +643,85 @@ enum fe_delivery_system { · 16 unmodified lines
344643 SYS_DVBC_ANNEX_C,
345644 };
346645
347−/* backward compatibility */
646+/* backward compatibility definitions for delivery systems */
348647 #define SYS_DVBC_ANNEX_AC SYS_DVBC_ANNEX_A
349−#define SYS_DMBTH SYS_DTMB /* DMB-TH is legacy name, use DTMB instead */
648+#define SYS_DMBTH SYS_DTMB /* DMB-TH is legacy name, use DTMB */
350649
351−/* ATSC-MH */
650+/* ATSC-MH specific parameters */
352651
652+/**
653+ * enum atscmh_sccc_block_mode - Type of Series Concatenated Convolutional
654+ * Code Block Mode.
655+ *
656+ * @ATSCMH_SCCC_BLK_SEP:
657+ * Separate SCCC: the SCCC outer code mode shall be set independently
658+ * for each Group Region (A, B, C, D)
659+ * @ATSCMH_SCCC_BLK_COMB:
660+ * Combined SCCC: all four Regions shall have the same SCCC outer
661+ * code mode.
662+ * @ATSCMH_SCCC_BLK_RES:
663+ * Reserved. Shouldn't be used.
664+ */
353665 enum atscmh_sccc_block_mode {
354666 ATSCMH_SCCC_BLK_SEP = 0,
355667 ATSCMH_SCCC_BLK_COMB = 1,
356668 ATSCMH_SCCC_BLK_RES = 2,
357669 };
358670
671+/**
672+ * enum atscmh_sccc_code_mode - Type of Series Concatenated Convolutional
673+ * Code Rate.
674+ *
675+ * @ATSCMH_SCCC_CODE_HLF:
676+ * The outer code rate of a SCCC Block is 1/2 rate.
677+ * @ATSCMH_SCCC_CODE_QTR:
678+ * The outer code rate of a SCCC Block is 1/4 rate.
679+ * @ATSCMH_SCCC_CODE_RES:
680+ * Reserved. Should not be used.
681+ */
359682 enum atscmh_sccc_code_mode {
360683 ATSCMH_SCCC_CODE_HLF = 0,
361684 ATSCMH_SCCC_CODE_QTR = 1,
362685 ATSCMH_SCCC_CODE_RES = 2,
363686 };
364687
688+/**
689+ * enum atscmh_rs_frame_ensemble - Reed Solomon(RS) frame ensemble.
690+ *
691+ * @ATSCMH_RSFRAME_ENS_PRI: Primary Ensemble.
692+ * @ATSCMH_RSFRAME_ENS_SEC: Secondary Ensemble.
693+ */
365694 enum atscmh_rs_frame_ensemble {
366695 ATSCMH_RSFRAME_ENS_PRI = 0,
367696 ATSCMH_RSFRAME_ENS_SEC = 1,
368697 };
369698
699+/**
700+ * enum atscmh_rs_frame_mode - Reed Solomon (RS) frame mode.
701+ *
702+ * @ATSCMH_RSFRAME_PRI_ONLY:
703+ * Single Frame: There is only a primary RS Frame for all Group
704+ * Regions.
705+ * @ATSCMH_RSFRAME_PRI_SEC:
706+ * Dual Frame: There are two separate RS Frames: Primary RS Frame for
707+ * Group Region A and B and Secondary RS Frame for Group Region C and
708+ * D.
709+ * @ATSCMH_RSFRAME_RES:
710+ * Reserved. Shouldn't be used.
711+ */
370712 enum atscmh_rs_frame_mode {
371713 ATSCMH_RSFRAME_PRI_ONLY = 0,
372714 ATSCMH_RSFRAME_PRI_SEC = 1,
373715 ATSCMH_RSFRAME_RES = 2,
374716 };
375717
718+/**
719+ * enum atscmh_rs_code_mode
720+ * @ATSCMH_RSCODE_211_187: Reed Solomon code (211,187).
721+ * @ATSCMH_RSCODE_223_187: Reed Solomon code (223,187).
722+ * @ATSCMH_RSCODE_235_187: Reed Solomon code (235,187).
723+ * @ATSCMH_RSCODE_RES: Reserved. Shouldn't be used.
724+ */
376725 enum atscmh_rs_code_mode {
377726 ATSCMH_RSCODE_211_187 = 0,
378727 ATSCMH_RSCODE_223_187 = 1,
@@ -383,28 +732,18 @@ enum atscmh_rs_code_mode { · 4 unmodified lines
383732 #define NO_STREAM_ID_FILTER (~0U)
384733 #define LNA_AUTO (~0U)
385734
386−struct dtv_cmds_h {
387− char *name; /* A display name for debugging purposes */
388−
389− __u32 cmd; /* A unique ID */
390−
391− /* Flags */
392− __u32 set:1; /* Either a set or get property */
393− __u32 buffer:1; /* Does this property use the buffer? */
394− __u32 reserved:30; /* Align */
395−};
396−
397735 /**
398− * Scale types for the quality parameters.
736+ * enum fecap_scale_params - scale types for the quality parameters.
737+ *
399738 * @FE_SCALE_NOT_AVAILABLE: That QoS measure is not available. That
400739 * could indicate a temporary or a permanent
401740 * condition.
402741 * @FE_SCALE_DECIBEL: The scale is measured in 0.001 dB steps, typically
403− * used on signal measures.
742+ * used on signal measures.
404743 * @FE_SCALE_RELATIVE: The scale is a relative percentual measure,
405− * ranging from 0 (0%) to 0xffff (100%).
744+ * ranging from 0 (0%) to 0xffff (100%).
406745 * @FE_SCALE_COUNTER: The scale counts the occurrence of an event, like
407− * bit error, block error, lapsed time.
746+ * bit error, block error, lapsed time.
408747 */
409748 enum fecap_scale_params {
410749 FE_SCALE_NOT_AVAILABLE = 0,
@@ -416,24 +755,38 @@ enum fecap_scale_params { · 5 unmodified lines
416755 /**
417756 * struct dtv_stats - Used for reading a DTV status property
418757 *
419− * @value: value of the measure. Should range from 0 to 0xffff;
420758 * @scale: Filled with enum fecap_scale_params - the scale
421759 * in usage for that parameter
422760 *
761+ * The ``{unnamed_union}`` may have either one of the values below:
762+ *
763+ * %svalue
764+ * integer value of the measure, for %FE_SCALE_DECIBEL,
765+ * used for dB measures. The unit is 0.001 dB.
766+ *
767+ * %uvalue
768+ * unsigned integer value of the measure, used when @scale is
769+ * either %FE_SCALE_RELATIVE or %FE_SCALE_COUNTER.
770+ *
423771 * For most delivery systems, this will return a single value for each
424772 * parameter.
773+ *
425774 * It should be noticed, however, that new OFDM delivery systems like
426775 * ISDB can use different modulation types for each group of carriers.
427776 * On such standards, up to 8 groups of statistics can be provided, one
428777 * for each carrier group (called "layer" on ISDB).
778+ *
429779 * In order to be consistent with other delivery systems, the first
430780 * value refers to the entire set of carriers ("global").
431− * dtv_status:scale should use the value FE_SCALE_NOT_AVAILABLE when
781+ *
782+ * @scale should use the value %FE_SCALE_NOT_AVAILABLE when
432783 * the value for the entire group of carriers or from one specific layer
433784 * is not provided by the hardware.
434− * st.len should be filled with the latest filled status + 1.
435785 *
436− * In other words, for ISDB, those values should be filled like:
786+ * @len should be filled with the latest filled status + 1.
787+ *
788+ * In other words, for ISDB, those values should be filled like::
789+ *
437790 * u.st.stat.svalue[0] = global statistics;
438791 * u.st.stat.scale[0] = FE_SCALE_DECIBEL;
439792 * u.st.stat.value[1] = layer A statistics;
@@ -455,11 +808,39 @@ struct dtv_stats { · 15 unmodified lines
455808
456809 #define MAX_DTV_STATS 4
457810
811+/**
812+ * struct dtv_fe_stats - store Digital TV frontend statistics
813+ *
814+ * @len: length of the statistics - if zero, stats is disabled.
815+ * @stat: array with digital TV statistics.
816+ *
817+ * On most standards, @len can either be 0 or 1. However, for ISDB, each
818+ * layer is modulated in separate. So, each layer may have its own set
819+ * of statistics. If so, stat[0] carries on a global value for the property.
820+ * Indexes 1 to 3 means layer A to B.
821+ */
458822 struct dtv_fe_stats {
459823 __u8 len;
460824 struct dtv_stats stat[MAX_DTV_STATS];
461825 } __attribute__ ((packed));
462826
827+/**
828+ * struct dtv_property - store one of frontend command and its value
829+ *
830+ * @cmd: Digital TV command.
831+ * @reserved: Not used.
832+ * @u: Union with the values for the command.
833+ * @result: Result of the command set (currently unused).
834+ *
835+ * The @u union may have either one of the values below:
836+ *
837+ * %data
838+ * an unsigned 32-bits number.
839+ * %st
840+ * a &struct dtv_fe_stats array of statistics.
841+ * %buffer
842+ * a buffer of up to 32 characters (currently unused).
843+ */
463844 struct dtv_property {
464845 __u32 cmd;
465846 __u32 reserved[3];
@@ -479,17 +860,70 @@ struct dtv_property { · 13 unmodified lines
479860 /* num of properties cannot exceed DTV_IOCTL_MAX_MSGS per ioctl */
480861 #define DTV_IOCTL_MAX_MSGS 64
481862
863+/**
864+ * struct dtv_properties - a set of command/value pairs.
865+ *
866+ * @num: amount of commands stored at the struct.
867+ * @props: a pointer to &struct dtv_property.
868+ */
482869 struct dtv_properties {
483870 __u32 num;
484871 struct dtv_property *props;
485872 };
486873
487−#if defined(__DVB_CORE__) || !defined (__KERNEL__)
874+/*
875+ * When set, this flag will disable any zigzagging or other "normal" tuning
876+ * behavior. Additionally, there will be no automatic monitoring of the lock
877+ * status, and hence no frontend events will be generated. If a frontend device
878+ * is closed, this flag will be automatically turned off when the device is
879+ * reopened read-write.
880+ */
881+#define FE_TUNE_MODE_ONESHOT 0x01
882+
883+/* Digital TV Frontend API calls */
884+
885+#define FE_GET_INFO _IOR('o', 61, struct dvb_frontend_info)
886+
887+#define FE_DISEQC_RESET_OVERLOAD _IO('o', 62)
888+#define FE_DISEQC_SEND_MASTER_CMD _IOW('o', 63, struct dvb_diseqc_master_cmd)
889+#define FE_DISEQC_RECV_SLAVE_REPLY _IOR('o', 64, struct dvb_diseqc_slave_reply)
890+#define FE_DISEQC_SEND_BURST _IO('o', 65) /* fe_sec_mini_cmd_t */
891+
892+#define FE_SET_TONE _IO('o', 66) /* fe_sec_tone_mode_t */
893+#define FE_SET_VOLTAGE _IO('o', 67) /* fe_sec_voltage_t */
894+#define FE_ENABLE_HIGH_LNB_VOLTAGE _IO('o', 68) /* int */
895+
896+#define FE_READ_STATUS _IOR('o', 69, fe_status_t)
897+#define FE_READ_BER _IOR('o', 70, __u32)
898+#define FE_READ_SIGNAL_STRENGTH _IOR('o', 71, __u16)
899+#define FE_READ_SNR _IOR('o', 72, __u16)
900+#define FE_READ_UNCORRECTED_BLOCKS _IOR('o', 73, __u32)
901+
902+#define FE_SET_FRONTEND_TUNE_MODE _IO('o', 81) /* unsigned int */
903+#define FE_GET_EVENT _IOR('o', 78, struct dvb_frontend_event)
904+
905+#define FE_DISHNETWORK_SEND_LEGACY_CMD _IO('o', 80) /* unsigned int */
906+
907+#define FE_SET_PROPERTY _IOW('o', 82, struct dtv_properties)
908+#define FE_GET_PROPERTY _IOR('o', 83, struct dtv_properties)
909+
910+#if defined(__DVB_CORE__) || !defined(__KERNEL__)
911+
912+/*
913+ * DEPRECATED: Everything below is deprecated in favor of DVBv5 API
914+ *
915+ * The DVBv3 only ioctls, structs and enums should not be used on
916+ * newer programs, as it doesn't support the second generation of
917+ * digital TV standards, nor supports newer delivery systems.
918+ * They also don't support modern frontends with usually support multiple
919+ * delivery systems.
920+ *
921+ * Drivers shouldn't use them.
922+ *
923+ * New applications should use DVBv5 delivery system instead
924+ */
488925
489926 /*
490− * DEPRECATED: The DVBv3 ioctls, structs and enums should not be used on
491− * newer programs, as it doesn't support the second generation of digital
492− * TV standards, nor supports newer delivery systems.
493927 */
494928
495929 enum fe_bandwidth {
@@ -502,7 +936,7 @@ enum fe_bandwidth { · 6 unmodified lines
502936 BANDWIDTH_1_712_MHZ,
503937 };
504938
505−/* This is needed for legacy userspace support */
939+/* This is kept for legacy userspace support */
506940 typedef enum fe_sec_voltage fe_sec_voltage_t;
507941 typedef enum fe_caps fe_caps_t;
508942 typedef enum fe_type fe_type_t;
@@ -520,6 +954,8 @@ typedef enum fe_pilot fe_pilot_t; · 11 unmodified lines
520954 typedef enum fe_rolloff fe_rolloff_t;
521955 typedef enum fe_delivery_system fe_delivery_system_t;
522956
957+/* DVBv3 structs */
958+
523959 struct dvb_qpsk_parameters {
524960 __u32 symbol_rate; /* symbol rate in Symbols per second */
525961 fe_code_rate_t fec_inner; /* forward error correction (see above) */
@@ -546,8 +982,8 @@ struct dvb_ofdm_parameters { · 20 unmodified lines
546982 };
547983
548984 struct dvb_frontend_parameters {
549− __u32 frequency; /* (absolute) frequency in Hz for DVB-C/DVB-T/ATSC */
550− /* intermediate frequency in kHz for DVB-S */
985+ __u32 frequency; /* (absolute) frequency in Hz for DVB-C/DVB-T/ATSC */
986+ /* intermediate frequency in kHz for DVB-S */
551987 fe_spectral_inversion_t inversion;
552988 union {
553989 struct dvb_qpsk_parameters qpsk; /* DVB-S */
@@ -561,42 +997,12 @@ struct dvb_frontend_event { · 7 unmodified lines
561997 fe_status_t status;
562998 struct dvb_frontend_parameters parameters;
563999 };
564−#endif
5651000
566−#define FE_SET_PROPERTY _IOW('o', 82, struct dtv_properties)
567−#define FE_GET_PROPERTY _IOR('o', 83, struct dtv_properties)
568−
569−/**
570− * When set, this flag will disable any zigzagging or other "normal" tuning
571− * behaviour. Additionally, there will be no automatic monitoring of the lock
572− * status, and hence no frontend events will be generated. If a frontend device
573− * is closed, this flag will be automatically turned off when the device is
574− * reopened read-write.
575− */
576−#define FE_TUNE_MODE_ONESHOT 0x01
577−
578−#define FE_GET_INFO _IOR('o', 61, struct dvb_frontend_info)
579−
580−#define FE_DISEQC_RESET_OVERLOAD _IO('o', 62)
581−#define FE_DISEQC_SEND_MASTER_CMD _IOW('o', 63, struct dvb_diseqc_master_cmd)
582−#define FE_DISEQC_RECV_SLAVE_REPLY _IOR('o', 64, struct dvb_diseqc_slave_reply)
583−#define FE_DISEQC_SEND_BURST _IO('o', 65) /* fe_sec_mini_cmd_t */
584−
585−#define FE_SET_TONE _IO('o', 66) /* fe_sec_tone_mode_t */
586−#define FE_SET_VOLTAGE _IO('o', 67) /* fe_sec_voltage_t */
587−#define FE_ENABLE_HIGH_LNB_VOLTAGE _IO('o', 68) /* int */
588−
589−#define FE_READ_STATUS _IOR('o', 69, fe_status_t)
590−#define FE_READ_BER _IOR('o', 70, __u32)
591−#define FE_READ_SIGNAL_STRENGTH _IOR('o', 71, __u16)
592−#define FE_READ_SNR _IOR('o', 72, __u16)
593−#define FE_READ_UNCORRECTED_BLOCKS _IOR('o', 73, __u32)
1001+/* DVBv3 API calls */
5941002
5951003 #define FE_SET_FRONTEND _IOW('o', 76, struct dvb_frontend_parameters)
5961004 #define FE_GET_FRONTEND _IOR('o', 77, struct dvb_frontend_parameters)
597−#define FE_SET_FRONTEND_TUNE_MODE _IO('o', 81) /* unsigned int */
598−#define FE_GET_EVENT _IOR('o', 78, struct dvb_frontend_event)
5991005
600−#define FE_DISHNETWORK_SEND_LEGACY_CMD _IO('o', 80) /* unsigned int */
1006+#endif
6011007
6021008 #endif /*_DVBFRONTEND_H_*/
include/uapi/linux/dvb/net.h+15−0
@@ -26,6 +26,21 @@ · 25 unmodified lines
2626
2727 #include <linux/types.h>
2828
29+/**
30+ * struct dvb_net_if - describes a DVB network interface
31+ *
32+ * @pid: Packet ID (PID) of the MPEG-TS that contains data
33+ * @if_num: number of the Digital TV interface.
34+ * @feedtype: Encapsulation type of the feed.
35+ *
36+ * A MPEG-TS stream may contain packet IDs with IP packages on it.
37+ * This struct describes it, and the type of encoding.
38+ *
39+ * @feedtype can be:
40+ *
41+ * - %DVB_NET_FEEDTYPE_MPE for MPE encoding
42+ * - %DVB_NET_FEEDTYPE_ULE for ULE encoding.
43+ */
2944 struct dvb_net_if {
3045 __u16 pid;
3146 __u16 if_num;
include/uapi/linux/media.h+3−2
@@ -30,8 +30,6 @@ · 29 unmodified lines
3030 #include <linux/types.h>
3131 #include <linux/version.h>
3232
33−#define MEDIA_API_VERSION KERNEL_VERSION(0, 1, 0)
34−
3533 struct media_device_info {
3634 char driver[16];
3735 char model[32];
@@ -187,6 +185,9 @@ struct media_device_info { · 149 unmodified lines
187185 #define MEDIA_ENT_T_V4L2_SUBDEV_LENS MEDIA_ENT_F_LENS
188186 #define MEDIA_ENT_T_V4L2_SUBDEV_DECODER MEDIA_ENT_F_ATV_DECODER
189187 #define MEDIA_ENT_T_V4L2_SUBDEV_TUNER MEDIA_ENT_F_TUNER
188+
189+/* Obsolete symbol for media_version, no longer used in the kernel */
190+#define MEDIA_API_VERSION KERNEL_VERSION(0, 1, 0)
190191 #endif
191192
192193 /* Entity flags */
include/uapi/linux/videodev2.h+5−0
@@ -603,6 +603,11 @@ struct v4l2_pix_format { · 602 unmodified lines
603603 #define V4L2_PIX_FMT_SGBRG12 v4l2_fourcc('G', 'B', '1', '2') /* 12 GBGB.. RGRG.. */
604604 #define V4L2_PIX_FMT_SGRBG12 v4l2_fourcc('B', 'A', '1', '2') /* 12 GRGR.. BGBG.. */
605605 #define V4L2_PIX_FMT_SRGGB12 v4l2_fourcc('R', 'G', '1', '2') /* 12 RGRG.. GBGB.. */
606+ /* 12bit raw bayer packed, 6 bytes for every 4 pixels */
607+#define V4L2_PIX_FMT_SBGGR12P v4l2_fourcc('p', 'B', 'C', 'C')
608+#define V4L2_PIX_FMT_SGBRG12P v4l2_fourcc('p', 'G', 'C', 'C')
609+#define V4L2_PIX_FMT_SGRBG12P v4l2_fourcc('p', 'g', 'C', 'C')
610+#define V4L2_PIX_FMT_SRGGB12P v4l2_fourcc('p', 'R', 'C', 'C')
606611 #define V4L2_PIX_FMT_SBGGR16 v4l2_fourcc('B', 'Y', 'R', '2') /* 16 BGBG.. GRGR.. */
607612 #define V4L2_PIX_FMT_SGBRG16 v4l2_fourcc('G', 'B', '1', '6') /* 16 GBGB.. RGRG.. */
608613 #define V4L2_PIX_FMT_SGRBG16 v4l2_fourcc('G', 'R', '1', '6') /* 16 GRGR.. BGBG.. */