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
895 *cec_version = msg->msg[2];895 *cec_version = msg->msg[2];
896 *all_device_types = msg->msg[3];896 *all_device_types = msg->msg[3];
897 *rc_profile = p;897 *rc_profile = p;
898 *dev_features = NULL;
898 while (p < &msg->msg[14] && (*p & CEC_OP_FEAT_EXT))899 while (p < &msg->msg[14] && (*p & CEC_OP_FEAT_EXT))
899 p++;900 p++;
900 if (!(*p & CEC_OP_FEAT_EXT)) {901 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
318#define CEC_MODE_FOLLOWER (0x1 << 4)318#define CEC_MODE_FOLLOWER (0x1 << 4)
319#define CEC_MODE_EXCL_FOLLOWER (0x2 << 4)319#define CEC_MODE_EXCL_FOLLOWER (0x2 << 4)
320#define CEC_MODE_EXCL_FOLLOWER_PASSTHRU (0x3 << 4)320#define CEC_MODE_EXCL_FOLLOWER_PASSTHRU (0x3 << 4)
321#define CEC_MODE_MONITOR_PIN (0xd << 4)
321#define CEC_MODE_MONITOR (0xe << 4)322#define CEC_MODE_MONITOR (0xe << 4)
322#define CEC_MODE_MONITOR_ALL (0xf << 4)323#define CEC_MODE_MONITOR_ALL (0xf << 4)
323#define CEC_MODE_FOLLOWER_MSK 0xf0324#define CEC_MODE_FOLLOWER_MSK 0xf0
@@ -338,6 +339,8 @@ static inline int cec_is_unconfigured(__u16 log_addr_mask) · 14 unmodified lines
338#define CEC_CAP_MONITOR_ALL (1 << 5)339#define CEC_CAP_MONITOR_ALL (1 << 5)
339/* Hardware can use CEC only if the HDMI HPD pin is high. */340/* Hardware can use CEC only if the HDMI HPD pin is high. */
340#define CEC_CAP_NEEDS_HPD (1 << 6)341#define CEC_CAP_NEEDS_HPD (1 << 6)
342/* Hardware can monitor CEC pin transitions */
343#define CEC_CAP_MONITOR_PIN (1 << 7)
341 344
342/**345/**
343 * struct cec_caps - CEC capabilities structure.346 * struct cec_caps - CEC capabilities structure.
@@ -405,8 +408,11 @@ struct cec_log_addrs { · 61 unmodified lines
405 * didn't empty the message queue in time408 * didn't empty the message queue in time
406 */409 */
407#define CEC_EVENT_LOST_MSGS 2410#define CEC_EVENT_LOST_MSGS 2
411#define CEC_EVENT_PIN_CEC_LOW 3
412#define CEC_EVENT_PIN_CEC_HIGH 4
408 413
409#define CEC_EVENT_FL_INITIAL_STATE (1 << 0)414#define CEC_EVENT_FL_INITIAL_STATE (1 << 0)
415#define CEC_EVENT_FL_DROPPED_EVENTS (1 << 1)
410 416
411/**417/**
412 * struct cec_event_state_change - used when the CEC adapter changes state.418 * struct cec_event_state_change - used when the CEC adapter changes state.
@@ -419,7 +425,7 @@ struct cec_event_state_change { · 6 unmodified lines
419};425};
420 426
421/**427/**
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.
423 * @lost_msgs: how many messages were lost.429 * @lost_msgs: how many messages were lost.
424 */430 */
425struct cec_event_lost_msgs {431struct cec_event_lost_msgs {
include/uapi/linux/dvb/ca.h+106−42
@@ -24,67 +24,131 @@ · 23 unmodified lines
24#ifndef _DVBCA_H_24#ifndef _DVBCA_H_
25#define _DVBCA_H_25#define _DVBCA_H_
26 26
27/* slot interface types and info */27/**
28 28 * struct ca_slot_info - CA slot interface types and info.
29typedef struct ca_slot_info {29 *
30 int num; /* slot number */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 */
31 49
32 int type; /* CA interface this slot supports */50struct ca_slot_info {
33#define CA_CI 1 /* CI high level interface */51 int num;
34#define CA_CI_LINK 2 /* CI link layer level interface */52 int type;
35#define CA_CI_PHYS 4 /* CI physical layer level interface */53#define CA_CI 1
36#define CA_DESCR 8 /* built-in descrambler */54#define CA_CI_LINK 2
37#define CA_SC 128 /* simple smart card interface */55#define CA_CI_PHYS 4
56#define CA_DESCR 8
57#define CA_SC 128
38 58
39 unsigned int flags;59 unsigned int flags;
40#define CA_CI_MODULE_PRESENT 1 /* module (or card) inserted */60#define CA_CI_MODULE_PRESENT 1
41#define CA_CI_MODULE_READY 261#define CA_CI_MODULE_READY 2
42} ca_slot_info_t;62};
43
44 63
45/* descrambler types and info */
46 64
47typedef struct ca_descr_info {65/**
48 unsigned int num; /* number of available descramblers (keys) */66 * struct ca_descr_info - descrambler types and info.
49 unsigned int type; /* type of supported scrambling system */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 */
79struct ca_descr_info {
80 unsigned int num;
81 unsigned int type;
50#define CA_ECD 182#define CA_ECD 1
51#define CA_NDS 283#define CA_NDS 2
52#define CA_DSS 484#define CA_DSS 4
53} ca_descr_info_t;85};
54 86
55typedef struct ca_caps {87/**
56 unsigned int slot_num; /* total number of CA card and module slots */88 * struct ca_caps - CA slot interface capabilities.
57 unsigned int slot_type; /* OR of all supported types */89 *
58 unsigned int descr_num; /* total number of descrambler slots (keys) */90 * @slot_num: total number of CA card and module slots.
59 unsigned int descr_type; /* OR of all supported types */91 * @slot_type: bitmap with all supported types as defined at
60} ca_caps_t;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 */
97struct ca_caps {
98 unsigned int slot_num;
99 unsigned int slot_type;
100 unsigned int descr_num;
101 unsigned int descr_type;
102};
61 103
62/* a message to/from a CI-CAM */104/**
63typedef struct ca_msg {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 */
114struct ca_msg {
64 unsigned int index;115 unsigned int index;
65 unsigned int type;116 unsigned int type;
66 unsigned int length;117 unsigned int length;
67 unsigned char msg[256];118 unsigned char msg[256];
68} ca_msg_t;119};
69 120
70typedef 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 */
128struct ca_descr {
71 unsigned int index;129 unsigned int index;
72 unsigned int parity; /* 0 == even, 1 == odd */130 unsigned int parity;
73 unsigned char cw[8];131 unsigned char cw[8];
74} ca_descr_t;132};
75
76typedef struct ca_pid {
77 unsigned int pid;
78 int index; /* -1 == disable*/
79} ca_pid_t;
80 133
81#define CA_RESET _IO('o', 128)134#define CA_RESET _IO('o', 128)
82#define CA_GET_CAP _IOR('o', 129, ca_caps_t)135#define CA_GET_CAP _IOR('o', 129, struct ca_caps)
83#define CA_GET_SLOT_INFO _IOR('o', 130, ca_slot_info_t)136#define CA_GET_SLOT_INFO _IOR('o', 130, struct ca_slot_info)
84#define CA_GET_DESCR_INFO _IOR('o', 131, ca_descr_info_t)137#define CA_GET_DESCR_INFO _IOR('o', 131, struct ca_descr_info)
85#define CA_GET_MSG _IOR('o', 132, ca_msg_t)138#define CA_GET_MSG _IOR('o', 132, struct ca_msg)
86#define CA_SEND_MSG _IOW('o', 133, ca_msg_t)139#define CA_SEND_MSG _IOW('o', 133, struct ca_msg)
87#define CA_SET_DESCR _IOW('o', 134, ca_descr_t)140#define CA_SET_DESCR _IOW('o', 134, struct ca_descr)
88#define CA_SET_PID _IOW('o', 135, ca_pid_t)141
142#if !defined(__KERNEL__)
143
144/* This is needed for legacy userspace support */
145typedef struct ca_slot_info ca_slot_info_t;
146typedef struct ca_descr_info ca_descr_info_t;
147typedef struct ca_caps ca_caps_t;
148typedef struct ca_msg ca_msg_t;
149typedef struct ca_descr ca_descr_t;
150
151#endif
152
89 153
90#endif154#endif
include/uapi/linux/dvb/dmx.h+136−58
@@ -32,28 +32,74 @@ · 31 unmodified lines
32 32
33#define DMX_FILTER_SIZE 1633#define DMX_FILTER_SIZE 16
34 34
35enum dmx_output35/**
36{36 * enum dmx_output - Output for the demux.
37 DMX_OUT_DECODER, /* Streaming directly to decoder. */37 *
38 DMX_OUT_TAP, /* Output going to a memory buffer */38 * @DMX_OUT_DECODER:
39 /* (to be retrieved via the read command).*/39 * Streaming directly to decoder.
40 DMX_OUT_TS_TAP, /* Output multiplexed into a new TS */40 * @DMX_OUT_TAP:
41 /* (to be retrieved by reading from the */41 * Output going to a memory buffer (to be retrieved via the read command).
42 /* logical DVR device). */42 * Delivers the stream output to the demux device on which the ioctl
43 DMX_OUT_TSDEMUX_TAP /* Like TS_TAP but retrieved from the DMX device */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 */
52enum dmx_output {
53 DMX_OUT_DECODER,
54 DMX_OUT_TAP,
55 DMX_OUT_TS_TAP,
56 DMX_OUT_TSDEMUX_TAP
44};57};
45 58
46typedef enum dmx_output dmx_output_t;
47 59
48typedef enum dmx_input60/**
49{61 * enum dmx_input - Input from the demux.
50 DMX_IN_FRONTEND, /* Input from a front-end device. */62 *
51 DMX_IN_DVR /* Input from the logical DVR device. */63 * @DMX_IN_FRONTEND: Input from a front-end device.
52} dmx_input_t;64 * @DMX_IN_DVR: Input from the logical DVR device.
65 */
66enum dmx_input {
67 DMX_IN_FRONTEND,
68 DMX_IN_DVR
69};
53 70
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 */
54 101
55typedef enum dmx_ts_pes102enum dmx_ts_pes {
56{
57 DMX_PES_AUDIO0,103 DMX_PES_AUDIO0,
58 DMX_PES_VIDEO0,104 DMX_PES_VIDEO0,
59 DMX_PES_TELETEXT0,105 DMX_PES_TELETEXT0,
@@ -79,7 +125,7 @@ typedef enum dmx_ts_pes · 19 unmodified lines
79 DMX_PES_PCR3,125 DMX_PES_PCR3,
80 126
81 DMX_PES_OTHER127 DMX_PES_OTHER
82} dmx_pes_type_t;128};
83 129
84#define DMX_PES_AUDIO DMX_PES_AUDIO0130#define DMX_PES_AUDIO DMX_PES_AUDIO0
85#define DMX_PES_VIDEO DMX_PES_VIDEO0131#define DMX_PES_VIDEO DMX_PES_VIDEO0
@@ -88,56 +134,80 @@ typedef enum dmx_ts_pes · 2 unmodified lines
88#define DMX_PES_PCR DMX_PES_PCR0134#define DMX_PES_PCR DMX_PES_PCR0
89 135
90 136
91typedef struct dmx_filter137
92{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 */
148struct dmx_filter {
93 __u8 filter[DMX_FILTER_SIZE];149 __u8 filter[DMX_FILTER_SIZE];
94 __u8 mask[DMX_FILTER_SIZE];150 __u8 mask[DMX_FILTER_SIZE];
95 __u8 mode[DMX_FILTER_SIZE];151 __u8 mode[DMX_FILTER_SIZE];
96} dmx_filter_t;152};
97
98 153
99struct dmx_sct_filter_params154/**
100{155 * struct dmx_sct_filter_params - Specifies a section filter.
101 __u16 pid;156 *
102 dmx_filter_t filter;157 * @pid: PID to be filtered.
103 __u32 timeout;158 * @filter: section header filter, as defined by &struct dmx_filter.
104 __u32 flags;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 */
172struct dmx_sct_filter_params {
173 __u16 pid;
174 struct dmx_filter filter;
175 __u32 timeout;
176 __u32 flags;
105#define DMX_CHECK_CRC 1177#define DMX_CHECK_CRC 1
106#define DMX_ONESHOT 2178#define DMX_ONESHOT 2
107#define DMX_IMMEDIATE_START 4179#define DMX_IMMEDIATE_START 4
108#define DMX_KERNEL_CLIENT 0x8000
109};180};
110 181
111 182/**
112struct dmx_pes_filter_params183 * struct dmx_pes_filter_params - Specifies Packetized Elementary Stream (PES)
113{184 * filter parameters.
114 __u16 pid;185 *
115 dmx_input_t input;186 * @pid: PID to be filtered.
116 dmx_output_t output;187 * @input: Demux input, as specified by &enum dmx_input.
117 dmx_pes_type_t pes_type;188 * @output: Demux output, as specified by &enum dmx_output.
118 __u32 flags;189 * @pes_type: Type of the pes filter, as specified by &enum dmx_pes_type.
190 * @flags: Demux PES flags.
191 */
192struct 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;
119};198};
120 199
121typedef struct dmx_caps {200/**
122 __u32 caps;201 * struct dmx_stc - Stores System Time Counter (STC) information.
123 int num_decoders;202 *
124} dmx_caps_t;203 * @num: input data: number of the STC, from 0 to N.
125 204 * @base: output: divisor for STC to get 90 kHz clock.
126typedef enum dmx_source {205 * @stc: output: stc in @base * 90 kHz units.
127 DMX_SOURCE_FRONT0 = 0,206 */
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
137struct dmx_stc {207struct dmx_stc {
138 unsigned int num; /* input : which STC? 0..N */208 unsigned int num;
139 unsigned int base; /* output: divisor for stc to get 90 kHz clock */209 unsigned int base;
140 __u64 stc; /* output: stc in 'base'*90 kHz units */210 __u64 stc;
141};211};
142 212
143#define DMX_START _IO('o', 41)213#define DMX_START _IO('o', 41)
@@ -146,10 +216,18 @@ struct dmx_stc { · 2 unmodified lines
146#define DMX_SET_PES_FILTER _IOW('o', 44, struct dmx_pes_filter_params)216#define DMX_SET_PES_FILTER _IOW('o', 44, struct dmx_pes_filter_params)
147#define DMX_SET_BUFFER_SIZE _IO('o', 45)217#define DMX_SET_BUFFER_SIZE _IO('o', 45)
148#define DMX_GET_PES_PIDS _IOR('o', 47, __u16[5])218#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)
151#define DMX_GET_STC _IOWR('o', 50, struct dmx_stc)219#define DMX_GET_STC _IOWR('o', 50, struct dmx_stc)
152#define DMX_ADD_PID _IOW('o', 51, __u16)220#define DMX_ADD_PID _IOW('o', 51, __u16)
153#define DMX_REMOVE_PID _IOW('o', 52, __u16)221#define DMX_REMOVE_PID _IOW('o', 52, __u16)
154 222
223#if !defined(__KERNEL__)
224
225/* This is needed for legacy userspace support */
226typedef enum dmx_output dmx_output_t;
227typedef enum dmx_input dmx_input_t;
228typedef enum dmx_ts_pes dmx_pes_type_t;
229typedef struct dmx_filter dmx_filter_t;
230
231#endif
232
155#endif /* _UAPI_DVBDMX_H_ */233#endif /* _UAPI_DVBDMX_H_ */
include/uapi/linux/dvb/frontend.h+502−96
@@ -28,13 +28,46 @@ · 27 unmodified lines
28 28
29#include <linux/types.h>29#include <linux/types.h>
30 30
31enum fe_type {31/**
32 FE_QPSK,32 * enum fe_caps - Frontend capabilities
33 FE_QAM,33 *
34 FE_OFDM,34 * @FE_IS_STUPID: There's something wrong at the
35 FE_ATSC35 * frontend, and it can't report its
36};36 * capabilities.
37 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 */
38enum fe_caps {71enum fe_caps {
39 FE_IS_STUPID = 0,72 FE_IS_STUPID = 0,
40 FE_CAN_INVERSION_AUTO = 0x1,73 FE_CAN_INVERSION_AUTO = 0x1,
@@ -60,15 +93,55 @@ enum fe_caps { · 19 unmodified lines
60 FE_CAN_HIERARCHY_AUTO = 0x100000,93 FE_CAN_HIERARCHY_AUTO = 0x100000,
61 FE_CAN_8VSB = 0x200000,94 FE_CAN_8VSB = 0x200000,
62 FE_CAN_16VSB = 0x400000,95 FE_CAN_16VSB = 0x400000,
63 FE_HAS_EXTENDED_CAPS = 0x800000, /* We need more bitspace for newer APIs, indicate this. */96 FE_HAS_EXTENDED_CAPS = 0x800000,
64 FE_CAN_MULTISTREAM = 0x4000000, /* frontend supports multistream filtering */97 FE_CAN_MULTISTREAM = 0x4000000,
65 FE_CAN_TURBO_FEC = 0x8000000, /* frontend supports "turbo fec modulation" */98 FE_CAN_TURBO_FEC = 0x8000000,
66 FE_CAN_2G_MODULATION = 0x10000000, /* frontend supports "2nd generation modulation" (DVB-S2) */99 FE_CAN_2G_MODULATION = 0x10000000,
67 FE_NEEDS_BENDING = 0x20000000, /* not supported anymore, don't use (frontend requires frequency bending) */100 FE_NEEDS_BENDING = 0x20000000,
68 FE_CAN_RECOVER = 0x40000000, /* frontend can recover from a cable unplug automatically */101 FE_CAN_RECOVER = 0x40000000,
69 FE_CAN_MUTE_TS = 0x80000000 /* frontend can stop spurious TS data output */102 FE_CAN_MUTE_TS = 0x80000000
103};
104
105/*
106 * DEPRECATED: Should be kept just due to backward compatibility.
107 */
108enum fe_type {
109 FE_QPSK,
110 FE_QAM,
111 FE_OFDM,
112 FE_ATSC
70};113};
71 114
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 */
72struct dvb_frontend_info {145struct dvb_frontend_info {
73 char name[128];146 char name[128];
74 enum fe_type type; /* DEPRECATED. Use DTV_ENUM_DELSYS instead */147 enum fe_type type; /* DEPRECATED. Use DTV_ENUM_DELSYS instead */
@@ -78,55 +151,105 @@ struct dvb_frontend_info { · 3 unmodified lines
78 __u32 frequency_tolerance;151 __u32 frequency_tolerance;
79 __u32 symbol_rate_min;152 __u32 symbol_rate_min;
80 __u32 symbol_rate_max;153 __u32 symbol_rate_max;
81 __u32 symbol_rate_tolerance; /* ppm */154 __u32 symbol_rate_tolerance;
82 __u32 notifier_delay; /* DEPRECATED */155 __u32 notifier_delay; /* DEPRECATED */
83 enum fe_caps caps;156 enum fe_caps caps;
84};157};
85 158
86
87/**159/**
88 * Check out the DiSEqC bus spec available on http://www.eutelsat.org/ for160 * struct dvb_diseqc_master_cmd - DiSEqC master command
89 * the meaning of this struct...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.
90 */171 */
91struct dvb_diseqc_master_cmd {172struct dvb_diseqc_master_cmd {
92 __u8 msg [6]; /* { framing, address, command, data [3] } */173 __u8 msg[6];
93 __u8 msg_len; /* valid values are 3...6 */174 __u8 msg_len;
94};175};
95 176
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 */
96struct dvb_diseqc_slave_reply {194struct dvb_diseqc_slave_reply {
97 __u8 msg [4]; /* { framing, data [3] } */195 __u8 msg[4];
98 __u8 msg_len; /* valid values are 0...4, 0 means no msg */196 __u8 msg_len;
99 int timeout; /* return from ioctl after timeout ms with */197 int timeout;
100}; /* errorcode when no message was received */198};
101 199
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 */
102enum fe_sec_voltage {207enum fe_sec_voltage {
103 SEC_VOLTAGE_13,208 SEC_VOLTAGE_13,
104 SEC_VOLTAGE_18,209 SEC_VOLTAGE_18,
105 SEC_VOLTAGE_OFF210 SEC_VOLTAGE_OFF
106};211};
107 212
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 */
108enum fe_sec_tone_mode {219enum fe_sec_tone_mode {
109 SEC_TONE_ON,220 SEC_TONE_ON,
110 SEC_TONE_OFF221 SEC_TONE_OFF
111};222};
112 223
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 */
113enum fe_sec_mini_cmd {232enum fe_sec_mini_cmd {
114 SEC_MINI_A,233 SEC_MINI_A,
115 SEC_MINI_B234 SEC_MINI_B
116};235};
117 236
118/**237/**
119 * enum fe_status - enumerates the possible frontend status238 * enum fe_status - Enumerates the possible frontend status.
120 * @FE_HAS_SIGNAL: found something above the noise level239 * @FE_NONE: The frontend doesn't have any kind of lock.
121 * @FE_HAS_CARRIER: found a DVB signal240 * That's the initial frontend status
122 * @FE_HAS_VITERBI: FEC is stable241 * @FE_HAS_SIGNAL: Has found something above the noise level.
123 * @FE_HAS_SYNC: found sync bytes242 * @FE_HAS_CARRIER: Has found a signal.
124 * @FE_HAS_LOCK: everything's working243 * @FE_HAS_VITERBI: FEC inner coding (Viterbi, LDPC or other inner code).
125 * @FE_TIMEDOUT: no lock within the last ~2 seconds244 * is stable.
126 * @FE_REINIT: frontend was reinitialized, application is recommended245 * @FE_HAS_SYNC: Synchronization bytes was found.
127 * to reset DiSEqC, tone and parameters246 * @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.
128 */250 */
129enum fe_status {251enum fe_status {
252 FE_NONE = 0x00,
130 FE_HAS_SIGNAL = 0x01,253 FE_HAS_SIGNAL = 0x01,
131 FE_HAS_CARRIER = 0x02,254 FE_HAS_CARRIER = 0x02,
132 FE_HAS_VITERBI = 0x04,255 FE_HAS_VITERBI = 0x04,
@@ -136,12 +259,45 @@ enum fe_status { · 3 unmodified lines
136 FE_REINIT = 0x40,259 FE_REINIT = 0x40,
137};260};
138 261
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 */
139enum fe_spectral_inversion {275enum fe_spectral_inversion {
140 INVERSION_OFF,276 INVERSION_OFF,
141 INVERSION_ON,277 INVERSION_ON,
142 INVERSION_AUTO278 INVERSION_AUTO
143};279};
144 280
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 */
145enum fe_code_rate {301enum fe_code_rate {
146 FEC_NONE = 0,302 FEC_NONE = 0,
147 FEC_1_2,303 FEC_1_2,
@@ -158,6 +314,26 @@ enum fe_code_rate { · 10 unmodified lines
158 FEC_2_5,314 FEC_2_5,
159};315};
160 316
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 */
161enum fe_modulation {337enum fe_modulation {
162 QPSK,338 QPSK,
163 QAM_16,339 QAM_16,
@@ -175,6 +351,32 @@ enum fe_modulation { · 11 unmodified lines
175 QAM_4_NR,351 QAM_4_NR,
176};352};
177 353
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 */
178enum fe_transmit_mode {380enum fe_transmit_mode {
179 TRANSMISSION_MODE_2K,381 TRANSMISSION_MODE_2K,
180 TRANSMISSION_MODE_8K,382 TRANSMISSION_MODE_8K,
@@ -187,6 +389,23 @@ enum fe_transmit_mode { · 6 unmodified lines
187 TRANSMISSION_MODE_C3780,389 TRANSMISSION_MODE_C3780,
188};390};
189 391
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 */
190enum fe_guard_interval {409enum fe_guard_interval {
191 GUARD_INTERVAL_1_32,410 GUARD_INTERVAL_1_32,
192 GUARD_INTERVAL_1_16,411 GUARD_INTERVAL_1_16,
@@ -201,6 +420,16 @@ enum fe_guard_interval { · 8 unmodified lines
201 GUARD_INTERVAL_PN945,420 GUARD_INTERVAL_PN945,
202};421};
203 422
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 */
204enum fe_hierarchy {433enum fe_hierarchy {
205 HIERARCHY_NONE,434 HIERARCHY_NONE,
206 HIERARCHY_1,435 HIERARCHY_1,
@@ -209,6 +438,15 @@ enum fe_hierarchy { · 2 unmodified lines
209 HIERARCHY_AUTO438 HIERARCHY_AUTO
210};439};
211 440
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 */
212enum fe_interleaving {450enum fe_interleaving {
213 INTERLEAVING_NONE,451 INTERLEAVING_NONE,
214 INTERLEAVING_AUTO,452 INTERLEAVING_AUTO,
@@ -216,7 +454,8 @@ enum fe_interleaving { · 1 unmodified line
216 INTERLEAVING_720,454 INTERLEAVING_720,
217};455};
218 456
219/* S2API Commands */457/* DVBv5 property Commands */
458
220#define DTV_UNDEFINED 0459#define DTV_UNDEFINED 0
221#define DTV_TUNE 1460#define DTV_TUNE 1
222#define DTV_CLEAR 2461#define DTV_CLEAR 2
@@ -309,19 +548,79 @@ enum fe_interleaving { · 86 unmodified lines
309 548
310#define DTV_MAX_COMMAND DTV_STAT_TOTAL_BLOCK_COUNT549#define DTV_MAX_COMMAND DTV_STAT_TOTAL_BLOCK_COUNT
311 550
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 */
312enum fe_pilot {558enum fe_pilot {
313 PILOT_ON,559 PILOT_ON,
314 PILOT_OFF,560 PILOT_OFF,
315 PILOT_AUTO,561 PILOT_AUTO,
316};562};
317 563
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 */
318enum fe_rolloff {575enum fe_rolloff {
319 ROLLOFF_35, /* Implied value in DVB-S, default for DVB-S2 */576 ROLLOFF_35,
320 ROLLOFF_20,577 ROLLOFF_20,
321 ROLLOFF_25,578 ROLLOFF_25,
322 ROLLOFF_AUTO,579 ROLLOFF_AUTO,
323};580};
324 581
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 */
325enum fe_delivery_system {624enum fe_delivery_system {
326 SYS_UNDEFINED,625 SYS_UNDEFINED,
327 SYS_DVBC_ANNEX_A,626 SYS_DVBC_ANNEX_A,
@@ -344,35 +643,85 @@ enum fe_delivery_system { · 16 unmodified lines
344 SYS_DVBC_ANNEX_C,643 SYS_DVBC_ANNEX_C,
345};644};
346 645
347/* backward compatibility */646/* backward compatibility definitions for delivery systems */
348#define SYS_DVBC_ANNEX_AC SYS_DVBC_ANNEX_A647#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 */
350 649
351/* ATSC-MH */650/* ATSC-MH specific parameters */
352 651
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 */
353enum atscmh_sccc_block_mode {665enum atscmh_sccc_block_mode {
354 ATSCMH_SCCC_BLK_SEP = 0,666 ATSCMH_SCCC_BLK_SEP = 0,
355 ATSCMH_SCCC_BLK_COMB = 1,667 ATSCMH_SCCC_BLK_COMB = 1,
356 ATSCMH_SCCC_BLK_RES = 2,668 ATSCMH_SCCC_BLK_RES = 2,
357};669};
358 670
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 */
359enum atscmh_sccc_code_mode {682enum atscmh_sccc_code_mode {
360 ATSCMH_SCCC_CODE_HLF = 0,683 ATSCMH_SCCC_CODE_HLF = 0,
361 ATSCMH_SCCC_CODE_QTR = 1,684 ATSCMH_SCCC_CODE_QTR = 1,
362 ATSCMH_SCCC_CODE_RES = 2,685 ATSCMH_SCCC_CODE_RES = 2,
363};686};
364 687
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 */
365enum atscmh_rs_frame_ensemble {694enum atscmh_rs_frame_ensemble {
366 ATSCMH_RSFRAME_ENS_PRI = 0,695 ATSCMH_RSFRAME_ENS_PRI = 0,
367 ATSCMH_RSFRAME_ENS_SEC = 1,696 ATSCMH_RSFRAME_ENS_SEC = 1,
368};697};
369 698
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 */
370enum atscmh_rs_frame_mode {712enum atscmh_rs_frame_mode {
371 ATSCMH_RSFRAME_PRI_ONLY = 0,713 ATSCMH_RSFRAME_PRI_ONLY = 0,
372 ATSCMH_RSFRAME_PRI_SEC = 1,714 ATSCMH_RSFRAME_PRI_SEC = 1,
373 ATSCMH_RSFRAME_RES = 2,715 ATSCMH_RSFRAME_RES = 2,
374};716};
375 717
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 */
376enum atscmh_rs_code_mode {725enum atscmh_rs_code_mode {
377 ATSCMH_RSCODE_211_187 = 0,726 ATSCMH_RSCODE_211_187 = 0,
378 ATSCMH_RSCODE_223_187 = 1,727 ATSCMH_RSCODE_223_187 = 1,
@@ -383,28 +732,18 @@ enum atscmh_rs_code_mode { · 4 unmodified lines
383#define NO_STREAM_ID_FILTER (~0U)732#define NO_STREAM_ID_FILTER (~0U)
384#define LNA_AUTO (~0U)733#define LNA_AUTO (~0U)
385 734
386struct 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
397/**735/**
398 * Scale types for the quality parameters.736 * enum fecap_scale_params - scale types for the quality parameters.
737 *
399 * @FE_SCALE_NOT_AVAILABLE: That QoS measure is not available. That738 * @FE_SCALE_NOT_AVAILABLE: That QoS measure is not available. That
400 * could indicate a temporary or a permanent739 * could indicate a temporary or a permanent
401 * condition.740 * condition.
402 * @FE_SCALE_DECIBEL: The scale is measured in 0.001 dB steps, typically741 * @FE_SCALE_DECIBEL: The scale is measured in 0.001 dB steps, typically
403 * used on signal measures.742 * used on signal measures.
404 * @FE_SCALE_RELATIVE: The scale is a relative percentual measure,743 * @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%).
406 * @FE_SCALE_COUNTER: The scale counts the occurrence of an event, like745 * @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.
408 */747 */
409enum fecap_scale_params {748enum fecap_scale_params {
410 FE_SCALE_NOT_AVAILABLE = 0,749 FE_SCALE_NOT_AVAILABLE = 0,
@@ -416,24 +755,38 @@ enum fecap_scale_params { · 5 unmodified lines
416/**755/**
417 * struct dtv_stats - Used for reading a DTV status property756 * struct dtv_stats - Used for reading a DTV status property
418 *757 *
419 * @value: value of the measure. Should range from 0 to 0xffff;
420 * @scale: Filled with enum fecap_scale_params - the scale758 * @scale: Filled with enum fecap_scale_params - the scale
421 * in usage for that parameter759 * in usage for that parameter
422 *760 *
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 *
423 * For most delivery systems, this will return a single value for each771 * For most delivery systems, this will return a single value for each
424 * parameter.772 * parameter.
773 *
425 * It should be noticed, however, that new OFDM delivery systems like774 * It should be noticed, however, that new OFDM delivery systems like
426 * ISDB can use different modulation types for each group of carriers.775 * ISDB can use different modulation types for each group of carriers.
427 * On such standards, up to 8 groups of statistics can be provided, one776 * On such standards, up to 8 groups of statistics can be provided, one
428 * for each carrier group (called "layer" on ISDB).777 * for each carrier group (called "layer" on ISDB).
778 *
429 * In order to be consistent with other delivery systems, the first779 * In order to be consistent with other delivery systems, the first
430 * value refers to the entire set of carriers ("global").780 * value refers to the entire set of carriers ("global").
431 * dtv_status:scale should use the value FE_SCALE_NOT_AVAILABLE when781 *
782 * @scale should use the value %FE_SCALE_NOT_AVAILABLE when
432 * the value for the entire group of carriers or from one specific layer783 * the value for the entire group of carriers or from one specific layer
433 * is not provided by the hardware.784 * is not provided by the hardware.
434 * st.len should be filled with the latest filled status + 1.
435 *785 *
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 *
437 * u.st.stat.svalue[0] = global statistics;790 * u.st.stat.svalue[0] = global statistics;
438 * u.st.stat.scale[0] = FE_SCALE_DECIBEL;791 * u.st.stat.scale[0] = FE_SCALE_DECIBEL;
439 * u.st.stat.value[1] = layer A statistics;792 * u.st.stat.value[1] = layer A statistics;
@@ -455,11 +808,39 @@ struct dtv_stats { · 15 unmodified lines
455 808
456#define MAX_DTV_STATS 4809#define MAX_DTV_STATS 4
457 810
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 */
458struct dtv_fe_stats {822struct dtv_fe_stats {
459 __u8 len;823 __u8 len;
460 struct dtv_stats stat[MAX_DTV_STATS];824 struct dtv_stats stat[MAX_DTV_STATS];
461} __attribute__ ((packed));825} __attribute__ ((packed));
462 826
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 */
463struct dtv_property {844struct dtv_property {
464 __u32 cmd;845 __u32 cmd;
465 __u32 reserved[3];846 __u32 reserved[3];
@@ -479,17 +860,70 @@ struct dtv_property { · 13 unmodified lines
479/* num of properties cannot exceed DTV_IOCTL_MAX_MSGS per ioctl */860/* num of properties cannot exceed DTV_IOCTL_MAX_MSGS per ioctl */
480#define DTV_IOCTL_MAX_MSGS 64861#define DTV_IOCTL_MAX_MSGS 64
481 862
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 */
482struct dtv_properties {869struct dtv_properties {
483 __u32 num;870 __u32 num;
484 struct dtv_property *props;871 struct dtv_property *props;
485};872};
486 873
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 */
488 925
489/*926/*
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.
493 */927 */
494 928
495enum fe_bandwidth {929enum fe_bandwidth {
@@ -502,7 +936,7 @@ enum fe_bandwidth { · 6 unmodified lines
502 BANDWIDTH_1_712_MHZ,936 BANDWIDTH_1_712_MHZ,
503};937};
504 938
505/* This is needed for legacy userspace support */939/* This is kept for legacy userspace support */
506typedef enum fe_sec_voltage fe_sec_voltage_t;940typedef enum fe_sec_voltage fe_sec_voltage_t;
507typedef enum fe_caps fe_caps_t;941typedef enum fe_caps fe_caps_t;
508typedef enum fe_type fe_type_t;942typedef enum fe_type fe_type_t;
@@ -520,6 +954,8 @@ typedef enum fe_pilot fe_pilot_t; · 11 unmodified lines
520typedef enum fe_rolloff fe_rolloff_t;954typedef enum fe_rolloff fe_rolloff_t;
521typedef enum fe_delivery_system fe_delivery_system_t;955typedef enum fe_delivery_system fe_delivery_system_t;
522 956
957/* DVBv3 structs */
958
523struct dvb_qpsk_parameters {959struct dvb_qpsk_parameters {
524 __u32 symbol_rate; /* symbol rate in Symbols per second */960 __u32 symbol_rate; /* symbol rate in Symbols per second */
525 fe_code_rate_t fec_inner; /* forward error correction (see above) */961 fe_code_rate_t fec_inner; /* forward error correction (see above) */
@@ -546,8 +982,8 @@ struct dvb_ofdm_parameters { · 20 unmodified lines
546};982};
547 983
548struct dvb_frontend_parameters {984struct dvb_frontend_parameters {
549 __u32 frequency; /* (absolute) frequency in Hz for DVB-C/DVB-T/ATSC */985 __u32 frequency; /* (absolute) frequency in Hz for DVB-C/DVB-T/ATSC */
550 /* intermediate frequency in kHz for DVB-S */986 /* intermediate frequency in kHz for DVB-S */
551 fe_spectral_inversion_t inversion;987 fe_spectral_inversion_t inversion;
552 union {988 union {
553 struct dvb_qpsk_parameters qpsk; /* DVB-S */989 struct dvb_qpsk_parameters qpsk; /* DVB-S */
@@ -561,42 +997,12 @@ struct dvb_frontend_event { · 7 unmodified lines
561 fe_status_t status;997 fe_status_t status;
562 struct dvb_frontend_parameters parameters;998 struct dvb_frontend_parameters parameters;
563};999};
564#endif
565 1000
566#define FE_SET_PROPERTY _IOW('o', 82, struct dtv_properties)1001/* DVBv3 API calls */
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)
594 1002
595#define FE_SET_FRONTEND _IOW('o', 76, struct dvb_frontend_parameters)1003#define FE_SET_FRONTEND _IOW('o', 76, struct dvb_frontend_parameters)
596#define FE_GET_FRONTEND _IOR('o', 77, struct dvb_frontend_parameters)1004#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)
599 1005
600#define FE_DISHNETWORK_SEND_LEGACY_CMD _IO('o', 80) /* unsigned int */1006#endif
601 1007
602#endif /*_DVBFRONTEND_H_*/1008#endif /*_DVBFRONTEND_H_*/
include/uapi/linux/dvb/net.h+15−0
@@ -26,6 +26,21 @@ · 25 unmodified lines
26 26
27#include <linux/types.h>27#include <linux/types.h>
28 28
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 */
29struct dvb_net_if {44struct dvb_net_if {
30 __u16 pid;45 __u16 pid;
31 __u16 if_num;46 __u16 if_num;
include/uapi/linux/media.h+3−2
@@ -30,8 +30,6 @@ · 29 unmodified lines
30#include <linux/types.h>30#include <linux/types.h>
31#include <linux/version.h>31#include <linux/version.h>
32 32
33#define MEDIA_API_VERSION KERNEL_VERSION(0, 1, 0)
34
35struct media_device_info {33struct media_device_info {
36 char driver[16];34 char driver[16];
37 char model[32];35 char model[32];
@@ -187,6 +185,9 @@ struct media_device_info { · 149 unmodified lines
187#define MEDIA_ENT_T_V4L2_SUBDEV_LENS MEDIA_ENT_F_LENS185#define MEDIA_ENT_T_V4L2_SUBDEV_LENS MEDIA_ENT_F_LENS
188#define MEDIA_ENT_T_V4L2_SUBDEV_DECODER MEDIA_ENT_F_ATV_DECODER186#define MEDIA_ENT_T_V4L2_SUBDEV_DECODER MEDIA_ENT_F_ATV_DECODER
189#define MEDIA_ENT_T_V4L2_SUBDEV_TUNER MEDIA_ENT_F_TUNER187#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)
190#endif191#endif
191 192
192/* Entity flags */193/* Entity flags */
include/uapi/linux/videodev2.h+5−0
@@ -603,6 +603,11 @@ struct v4l2_pix_format { · 602 unmodified lines
603#define V4L2_PIX_FMT_SGBRG12 v4l2_fourcc('G', 'B', '1', '2') /* 12 GBGB.. RGRG.. */603#define V4L2_PIX_FMT_SGBRG12 v4l2_fourcc('G', 'B', '1', '2') /* 12 GBGB.. RGRG.. */
604#define V4L2_PIX_FMT_SGRBG12 v4l2_fourcc('B', 'A', '1', '2') /* 12 GRGR.. BGBG.. */604#define V4L2_PIX_FMT_SGRBG12 v4l2_fourcc('B', 'A', '1', '2') /* 12 GRGR.. BGBG.. */
605#define V4L2_PIX_FMT_SRGGB12 v4l2_fourcc('R', 'G', '1', '2') /* 12 RGRG.. GBGB.. */605#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')
606#define V4L2_PIX_FMT_SBGGR16 v4l2_fourcc('B', 'Y', 'R', '2') /* 16 BGBG.. GRGR.. */611#define V4L2_PIX_FMT_SBGGR16 v4l2_fourcc('B', 'Y', 'R', '2') /* 16 BGBG.. GRGR.. */
607#define V4L2_PIX_FMT_SGBRG16 v4l2_fourcc('G', 'B', '1', '6') /* 16 GBGB.. RGRG.. */612#define V4L2_PIX_FMT_SGBRG16 v4l2_fourcc('G', 'B', '1', '6') /* 16 GBGB.. RGRG.. */
608#define V4L2_PIX_FMT_SGRBG16 v4l2_fourcc('G', 'R', '1', '6') /* 16 GRGR.. BGBG.. */613#define V4L2_PIX_FMT_SGRBG16 v4l2_fourcc('G', 'R', '1', '6') /* 16 GRGR.. BGBG.. */