xref: /OK3568_Linux_fs/kernel/drivers/media/pci/ivtv/ivtv-cards.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun     Functions to query card hardware
4*4882a593Smuzhiyun     Copyright (C) 2003-2004  Kevin Thayer <nufan_wfk at yahoo.com>
5*4882a593Smuzhiyun     Copyright (C) 2005-2007  Hans Verkuil <hverkuil@xs4all.nl>
6*4882a593Smuzhiyun 
7*4882a593Smuzhiyun  */
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun #ifndef IVTV_CARDS_H
10*4882a593Smuzhiyun #define IVTV_CARDS_H
11*4882a593Smuzhiyun 
12*4882a593Smuzhiyun /* Supported cards */
13*4882a593Smuzhiyun #define IVTV_CARD_PVR_250	      0	/* WinTV PVR 250 */
14*4882a593Smuzhiyun #define IVTV_CARD_PVR_350	      1	/* encoder, decoder, tv-out */
15*4882a593Smuzhiyun #define IVTV_CARD_PVR_150	      2	/* WinTV PVR 150 and PVR 500 (really just two
16*4882a593Smuzhiyun 					   PVR150s on one PCI board) */
17*4882a593Smuzhiyun #define IVTV_CARD_M179		      3	/* AVerMedia M179 (encoder only) */
18*4882a593Smuzhiyun #define IVTV_CARD_MPG600	      4	/* Kuroutoshikou ITVC16-STVLP/YUAN MPG600, encoder only */
19*4882a593Smuzhiyun #define IVTV_CARD_MPG160	      5	/* Kuroutoshikou ITVC15-STVLP/YUAN MPG160
20*4882a593Smuzhiyun 					   cx23415 based, but does not have tv-out */
21*4882a593Smuzhiyun #define IVTV_CARD_PG600		      6	/* YUAN PG600/DIAMONDMM PVR-550 based on the CX Falcon 2 */
22*4882a593Smuzhiyun #define IVTV_CARD_AVC2410	      7	/* Adaptec AVC-2410 */
23*4882a593Smuzhiyun #define IVTV_CARD_AVC2010	      8	/* Adaptec AVD-2010 (No Tuner) */
24*4882a593Smuzhiyun #define IVTV_CARD_TG5000TV	      9 /* NAGASE TRANSGEAR 5000TV, encoder only */
25*4882a593Smuzhiyun #define IVTV_CARD_VA2000MAX_SNT6     10 /* VA2000MAX-STN6 */
26*4882a593Smuzhiyun #define IVTV_CARD_CX23416GYC	     11 /* Kuroutoshikou CX23416GYC-STVLP (Yuan MPG600GR OEM) */
27*4882a593Smuzhiyun #define IVTV_CARD_GV_MVPRX	     12 /* I/O Data GV-MVP/RX, RX2, RX2W */
28*4882a593Smuzhiyun #define IVTV_CARD_GV_MVPRX2E	     13 /* I/O Data GV-MVP/RX2E */
29*4882a593Smuzhiyun #define IVTV_CARD_GOTVIEW_PCI_DVD    14	/* GotView PCI DVD */
30*4882a593Smuzhiyun #define IVTV_CARD_GOTVIEW_PCI_DVD2   15	/* GotView PCI DVD2 */
31*4882a593Smuzhiyun #define IVTV_CARD_YUAN_MPC622        16	/* Yuan MPC622 miniPCI */
32*4882a593Smuzhiyun #define IVTV_CARD_DCTMTVP1	     17 /* DIGITAL COWBOY DCT-MTVP1 */
33*4882a593Smuzhiyun #define IVTV_CARD_PG600V2	     18 /* Yuan PG600V2/GotView PCI DVD Lite */
34*4882a593Smuzhiyun #define IVTV_CARD_CLUB3D	     19 /* Club3D ZAP-TV1x01 */
35*4882a593Smuzhiyun #define IVTV_CARD_AVERTV_MCE116	     20 /* AVerTV MCE 116 Plus */
36*4882a593Smuzhiyun #define IVTV_CARD_ASUS_FALCON2	     21 /* ASUS Falcon2 */
37*4882a593Smuzhiyun #define IVTV_CARD_AVER_PVR150PLUS    22 /* AVerMedia PVR-150 Plus */
38*4882a593Smuzhiyun #define IVTV_CARD_AVER_EZMAKER       23 /* AVerMedia EZMaker PCI Deluxe */
39*4882a593Smuzhiyun #define IVTV_CARD_AVER_M104          24 /* AverMedia M104 miniPCI card */
40*4882a593Smuzhiyun #define IVTV_CARD_BUFFALO_MV5L       25 /* Buffalo PC-MV5L/PCI card */
41*4882a593Smuzhiyun #define IVTV_CARD_AVER_ULTRA1500MCE  26 /* AVerMedia UltraTV 1500 MCE */
42*4882a593Smuzhiyun #define IVTV_CARD_KIKYOU             27 /* Sony VAIO Giga Pocket (ENX Kikyou) */
43*4882a593Smuzhiyun #define IVTV_CARD_LAST		     27
44*4882a593Smuzhiyun 
45*4882a593Smuzhiyun /* Variants of existing cards but with the same PCI IDs. The driver
46*4882a593Smuzhiyun    detects these based on other device information.
47*4882a593Smuzhiyun    These cards must always come last.
48*4882a593Smuzhiyun    New cards must be inserted above, and the indices of the cards below
49*4882a593Smuzhiyun    must be adjusted accordingly. */
50*4882a593Smuzhiyun 
51*4882a593Smuzhiyun /* PVR-350 V1 (uses saa7114) */
52*4882a593Smuzhiyun #define IVTV_CARD_PVR_350_V1	     (IVTV_CARD_LAST+1)
53*4882a593Smuzhiyun /* 2 variants of Kuroutoshikou CX23416GYC-STVLP (Yuan MPG600GR OEM) */
54*4882a593Smuzhiyun #define IVTV_CARD_CX23416GYC_NOGR    (IVTV_CARD_LAST+2)
55*4882a593Smuzhiyun #define IVTV_CARD_CX23416GYC_NOGRYCS (IVTV_CARD_LAST+3)
56*4882a593Smuzhiyun 
57*4882a593Smuzhiyun /* system vendor and device IDs */
58*4882a593Smuzhiyun #define PCI_VENDOR_ID_ICOMP  0x4444
59*4882a593Smuzhiyun #define PCI_DEVICE_ID_IVTV15 0x0803
60*4882a593Smuzhiyun #define PCI_DEVICE_ID_IVTV16 0x0016
61*4882a593Smuzhiyun 
62*4882a593Smuzhiyun /* subsystem vendor ID */
63*4882a593Smuzhiyun #define IVTV_PCI_ID_HAUPPAUGE		0x0070
64*4882a593Smuzhiyun #define IVTV_PCI_ID_HAUPPAUGE_ALT1	0x0270
65*4882a593Smuzhiyun #define IVTV_PCI_ID_HAUPPAUGE_ALT2	0x4070
66*4882a593Smuzhiyun #define IVTV_PCI_ID_ADAPTEC		0x9005
67*4882a593Smuzhiyun #define IVTV_PCI_ID_ASUSTEK		0x1043
68*4882a593Smuzhiyun #define IVTV_PCI_ID_AVERMEDIA		0x1461
69*4882a593Smuzhiyun #define IVTV_PCI_ID_YUAN1		0x12ab
70*4882a593Smuzhiyun #define IVTV_PCI_ID_YUAN2		0xff01
71*4882a593Smuzhiyun #define IVTV_PCI_ID_YUAN3		0xffab
72*4882a593Smuzhiyun #define IVTV_PCI_ID_YUAN4		0xfbab
73*4882a593Smuzhiyun #define IVTV_PCI_ID_DIAMONDMM		0xff92
74*4882a593Smuzhiyun #define IVTV_PCI_ID_IODATA		0x10fc
75*4882a593Smuzhiyun #define IVTV_PCI_ID_MELCO		0x1154
76*4882a593Smuzhiyun #define IVTV_PCI_ID_GOTVIEW1		0xffac
77*4882a593Smuzhiyun #define IVTV_PCI_ID_GOTVIEW2		0xffad
78*4882a593Smuzhiyun #define IVTV_PCI_ID_SONY		0x104d
79*4882a593Smuzhiyun 
80*4882a593Smuzhiyun /* hardware flags, no gaps allowed */
81*4882a593Smuzhiyun #define IVTV_HW_CX25840			(1 << 0)
82*4882a593Smuzhiyun #define IVTV_HW_SAA7115			(1 << 1)
83*4882a593Smuzhiyun #define IVTV_HW_SAA7127			(1 << 2)
84*4882a593Smuzhiyun #define IVTV_HW_MSP34XX			(1 << 3)
85*4882a593Smuzhiyun #define IVTV_HW_TUNER			(1 << 4)
86*4882a593Smuzhiyun #define IVTV_HW_WM8775			(1 << 5)
87*4882a593Smuzhiyun #define IVTV_HW_CS53L32A		(1 << 6)
88*4882a593Smuzhiyun #define IVTV_HW_TVEEPROM		(1 << 7)
89*4882a593Smuzhiyun #define IVTV_HW_SAA7114			(1 << 8)
90*4882a593Smuzhiyun #define IVTV_HW_UPD64031A		(1 << 9)
91*4882a593Smuzhiyun #define IVTV_HW_UPD6408X		(1 << 10)
92*4882a593Smuzhiyun #define IVTV_HW_SAA717X			(1 << 11)
93*4882a593Smuzhiyun #define IVTV_HW_WM8739			(1 << 12)
94*4882a593Smuzhiyun #define IVTV_HW_VP27SMPX		(1 << 13)
95*4882a593Smuzhiyun #define IVTV_HW_M52790			(1 << 14)
96*4882a593Smuzhiyun #define IVTV_HW_GPIO			(1 << 15)
97*4882a593Smuzhiyun #define IVTV_HW_I2C_IR_RX_AVER		(1 << 16)
98*4882a593Smuzhiyun #define IVTV_HW_I2C_IR_RX_HAUP_EXT	(1 << 17) /* External before internal */
99*4882a593Smuzhiyun #define IVTV_HW_I2C_IR_RX_HAUP_INT	(1 << 18)
100*4882a593Smuzhiyun #define IVTV_HW_Z8F0811_IR_HAUP		(1 << 19)
101*4882a593Smuzhiyun #define IVTV_HW_I2C_IR_RX_ADAPTEC	(1 << 20)
102*4882a593Smuzhiyun 
103*4882a593Smuzhiyun #define IVTV_HW_SAA711X   (IVTV_HW_SAA7115 | IVTV_HW_SAA7114)
104*4882a593Smuzhiyun 
105*4882a593Smuzhiyun #define IVTV_HW_IR_ANY (IVTV_HW_I2C_IR_RX_AVER | \
106*4882a593Smuzhiyun 			IVTV_HW_I2C_IR_RX_HAUP_EXT | \
107*4882a593Smuzhiyun 			IVTV_HW_I2C_IR_RX_HAUP_INT | \
108*4882a593Smuzhiyun 			IVTV_HW_Z8F0811_IR_HAUP | \
109*4882a593Smuzhiyun 			IVTV_HW_I2C_IR_RX_ADAPTEC)
110*4882a593Smuzhiyun 
111*4882a593Smuzhiyun /* video inputs */
112*4882a593Smuzhiyun #define	IVTV_CARD_INPUT_VID_TUNER	1
113*4882a593Smuzhiyun #define	IVTV_CARD_INPUT_SVIDEO1		2
114*4882a593Smuzhiyun #define	IVTV_CARD_INPUT_SVIDEO2		3
115*4882a593Smuzhiyun #define	IVTV_CARD_INPUT_COMPOSITE1	4
116*4882a593Smuzhiyun #define	IVTV_CARD_INPUT_COMPOSITE2	5
117*4882a593Smuzhiyun #define	IVTV_CARD_INPUT_COMPOSITE3	6
118*4882a593Smuzhiyun 
119*4882a593Smuzhiyun /* audio inputs */
120*4882a593Smuzhiyun #define	IVTV_CARD_INPUT_AUD_TUNER	1
121*4882a593Smuzhiyun #define	IVTV_CARD_INPUT_LINE_IN1	2
122*4882a593Smuzhiyun #define	IVTV_CARD_INPUT_LINE_IN2	3
123*4882a593Smuzhiyun 
124*4882a593Smuzhiyun #define IVTV_CARD_MAX_VIDEO_INPUTS 6
125*4882a593Smuzhiyun #define IVTV_CARD_MAX_AUDIO_INPUTS 3
126*4882a593Smuzhiyun #define IVTV_CARD_MAX_TUNERS	   3
127*4882a593Smuzhiyun 
128*4882a593Smuzhiyun /* SAA71XX HW inputs */
129*4882a593Smuzhiyun #define IVTV_SAA71XX_COMPOSITE0 0
130*4882a593Smuzhiyun #define IVTV_SAA71XX_COMPOSITE1 1
131*4882a593Smuzhiyun #define IVTV_SAA71XX_COMPOSITE2 2
132*4882a593Smuzhiyun #define IVTV_SAA71XX_COMPOSITE3 3
133*4882a593Smuzhiyun #define IVTV_SAA71XX_COMPOSITE4 4
134*4882a593Smuzhiyun #define IVTV_SAA71XX_COMPOSITE5 5
135*4882a593Smuzhiyun #define IVTV_SAA71XX_SVIDEO0    6
136*4882a593Smuzhiyun #define IVTV_SAA71XX_SVIDEO1    7
137*4882a593Smuzhiyun #define IVTV_SAA71XX_SVIDEO2    8
138*4882a593Smuzhiyun #define IVTV_SAA71XX_SVIDEO3    9
139*4882a593Smuzhiyun 
140*4882a593Smuzhiyun /* SAA717X needs to mark the tuner input by ORing with this flag */
141*4882a593Smuzhiyun #define IVTV_SAA717X_TUNER_FLAG 0x80
142*4882a593Smuzhiyun 
143*4882a593Smuzhiyun /* Dummy HW input */
144*4882a593Smuzhiyun #define IVTV_DUMMY_AUDIO        0
145*4882a593Smuzhiyun 
146*4882a593Smuzhiyun /* GPIO HW inputs */
147*4882a593Smuzhiyun #define IVTV_GPIO_TUNER   0
148*4882a593Smuzhiyun #define IVTV_GPIO_LINE_IN 1
149*4882a593Smuzhiyun 
150*4882a593Smuzhiyun /* SAA717X HW inputs */
151*4882a593Smuzhiyun #define IVTV_SAA717X_IN0 0
152*4882a593Smuzhiyun #define IVTV_SAA717X_IN1 1
153*4882a593Smuzhiyun #define IVTV_SAA717X_IN2 2
154*4882a593Smuzhiyun 
155*4882a593Smuzhiyun /* V4L2 capability aliases */
156*4882a593Smuzhiyun #define IVTV_CAP_ENCODER (V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_TUNER | \
157*4882a593Smuzhiyun 			  V4L2_CAP_AUDIO | V4L2_CAP_READWRITE | V4L2_CAP_VBI_CAPTURE | \
158*4882a593Smuzhiyun 			  V4L2_CAP_SLICED_VBI_CAPTURE)
159*4882a593Smuzhiyun #define IVTV_CAP_DECODER (V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_SLICED_VBI_OUTPUT)
160*4882a593Smuzhiyun 
161*4882a593Smuzhiyun struct ivtv_card_video_input {
162*4882a593Smuzhiyun 	u8  video_type;		/* video input type */
163*4882a593Smuzhiyun 	u8  audio_index;	/* index in ivtv_card_audio_input array */
164*4882a593Smuzhiyun 	u16 video_input;	/* hardware video input */
165*4882a593Smuzhiyun };
166*4882a593Smuzhiyun 
167*4882a593Smuzhiyun struct ivtv_card_audio_input {
168*4882a593Smuzhiyun 	u8  audio_type;		/* audio input type */
169*4882a593Smuzhiyun 	u32 audio_input;	/* hardware audio input */
170*4882a593Smuzhiyun 	u16 muxer_input;	/* hardware muxer input for boards with a
171*4882a593Smuzhiyun 				   multiplexer chip */
172*4882a593Smuzhiyun };
173*4882a593Smuzhiyun 
174*4882a593Smuzhiyun struct ivtv_card_output {
175*4882a593Smuzhiyun 	u8  name[32];
176*4882a593Smuzhiyun 	u16 video_output;  /* hardware video output */
177*4882a593Smuzhiyun };
178*4882a593Smuzhiyun 
179*4882a593Smuzhiyun struct ivtv_card_pci_info {
180*4882a593Smuzhiyun 	u16 device;
181*4882a593Smuzhiyun 	u16 subsystem_vendor;
182*4882a593Smuzhiyun 	u16 subsystem_device;
183*4882a593Smuzhiyun };
184*4882a593Smuzhiyun 
185*4882a593Smuzhiyun /* GPIO definitions */
186*4882a593Smuzhiyun 
187*4882a593Smuzhiyun /* The mask is the set of bits used by the operation */
188*4882a593Smuzhiyun 
189*4882a593Smuzhiyun struct ivtv_gpio_init {		/* set initial GPIO DIR and OUT values */
190*4882a593Smuzhiyun 	u16 direction;		/* DIR setting. Leave to 0 if no init is needed */
191*4882a593Smuzhiyun 	u16 initial_value;
192*4882a593Smuzhiyun };
193*4882a593Smuzhiyun 
194*4882a593Smuzhiyun struct ivtv_gpio_video_input {	/* select tuner/line in input */
195*4882a593Smuzhiyun 	u16 mask;		/* leave to 0 if not supported */
196*4882a593Smuzhiyun 	u16 tuner;
197*4882a593Smuzhiyun 	u16 composite;
198*4882a593Smuzhiyun 	u16 svideo;
199*4882a593Smuzhiyun };
200*4882a593Smuzhiyun 
201*4882a593Smuzhiyun struct ivtv_gpio_audio_input {	/* select tuner/line in input */
202*4882a593Smuzhiyun 	u16 mask;		/* leave to 0 if not supported */
203*4882a593Smuzhiyun 	u16 tuner;
204*4882a593Smuzhiyun 	u16 linein;
205*4882a593Smuzhiyun 	u16 radio;
206*4882a593Smuzhiyun };
207*4882a593Smuzhiyun 
208*4882a593Smuzhiyun struct ivtv_gpio_audio_mute {
209*4882a593Smuzhiyun 	u16 mask;		/* leave to 0 if not supported */
210*4882a593Smuzhiyun 	u16 mute;		/* set this value to mute, 0 to unmute */
211*4882a593Smuzhiyun };
212*4882a593Smuzhiyun 
213*4882a593Smuzhiyun struct ivtv_gpio_audio_mode {
214*4882a593Smuzhiyun 	u16 mask;		/* leave to 0 if not supported */
215*4882a593Smuzhiyun 	u16 mono;		/* set audio to mono */
216*4882a593Smuzhiyun 	u16 stereo;		/* set audio to stereo */
217*4882a593Smuzhiyun 	u16 lang1;		/* set audio to the first language */
218*4882a593Smuzhiyun 	u16 lang2;		/* set audio to the second language */
219*4882a593Smuzhiyun 	u16 both;		/* both languages are output */
220*4882a593Smuzhiyun };
221*4882a593Smuzhiyun 
222*4882a593Smuzhiyun struct ivtv_gpio_audio_freq {
223*4882a593Smuzhiyun 	u16 mask;		/* leave to 0 if not supported */
224*4882a593Smuzhiyun 	u16 f32000;
225*4882a593Smuzhiyun 	u16 f44100;
226*4882a593Smuzhiyun 	u16 f48000;
227*4882a593Smuzhiyun };
228*4882a593Smuzhiyun 
229*4882a593Smuzhiyun struct ivtv_gpio_audio_detect {
230*4882a593Smuzhiyun 	u16 mask;		/* leave to 0 if not supported */
231*4882a593Smuzhiyun 	u16 stereo;		/* if the input matches this value then
232*4882a593Smuzhiyun 				   stereo is detected */
233*4882a593Smuzhiyun };
234*4882a593Smuzhiyun 
235*4882a593Smuzhiyun struct ivtv_card_tuner {
236*4882a593Smuzhiyun 	v4l2_std_id std;	/* standard for which the tuner is suitable */
237*4882a593Smuzhiyun 	int	    tuner;	/* tuner ID (from tuner.h) */
238*4882a593Smuzhiyun };
239*4882a593Smuzhiyun 
240*4882a593Smuzhiyun struct ivtv_card_tuner_i2c {
241*4882a593Smuzhiyun 	unsigned short radio[2];/* radio tuner i2c address to probe */
242*4882a593Smuzhiyun 	unsigned short demod[2];/* demodulator i2c address to probe */
243*4882a593Smuzhiyun 	unsigned short tv[4];	/* tv tuner i2c addresses to probe */
244*4882a593Smuzhiyun };
245*4882a593Smuzhiyun 
246*4882a593Smuzhiyun /* for card information/parameters */
247*4882a593Smuzhiyun struct ivtv_card {
248*4882a593Smuzhiyun 	int type;
249*4882a593Smuzhiyun 	char *name;
250*4882a593Smuzhiyun 	char *comment;
251*4882a593Smuzhiyun 	u32 v4l2_capabilities;
252*4882a593Smuzhiyun 	u32 hw_video;		/* hardware used to process video */
253*4882a593Smuzhiyun 	u32 hw_audio;		/* hardware used to process audio */
254*4882a593Smuzhiyun 	u32 hw_audio_ctrl;	/* hardware used for the V4L2 controls (only 1 dev allowed) */
255*4882a593Smuzhiyun 	u32 hw_muxer;		/* hardware used to multiplex audio input */
256*4882a593Smuzhiyun 	u32 hw_all;		/* all hardware used by the board */
257*4882a593Smuzhiyun 	struct ivtv_card_video_input video_inputs[IVTV_CARD_MAX_VIDEO_INPUTS];
258*4882a593Smuzhiyun 	struct ivtv_card_audio_input audio_inputs[IVTV_CARD_MAX_AUDIO_INPUTS];
259*4882a593Smuzhiyun 	struct ivtv_card_audio_input radio_input;
260*4882a593Smuzhiyun 	int nof_outputs;
261*4882a593Smuzhiyun 	const struct ivtv_card_output *video_outputs;
262*4882a593Smuzhiyun 	u8 gr_config;		/* config byte for the ghost reduction device */
263*4882a593Smuzhiyun 	u8 xceive_pin;		/* XCeive tuner GPIO reset pin */
264*4882a593Smuzhiyun 
265*4882a593Smuzhiyun 	/* GPIO card-specific settings */
266*4882a593Smuzhiyun 	struct ivtv_gpio_init		gpio_init;
267*4882a593Smuzhiyun 	struct ivtv_gpio_video_input	gpio_video_input;
268*4882a593Smuzhiyun 	struct ivtv_gpio_audio_input	gpio_audio_input;
269*4882a593Smuzhiyun 	struct ivtv_gpio_audio_mute	gpio_audio_mute;
270*4882a593Smuzhiyun 	struct ivtv_gpio_audio_mode	gpio_audio_mode;
271*4882a593Smuzhiyun 	struct ivtv_gpio_audio_freq	gpio_audio_freq;
272*4882a593Smuzhiyun 	struct ivtv_gpio_audio_detect	gpio_audio_detect;
273*4882a593Smuzhiyun 
274*4882a593Smuzhiyun 	struct ivtv_card_tuner tuners[IVTV_CARD_MAX_TUNERS];
275*4882a593Smuzhiyun 	struct ivtv_card_tuner_i2c *i2c;
276*4882a593Smuzhiyun 
277*4882a593Smuzhiyun 	/* list of device and subsystem vendor/devices that
278*4882a593Smuzhiyun 	   correspond to this card type. */
279*4882a593Smuzhiyun 	const struct ivtv_card_pci_info *pci_list;
280*4882a593Smuzhiyun };
281*4882a593Smuzhiyun 
282*4882a593Smuzhiyun int ivtv_get_input(struct ivtv *itv, u16 index, struct v4l2_input *input);
283*4882a593Smuzhiyun int ivtv_get_output(struct ivtv *itv, u16 index, struct v4l2_output *output);
284*4882a593Smuzhiyun int ivtv_get_audio_input(struct ivtv *itv, u16 index, struct v4l2_audio *input);
285*4882a593Smuzhiyun int ivtv_get_audio_output(struct ivtv *itv, u16 index, struct v4l2_audioout *output);
286*4882a593Smuzhiyun const struct ivtv_card *ivtv_get_card(u16 index);
287*4882a593Smuzhiyun 
288*4882a593Smuzhiyun #endif
289