diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-04-27 17:18:45 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-04-27 17:18:45 -0400 |
commit | aa5bc2b58e3344da57f26b62e99e13e91c9e0a94 (patch) | |
tree | c6e9ea1b3ee8af88b3a050b3fba160ea2f77e404 /include | |
parent | d868772fff6c4b881d66af8640251714e1aefa98 (diff) | |
parent | d455cf5d0db9e3eb1b204cd4a61d8c5ccfe4305f (diff) |
Merge branch 'master' of ssh://master.kernel.org/pub/scm/linux/kernel/git/mchehab/v4l-dvb
* 'master' of ssh://master.kernel.org/pub/scm/linux/kernel/git/mchehab/v4l-dvb: (184 commits)
V4L/DVB (5563): Radio-maestro.c Replace radio_ioctl to use video_ioctl2
V4L/DVB (5562): Radio-gemtek-pci.c Replace gemtek_pci_ioctl to use video_ioctl2
V4L/DVB (5560): Ivtv: fix incorrect bitwise-and for command flags.
V4L/DVB (5558): Opera: use 7-bit i2c addresses
V4L/DVB (5557): Cafe_ccic: check return value of pci_enable_device
V4L/DVB (5556): Radio-gemtek.c Replace gemtek_ioctl to use video_ioctl2
V4L/DVB (5555): Radio-aimslab.c Replace rt_ioctl to use video_ioctl2
V4L/DVB (5554): Fix: vidioc_g_parm were not zeroing the memory
V4L/DVB (5553): Replace typhoon_do_ioctl to use video_ioctl2
V4L/DVB (5552): Plan-b: Switch to refcounting PCI API
V4L/DVB (5551): Plan-b: header change
V4L/DVB (5550): Radio-sf16fmi.c Replace fmi_do_ioctl to use video_ioctl2
V4L/DVB (5549): Radio-sf16fmr2.c Replace fmr2_do_ioctl to use video_ioctl2
V4L/DVB (5548): Fix v4l2 buffer to the length
V4L/DVB (5547): Add ENUM_FRAMESIZES and ENUM_FRAMEINTERVALS ioctls
V4L/DVB (5546): Radio-terratec.c Replace tt_do_ioctl to use video_ioctl2
V4L/DVB (5545): Saa7146: Release capture buffers on device close
V4L/DVB (5544): Budget-av: Make inversion setting configurable, add KNC ONE V1.0 card
V4L/DVB (5543): Tda10023: Add support for frontend TDA10023
V4L/DVB (5542): Budget-av: Remove polarity switching of the clock for DVB-C
...
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/dvb/audio.h | 5 | ||||
-rw-r--r-- | include/linux/dvb/version.h | 2 | ||||
-rw-r--r-- | include/linux/dvb/video.h | 62 | ||||
-rw-r--r-- | include/linux/videodev2.h | 83 | ||||
-rw-r--r-- | include/media/cx2341x.h | 6 | ||||
-rw-r--r-- | include/media/ivtv.h | 65 | ||||
-rw-r--r-- | include/media/tuner.h | 5 | ||||
-rw-r--r-- | include/media/v4l2-chip-ident.h | 149 | ||||
-rw-r--r-- | include/media/v4l2-common.h | 47 | ||||
-rw-r--r-- | include/media/v4l2-dev.h | 10 |
10 files changed, 372 insertions, 62 deletions
diff --git a/include/linux/dvb/audio.h b/include/linux/dvb/audio.h index 0874a67c6b92..89412e18f571 100644 --- a/include/linux/dvb/audio.h +++ b/include/linux/dvb/audio.h | |||
@@ -47,7 +47,9 @@ typedef enum { | |||
47 | typedef enum { | 47 | typedef enum { |
48 | AUDIO_STEREO, | 48 | AUDIO_STEREO, |
49 | AUDIO_MONO_LEFT, | 49 | AUDIO_MONO_LEFT, |
50 | AUDIO_MONO_RIGHT | 50 | AUDIO_MONO_RIGHT, |
51 | AUDIO_MONO, | ||
52 | AUDIO_STEREO_SWAPPED | ||
51 | } audio_channel_select_t; | 53 | } audio_channel_select_t; |
52 | 54 | ||
53 | 55 | ||
@@ -133,5 +135,6 @@ typedef uint16_t audio_attributes_t; | |||
133 | * extracted by the PES parser. | 135 | * extracted by the PES parser. |
134 | */ | 136 | */ |
135 | #define AUDIO_GET_PTS _IOR('o', 19, __u64) | 137 | #define AUDIO_GET_PTS _IOR('o', 19, __u64) |
138 | #define AUDIO_BILINGUAL_CHANNEL_SELECT _IO('o', 20) | ||
136 | 139 | ||
137 | #endif /* _DVBAUDIO_H_ */ | 140 | #endif /* _DVBAUDIO_H_ */ |
diff --git a/include/linux/dvb/version.h b/include/linux/dvb/version.h index 6183c9c4849e..126e0c26cb09 100644 --- a/include/linux/dvb/version.h +++ b/include/linux/dvb/version.h | |||
@@ -24,6 +24,6 @@ | |||
24 | #define _DVBVERSION_H_ | 24 | #define _DVBVERSION_H_ |
25 | 25 | ||
26 | #define DVB_API_VERSION 3 | 26 | #define DVB_API_VERSION 3 |
27 | #define DVB_API_VERSION_MINOR 1 | 27 | #define DVB_API_VERSION_MINOR 2 |
28 | 28 | ||
29 | #endif /*_DVBVERSION_H_*/ | 29 | #endif /*_DVBVERSION_H_*/ |
diff --git a/include/linux/dvb/video.h b/include/linux/dvb/video.h index faebfda397ff..93e4c3a6d190 100644 --- a/include/linux/dvb/video.h +++ b/include/linux/dvb/video.h | |||
@@ -80,14 +80,70 @@ typedef enum { | |||
80 | } video_play_state_t; | 80 | } video_play_state_t; |
81 | 81 | ||
82 | 82 | ||
83 | /* Decoder commands */ | ||
84 | #define VIDEO_CMD_PLAY (0) | ||
85 | #define VIDEO_CMD_STOP (1) | ||
86 | #define VIDEO_CMD_FREEZE (2) | ||
87 | #define VIDEO_CMD_CONTINUE (3) | ||
88 | |||
89 | /* Flags for VIDEO_CMD_FREEZE */ | ||
90 | #define VIDEO_CMD_FREEZE_TO_BLACK (1 << 0) | ||
91 | |||
92 | /* Flags for VIDEO_CMD_STOP */ | ||
93 | #define VIDEO_CMD_STOP_TO_BLACK (1 << 0) | ||
94 | #define VIDEO_CMD_STOP_IMMEDIATELY (1 << 1) | ||
95 | |||
96 | /* Play input formats: */ | ||
97 | /* The decoder has no special format requirements */ | ||
98 | #define VIDEO_PLAY_FMT_NONE (0) | ||
99 | /* The decoder requires full GOPs */ | ||
100 | #define VIDEO_PLAY_FMT_GOP (1) | ||
101 | |||
102 | /* The structure must be zeroed before use by the application | ||
103 | This ensures it can be extended safely in the future. */ | ||
104 | struct video_command { | ||
105 | __u32 cmd; | ||
106 | __u32 flags; | ||
107 | union { | ||
108 | struct { | ||
109 | __u64 pts; | ||
110 | } stop; | ||
111 | |||
112 | struct { | ||
113 | /* 0 or 1000 specifies normal speed, | ||
114 | 1 specifies forward single stepping, | ||
115 | -1 specifies backward single stepping, | ||
116 | >1: playback at speed/1000 of the normal speed, | ||
117 | <-1: reverse playback at (-speed/1000) of the normal speed. */ | ||
118 | __s32 speed; | ||
119 | __u32 format; | ||
120 | } play; | ||
121 | |||
122 | struct { | ||
123 | __u32 data[16]; | ||
124 | } raw; | ||
125 | }; | ||
126 | }; | ||
127 | |||
128 | /* FIELD_UNKNOWN can be used if the hardware does not know whether | ||
129 | the Vsync is for an odd, even or progressive (i.e. non-interlaced) | ||
130 | field. */ | ||
131 | #define VIDEO_VSYNC_FIELD_UNKNOWN (0) | ||
132 | #define VIDEO_VSYNC_FIELD_ODD (1) | ||
133 | #define VIDEO_VSYNC_FIELD_EVEN (2) | ||
134 | #define VIDEO_VSYNC_FIELD_PROGRESSIVE (3) | ||
135 | |||
83 | struct video_event { | 136 | struct video_event { |
84 | int32_t type; | 137 | int32_t type; |
85 | #define VIDEO_EVENT_SIZE_CHANGED 1 | 138 | #define VIDEO_EVENT_SIZE_CHANGED 1 |
86 | #define VIDEO_EVENT_FRAME_RATE_CHANGED 2 | 139 | #define VIDEO_EVENT_FRAME_RATE_CHANGED 2 |
140 | #define VIDEO_EVENT_DECODER_STOPPED 3 | ||
141 | #define VIDEO_EVENT_VSYNC 4 | ||
87 | time_t timestamp; | 142 | time_t timestamp; |
88 | union { | 143 | union { |
89 | video_size_t size; | 144 | video_size_t size; |
90 | unsigned int frame_rate; /* in frames per 1000sec */ | 145 | unsigned int frame_rate; /* in frames per 1000sec */ |
146 | unsigned char vsync_field; /* unknown/odd/even/progressive */ | ||
91 | } u; | 147 | } u; |
92 | }; | 148 | }; |
93 | 149 | ||
@@ -213,4 +269,10 @@ typedef uint16_t video_attributes_t; | |||
213 | */ | 269 | */ |
214 | #define VIDEO_GET_PTS _IOR('o', 57, __u64) | 270 | #define VIDEO_GET_PTS _IOR('o', 57, __u64) |
215 | 271 | ||
272 | /* Read the number of displayed frames since the decoder was started */ | ||
273 | #define VIDEO_GET_FRAME_COUNT _IOR('o', 58, __u64) | ||
274 | |||
275 | #define VIDEO_COMMAND _IOWR('o', 59, struct video_command) | ||
276 | #define VIDEO_TRY_COMMAND _IOWR('o', 60, struct video_command) | ||
277 | |||
216 | #endif /*_DVBVIDEO_H_*/ | 278 | #endif /*_DVBVIDEO_H_*/ |
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h index 441b877bf150..a25c2afa67e1 100644 --- a/include/linux/videodev2.h +++ b/include/linux/videodev2.h | |||
@@ -96,44 +96,60 @@ | |||
96 | * E N U M S | 96 | * E N U M S |
97 | */ | 97 | */ |
98 | enum v4l2_field { | 98 | enum v4l2_field { |
99 | V4L2_FIELD_ANY = 0, /* driver can choose from none, | 99 | V4L2_FIELD_ANY = 0, /* driver can choose from none, |
100 | top, bottom, interlaced | 100 | top, bottom, interlaced |
101 | depending on whatever it thinks | 101 | depending on whatever it thinks |
102 | is approximate ... */ | 102 | is approximate ... */ |
103 | V4L2_FIELD_NONE = 1, /* this device has no fields ... */ | 103 | V4L2_FIELD_NONE = 1, /* this device has no fields ... */ |
104 | V4L2_FIELD_TOP = 2, /* top field only */ | 104 | V4L2_FIELD_TOP = 2, /* top field only */ |
105 | V4L2_FIELD_BOTTOM = 3, /* bottom field only */ | 105 | V4L2_FIELD_BOTTOM = 3, /* bottom field only */ |
106 | V4L2_FIELD_INTERLACED = 4, /* both fields interlaced */ | 106 | V4L2_FIELD_INTERLACED = 4, /* both fields interlaced */ |
107 | V4L2_FIELD_SEQ_TB = 5, /* both fields sequential into one | 107 | V4L2_FIELD_SEQ_TB = 5, /* both fields sequential into one |
108 | buffer, top-bottom order */ | 108 | buffer, top-bottom order */ |
109 | V4L2_FIELD_SEQ_BT = 6, /* same as above + bottom-top order */ | 109 | V4L2_FIELD_SEQ_BT = 6, /* same as above + bottom-top order */ |
110 | V4L2_FIELD_ALTERNATE = 7, /* both fields alternating into | 110 | V4L2_FIELD_ALTERNATE = 7, /* both fields alternating into |
111 | separate buffers */ | 111 | separate buffers */ |
112 | V4L2_FIELD_INTERLACED_TB = 8, /* both fields interlaced, top field | ||
113 | first and the top field is | ||
114 | transmitted first */ | ||
115 | V4L2_FIELD_INTERLACED_BT = 9, /* both fields interlaced, top field | ||
116 | first and the bottom field is | ||
117 | transmitted first */ | ||
112 | }; | 118 | }; |
113 | #define V4L2_FIELD_HAS_TOP(field) \ | 119 | #define V4L2_FIELD_HAS_TOP(field) \ |
114 | ((field) == V4L2_FIELD_TOP ||\ | 120 | ((field) == V4L2_FIELD_TOP ||\ |
115 | (field) == V4L2_FIELD_INTERLACED ||\ | 121 | (field) == V4L2_FIELD_INTERLACED ||\ |
122 | (field) == V4L2_FIELD_INTERLACED_TB ||\ | ||
123 | (field) == V4L2_FIELD_INTERLACED_BT ||\ | ||
116 | (field) == V4L2_FIELD_SEQ_TB ||\ | 124 | (field) == V4L2_FIELD_SEQ_TB ||\ |
117 | (field) == V4L2_FIELD_SEQ_BT) | 125 | (field) == V4L2_FIELD_SEQ_BT) |
118 | #define V4L2_FIELD_HAS_BOTTOM(field) \ | 126 | #define V4L2_FIELD_HAS_BOTTOM(field) \ |
119 | ((field) == V4L2_FIELD_BOTTOM ||\ | 127 | ((field) == V4L2_FIELD_BOTTOM ||\ |
120 | (field) == V4L2_FIELD_INTERLACED ||\ | 128 | (field) == V4L2_FIELD_INTERLACED ||\ |
129 | (field) == V4L2_FIELD_INTERLACED_TB ||\ | ||
130 | (field) == V4L2_FIELD_INTERLACED_BT ||\ | ||
121 | (field) == V4L2_FIELD_SEQ_TB ||\ | 131 | (field) == V4L2_FIELD_SEQ_TB ||\ |
122 | (field) == V4L2_FIELD_SEQ_BT) | 132 | (field) == V4L2_FIELD_SEQ_BT) |
123 | #define V4L2_FIELD_HAS_BOTH(field) \ | 133 | #define V4L2_FIELD_HAS_BOTH(field) \ |
124 | ((field) == V4L2_FIELD_INTERLACED ||\ | 134 | ((field) == V4L2_FIELD_INTERLACED ||\ |
125 | (field) == V4L2_FIELD_SEQ_TB ||\ | 135 | (field) == V4L2_FIELD_INTERLACED_TB ||\ |
136 | (field) == V4L2_FIELD_INTERLACED_BT ||\ | ||
137 | (field) == V4L2_FIELD_SEQ_TB ||\ | ||
126 | (field) == V4L2_FIELD_SEQ_BT) | 138 | (field) == V4L2_FIELD_SEQ_BT) |
127 | 139 | ||
128 | enum v4l2_buf_type { | 140 | enum v4l2_buf_type { |
129 | V4L2_BUF_TYPE_VIDEO_CAPTURE = 1, | 141 | V4L2_BUF_TYPE_VIDEO_CAPTURE = 1, |
130 | V4L2_BUF_TYPE_VIDEO_OUTPUT = 2, | 142 | V4L2_BUF_TYPE_VIDEO_OUTPUT = 2, |
131 | V4L2_BUF_TYPE_VIDEO_OVERLAY = 3, | 143 | V4L2_BUF_TYPE_VIDEO_OVERLAY = 3, |
132 | V4L2_BUF_TYPE_VBI_CAPTURE = 4, | 144 | V4L2_BUF_TYPE_VBI_CAPTURE = 4, |
133 | V4L2_BUF_TYPE_VBI_OUTPUT = 5, | 145 | V4L2_BUF_TYPE_VBI_OUTPUT = 5, |
134 | V4L2_BUF_TYPE_SLICED_VBI_CAPTURE = 6, | 146 | V4L2_BUF_TYPE_SLICED_VBI_CAPTURE = 6, |
135 | V4L2_BUF_TYPE_SLICED_VBI_OUTPUT = 7, | 147 | V4L2_BUF_TYPE_SLICED_VBI_OUTPUT = 7, |
136 | V4L2_BUF_TYPE_PRIVATE = 0x80, | 148 | #if 1 |
149 | /* Experimental */ | ||
150 | V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY = 8, | ||
151 | #endif | ||
152 | V4L2_BUF_TYPE_PRIVATE = 0x80, | ||
137 | }; | 153 | }; |
138 | 154 | ||
139 | enum v4l2_ctrl_type { | 155 | enum v4l2_ctrl_type { |
@@ -227,6 +243,8 @@ struct v4l2_capability | |||
227 | #define V4L2_CAP_SLICED_VBI_CAPTURE 0x00000040 /* Is a sliced VBI capture device */ | 243 | #define V4L2_CAP_SLICED_VBI_CAPTURE 0x00000040 /* Is a sliced VBI capture device */ |
228 | #define V4L2_CAP_SLICED_VBI_OUTPUT 0x00000080 /* Is a sliced VBI output device */ | 244 | #define V4L2_CAP_SLICED_VBI_OUTPUT 0x00000080 /* Is a sliced VBI output device */ |
229 | #define V4L2_CAP_RDS_CAPTURE 0x00000100 /* RDS data capture */ | 245 | #define V4L2_CAP_RDS_CAPTURE 0x00000100 /* RDS data capture */ |
246 | #define V4L2_CAP_VIDEO_OUTPUT_POS 0x00000200 /* Video output can have x,y coords */ | ||
247 | #define V4L2_CAP_VIDEO_OUTPUT_OVERLAY 0x00000400 /* Can do video output overlay */ | ||
230 | 248 | ||
231 | #define V4L2_CAP_TUNER 0x00010000 /* has a tuner */ | 249 | #define V4L2_CAP_TUNER 0x00010000 /* has a tuner */ |
232 | #define V4L2_CAP_AUDIO 0x00020000 /* has audio support */ | 250 | #define V4L2_CAP_AUDIO 0x00020000 /* has audio support */ |
@@ -249,6 +267,8 @@ struct v4l2_pix_format | |||
249 | __u32 sizeimage; | 267 | __u32 sizeimage; |
250 | enum v4l2_colorspace colorspace; | 268 | enum v4l2_colorspace colorspace; |
251 | __u32 priv; /* private data, depends on pixelformat */ | 269 | __u32 priv; /* private data, depends on pixelformat */ |
270 | __u32 left; /* only valid if V4L2_CAP_VIDEO_OUTPUT_POS is set */ | ||
271 | __u32 top; /* only valid if V4L2_CAP_VIDEO_OUTPUT_POS is set */ | ||
252 | }; | 272 | }; |
253 | 273 | ||
254 | /* Pixel format FOURCC depth Description */ | 274 | /* Pixel format FOURCC depth Description */ |
@@ -596,10 +616,14 @@ struct v4l2_framebuffer | |||
596 | #define V4L2_FBUF_CAP_CHROMAKEY 0x0002 | 616 | #define V4L2_FBUF_CAP_CHROMAKEY 0x0002 |
597 | #define V4L2_FBUF_CAP_LIST_CLIPPING 0x0004 | 617 | #define V4L2_FBUF_CAP_LIST_CLIPPING 0x0004 |
598 | #define V4L2_FBUF_CAP_BITMAP_CLIPPING 0x0008 | 618 | #define V4L2_FBUF_CAP_BITMAP_CLIPPING 0x0008 |
619 | #define V4L2_FBUF_CAP_LOCAL_ALPHA 0x0010 | ||
620 | #define V4L2_FBUF_CAP_GLOBAL_ALPHA 0x0020 | ||
599 | /* Flags for the 'flags' field. */ | 621 | /* Flags for the 'flags' field. */ |
600 | #define V4L2_FBUF_FLAG_PRIMARY 0x0001 | 622 | #define V4L2_FBUF_FLAG_PRIMARY 0x0001 |
601 | #define V4L2_FBUF_FLAG_OVERLAY 0x0002 | 623 | #define V4L2_FBUF_FLAG_OVERLAY 0x0002 |
602 | #define V4L2_FBUF_FLAG_CHROMAKEY 0x0004 | 624 | #define V4L2_FBUF_FLAG_CHROMAKEY 0x0004 |
625 | #define V4L2_FBUF_FLAG_LOCAL_ALPHA 0x0008 | ||
626 | #define V4L2_FBUF_FLAG_GLOBAL_ALPHA 0x0010 | ||
603 | 627 | ||
604 | struct v4l2_clip | 628 | struct v4l2_clip |
605 | { | 629 | { |
@@ -615,6 +639,7 @@ struct v4l2_window | |||
615 | struct v4l2_clip __user *clips; | 639 | struct v4l2_clip __user *clips; |
616 | __u32 clipcount; | 640 | __u32 clipcount; |
617 | void __user *bitmap; | 641 | void __user *bitmap; |
642 | __u8 global_alpha; | ||
618 | }; | 643 | }; |
619 | 644 | ||
620 | /* | 645 | /* |
@@ -1037,6 +1062,7 @@ enum v4l2_mpeg_audio_crc { | |||
1037 | V4L2_MPEG_AUDIO_CRC_NONE = 0, | 1062 | V4L2_MPEG_AUDIO_CRC_NONE = 0, |
1038 | V4L2_MPEG_AUDIO_CRC_CRC16 = 1, | 1063 | V4L2_MPEG_AUDIO_CRC_CRC16 = 1, |
1039 | }; | 1064 | }; |
1065 | #define V4L2_CID_MPEG_AUDIO_MUTE (V4L2_CID_MPEG_BASE+109) | ||
1040 | 1066 | ||
1041 | /* MPEG video */ | 1067 | /* MPEG video */ |
1042 | #define V4L2_CID_MPEG_VIDEO_ENCODING (V4L2_CID_MPEG_BASE+200) | 1068 | #define V4L2_CID_MPEG_VIDEO_ENCODING (V4L2_CID_MPEG_BASE+200) |
@@ -1063,6 +1089,8 @@ enum v4l2_mpeg_video_bitrate_mode { | |||
1063 | #define V4L2_CID_MPEG_VIDEO_BITRATE (V4L2_CID_MPEG_BASE+207) | 1089 | #define V4L2_CID_MPEG_VIDEO_BITRATE (V4L2_CID_MPEG_BASE+207) |
1064 | #define V4L2_CID_MPEG_VIDEO_BITRATE_PEAK (V4L2_CID_MPEG_BASE+208) | 1090 | #define V4L2_CID_MPEG_VIDEO_BITRATE_PEAK (V4L2_CID_MPEG_BASE+208) |
1065 | #define V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION (V4L2_CID_MPEG_BASE+209) | 1091 | #define V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION (V4L2_CID_MPEG_BASE+209) |
1092 | #define V4L2_CID_MPEG_VIDEO_MUTE (V4L2_CID_MPEG_BASE+210) | ||
1093 | #define V4L2_CID_MPEG_VIDEO_MUTE_YUV (V4L2_CID_MPEG_BASE+211) | ||
1066 | 1094 | ||
1067 | /* MPEG-class control IDs specific to the CX2584x driver as defined by V4L2 */ | 1095 | /* MPEG-class control IDs specific to the CX2584x driver as defined by V4L2 */ |
1068 | #define V4L2_CID_MPEG_CX2341X_BASE (V4L2_CTRL_CLASS_MPEG | 0x1000) | 1096 | #define V4L2_CID_MPEG_CX2341X_BASE (V4L2_CTRL_CLASS_MPEG | 0x1000) |
@@ -1103,6 +1131,7 @@ enum v4l2_mpeg_cx2341x_video_median_filter_type { | |||
1103 | #define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP (V4L2_CID_MPEG_CX2341X_BASE+8) | 1131 | #define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP (V4L2_CID_MPEG_CX2341X_BASE+8) |
1104 | #define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_MPEG_CX2341X_BASE+9) | 1132 | #define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_MPEG_CX2341X_BASE+9) |
1105 | #define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP (V4L2_CID_MPEG_CX2341X_BASE+10) | 1133 | #define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP (V4L2_CID_MPEG_CX2341X_BASE+10) |
1134 | #define V4L2_CID_MPEG_CX2341X_STREAM_INSERT_NAV_PACKETS (V4L2_CID_MPEG_CX2341X_BASE+11) | ||
1106 | 1135 | ||
1107 | /* | 1136 | /* |
1108 | * T U N I N G | 1137 | * T U N I N G |
@@ -1369,6 +1398,14 @@ struct v4l2_register { | |||
1369 | __u64 val; | 1398 | __u64 val; |
1370 | }; | 1399 | }; |
1371 | 1400 | ||
1401 | /* VIDIOC_G_CHIP_IDENT */ | ||
1402 | struct v4l2_chip_ident { | ||
1403 | __u32 match_type; /* Match type */ | ||
1404 | __u32 match_chip; /* Match this chip, meaning determined by match_type */ | ||
1405 | __u32 ident; /* chip identifier as specified in <media/v4l2-chip-ident.h> */ | ||
1406 | __u32 revision; /* chip revision, chip specific */ | ||
1407 | }; | ||
1408 | |||
1372 | /* | 1409 | /* |
1373 | * I O C T L C O D E S F O R V I D E O D E V I C E S | 1410 | * I O C T L C O D E S F O R V I D E O D E V I C E S |
1374 | * | 1411 | * |
@@ -1442,6 +1479,8 @@ struct v4l2_register { | |||
1442 | /* Experimental, only implemented if CONFIG_VIDEO_ADV_DEBUG is defined */ | 1479 | /* Experimental, only implemented if CONFIG_VIDEO_ADV_DEBUG is defined */ |
1443 | #define VIDIOC_DBG_S_REGISTER _IOW ('V', 79, struct v4l2_register) | 1480 | #define VIDIOC_DBG_S_REGISTER _IOW ('V', 79, struct v4l2_register) |
1444 | #define VIDIOC_DBG_G_REGISTER _IOWR ('V', 80, struct v4l2_register) | 1481 | #define VIDIOC_DBG_G_REGISTER _IOWR ('V', 80, struct v4l2_register) |
1482 | |||
1483 | #define VIDIOC_G_CHIP_IDENT _IOWR ('V', 81, struct v4l2_chip_ident) | ||
1445 | #endif | 1484 | #endif |
1446 | 1485 | ||
1447 | #ifdef __OLD_VIDIOC_ | 1486 | #ifdef __OLD_VIDIOC_ |
diff --git a/include/media/cx2341x.h b/include/media/cx2341x.h index d758a52cf556..38c12fed7535 100644 --- a/include/media/cx2341x.h +++ b/include/media/cx2341x.h | |||
@@ -40,6 +40,7 @@ struct cx2341x_mpeg_params { | |||
40 | /* stream */ | 40 | /* stream */ |
41 | enum v4l2_mpeg_stream_type stream_type; | 41 | enum v4l2_mpeg_stream_type stream_type; |
42 | enum v4l2_mpeg_stream_vbi_fmt stream_vbi_fmt; | 42 | enum v4l2_mpeg_stream_vbi_fmt stream_vbi_fmt; |
43 | u16 stream_insert_nav_packets; | ||
43 | 44 | ||
44 | /* audio */ | 45 | /* audio */ |
45 | enum v4l2_mpeg_audio_sampling_freq audio_sampling_freq; | 46 | enum v4l2_mpeg_audio_sampling_freq audio_sampling_freq; |
@@ -50,6 +51,7 @@ struct cx2341x_mpeg_params { | |||
50 | enum v4l2_mpeg_audio_emphasis audio_emphasis; | 51 | enum v4l2_mpeg_audio_emphasis audio_emphasis; |
51 | enum v4l2_mpeg_audio_crc audio_crc; | 52 | enum v4l2_mpeg_audio_crc audio_crc; |
52 | u16 audio_properties; | 53 | u16 audio_properties; |
54 | u16 audio_mute; | ||
53 | 55 | ||
54 | /* video */ | 56 | /* video */ |
55 | enum v4l2_mpeg_video_encoding video_encoding; | 57 | enum v4l2_mpeg_video_encoding video_encoding; |
@@ -61,6 +63,8 @@ struct cx2341x_mpeg_params { | |||
61 | u32 video_bitrate; | 63 | u32 video_bitrate; |
62 | u32 video_bitrate_peak; | 64 | u32 video_bitrate_peak; |
63 | u16 video_temporal_decimation; | 65 | u16 video_temporal_decimation; |
66 | u16 video_mute; | ||
67 | u32 video_mute_yuv; | ||
64 | 68 | ||
65 | /* encoding filters */ | 69 | /* encoding filters */ |
66 | enum v4l2_mpeg_cx2341x_video_spatial_filter_mode video_spatial_filter_mode; | 70 | enum v4l2_mpeg_cx2341x_video_spatial_filter_mode video_spatial_filter_mode; |
@@ -162,7 +166,7 @@ void cx2341x_log_status(struct cx2341x_mpeg_params *p, const char *prefix); | |||
162 | #define CX2341X_ENC_SET_PLACEHOLDER 0xd7 | 166 | #define CX2341X_ENC_SET_PLACEHOLDER 0xd7 |
163 | #define CX2341X_ENC_MUTE_VIDEO 0xd9 | 167 | #define CX2341X_ENC_MUTE_VIDEO 0xd9 |
164 | #define CX2341X_ENC_MUTE_AUDIO 0xda | 168 | #define CX2341X_ENC_MUTE_AUDIO 0xda |
165 | #define CX2341X_ENC_UNKNOWN 0xdb | 169 | #define CX2341X_ENC_SET_VERT_CROP_LINE 0xdb |
166 | #define CX2341X_ENC_MISC 0xdc | 170 | #define CX2341X_ENC_MISC 0xdc |
167 | 171 | ||
168 | /* OSD API, specific to the cx23415 */ | 172 | /* OSD API, specific to the cx23415 */ |
diff --git a/include/media/ivtv.h b/include/media/ivtv.h new file mode 100644 index 000000000000..412b48ea8eda --- /dev/null +++ b/include/media/ivtv.h | |||
@@ -0,0 +1,65 @@ | |||
1 | /* | ||
2 | Public ivtv API header | ||
3 | Copyright (C) 2003-2004 Kevin Thayer <nufan_wfk at yahoo.com> | ||
4 | Copyright (C) 2004-2007 Hans Verkuil <hverkuil@xs4all.nl> | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
19 | */ | ||
20 | |||
21 | #ifndef _LINUX_IVTV_H | ||
22 | #define _LINUX_IVTV_H | ||
23 | |||
24 | /* ivtv knows several distinct output modes: MPEG streaming, | ||
25 | YUV streaming, YUV updates through user DMA and the passthrough | ||
26 | mode. | ||
27 | |||
28 | In order to clearly tell the driver that we are in user DMA | ||
29 | YUV mode you need to call IVTV_IOC_DMA_FRAME with y_source == NULL | ||
30 | first (althrough if you don't then the first time | ||
31 | DMA_FRAME is called the mode switch is done automatically). | ||
32 | |||
33 | When you close the file handle the user DMA mode is exited again. | ||
34 | |||
35 | While in one mode, you cannot use another mode (EBUSY is returned). | ||
36 | |||
37 | All this means that if you want to change the YUV interlacing | ||
38 | for the user DMA YUV mode you first need to do call IVTV_IOC_DMA_FRAME | ||
39 | with y_source == NULL before you can set the correct format using | ||
40 | VIDIOC_S_FMT. | ||
41 | |||
42 | Eventually all this should be replaced with a proper V4L2 API, | ||
43 | but for now we have to do it this way. */ | ||
44 | |||
45 | struct ivtv_dma_frame { | ||
46 | enum v4l2_buf_type type; /* V4L2_BUF_TYPE_VIDEO_OUTPUT */ | ||
47 | __u32 pixelformat; /* 0 == same as destination */ | ||
48 | void __user *y_source; /* if NULL and type == V4L2_BUF_TYPE_VIDEO_OUTPUT, | ||
49 | then just switch to user DMA YUV output mode */ | ||
50 | void __user *uv_source; /* Unused for RGB pixelformats */ | ||
51 | struct v4l2_rect src; | ||
52 | struct v4l2_rect dst; | ||
53 | __u32 src_width; | ||
54 | __u32 src_height; | ||
55 | }; | ||
56 | |||
57 | #define IVTV_IOC_DMA_FRAME _IOW ('V', BASE_VIDIOC_PRIVATE+0, struct ivtv_dma_frame) | ||
58 | |||
59 | /* These are the VBI types as they appear in the embedded VBI private packets. */ | ||
60 | #define IVTV_SLICED_TYPE_TELETEXT_B (1) | ||
61 | #define IVTV_SLICED_TYPE_CAPTION_525 (4) | ||
62 | #define IVTV_SLICED_TYPE_WSS_625 (5) | ||
63 | #define IVTV_SLICED_TYPE_VPS (7) | ||
64 | |||
65 | #endif /* _LINUX_IVTV_H */ | ||
diff --git a/include/media/tuner.h b/include/media/tuner.h index 99acf847365c..a41ac41113ac 100644 --- a/include/media/tuner.h +++ b/include/media/tuner.h | |||
@@ -177,6 +177,8 @@ struct tuner_setup { | |||
177 | unsigned short addr; /* I2C address */ | 177 | unsigned short addr; /* I2C address */ |
178 | unsigned int type; /* Tuner type */ | 178 | unsigned int type; /* Tuner type */ |
179 | unsigned int mode_mask; /* Allowed tuner modes */ | 179 | unsigned int mode_mask; /* Allowed tuner modes */ |
180 | unsigned int config; /* configuraion for more complex tuners */ | ||
181 | int (*tuner_callback) (void *dev, int command,int arg); | ||
180 | }; | 182 | }; |
181 | 183 | ||
182 | struct tuner { | 184 | struct tuner { |
@@ -211,6 +213,9 @@ struct tuner { | |||
211 | unsigned char tda827x_ver; | 213 | unsigned char tda827x_ver; |
212 | unsigned int sgIF; | 214 | unsigned int sgIF; |
213 | 215 | ||
216 | unsigned int config; | ||
217 | int (*tuner_callback) (void *dev, int command,int arg); | ||
218 | |||
214 | /* function ptrs */ | 219 | /* function ptrs */ |
215 | void (*set_tv_freq)(struct i2c_client *c, unsigned int freq); | 220 | void (*set_tv_freq)(struct i2c_client *c, unsigned int freq); |
216 | void (*set_radio_freq)(struct i2c_client *c, unsigned int freq); | 221 | void (*set_radio_freq)(struct i2c_client *c, unsigned int freq); |
diff --git a/include/media/v4l2-chip-ident.h b/include/media/v4l2-chip-ident.h new file mode 100644 index 000000000000..09d16c4f00f7 --- /dev/null +++ b/include/media/v4l2-chip-ident.h | |||
@@ -0,0 +1,149 @@ | |||
1 | /* | ||
2 | v4l2 chip identifiers header | ||
3 | |||
4 | This header provides a list of chip identifiers that can be returned | ||
5 | through the VIDIOC_G_CHIP_IDENT ioctl. | ||
6 | |||
7 | Copyright (C) 2007 Hans Verkuil <hverkuil@xs4all.nl> | ||
8 | |||
9 | This program is free software; you can redistribute it and/or modify | ||
10 | it under the terms of the GNU General Public License as published by | ||
11 | the Free Software Foundation; either version 2 of the License, or | ||
12 | (at your option) any later version. | ||
13 | |||
14 | This program is distributed in the hope that it will be useful, | ||
15 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
17 | GNU General Public License for more details. | ||
18 | |||
19 | You should have received a copy of the GNU General Public License | ||
20 | along with this program; if not, write to the Free Software | ||
21 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
22 | */ | ||
23 | |||
24 | #ifndef V4L2_CHIP_IDENT_H_ | ||
25 | #define V4L2_CHIP_IDENT_H_ | ||
26 | |||
27 | /* VIDIOC_G_CHIP_IDENT: identifies the actual chip installed on the board */ | ||
28 | enum { | ||
29 | /* general idents: reserved range 0-49 */ | ||
30 | V4L2_IDENT_NONE = 0, /* No chip matched */ | ||
31 | V4L2_IDENT_AMBIGUOUS = 1, /* Match too general, multiple chips matched */ | ||
32 | V4L2_IDENT_UNKNOWN = 2, /* Chip found, but cannot identify */ | ||
33 | |||
34 | /* module tvaudio: reserved range 50-99 */ | ||
35 | V4L2_IDENT_TVAUDIO = 50, /* A tvaudio chip, unknown which it is exactly */ | ||
36 | |||
37 | /* module saa7110: just ident 100 */ | ||
38 | V4L2_IDENT_SAA7110 = 100, | ||
39 | |||
40 | /* module saa7111: just ident 101 */ | ||
41 | V4L2_IDENT_SAA7111 = 101, | ||
42 | |||
43 | /* module saa7115: reserved range 102-149 */ | ||
44 | V4L2_IDENT_SAA7113 = 103, | ||
45 | V4L2_IDENT_SAA7114 = 104, | ||
46 | V4L2_IDENT_SAA7115 = 105, | ||
47 | V4L2_IDENT_SAA7118 = 108, | ||
48 | |||
49 | /* module saa7127: reserved range 150-199 */ | ||
50 | V4L2_IDENT_SAA7127 = 157, | ||
51 | V4L2_IDENT_SAA7129 = 159, | ||
52 | |||
53 | /* module cx25840: reserved range 200-249 */ | ||
54 | V4L2_IDENT_CX25836 = 236, | ||
55 | V4L2_IDENT_CX25837 = 237, | ||
56 | V4L2_IDENT_CX25840 = 240, | ||
57 | V4L2_IDENT_CX25841 = 241, | ||
58 | V4L2_IDENT_CX25842 = 242, | ||
59 | V4L2_IDENT_CX25843 = 243, | ||
60 | |||
61 | /* OmniVision sensors: reserved range 250-299 */ | ||
62 | V4L2_IDENT_OV7670 = 250, | ||
63 | |||
64 | /* Conexant MPEG encoder/decoders: reserved range 410-420 */ | ||
65 | V4L2_IDENT_CX23415 = 415, | ||
66 | V4L2_IDENT_CX23416 = 416, | ||
67 | |||
68 | /* module wm8739: just ident 8739 */ | ||
69 | V4L2_IDENT_WM8739 = 8739, | ||
70 | |||
71 | /* module wm8775: just ident 8775 */ | ||
72 | V4L2_IDENT_WM8775 = 8775, | ||
73 | |||
74 | /* module cs53132a: just ident 53132 */ | ||
75 | V4L2_IDENT_CS53l32A = 53132, | ||
76 | |||
77 | /* module upd64031a: just ident 64031 */ | ||
78 | V4L2_IDENT_UPD64031A = 64031, | ||
79 | |||
80 | /* module upd64083: just ident 64083 */ | ||
81 | V4L2_IDENT_UPD64083 = 64083, | ||
82 | |||
83 | /* module msp34xx: reserved range 34000-34999 */ | ||
84 | V4L2_IDENT_MSP3400B = 34002, | ||
85 | V4L2_IDENT_MSP3410B = 34102, | ||
86 | |||
87 | V4L2_IDENT_MSP3400C = 34003, | ||
88 | V4L2_IDENT_MSP3410C = 34103, | ||
89 | |||
90 | V4L2_IDENT_MSP3400D = 34004, | ||
91 | V4L2_IDENT_MSP3410D = 34104, | ||
92 | V4L2_IDENT_MSP3405D = 34054, | ||
93 | V4L2_IDENT_MSP3415D = 34154, | ||
94 | V4L2_IDENT_MSP3407D = 34074, | ||
95 | V4L2_IDENT_MSP3417D = 34174, | ||
96 | |||
97 | V4L2_IDENT_MSP3400G = 34007, | ||
98 | V4L2_IDENT_MSP3410G = 34107, | ||
99 | V4L2_IDENT_MSP3420G = 34207, | ||
100 | V4L2_IDENT_MSP3430G = 34307, | ||
101 | V4L2_IDENT_MSP3440G = 34407, | ||
102 | V4L2_IDENT_MSP3450G = 34507, | ||
103 | V4L2_IDENT_MSP3460G = 34607, | ||
104 | |||
105 | V4L2_IDENT_MSP3401G = 34017, | ||
106 | V4L2_IDENT_MSP3411G = 34117, | ||
107 | V4L2_IDENT_MSP3421G = 34217, | ||
108 | V4L2_IDENT_MSP3431G = 34317, | ||
109 | V4L2_IDENT_MSP3441G = 34417, | ||
110 | V4L2_IDENT_MSP3451G = 34517, | ||
111 | V4L2_IDENT_MSP3461G = 34617, | ||
112 | |||
113 | V4L2_IDENT_MSP3402G = 34027, | ||
114 | V4L2_IDENT_MSP3412G = 34127, | ||
115 | V4L2_IDENT_MSP3422G = 34227, | ||
116 | V4L2_IDENT_MSP3442G = 34427, | ||
117 | V4L2_IDENT_MSP3452G = 34527, | ||
118 | |||
119 | V4L2_IDENT_MSP3405G = 34057, | ||
120 | V4L2_IDENT_MSP3415G = 34157, | ||
121 | V4L2_IDENT_MSP3425G = 34257, | ||
122 | V4L2_IDENT_MSP3435G = 34357, | ||
123 | V4L2_IDENT_MSP3445G = 34457, | ||
124 | V4L2_IDENT_MSP3455G = 34557, | ||
125 | V4L2_IDENT_MSP3465G = 34657, | ||
126 | |||
127 | V4L2_IDENT_MSP3407G = 34077, | ||
128 | V4L2_IDENT_MSP3417G = 34177, | ||
129 | V4L2_IDENT_MSP3427G = 34277, | ||
130 | V4L2_IDENT_MSP3437G = 34377, | ||
131 | V4L2_IDENT_MSP3447G = 34477, | ||
132 | V4L2_IDENT_MSP3457G = 34577, | ||
133 | V4L2_IDENT_MSP3467G = 34677, | ||
134 | |||
135 | /* module msp44xx: reserved range 44000-44999 */ | ||
136 | V4L2_IDENT_MSP4400G = 44007, | ||
137 | V4L2_IDENT_MSP4410G = 44107, | ||
138 | V4L2_IDENT_MSP4420G = 44207, | ||
139 | V4L2_IDENT_MSP4440G = 44407, | ||
140 | V4L2_IDENT_MSP4450G = 44507, | ||
141 | |||
142 | V4L2_IDENT_MSP4408G = 44087, | ||
143 | V4L2_IDENT_MSP4418G = 44187, | ||
144 | V4L2_IDENT_MSP4428G = 44287, | ||
145 | V4L2_IDENT_MSP4448G = 44487, | ||
146 | V4L2_IDENT_MSP4458G = 44587, | ||
147 | }; | ||
148 | |||
149 | #endif | ||
diff --git a/include/media/v4l2-common.h b/include/media/v4l2-common.h index 6eaeec98ed89..181a40c46a52 100644 --- a/include/media/v4l2-common.h +++ b/include/media/v4l2-common.h | |||
@@ -98,6 +98,8 @@ u32 v4l2_ctrl_next(const u32 * const *ctrl_classes, u32 id); | |||
98 | 98 | ||
99 | struct i2c_client; /* forward reference */ | 99 | struct i2c_client; /* forward reference */ |
100 | int v4l2_chip_match_i2c_client(struct i2c_client *c, u32 id_type, u32 chip_id); | 100 | int v4l2_chip_match_i2c_client(struct i2c_client *c, u32 id_type, u32 chip_id); |
101 | int v4l2_chip_ident_i2c_client(struct i2c_client *c, struct v4l2_chip_ident *chip, | ||
102 | u32 ident, u32 revision); | ||
101 | int v4l2_chip_match_host(u32 id_type, u32 chip_id); | 103 | int v4l2_chip_match_host(u32 id_type, u32 chip_id); |
102 | 104 | ||
103 | /* ------------------------------------------------------------------------- */ | 105 | /* ------------------------------------------------------------------------- */ |
@@ -114,39 +116,6 @@ struct v4l2_decode_vbi_line { | |||
114 | u32 type; /* VBI service type (V4L2_SLICED_*). 0 if no service found */ | 116 | u32 type; /* VBI service type (V4L2_SLICED_*). 0 if no service found */ |
115 | }; | 117 | }; |
116 | 118 | ||
117 | /* VIDIOC_INT_G_CHIP_IDENT: identifies the actual chip installed on the board */ | ||
118 | enum v4l2_chip_ident { | ||
119 | /* general idents: reserved range 0-49 */ | ||
120 | V4L2_IDENT_UNKNOWN = 0, | ||
121 | |||
122 | /* module saa7110: just ident= 100 */ | ||
123 | V4L2_IDENT_SAA7110 = 100, | ||
124 | |||
125 | /* module saa7111: just ident= 101 */ | ||
126 | V4L2_IDENT_SAA7111 = 101, | ||
127 | |||
128 | /* module saa7115: reserved range 102-149 */ | ||
129 | V4L2_IDENT_SAA7113 = 103, | ||
130 | V4L2_IDENT_SAA7114 = 104, | ||
131 | V4L2_IDENT_SAA7115 = 105, | ||
132 | V4L2_IDENT_SAA7118 = 108, | ||
133 | |||
134 | /* module saa7127: reserved range 150-199 */ | ||
135 | V4L2_IDENT_SAA7127 = 157, | ||
136 | V4L2_IDENT_SAA7129 = 159, | ||
137 | |||
138 | /* module cx25840: reserved range 200-249 */ | ||
139 | V4L2_IDENT_CX25836 = 236, | ||
140 | V4L2_IDENT_CX25837 = 237, | ||
141 | V4L2_IDENT_CX25840 = 240, | ||
142 | V4L2_IDENT_CX25841 = 241, | ||
143 | V4L2_IDENT_CX25842 = 242, | ||
144 | V4L2_IDENT_CX25843 = 243, | ||
145 | |||
146 | /* OmniVision sensors - range 250-299 */ | ||
147 | V4L2_IDENT_OV7670 = 250, | ||
148 | }; | ||
149 | |||
150 | /* audio ioctls */ | 119 | /* audio ioctls */ |
151 | 120 | ||
152 | /* v4l device was opened in Radio mode, to be replaced by VIDIOC_INT_S_TUNER_MODE */ | 121 | /* v4l device was opened in Radio mode, to be replaced by VIDIOC_INT_S_TUNER_MODE */ |
@@ -208,10 +177,6 @@ enum v4l2_chip_ident { | |||
208 | whether CC data from the first or second field should be obtained). */ | 177 | whether CC data from the first or second field should be obtained). */ |
209 | #define VIDIOC_INT_G_VBI_DATA _IOWR('d', 106, struct v4l2_sliced_vbi_data) | 178 | #define VIDIOC_INT_G_VBI_DATA _IOWR('d', 106, struct v4l2_sliced_vbi_data) |
210 | 179 | ||
211 | /* Returns the chip identifier or V4L2_IDENT_UNKNOWN if no identification can | ||
212 | be made. */ | ||
213 | #define VIDIOC_INT_G_CHIP_IDENT _IOR ('d', 107, enum v4l2_chip_ident) | ||
214 | |||
215 | /* Sets I2S speed in bps. This is used to provide a standard way to select I2S | 180 | /* Sets I2S speed in bps. This is used to provide a standard way to select I2S |
216 | clock used by driving digital audio streams at some board designs. | 181 | clock used by driving digital audio streams at some board designs. |
217 | Usual values for the frequency are 1024000 and 2048000. | 182 | Usual values for the frequency are 1024000 and 2048000. |
@@ -254,4 +219,12 @@ struct v4l2_crystal_freq { | |||
254 | default values. */ | 219 | default values. */ |
255 | #define VIDIOC_INT_INIT _IOW ('d', 114, u32) | 220 | #define VIDIOC_INT_INIT _IOW ('d', 114, u32) |
256 | 221 | ||
222 | /* Set v4l2_std_id for video OUTPUT devices. This is ignored by | ||
223 | video input devices. */ | ||
224 | #define VIDIOC_INT_S_STD_OUTPUT _IOW ('d', 115, v4l2_std_id) | ||
225 | |||
226 | /* Get v4l2_std_id for video OUTPUT devices. This is ignored by | ||
227 | video input devices. */ | ||
228 | #define VIDIOC_INT_G_STD_OUTPUT _IOW ('d', 116, v4l2_std_id) | ||
229 | |||
257 | #endif /* V4L2_COMMON_H_ */ | 230 | #endif /* V4L2_COMMON_H_ */ |
diff --git a/include/media/v4l2-dev.h b/include/media/v4l2-dev.h index 1dd3d3239ecf..d62847f846c2 100644 --- a/include/media/v4l2-dev.h +++ b/include/media/v4l2-dev.h | |||
@@ -127,6 +127,8 @@ struct video_device | |||
127 | struct v4l2_fmtdesc *f); | 127 | struct v4l2_fmtdesc *f); |
128 | int (*vidioc_enum_fmt_video_output)(struct file *file, void *fh, | 128 | int (*vidioc_enum_fmt_video_output)(struct file *file, void *fh, |
129 | struct v4l2_fmtdesc *f); | 129 | struct v4l2_fmtdesc *f); |
130 | int (*vidioc_enum_fmt_output_overlay) (struct file *file, void *fh, | ||
131 | struct v4l2_fmtdesc *f); | ||
130 | int (*vidioc_enum_fmt_vbi_output) (struct file *file, void *fh, | 132 | int (*vidioc_enum_fmt_vbi_output) (struct file *file, void *fh, |
131 | struct v4l2_fmtdesc *f); | 133 | struct v4l2_fmtdesc *f); |
132 | int (*vidioc_enum_fmt_type_private)(struct file *file, void *fh, | 134 | int (*vidioc_enum_fmt_type_private)(struct file *file, void *fh, |
@@ -145,6 +147,8 @@ struct video_device | |||
145 | struct v4l2_format *f); | 147 | struct v4l2_format *f); |
146 | int (*vidioc_g_fmt_video_output)(struct file *file, void *fh, | 148 | int (*vidioc_g_fmt_video_output)(struct file *file, void *fh, |
147 | struct v4l2_format *f); | 149 | struct v4l2_format *f); |
150 | int (*vidioc_g_fmt_output_overlay) (struct file *file, void *fh, | ||
151 | struct v4l2_format *f); | ||
148 | int (*vidioc_g_fmt_type_private)(struct file *file, void *fh, | 152 | int (*vidioc_g_fmt_type_private)(struct file *file, void *fh, |
149 | struct v4l2_format *f); | 153 | struct v4l2_format *f); |
150 | 154 | ||
@@ -162,6 +166,8 @@ struct video_device | |||
162 | struct v4l2_format *f); | 166 | struct v4l2_format *f); |
163 | int (*vidioc_s_fmt_video_output)(struct file *file, void *fh, | 167 | int (*vidioc_s_fmt_video_output)(struct file *file, void *fh, |
164 | struct v4l2_format *f); | 168 | struct v4l2_format *f); |
169 | int (*vidioc_s_fmt_output_overlay) (struct file *file, void *fh, | ||
170 | struct v4l2_format *f); | ||
165 | int (*vidioc_s_fmt_type_private)(struct file *file, void *fh, | 171 | int (*vidioc_s_fmt_type_private)(struct file *file, void *fh, |
166 | struct v4l2_format *f); | 172 | struct v4l2_format *f); |
167 | 173 | ||
@@ -178,6 +184,8 @@ struct video_device | |||
178 | struct v4l2_format *f); | 184 | struct v4l2_format *f); |
179 | int (*vidioc_try_fmt_video_output)(struct file *file, void *fh, | 185 | int (*vidioc_try_fmt_video_output)(struct file *file, void *fh, |
180 | struct v4l2_format *f); | 186 | struct v4l2_format *f); |
187 | int (*vidioc_try_fmt_output_overlay)(struct file *file, void *fh, | ||
188 | struct v4l2_format *f); | ||
181 | int (*vidioc_try_fmt_type_private)(struct file *file, void *fh, | 189 | int (*vidioc_try_fmt_type_private)(struct file *file, void *fh, |
182 | struct v4l2_format *f); | 190 | struct v4l2_format *f); |
183 | 191 | ||
@@ -309,6 +317,8 @@ struct video_device | |||
309 | int (*vidioc_s_register) (struct file *file, void *fh, | 317 | int (*vidioc_s_register) (struct file *file, void *fh, |
310 | struct v4l2_register *reg); | 318 | struct v4l2_register *reg); |
311 | #endif | 319 | #endif |
320 | int (*vidioc_g_chip_ident) (struct file *file, void *fh, | ||
321 | struct v4l2_chip_ident *chip); | ||
312 | 322 | ||
313 | 323 | ||
314 | #ifdef OBSOLETE_OWNER /* to be removed soon */ | 324 | #ifdef OBSOLETE_OWNER /* to be removed soon */ |