1
2
3
4
5
6
7
8
9#ifndef IVTV_CARDS_H
10#define IVTV_CARDS_H
11
12
13#define IVTV_CARD_PVR_250 0
14#define IVTV_CARD_PVR_350 1
15#define IVTV_CARD_PVR_150 2
16
17#define IVTV_CARD_M179 3
18#define IVTV_CARD_MPG600 4
19#define IVTV_CARD_MPG160 5
20
21#define IVTV_CARD_PG600 6
22#define IVTV_CARD_AVC2410 7
23#define IVTV_CARD_AVC2010 8
24#define IVTV_CARD_TG5000TV 9
25#define IVTV_CARD_VA2000MAX_SNT6 10
26#define IVTV_CARD_CX23416GYC 11
27#define IVTV_CARD_GV_MVPRX 12
28#define IVTV_CARD_GV_MVPRX2E 13
29#define IVTV_CARD_GOTVIEW_PCI_DVD 14
30#define IVTV_CARD_GOTVIEW_PCI_DVD2 15
31#define IVTV_CARD_YUAN_MPC622 16
32#define IVTV_CARD_DCTMTVP1 17
33#define IVTV_CARD_PG600V2 18
34#define IVTV_CARD_CLUB3D 19
35#define IVTV_CARD_AVERTV_MCE116 20
36#define IVTV_CARD_ASUS_FALCON2 21
37#define IVTV_CARD_AVER_PVR150PLUS 22
38#define IVTV_CARD_AVER_EZMAKER 23
39#define IVTV_CARD_AVER_M104 24
40#define IVTV_CARD_BUFFALO_MV5L 25
41#define IVTV_CARD_AVER_ULTRA1500MCE 26
42#define IVTV_CARD_KIKYOU 27
43#define IVTV_CARD_LAST 27
44
45
46
47
48
49
50
51
52#define IVTV_CARD_PVR_350_V1 (IVTV_CARD_LAST+1)
53
54#define IVTV_CARD_CX23416GYC_NOGR (IVTV_CARD_LAST+2)
55#define IVTV_CARD_CX23416GYC_NOGRYCS (IVTV_CARD_LAST+3)
56
57
58#define PCI_VENDOR_ID_ICOMP 0x4444
59#define PCI_DEVICE_ID_IVTV15 0x0803
60#define PCI_DEVICE_ID_IVTV16 0x0016
61
62
63#define IVTV_PCI_ID_HAUPPAUGE 0x0070
64#define IVTV_PCI_ID_HAUPPAUGE_ALT1 0x0270
65#define IVTV_PCI_ID_HAUPPAUGE_ALT2 0x4070
66#define IVTV_PCI_ID_ADAPTEC 0x9005
67#define IVTV_PCI_ID_ASUSTEK 0x1043
68#define IVTV_PCI_ID_AVERMEDIA 0x1461
69#define IVTV_PCI_ID_YUAN1 0x12ab
70#define IVTV_PCI_ID_YUAN2 0xff01
71#define IVTV_PCI_ID_YUAN3 0xffab
72#define IVTV_PCI_ID_YUAN4 0xfbab
73#define IVTV_PCI_ID_DIAMONDMM 0xff92
74#define IVTV_PCI_ID_IODATA 0x10fc
75#define IVTV_PCI_ID_MELCO 0x1154
76#define IVTV_PCI_ID_GOTVIEW1 0xffac
77#define IVTV_PCI_ID_GOTVIEW2 0xffad
78#define IVTV_PCI_ID_SONY 0x104d
79
80
81enum ivtv_hw_bits {
82 IVTV_HW_BIT_CX25840,
83 IVTV_HW_BIT_SAA7115,
84 IVTV_HW_BIT_SAA7127,
85 IVTV_HW_BIT_MSP34XX,
86 IVTV_HW_BIT_TUNER,
87 IVTV_HW_BIT_WM8775,
88 IVTV_HW_BIT_CS53L32A,
89 IVTV_HW_BIT_TVEEPROM,
90 IVTV_HW_BIT_SAA7114,
91 IVTV_HW_BIT_UPD64031A,
92 IVTV_HW_BIT_UPD6408X,
93 IVTV_HW_BIT_SAA717X,
94 IVTV_HW_BIT_WM8739,
95 IVTV_HW_BIT_VP27SMPX,
96 IVTV_HW_BIT_M52790,
97 IVTV_HW_BIT_GPIO,
98 IVTV_HW_BIT_I2C_IR_RX_AVER,
99 IVTV_HW_BIT_I2C_IR_RX_HAUP_EXT,
100 IVTV_HW_BIT_I2C_IR_RX_HAUP_INT,
101 IVTV_HW_BIT_Z8F0811_IR_HAUP,
102 IVTV_HW_BIT_I2C_IR_RX_ADAPTEC,
103
104 IVTV_HW_MAX_BITS
105};
106
107#define IVTV_HW_CX25840 BIT(IVTV_HW_BIT_CX25840)
108#define IVTV_HW_SAA7115 BIT(IVTV_HW_BIT_SAA7115)
109#define IVTV_HW_SAA7127 BIT(IVTV_HW_BIT_SAA7127)
110#define IVTV_HW_MSP34XX BIT(IVTV_HW_BIT_MSP34XX)
111#define IVTV_HW_TUNER BIT(IVTV_HW_BIT_TUNER)
112#define IVTV_HW_WM8775 BIT(IVTV_HW_BIT_WM8775)
113#define IVTV_HW_CS53L32A BIT(IVTV_HW_BIT_CS53L32A)
114#define IVTV_HW_TVEEPROM BIT(IVTV_HW_BIT_TVEEPROM)
115#define IVTV_HW_SAA7114 BIT(IVTV_HW_BIT_SAA7114)
116#define IVTV_HW_UPD64031A BIT(IVTV_HW_BIT_UPD64031A)
117#define IVTV_HW_UPD6408X BIT(IVTV_HW_BIT_UPD6408X)
118#define IVTV_HW_SAA717X BIT(IVTV_HW_BIT_SAA717X)
119#define IVTV_HW_WM8739 BIT(IVTV_HW_BIT_WM8739)
120#define IVTV_HW_VP27SMPX BIT(IVTV_HW_BIT_VP27SMPX)
121#define IVTV_HW_M52790 BIT(IVTV_HW_BIT_M52790)
122#define IVTV_HW_GPIO BIT(IVTV_HW_BIT_GPIO)
123#define IVTV_HW_I2C_IR_RX_AVER BIT(IVTV_HW_BIT_I2C_IR_RX_AVER)
124#define IVTV_HW_I2C_IR_RX_HAUP_EXT BIT(IVTV_HW_BIT_I2C_IR_RX_HAUP_EXT)
125#define IVTV_HW_I2C_IR_RX_HAUP_INT BIT(IVTV_HW_BIT_I2C_IR_RX_HAUP_INT)
126#define IVTV_HW_Z8F0811_IR_HAUP BIT(IVTV_HW_BIT_Z8F0811_IR_HAUP)
127#define IVTV_HW_I2C_IR_RX_ADAPTEC BIT(IVTV_HW_BIT_I2C_IR_RX_ADAPTEC)
128
129#define IVTV_HW_SAA711X (IVTV_HW_SAA7115 | IVTV_HW_SAA7114)
130
131#define IVTV_HW_IR_ANY (IVTV_HW_I2C_IR_RX_AVER | \
132 IVTV_HW_I2C_IR_RX_HAUP_EXT | \
133 IVTV_HW_I2C_IR_RX_HAUP_INT | \
134 IVTV_HW_Z8F0811_IR_HAUP | \
135 IVTV_HW_I2C_IR_RX_ADAPTEC)
136
137
138#define IVTV_CARD_INPUT_VID_TUNER 1
139#define IVTV_CARD_INPUT_SVIDEO1 2
140#define IVTV_CARD_INPUT_SVIDEO2 3
141#define IVTV_CARD_INPUT_COMPOSITE1 4
142#define IVTV_CARD_INPUT_COMPOSITE2 5
143#define IVTV_CARD_INPUT_COMPOSITE3 6
144
145
146#define IVTV_CARD_INPUT_AUD_TUNER 1
147#define IVTV_CARD_INPUT_LINE_IN1 2
148#define IVTV_CARD_INPUT_LINE_IN2 3
149
150#define IVTV_CARD_MAX_VIDEO_INPUTS 6
151#define IVTV_CARD_MAX_AUDIO_INPUTS 3
152#define IVTV_CARD_MAX_TUNERS 3
153
154
155#define IVTV_SAA71XX_COMPOSITE0 0
156#define IVTV_SAA71XX_COMPOSITE1 1
157#define IVTV_SAA71XX_COMPOSITE2 2
158#define IVTV_SAA71XX_COMPOSITE3 3
159#define IVTV_SAA71XX_COMPOSITE4 4
160#define IVTV_SAA71XX_COMPOSITE5 5
161#define IVTV_SAA71XX_SVIDEO0 6
162#define IVTV_SAA71XX_SVIDEO1 7
163#define IVTV_SAA71XX_SVIDEO2 8
164#define IVTV_SAA71XX_SVIDEO3 9
165
166
167#define IVTV_SAA717X_TUNER_FLAG 0x80
168
169
170#define IVTV_DUMMY_AUDIO 0
171
172
173#define IVTV_GPIO_TUNER 0
174#define IVTV_GPIO_LINE_IN 1
175
176
177#define IVTV_SAA717X_IN0 0
178#define IVTV_SAA717X_IN1 1
179#define IVTV_SAA717X_IN2 2
180
181
182#define IVTV_CAP_ENCODER (V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_TUNER | \
183 V4L2_CAP_AUDIO | V4L2_CAP_READWRITE | V4L2_CAP_VBI_CAPTURE | \
184 V4L2_CAP_SLICED_VBI_CAPTURE)
185#define IVTV_CAP_DECODER (V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_SLICED_VBI_OUTPUT)
186
187struct ivtv_card_video_input {
188 u8 video_type;
189 u8 audio_index;
190 u16 video_input;
191};
192
193struct ivtv_card_audio_input {
194 u8 audio_type;
195 u32 audio_input;
196 u16 muxer_input;
197
198};
199
200struct ivtv_card_output {
201 u8 name[32];
202 u16 video_output;
203};
204
205struct ivtv_card_pci_info {
206 u16 device;
207 u16 subsystem_vendor;
208 u16 subsystem_device;
209};
210
211
212
213
214
215struct ivtv_gpio_init {
216 u16 direction;
217 u16 initial_value;
218};
219
220struct ivtv_gpio_video_input {
221 u16 mask;
222 u16 tuner;
223 u16 composite;
224 u16 svideo;
225};
226
227struct ivtv_gpio_audio_input {
228 u16 mask;
229 u16 tuner;
230 u16 linein;
231 u16 radio;
232};
233
234struct ivtv_gpio_audio_mute {
235 u16 mask;
236 u16 mute;
237};
238
239struct ivtv_gpio_audio_mode {
240 u16 mask;
241 u16 mono;
242 u16 stereo;
243 u16 lang1;
244 u16 lang2;
245 u16 both;
246};
247
248struct ivtv_gpio_audio_freq {
249 u16 mask;
250 u16 f32000;
251 u16 f44100;
252 u16 f48000;
253};
254
255struct ivtv_gpio_audio_detect {
256 u16 mask;
257 u16 stereo;
258
259};
260
261struct ivtv_card_tuner {
262 v4l2_std_id std;
263 int tuner;
264};
265
266struct ivtv_card_tuner_i2c {
267 unsigned short radio[2];
268 unsigned short demod[2];
269 unsigned short tv[4];
270};
271
272
273struct ivtv_card {
274 int type;
275 char *name;
276 char *comment;
277 u32 v4l2_capabilities;
278 u32 hw_video;
279 u32 hw_audio;
280 u32 hw_audio_ctrl;
281 u32 hw_muxer;
282 u32 hw_all;
283 struct ivtv_card_video_input video_inputs[IVTV_CARD_MAX_VIDEO_INPUTS];
284 struct ivtv_card_audio_input audio_inputs[IVTV_CARD_MAX_AUDIO_INPUTS];
285 struct ivtv_card_audio_input radio_input;
286 int nof_outputs;
287 const struct ivtv_card_output *video_outputs;
288 u8 gr_config;
289 u8 xceive_pin;
290
291
292 struct ivtv_gpio_init gpio_init;
293 struct ivtv_gpio_video_input gpio_video_input;
294 struct ivtv_gpio_audio_input gpio_audio_input;
295 struct ivtv_gpio_audio_mute gpio_audio_mute;
296 struct ivtv_gpio_audio_mode gpio_audio_mode;
297 struct ivtv_gpio_audio_freq gpio_audio_freq;
298 struct ivtv_gpio_audio_detect gpio_audio_detect;
299
300 struct ivtv_card_tuner tuners[IVTV_CARD_MAX_TUNERS];
301 struct ivtv_card_tuner_i2c *i2c;
302
303
304
305 const struct ivtv_card_pci_info *pci_list;
306};
307
308int ivtv_get_input(struct ivtv *itv, u16 index, struct v4l2_input *input);
309int ivtv_get_output(struct ivtv *itv, u16 index, struct v4l2_output *output);
310int ivtv_get_audio_input(struct ivtv *itv, u16 index, struct v4l2_audio *input);
311int ivtv_get_audio_output(struct ivtv *itv, u16 index, struct v4l2_audioout *output);
312const struct ivtv_card *ivtv_get_card(u16 index);
313
314#endif
315