Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]

Diff markup

Differences between /linux/drivers/media/video/cx88/cx88.h (Version 2.6.25) and /linux/drivers/media/video/cx88/cx88.h (Version 2.6.25.8)


  1 /*                                                  1 /*
  2  *                                                  2  *
  3  * v4l2 device driver for cx2388x based TV car      3  * v4l2 device driver for cx2388x based TV cards
  4  *                                                  4  *
  5  * (c) 2003,04 Gerd Knorr <kraxel@bytesex.org>      5  * (c) 2003,04 Gerd Knorr <kraxel@bytesex.org> [SUSE Labs]
  6  *                                                  6  *
  7  *  This program is free software; you can red      7  *  This program is free software; you can redistribute it and/or modify
  8  *  it under the terms of the GNU General Publ      8  *  it under the terms of the GNU General Public License as published by
  9  *  the Free Software Foundation; either versi      9  *  the Free Software Foundation; either version 2 of the License, or
 10  *  (at your option) any later version.            10  *  (at your option) any later version.
 11  *                                                 11  *
 12  *  This program is distributed in the hope th     12  *  This program is distributed in the hope that it will be useful,
 13  *  but WITHOUT ANY WARRANTY; without even the     13  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 14  *  MERCHANTABILITY or FITNESS FOR A PARTICULA     14  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 15  *  GNU General Public License for more detail     15  *  GNU General Public License for more details.
 16  *                                                 16  *
 17  *  You should have received a copy of the GNU     17  *  You should have received a copy of the GNU General Public License
 18  *  along with this program; if not, write to      18  *  along with this program; if not, write to the Free Software
 19  *  Foundation, Inc., 675 Mass Ave, Cambridge,     19  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 20  */                                                20  */
 21                                                    21 
 22 #include <linux/pci.h>                             22 #include <linux/pci.h>
 23 #include <linux/i2c.h>                             23 #include <linux/i2c.h>
 24 #include <linux/i2c-algo-bit.h>                    24 #include <linux/i2c-algo-bit.h>
 25 #include <linux/videodev2.h>                       25 #include <linux/videodev2.h>
 26 #include <linux/kdev_t.h>                          26 #include <linux/kdev_t.h>
 27                                                    27 
 28 #include <media/v4l2-common.h>                     28 #include <media/v4l2-common.h>
 29 #include <media/tuner.h>                           29 #include <media/tuner.h>
 30 #include <media/tveeprom.h>                        30 #include <media/tveeprom.h>
 31 #include <media/videobuf-dma-sg.h>                 31 #include <media/videobuf-dma-sg.h>
 32 #include <media/cx2341x.h>                         32 #include <media/cx2341x.h>
 33 #include <media/audiochip.h>                       33 #include <media/audiochip.h>
 34 #if defined(CONFIG_VIDEO_CX88_DVB) || defined(     34 #if defined(CONFIG_VIDEO_CX88_DVB) || defined(CONFIG_VIDEO_CX88_DVB_MODULE)
 35 #include <media/videobuf-dvb.h>                    35 #include <media/videobuf-dvb.h>
 36 #endif                                             36 #endif
 37                                                    37 
 38 #include "btcx-risc.h"                             38 #include "btcx-risc.h"
 39 #include "cx88-reg.h"                              39 #include "cx88-reg.h"
 40                                                    40 
 41 #include <linux/version.h>                         41 #include <linux/version.h>
 42 #include <linux/mutex.h>                           42 #include <linux/mutex.h>
 43 #define CX88_VERSION_CODE KERNEL_VERSION(0,0,6     43 #define CX88_VERSION_CODE KERNEL_VERSION(0,0,6)
 44                                                    44 
 45 #define UNSET (-1U)                                45 #define UNSET (-1U)
 46                                                    46 
 47 #define CX88_MAXBOARDS 8                           47 #define CX88_MAXBOARDS 8
 48                                                    48 
 49 /* Max number of inputs by card */                 49 /* Max number of inputs by card */
 50 #define MAX_CX88_INPUT 8                           50 #define MAX_CX88_INPUT 8
 51                                                    51 
 52 /* -------------------------------------------     52 /* ----------------------------------------------------------- */
 53 /* defines and enums                               53 /* defines and enums                                           */
 54                                                    54 
 55 /* Currently unsupported by the driver: PAL/H,     55 /* Currently unsupported by the driver: PAL/H, NTSC/Kr, SECAM B/G/H/LC */
 56 #define CX88_NORMS (\                              56 #define CX88_NORMS (\
 57         V4L2_STD_NTSC_M|  V4L2_STD_NTSC_M_JP|      57         V4L2_STD_NTSC_M|  V4L2_STD_NTSC_M_JP|  V4L2_STD_NTSC_443 | \
 58         V4L2_STD_PAL_BG|  V4L2_STD_PAL_DK   |      58         V4L2_STD_PAL_BG|  V4L2_STD_PAL_DK   |  V4L2_STD_PAL_I    | \
 59         V4L2_STD_PAL_M |  V4L2_STD_PAL_N    |      59         V4L2_STD_PAL_M |  V4L2_STD_PAL_N    |  V4L2_STD_PAL_Nc   | \
 60         V4L2_STD_PAL_60|  V4L2_STD_SECAM_L  |      60         V4L2_STD_PAL_60|  V4L2_STD_SECAM_L  |  V4L2_STD_SECAM_DK )
 61                                                    61 
 62 #define FORMAT_FLAGS_PACKED       0x01             62 #define FORMAT_FLAGS_PACKED       0x01
 63 #define FORMAT_FLAGS_PLANAR       0x02             63 #define FORMAT_FLAGS_PLANAR       0x02
 64                                                    64 
 65 #define VBI_LINE_COUNT              17             65 #define VBI_LINE_COUNT              17
 66 #define VBI_LINE_LENGTH           2048             66 #define VBI_LINE_LENGTH           2048
 67                                                    67 
 68 /* need "shadow" registers for some write-only     68 /* need "shadow" registers for some write-only ones ... */
 69 #define SHADOW_AUD_VOL_CTL           1             69 #define SHADOW_AUD_VOL_CTL           1
 70 #define SHADOW_AUD_BAL_CTL           2             70 #define SHADOW_AUD_BAL_CTL           2
 71 #define SHADOW_MAX                   3             71 #define SHADOW_MAX                   3
 72                                                    72 
 73 /* FM Radio deemphasis type */                     73 /* FM Radio deemphasis type */
 74 enum cx88_deemph_type {                            74 enum cx88_deemph_type {
 75         FM_NO_DEEMPH = 0,                          75         FM_NO_DEEMPH = 0,
 76         FM_DEEMPH_50,                              76         FM_DEEMPH_50,
 77         FM_DEEMPH_75                               77         FM_DEEMPH_75
 78 };                                                 78 };
 79                                                    79 
 80 enum cx88_board_type {                             80 enum cx88_board_type {
 81         CX88_BOARD_NONE = 0,                       81         CX88_BOARD_NONE = 0,
 82         CX88_MPEG_DVB,                             82         CX88_MPEG_DVB,
 83         CX88_MPEG_BLACKBIRD                        83         CX88_MPEG_BLACKBIRD
 84 };                                                 84 };
 85                                                    85 
 86 enum cx8802_board_access {                         86 enum cx8802_board_access {
 87         CX8802_DRVCTL_SHARED    = 1,               87         CX8802_DRVCTL_SHARED    = 1,
 88         CX8802_DRVCTL_EXCLUSIVE = 2,               88         CX8802_DRVCTL_EXCLUSIVE = 2,
 89 };                                                 89 };
 90                                                    90 
 91 /* -------------------------------------------     91 /* ----------------------------------------------------------- */
 92 /* tv norms                                        92 /* tv norms                                                    */
 93                                                    93 
 94 static unsigned int inline norm_maxw(v4l2_std_     94 static unsigned int inline norm_maxw(v4l2_std_id norm)
 95 {                                                  95 {
 96         return (norm & (V4L2_STD_MN & ~V4L2_ST     96         return (norm & (V4L2_STD_MN & ~V4L2_STD_PAL_Nc)) ? 720 : 768;
 97 }                                                  97 }
 98                                                    98 
 99                                                    99 
100 static unsigned int inline norm_maxh(v4l2_std_    100 static unsigned int inline norm_maxh(v4l2_std_id norm)
101 {                                                 101 {
102         return (norm & V4L2_STD_625_50) ? 576     102         return (norm & V4L2_STD_625_50) ? 576 : 480;
103 }                                                 103 }
104                                                   104 
105 /* -------------------------------------------    105 /* ----------------------------------------------------------- */
106 /* static data                                    106 /* static data                                                 */
107                                                   107 
108 struct cx8800_fmt {                               108 struct cx8800_fmt {
109         char  *name;                              109         char  *name;
110         u32   fourcc;          /* v4l2 format     110         u32   fourcc;          /* v4l2 format id */
111         int   depth;                              111         int   depth;
112         int   flags;                              112         int   flags;
113         u32   cxformat;                           113         u32   cxformat;
114 };                                                114 };
115                                                   115 
116 struct cx88_ctrl {                                116 struct cx88_ctrl {
117         struct v4l2_queryctrl  v;                 117         struct v4l2_queryctrl  v;
118         u32                    off;               118         u32                    off;
119         u32                    reg;               119         u32                    reg;
120         u32                    sreg;              120         u32                    sreg;
121         u32                    mask;              121         u32                    mask;
122         u32                    shift;             122         u32                    shift;
123 };                                                123 };
124                                                   124 
125 /* -------------------------------------------    125 /* ----------------------------------------------------------- */
126 /* SRAM memory management data (see cx88-core.    126 /* SRAM memory management data (see cx88-core.c)               */
127                                                   127 
128 #define SRAM_CH21 0   /* video */                 128 #define SRAM_CH21 0   /* video */
129 #define SRAM_CH22 1                               129 #define SRAM_CH22 1
130 #define SRAM_CH23 2                               130 #define SRAM_CH23 2
131 #define SRAM_CH24 3   /* vbi   */                 131 #define SRAM_CH24 3   /* vbi   */
132 #define SRAM_CH25 4   /* audio */                 132 #define SRAM_CH25 4   /* audio */
133 #define SRAM_CH26 5                               133 #define SRAM_CH26 5
134 #define SRAM_CH28 6   /* mpeg */                  134 #define SRAM_CH28 6   /* mpeg */
135 /* more */                                        135 /* more */
136                                                   136 
137 struct sram_channel {                             137 struct sram_channel {
138         char *name;                               138         char *name;
139         u32  cmds_start;                          139         u32  cmds_start;
140         u32  ctrl_start;                          140         u32  ctrl_start;
141         u32  cdt;                                 141         u32  cdt;
142         u32  fifo_start;                          142         u32  fifo_start;
143         u32  fifo_size;                           143         u32  fifo_size;
144         u32  ptr1_reg;                            144         u32  ptr1_reg;
145         u32  ptr2_reg;                            145         u32  ptr2_reg;
146         u32  cnt1_reg;                            146         u32  cnt1_reg;
147         u32  cnt2_reg;                            147         u32  cnt2_reg;
148 };                                                148 };
149 extern struct sram_channel cx88_sram_channels[    149 extern struct sram_channel cx88_sram_channels[];
150                                                   150 
151 /* -------------------------------------------    151 /* ----------------------------------------------------------- */
152 /* card configuration                             152 /* card configuration                                          */
153                                                   153 
154 #define CX88_BOARD_NOAUTO               UNSET     154 #define CX88_BOARD_NOAUTO               UNSET
155 #define CX88_BOARD_UNKNOWN                  0     155 #define CX88_BOARD_UNKNOWN                  0
156 #define CX88_BOARD_HAUPPAUGE                1     156 #define CX88_BOARD_HAUPPAUGE                1
157 #define CX88_BOARD_GDI                      2     157 #define CX88_BOARD_GDI                      2
158 #define CX88_BOARD_PIXELVIEW                3     158 #define CX88_BOARD_PIXELVIEW                3
159 #define CX88_BOARD_ATI_WONDER_PRO           4     159 #define CX88_BOARD_ATI_WONDER_PRO           4
160 #define CX88_BOARD_WINFAST2000XP_EXPERT     5     160 #define CX88_BOARD_WINFAST2000XP_EXPERT     5
161 #define CX88_BOARD_AVERTV_STUDIO_303        6     161 #define CX88_BOARD_AVERTV_STUDIO_303        6
162 #define CX88_BOARD_MSI_TVANYWHERE_MASTER    7     162 #define CX88_BOARD_MSI_TVANYWHERE_MASTER    7
163 #define CX88_BOARD_WINFAST_DV2000           8     163 #define CX88_BOARD_WINFAST_DV2000           8
164 #define CX88_BOARD_LEADTEK_PVR2000          9     164 #define CX88_BOARD_LEADTEK_PVR2000          9
165 #define CX88_BOARD_IODATA_GVVCP3PCI        10     165 #define CX88_BOARD_IODATA_GVVCP3PCI        10
166 #define CX88_BOARD_PROLINK_PLAYTVPVR       11     166 #define CX88_BOARD_PROLINK_PLAYTVPVR       11
167 #define CX88_BOARD_ASUS_PVR_416            12     167 #define CX88_BOARD_ASUS_PVR_416            12
168 #define CX88_BOARD_MSI_TVANYWHERE          13     168 #define CX88_BOARD_MSI_TVANYWHERE          13
169 #define CX88_BOARD_KWORLD_DVB_T            14     169 #define CX88_BOARD_KWORLD_DVB_T            14
170 #define CX88_BOARD_DVICO_FUSIONHDTV_DVB_T1 15     170 #define CX88_BOARD_DVICO_FUSIONHDTV_DVB_T1 15
171 #define CX88_BOARD_KWORLD_LTV883           16     171 #define CX88_BOARD_KWORLD_LTV883           16
172 #define CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_Q      172 #define CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_Q  17
173 #define CX88_BOARD_HAUPPAUGE_DVB_T1        18     173 #define CX88_BOARD_HAUPPAUGE_DVB_T1        18
174 #define CX88_BOARD_CONEXANT_DVB_T1         19     174 #define CX88_BOARD_CONEXANT_DVB_T1         19
175 #define CX88_BOARD_PROVIDEO_PV259          20     175 #define CX88_BOARD_PROVIDEO_PV259          20
176 #define CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_PLUS    176 #define CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_PLUS 21
177 #define CX88_BOARD_PCHDTV_HD3000           22     177 #define CX88_BOARD_PCHDTV_HD3000           22
178 #define CX88_BOARD_DNTV_LIVE_DVB_T         23     178 #define CX88_BOARD_DNTV_LIVE_DVB_T         23
179 #define CX88_BOARD_HAUPPAUGE_ROSLYN        24     179 #define CX88_BOARD_HAUPPAUGE_ROSLYN        24
180 #define CX88_BOARD_DIGITALLOGIC_MEC        25     180 #define CX88_BOARD_DIGITALLOGIC_MEC        25
181 #define CX88_BOARD_IODATA_GVBCTV7E         26     181 #define CX88_BOARD_IODATA_GVBCTV7E         26
182 #define CX88_BOARD_PIXELVIEW_PLAYTV_ULTRA_PRO     182 #define CX88_BOARD_PIXELVIEW_PLAYTV_ULTRA_PRO 27
183 #define CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_T      183 #define CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_T  28
184 #define CX88_BOARD_ADSTECH_DVB_T_PCI              184 #define CX88_BOARD_ADSTECH_DVB_T_PCI          29
185 #define CX88_BOARD_TERRATEC_CINERGY_1400_DVB_T    185 #define CX88_BOARD_TERRATEC_CINERGY_1400_DVB_T1  30
186 #define CX88_BOARD_DVICO_FUSIONHDTV_5_GOLD 31     186 #define CX88_BOARD_DVICO_FUSIONHDTV_5_GOLD 31
187 #define CX88_BOARD_AVERMEDIA_ULTRATV_MC_550 32    187 #define CX88_BOARD_AVERMEDIA_ULTRATV_MC_550 32
188 #define CX88_BOARD_KWORLD_VSTREAM_EXPERT_DVD 3    188 #define CX88_BOARD_KWORLD_VSTREAM_EXPERT_DVD 33
189 #define CX88_BOARD_ATI_HDTVWONDER          34     189 #define CX88_BOARD_ATI_HDTVWONDER          34
190 #define CX88_BOARD_WINFAST_DTV1000         35     190 #define CX88_BOARD_WINFAST_DTV1000         35
191 #define CX88_BOARD_AVERTV_303              36     191 #define CX88_BOARD_AVERTV_303              36
192 #define CX88_BOARD_HAUPPAUGE_NOVASPLUS_S1  37     192 #define CX88_BOARD_HAUPPAUGE_NOVASPLUS_S1  37
193 #define CX88_BOARD_HAUPPAUGE_NOVASE2_S1    38     193 #define CX88_BOARD_HAUPPAUGE_NOVASE2_S1    38
194 #define CX88_BOARD_KWORLD_DVBS_100         39     194 #define CX88_BOARD_KWORLD_DVBS_100         39
195 #define CX88_BOARD_HAUPPAUGE_HVR1100       40     195 #define CX88_BOARD_HAUPPAUGE_HVR1100       40
196 #define CX88_BOARD_HAUPPAUGE_HVR1100LP     41     196 #define CX88_BOARD_HAUPPAUGE_HVR1100LP     41
197 #define CX88_BOARD_DNTV_LIVE_DVB_T_PRO     42     197 #define CX88_BOARD_DNTV_LIVE_DVB_T_PRO     42
198 #define CX88_BOARD_KWORLD_DVB_T_CX22702    43     198 #define CX88_BOARD_KWORLD_DVB_T_CX22702    43
199 #define CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL    199 #define CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL 44
200 #define CX88_BOARD_KWORLD_HARDWARE_MPEG_TV_XPE    200 #define CX88_BOARD_KWORLD_HARDWARE_MPEG_TV_XPERT 45
201 #define CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_HYBR    201 #define CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_HYBRID 46
202 #define CX88_BOARD_PCHDTV_HD5500           47     202 #define CX88_BOARD_PCHDTV_HD5500           47
203 #define CX88_BOARD_KWORLD_MCE200_DELUXE    48     203 #define CX88_BOARD_KWORLD_MCE200_DELUXE    48
204 #define CX88_BOARD_PIXELVIEW_PLAYTV_P7000  49     204 #define CX88_BOARD_PIXELVIEW_PLAYTV_P7000  49
205 #define CX88_BOARD_NPGTECH_REALTV_TOP10FM  50     205 #define CX88_BOARD_NPGTECH_REALTV_TOP10FM  50
206 #define CX88_BOARD_WINFAST_DTV2000H        51     206 #define CX88_BOARD_WINFAST_DTV2000H        51
207 #define CX88_BOARD_GENIATECH_DVBS          52     207 #define CX88_BOARD_GENIATECH_DVBS          52
208 #define CX88_BOARD_HAUPPAUGE_HVR3000       53     208 #define CX88_BOARD_HAUPPAUGE_HVR3000       53
209 #define CX88_BOARD_NORWOOD_MICRO           54     209 #define CX88_BOARD_NORWOOD_MICRO           54
210 #define CX88_BOARD_TE_DTV_250_OEM_SWANN    55     210 #define CX88_BOARD_TE_DTV_250_OEM_SWANN    55
211 #define CX88_BOARD_HAUPPAUGE_HVR1300       56     211 #define CX88_BOARD_HAUPPAUGE_HVR1300       56
212 #define CX88_BOARD_ADSTECH_PTV_390         57     212 #define CX88_BOARD_ADSTECH_PTV_390         57
213 #define CX88_BOARD_PINNACLE_PCTV_HD_800i   58     213 #define CX88_BOARD_PINNACLE_PCTV_HD_800i   58
214                                                   214 
215 enum cx88_itype {                                 215 enum cx88_itype {
216         CX88_VMUX_COMPOSITE1 = 1,                 216         CX88_VMUX_COMPOSITE1 = 1,
217         CX88_VMUX_COMPOSITE2,                     217         CX88_VMUX_COMPOSITE2,
218         CX88_VMUX_COMPOSITE3,                     218         CX88_VMUX_COMPOSITE3,
219         CX88_VMUX_COMPOSITE4,                     219         CX88_VMUX_COMPOSITE4,
220         CX88_VMUX_SVIDEO,                         220         CX88_VMUX_SVIDEO,
221         CX88_VMUX_TELEVISION,                     221         CX88_VMUX_TELEVISION,
222         CX88_VMUX_CABLE,                          222         CX88_VMUX_CABLE,
223         CX88_VMUX_DVB,                            223         CX88_VMUX_DVB,
224         CX88_VMUX_DEBUG,                          224         CX88_VMUX_DEBUG,
225         CX88_RADIO,                               225         CX88_RADIO,
226 };                                                226 };
227                                                   227 
228 struct cx88_input {                               228 struct cx88_input {
229         enum cx88_itype type;                     229         enum cx88_itype type;
230         u32             gpio0, gpio1, gpio2, g    230         u32             gpio0, gpio1, gpio2, gpio3;
231         unsigned int    vmux:2;                   231         unsigned int    vmux:2;
232         unsigned int    audioroute:2;             232         unsigned int    audioroute:2;
233 };                                                233 };
234                                                   234 
235 struct cx88_board {                               235 struct cx88_board {
236         char                    *name;            236         char                    *name;
237         unsigned int            tuner_type;       237         unsigned int            tuner_type;
238         unsigned int            radio_type;       238         unsigned int            radio_type;
239         unsigned char           tuner_addr;       239         unsigned char           tuner_addr;
240         unsigned char           radio_addr;       240         unsigned char           radio_addr;
241         int                     tda9887_conf;     241         int                     tda9887_conf;
242         struct cx88_input       input[MAX_CX88    242         struct cx88_input       input[MAX_CX88_INPUT];
243         struct cx88_input       radio;            243         struct cx88_input       radio;
244         enum cx88_board_type    mpeg;             244         enum cx88_board_type    mpeg;
245         enum audiochip          audio_chip;       245         enum audiochip          audio_chip;
246 };                                                246 };
247                                                   247 
248 struct cx88_subid {                               248 struct cx88_subid {
249         u16     subvendor;                        249         u16     subvendor;
250         u16     subdevice;                        250         u16     subdevice;
251         u32     card;                             251         u32     card;
252 };                                                252 };
253                                                   253 
254 #define INPUT(nr) (core->board.input[nr])         254 #define INPUT(nr) (core->board.input[nr])
255                                                   255 
256 /* -------------------------------------------    256 /* ----------------------------------------------------------- */
257 /* device / file handle status                    257 /* device / file handle status                                 */
258                                                   258 
259 #define RESOURCE_OVERLAY       1                  259 #define RESOURCE_OVERLAY       1
260 #define RESOURCE_VIDEO         2                  260 #define RESOURCE_VIDEO         2
261 #define RESOURCE_VBI           4                  261 #define RESOURCE_VBI           4
262                                                   262 
263 #define BUFFER_TIMEOUT     msecs_to_jiffies(50    263 #define BUFFER_TIMEOUT     msecs_to_jiffies(500)  /* 0.5 seconds */
264                                                   264 
265 /* buffer for one video frame */                  265 /* buffer for one video frame */
266 struct cx88_buffer {                              266 struct cx88_buffer {
267         /* common v4l buffer stuff -- must be     267         /* common v4l buffer stuff -- must be first */
268         struct videobuf_buffer vb;                268         struct videobuf_buffer vb;
269                                                   269 
270         /* cx88 specific */                       270         /* cx88 specific */
271         unsigned int           bpl;               271         unsigned int           bpl;
272         struct btcx_riscmem    risc;              272         struct btcx_riscmem    risc;
273         struct cx8800_fmt      *fmt;              273         struct cx8800_fmt      *fmt;
274         u32                    count;             274         u32                    count;
275 };                                                275 };
276                                                   276 
277 struct cx88_dmaqueue {                            277 struct cx88_dmaqueue {
278         struct list_head       active;            278         struct list_head       active;
279         struct list_head       queued;            279         struct list_head       queued;
280         struct timer_list      timeout;           280         struct timer_list      timeout;
281         struct btcx_riscmem    stopper;           281         struct btcx_riscmem    stopper;
282         u32                    count;             282         u32                    count;
283 };                                                283 };
284                                                   284 
285 struct cx88_core {                                285 struct cx88_core {
286         struct list_head           devlist;       286         struct list_head           devlist;
287         atomic_t                   refcount;      287         atomic_t                   refcount;
288                                                   288 
289         /* board name */                          289         /* board name */
290         int                        nr;            290         int                        nr;
291         char                       name[32];      291         char                       name[32];
292                                                   292 
293         /* pci stuff */                           293         /* pci stuff */
294         int                        pci_bus;       294         int                        pci_bus;
295         int                        pci_slot;      295         int                        pci_slot;
296         u32                        __iomem *lm    296         u32                        __iomem *lmmio;
297         u8                         __iomem *bm    297         u8                         __iomem *bmmio;
298         u32                        shadow[SHAD    298         u32                        shadow[SHADOW_MAX];
299         int                        pci_irqmask    299         int                        pci_irqmask;
300                                                   300 
301         /* i2c i/o */                             301         /* i2c i/o */
302         struct i2c_adapter         i2c_adap;      302         struct i2c_adapter         i2c_adap;
303         struct i2c_algo_bit_data   i2c_algo;      303         struct i2c_algo_bit_data   i2c_algo;
304         struct i2c_client          i2c_client;    304         struct i2c_client          i2c_client;
305         u32                        i2c_state,     305         u32                        i2c_state, i2c_rc;
306                                                   306 
307         /* config info -- analog */               307         /* config info -- analog */
308         unsigned int               boardnr;       308         unsigned int               boardnr;
309         struct cx88_board          board;         309         struct cx88_board          board;
310                                                   310 
311         /* Supported V4L _STD_ tuner formats *    311         /* Supported V4L _STD_ tuner formats */
312         unsigned int               tuner_forma    312         unsigned int               tuner_formats;
313                                                   313 
314         /* config info -- dvb */                  314         /* config info -- dvb */
315 #if defined(CONFIG_VIDEO_CX88_DVB) || defined(    315 #if defined(CONFIG_VIDEO_CX88_DVB) || defined(CONFIG_VIDEO_CX88_DVB_MODULE)
316         int                        (*prev_set_    316         int                        (*prev_set_voltage)(struct dvb_frontend* fe, fe_sec_voltage_t voltage);
317 #endif                                            317 #endif
318                                                   318 
319         /* state info */                          319         /* state info */
320         struct task_struct         *kthread;      320         struct task_struct         *kthread;
321         v4l2_std_id                tvnorm;        321         v4l2_std_id                tvnorm;
322         u32                        tvaudio;       322         u32                        tvaudio;
323         u32                        audiomode_m    323         u32                        audiomode_manual;
324         u32                        audiomode_c    324         u32                        audiomode_current;
325         u32                        input;         325         u32                        input;
326         u32                        astat;         326         u32                        astat;
327         u32                        use_nicam;     327         u32                        use_nicam;
328                                                   328 
329         /* IR remote control state */             329         /* IR remote control state */
330         struct cx88_IR             *ir;           330         struct cx88_IR             *ir;
331                                                   331 
332         struct mutex               lock;          332         struct mutex               lock;
333         /* various v4l controls */                333         /* various v4l controls */
334         u32                        freq;          334         u32                        freq;
335                                                   335 
336         /* cx88-video needs to access cx8802 f    336         /* cx88-video needs to access cx8802 for hybrid tuner pll access. */
337         struct cx8802_dev          *dvbdev;       337         struct cx8802_dev          *dvbdev;
338         enum cx88_board_type       active_type    338         enum cx88_board_type       active_type_id;
339         int                        active_ref;    339         int                        active_ref;
340 };                                                340 };
341                                                   341 
342 struct cx8800_dev;                                342 struct cx8800_dev;
343 struct cx8802_dev;                                343 struct cx8802_dev;
344                                                   344 
345 /* -------------------------------------------    345 /* ----------------------------------------------------------- */
346 /* function 0: video stuff                        346 /* function 0: video stuff                                     */
347                                                   347 
348 struct cx8800_fh {                                348 struct cx8800_fh {
349         struct cx8800_dev          *dev;          349         struct cx8800_dev          *dev;
350         enum v4l2_buf_type         type;          350         enum v4l2_buf_type         type;
351         int                        radio;         351         int                        radio;
352         unsigned int               resources;     352         unsigned int               resources;
353                                                   353 
354         /* video overlay */                       354         /* video overlay */
355         struct v4l2_window         win;           355         struct v4l2_window         win;
356         struct v4l2_clip           *clips;        356         struct v4l2_clip           *clips;
357         unsigned int               nclips;        357         unsigned int               nclips;
358                                                   358 
359         /* video capture */                       359         /* video capture */
360         struct cx8800_fmt          *fmt;          360         struct cx8800_fmt          *fmt;
361         unsigned int               width,heigh    361         unsigned int               width,height;
362         struct videobuf_queue      vidq;          362         struct videobuf_queue      vidq;
363                                                   363 
364         /* vbi capture */                         364         /* vbi capture */
365         struct videobuf_queue      vbiq;          365         struct videobuf_queue      vbiq;
366 };                                                366 };
367                                                   367 
368 struct cx8800_suspend_state {                     368 struct cx8800_suspend_state {
369         int                        disabled;      369         int                        disabled;
370 };                                                370 };
371                                                   371 
372 struct cx8800_dev {                               372 struct cx8800_dev {
373         struct cx88_core           *core;         373         struct cx88_core           *core;
374         struct list_head           devlist;       374         struct list_head           devlist;
375         spinlock_t                 slock;         375         spinlock_t                 slock;
376                                                   376 
377         /* various device info */                 377         /* various device info */
378         unsigned int               resources;     378         unsigned int               resources;
379         struct video_device        *video_dev;    379         struct video_device        *video_dev;
380         struct video_device        *vbi_dev;      380         struct video_device        *vbi_dev;
381         struct video_device        *radio_dev;    381         struct video_device        *radio_dev;
382                                                   382 
383         /* pci i/o */                             383         /* pci i/o */
384         struct pci_dev             *pci;          384         struct pci_dev             *pci;
385         unsigned char              pci_rev,pci    385         unsigned char              pci_rev,pci_lat;
386                                                   386 
387                                                   387 
388         /* capture queues */                      388         /* capture queues */
389         struct cx88_dmaqueue       vidq;          389         struct cx88_dmaqueue       vidq;
390         struct cx88_dmaqueue       vbiq;          390         struct cx88_dmaqueue       vbiq;
391                                                   391 
392         /* various v4l controls */                392         /* various v4l controls */
393                                                   393 
394         /* other global state info */             394         /* other global state info */
395         struct cx8800_suspend_state state;        395         struct cx8800_suspend_state state;
396 };                                                396 };
397                                                   397 
398 /* -------------------------------------------    398 /* ----------------------------------------------------------- */
399 /* function 1: audio/alsa stuff                   399 /* function 1: audio/alsa stuff                                */
400 /* =============> moved to cx88-alsa.c <======    400 /* =============> moved to cx88-alsa.c <====================== */
401                                                   401 
402                                                   402 
403 /* -------------------------------------------    403 /* ----------------------------------------------------------- */
404 /* function 2: mpeg stuff                         404 /* function 2: mpeg stuff                                      */
405                                                   405 
406 struct cx8802_fh {                                406 struct cx8802_fh {
407         struct cx8802_dev          *dev;          407         struct cx8802_dev          *dev;
408         struct videobuf_queue      mpegq;         408         struct videobuf_queue      mpegq;
409 };                                                409 };
410                                                   410 
411 struct cx8802_suspend_state {                     411 struct cx8802_suspend_state {
412         int                        disabled;      412         int                        disabled;
413 };                                                413 };
414                                                   414 
415 struct cx8802_driver {                            415 struct cx8802_driver {
416         struct cx88_core *core;                   416         struct cx88_core *core;
417                                                   417 
418         /* List of drivers attached to device     418         /* List of drivers attached to device */
419         struct list_head drvlist;                 419         struct list_head drvlist;
420                                                   420 
421         /* Type of driver and access required     421         /* Type of driver and access required */
422         enum cx88_board_type type_id;             422         enum cx88_board_type type_id;
423         enum cx8802_board_access hw_access;       423         enum cx8802_board_access hw_access;
424                                                   424 
425         /* MPEG 8802 internal only */             425         /* MPEG 8802 internal only */
426         int (*suspend)(struct pci_dev *pci_dev    426         int (*suspend)(struct pci_dev *pci_dev, pm_message_t state);
427         int (*resume)(struct pci_dev *pci_dev)    427         int (*resume)(struct pci_dev *pci_dev);
428                                                   428 
429         /* MPEG 8802 -> mini driver - Driver p    429         /* MPEG 8802 -> mini driver - Driver probe and configuration */
430         int (*probe)(struct cx8802_driver *drv    430         int (*probe)(struct cx8802_driver *drv);
431         int (*remove)(struct cx8802_driver *dr    431         int (*remove)(struct cx8802_driver *drv);
432                                                   432 
433         /* MPEG 8802 -> mini driver - Access f    433         /* MPEG 8802 -> mini driver - Access for hardware control */
434         int (*advise_acquire)(struct cx8802_dr    434         int (*advise_acquire)(struct cx8802_driver *drv);
435         int (*advise_release)(struct cx8802_dr    435         int (*advise_release)(struct cx8802_driver *drv);
436                                                   436 
437         /* MPEG 8802 <- mini driver - Access f    437         /* MPEG 8802 <- mini driver - Access for hardware control */
438         int (*request_acquire)(struct cx8802_d    438         int (*request_acquire)(struct cx8802_driver *drv);
439         int (*request_release)(struct cx8802_d    439         int (*request_release)(struct cx8802_driver *drv);
440 };                                                440 };
441                                                   441 
442 struct cx8802_dev {                               442 struct cx8802_dev {
443         struct cx88_core           *core;         443         struct cx88_core           *core;
444         spinlock_t                 slock;         444         spinlock_t                 slock;
445                                                   445 
446         /* pci i/o */                             446         /* pci i/o */
447         struct pci_dev             *pci;          447         struct pci_dev             *pci;
448         unsigned char              pci_rev,pci    448         unsigned char              pci_rev,pci_lat;
449                                                   449 
450         /* dma queues */                          450         /* dma queues */
451         struct cx88_dmaqueue       mpegq;         451         struct cx88_dmaqueue       mpegq;
452         u32                        ts_packet_s    452         u32                        ts_packet_size;
453         u32                        ts_packet_c    453         u32                        ts_packet_count;
454                                                   454 
455         /* other global state info */             455         /* other global state info */
456         struct cx8802_suspend_state state;        456         struct cx8802_suspend_state state;
457                                                   457 
458         /* for blackbird only */                  458         /* for blackbird only */
459         struct list_head           devlist;       459         struct list_head           devlist;
460 #if defined(CONFIG_VIDEO_CX88_BLACKBIRD) || \     460 #if defined(CONFIG_VIDEO_CX88_BLACKBIRD) || \
461     defined(CONFIG_VIDEO_CX88_BLACKBIRD_MODULE    461     defined(CONFIG_VIDEO_CX88_BLACKBIRD_MODULE)
462         struct video_device        *mpeg_dev;     462         struct video_device        *mpeg_dev;
463         u32                        mailbox;       463         u32                        mailbox;
464         int                        width;         464         int                        width;
465         int                        height;        465         int                        height;
466         unsigned char              mpeg_active    466         unsigned char              mpeg_active; /* nonzero if mpeg encoder is active */
467                                                   467 
468         /* mpeg params */                         468         /* mpeg params */
469         struct cx2341x_mpeg_params params;        469         struct cx2341x_mpeg_params params;
470 #endif                                            470 #endif
471                                                   471 
472 #if defined(CONFIG_VIDEO_CX88_DVB) || defined(    472 #if defined(CONFIG_VIDEO_CX88_DVB) || defined(CONFIG_VIDEO_CX88_DVB_MODULE)
473         /* for dvb only */                        473         /* for dvb only */
474         struct videobuf_dvb        dvb;           474         struct videobuf_dvb        dvb;
475 #endif                                            475 #endif
476                                                   476 
477 #if defined(CONFIG_VIDEO_CX88_VP3054) || \        477 #if defined(CONFIG_VIDEO_CX88_VP3054) || \
478     defined(CONFIG_VIDEO_CX88_VP3054_MODULE)      478     defined(CONFIG_VIDEO_CX88_VP3054_MODULE)
479         /* For VP3045 secondary I2C bus suppor    479         /* For VP3045 secondary I2C bus support */
480         struct vp3054_i2c_state    *vp3054;       480         struct vp3054_i2c_state    *vp3054;
481 #endif                                            481 #endif
482         /* for switching modulation types */      482         /* for switching modulation types */
483         unsigned char              ts_gen_cntr    483         unsigned char              ts_gen_cntrl;
484                                                   484 
485         /* List of attached drivers */            485         /* List of attached drivers */
486         struct list_head           drvlist;       486         struct list_head           drvlist;
487         struct work_struct         request_mod    487         struct work_struct         request_module_wk;
488 };                                                488 };
489                                                   489 
490 /* -------------------------------------------    490 /* ----------------------------------------------------------- */
491                                                   491 
492 #define cx_read(reg)             readl(core->l    492 #define cx_read(reg)             readl(core->lmmio + ((reg)>>2))
493 #define cx_write(reg,value)      writel((value    493 #define cx_write(reg,value)      writel((value), core->lmmio + ((reg)>>2))
494 #define cx_writeb(reg,value)     writeb((value    494 #define cx_writeb(reg,value)     writeb((value), core->bmmio + (reg))
495                                                   495 
496 #define cx_andor(reg,mask,value) \                496 #define cx_andor(reg,mask,value) \
497   writel((readl(core->lmmio+((reg)>>2)) & ~(ma    497   writel((readl(core->lmmio+((reg)>>2)) & ~(mask)) |\
498   ((value) & (mask)), core->lmmio+((reg)>>2))     498   ((value) & (mask)), core->lmmio+((reg)>>2))
499 #define cx_set(reg,bit)          cx_andor((reg    499 #define cx_set(reg,bit)          cx_andor((reg),(bit),(bit))
500 #define cx_clear(reg,bit)        cx_andor((reg    500 #define cx_clear(reg,bit)        cx_andor((reg),(bit),0)
501                                                   501 
502 #define cx_wait(d) { if (need_resched()) sched    502 #define cx_wait(d) { if (need_resched()) schedule(); else udelay(d); }
503                                                   503 
504 /* shadow registers */                            504 /* shadow registers */
505 #define cx_sread(sreg)              (core->sha    505 #define cx_sread(sreg)              (core->shadow[sreg])
506 #define cx_swrite(sreg,reg,value) \               506 #define cx_swrite(sreg,reg,value) \
507   (core->shadow[sreg] = value, \                  507   (core->shadow[sreg] = value, \
508    writel(core->shadow[sreg], core->lmmio + ((    508    writel(core->shadow[sreg], core->lmmio + ((reg)>>2)))
509 #define cx_sandor(sreg,reg,mask,value) \          509 #define cx_sandor(sreg,reg,mask,value) \
510   (core->shadow[sreg] = (core->shadow[sreg] &     510   (core->shadow[sreg] = (core->shadow[sreg] & ~(mask)) | ((value) & (mask)), \
511    writel(core->shadow[sreg], core->lmmio + ((    511    writel(core->shadow[sreg], core->lmmio + ((reg)>>2)))
512                                                   512 
513 /* -------------------------------------------    513 /* ----------------------------------------------------------- */
514 /* cx88-core.c                                    514 /* cx88-core.c                                                 */
515                                                   515 
516 extern void cx88_print_irqbits(char *name, cha    516 extern void cx88_print_irqbits(char *name, char *tag, char **strings,
517                                int len, u32 bi    517                                int len, u32 bits, u32 mask);
518                                                   518 
519 extern int cx88_core_irq(struct cx88_core *cor    519 extern int cx88_core_irq(struct cx88_core *core, u32 status);
520 extern void cx88_wakeup(struct cx88_core *core    520 extern void cx88_wakeup(struct cx88_core *core,
521                         struct cx88_dmaqueue *    521                         struct cx88_dmaqueue *q, u32 count);
522 extern void cx88_shutdown(struct cx88_core *co    522 extern void cx88_shutdown(struct cx88_core *core);
523 extern int cx88_reset(struct cx88_core *core);    523 extern int cx88_reset(struct cx88_core *core);
524                                                   524 
525 extern int                                        525 extern int
526 cx88_risc_buffer(struct pci_dev *pci, struct b    526 cx88_risc_buffer(struct pci_dev *pci, struct btcx_riscmem *risc,
527                  struct scatterlist *sglist,      527                  struct scatterlist *sglist,
528                  unsigned int top_offset, unsi    528                  unsigned int top_offset, unsigned int bottom_offset,
529                  unsigned int bpl, unsigned in    529                  unsigned int bpl, unsigned int padding, unsigned int lines);
530 extern int                                        530 extern int
531 cx88_risc_databuffer(struct pci_dev *pci, stru    531 cx88_risc_databuffer(struct pci_dev *pci, struct btcx_riscmem *risc,
532                      struct scatterlist *sglis    532                      struct scatterlist *sglist, unsigned int bpl,
533                      unsigned int lines, unsig    533                      unsigned int lines, unsigned int lpi);
534 extern int                                        534 extern int
535 cx88_risc_stopper(struct pci_dev *pci, struct     535 cx88_risc_stopper(struct pci_dev *pci, struct btcx_riscmem *risc,
536                   u32 reg, u32 mask, u32 value    536                   u32 reg, u32 mask, u32 value);
537 extern void                                       537 extern void
538 cx88_free_buffer(struct videobuf_queue *q, str    538 cx88_free_buffer(struct videobuf_queue *q, struct cx88_buffer *buf);
539                                                   539 
540 extern void cx88_risc_disasm(struct cx88_core     540 extern void cx88_risc_disasm(struct cx88_core *core,
541                              struct btcx_riscm    541                              struct btcx_riscmem *risc);
542 extern int cx88_sram_channel_setup(struct cx88    542 extern int cx88_sram_channel_setup(struct cx88_core *core,
543                                    struct sram    543                                    struct sram_channel *ch,
544                                    unsigned in    544                                    unsigned int bpl, u32 risc);
545 extern void cx88_sram_channel_dump(struct cx88    545 extern void cx88_sram_channel_dump(struct cx88_core *core,
546                                    struct sram    546                                    struct sram_channel *ch);
547                                                   547 
548 extern int cx88_set_scale(struct cx88_core *co    548 extern int cx88_set_scale(struct cx88_core *core, unsigned int width,
549                           unsigned int height,    549                           unsigned int height, enum v4l2_field field);
550 extern int cx88_set_tvnorm(struct cx88_core *c    550 extern int cx88_set_tvnorm(struct cx88_core *core, v4l2_std_id norm);
551                                                   551 
552 extern struct video_device *cx88_vdev_init(str    552 extern struct video_device *cx88_vdev_init(struct cx88_core *core,
553                                            str    553                                            struct pci_dev *pci,
554                                            str    554                                            struct video_device *template,
555                                            cha    555                                            char *type);
556 extern struct cx88_core* cx88_core_get(struct     556 extern struct cx88_core* cx88_core_get(struct pci_dev *pci);
557 extern void cx88_core_put(struct cx88_core *co    557 extern void cx88_core_put(struct cx88_core *core,
558                           struct pci_dev *pci)    558                           struct pci_dev *pci);
559                                                   559 
560 extern int cx88_start_audio_dma(struct cx88_co    560 extern int cx88_start_audio_dma(struct cx88_core *core);
561 extern int cx88_stop_audio_dma(struct cx88_cor    561 extern int cx88_stop_audio_dma(struct cx88_core *core);
562                                                   562 
563                                                   563 
564 /* -------------------------------------------    564 /* ----------------------------------------------------------- */
565 /* cx88-vbi.c                                     565 /* cx88-vbi.c                                                  */
566                                                   566 
567 /* Can be used as g_vbi_fmt, try_vbi_fmt and s    567 /* Can be used as g_vbi_fmt, try_vbi_fmt and s_vbi_fmt */
568 int cx8800_vbi_fmt (struct file *file, void *p    568 int cx8800_vbi_fmt (struct file *file, void *priv,
569                                         struct    569                                         struct v4l2_format *f);
570                                                   570 
571 /*                                                571 /*
572 int cx8800_start_vbi_dma(struct cx8800_dev        572 int cx8800_start_vbi_dma(struct cx8800_dev    *dev,
573                          struct cx88_dmaqueue     573                          struct cx88_dmaqueue *q,
574                          struct cx88_buffer       574                          struct cx88_buffer   *buf);
575 */                                                575 */
576 int cx8800_stop_vbi_dma(struct cx8800_dev *dev    576 int cx8800_stop_vbi_dma(struct cx8800_dev *dev);
577 int cx8800_restart_vbi_queue(struct cx8800_dev    577 int cx8800_restart_vbi_queue(struct cx8800_dev    *dev,
578                              struct cx88_dmaqu    578                              struct cx88_dmaqueue *q);
579 void cx8800_vbi_timeout(unsigned long data);      579 void cx8800_vbi_timeout(unsigned long data);
580                                                   580 
581 extern struct videobuf_queue_ops cx8800_vbi_qo    581 extern struct videobuf_queue_ops cx8800_vbi_qops;
582                                                   582 
583 /* -------------------------------------------    583 /* ----------------------------------------------------------- */
584 /* cx88-i2c.c                                     584 /* cx88-i2c.c                                                  */
585                                                   585 
586 extern int cx88_i2c_init(struct cx88_core *cor    586 extern int cx88_i2c_init(struct cx88_core *core, struct pci_dev *pci);
587 extern void cx88_call_i2c_clients(struct cx88_    587 extern void cx88_call_i2c_clients(struct cx88_core *core,
588                                   unsigned int    588                                   unsigned int cmd, void *arg);
589                                                   589 
590                                                   590 
591 /* -------------------------------------------    591 /* ----------------------------------------------------------- */
592 /* cx88-cards.c                                   592 /* cx88-cards.c                                                */
593                                                   593 
594 extern int cx88_tuner_callback(void *dev, int     594 extern int cx88_tuner_callback(void *dev, int command, int arg);
595 extern int cx88_get_resources(const struct cx8    595 extern int cx88_get_resources(const struct cx88_core *core,
596                               struct pci_dev *    596                               struct pci_dev *pci);
597 extern struct cx88_core *cx88_core_create(stru    597 extern struct cx88_core *cx88_core_create(struct pci_dev *pci, int nr);
598                                                   598 
599 /* -------------------------------------------    599 /* ----------------------------------------------------------- */
600 /* cx88-tvaudio.c                                 600 /* cx88-tvaudio.c                                              */
601                                                   601 
602 #define WW_NONE          1                        602 #define WW_NONE          1
603 #define WW_BTSC          2                        603 #define WW_BTSC          2
604 #define WW_BG            3                        604 #define WW_BG            3
605 #define WW_DK            4                        605 #define WW_DK            4
606 #define WW_I             5                        606 #define WW_I             5
607 #define WW_L             6                        607 #define WW_L             6
608 #define WW_EIAJ          7                        608 #define WW_EIAJ          7
609 #define WW_I2SPT         8                        609 #define WW_I2SPT         8
610 #define WW_FM            9                        610 #define WW_FM            9
611                                                   611 
612 void cx88_set_tvaudio(struct cx88_core *core);    612 void cx88_set_tvaudio(struct cx88_core *core);
613 void cx88_newstation(struct cx88_core *core);     613 void cx88_newstation(struct cx88_core *core);
614 void cx88_get_stereo(struct cx88_core *core, s    614 void cx88_get_stereo(struct cx88_core *core, struct v4l2_tuner *t);
615 void cx88_set_stereo(struct cx88_core *core, u    615 void cx88_set_stereo(struct cx88_core *core, u32 mode, int manual);
616 int cx88_audio_thread(void *data);                616 int cx88_audio_thread(void *data);
617                                                   617 
618 int cx8802_register_driver(struct cx8802_drive    618 int cx8802_register_driver(struct cx8802_driver *drv);
619 int cx8802_unregister_driver(struct cx8802_dri    619 int cx8802_unregister_driver(struct cx8802_driver *drv);
620 struct cx8802_dev * cx8802_get_device(struct i    620 struct cx8802_dev * cx8802_get_device(struct inode *inode);
621 struct cx8802_driver * cx8802_get_driver(struc    621 struct cx8802_driver * cx8802_get_driver(struct cx8802_dev *dev, enum cx88_board_type btype);
622                                                   622 
623 /* -------------------------------------------    623 /* ----------------------------------------------------------- */
624 /* cx88-input.c                                   624 /* cx88-input.c                                                */
625                                                   625 
626 int cx88_ir_init(struct cx88_core *core, struc    626 int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci);
627 int cx88_ir_fini(struct cx88_core *core);         627 int cx88_ir_fini(struct cx88_core *core);
628 void cx88_ir_irq(struct cx88_core *core);         628 void cx88_ir_irq(struct cx88_core *core);
629 void cx88_ir_start(struct cx88_core *core, str    629 void cx88_ir_start(struct cx88_core *core, struct cx88_IR *ir);
630 void cx88_ir_stop(struct cx88_core *core, stru    630 void cx88_ir_stop(struct cx88_core *core, struct cx88_IR *ir);
631                                                   631 
632 /* -------------------------------------------    632 /* ----------------------------------------------------------- */
633 /* cx88-mpeg.c                                    633 /* cx88-mpeg.c                                                 */
634                                                   634 
635 int cx8802_buf_prepare(struct videobuf_queue *    635 int cx8802_buf_prepare(struct videobuf_queue *q,struct cx8802_dev *dev,
636                         struct cx88_buffer *bu    636                         struct cx88_buffer *buf, enum v4l2_field field);
637 void cx8802_buf_queue(struct cx8802_dev *dev,     637 void cx8802_buf_queue(struct cx8802_dev *dev, struct cx88_buffer *buf);
638 void cx8802_cancel_buffers(struct cx8802_dev *    638 void cx8802_cancel_buffers(struct cx8802_dev *dev);
639                                                   639 
640 /* -------------------------------------------    640 /* ----------------------------------------------------------- */
641 /* cx88-video.c*/                                 641 /* cx88-video.c*/
642 extern const u32 cx88_user_ctrls[];               642 extern const u32 cx88_user_ctrls[];
643 extern int cx8800_ctrl_query(struct v4l2_query    643 extern int cx8800_ctrl_query(struct v4l2_queryctrl *qctrl);
644 int cx88_enum_input (struct cx88_core  *core,s    644 int cx88_enum_input (struct cx88_core  *core,struct v4l2_input *i);
645 int cx88_set_freq (struct cx88_core  *core,str    645 int cx88_set_freq (struct cx88_core  *core,struct v4l2_frequency *f);
646 int cx88_get_control(struct cx88_core *core, s    646 int cx88_get_control(struct cx88_core *core, struct v4l2_control *ctl);
647 int cx88_set_control(struct cx88_core *core, s    647 int cx88_set_control(struct cx88_core *core, struct v4l2_control *ctl);
648 int cx88_video_mux(struct cx88_core *core, uns    648 int cx88_video_mux(struct cx88_core *core, unsigned int input);
649                                                   649 
650 /*                                                650 /*
651  * Local variables:                               651  * Local variables:
652  * c-basic-offset: 8                              652  * c-basic-offset: 8
653  * End:                                           653  * End:
654  * kate: eol "unix"; indent-width 3; remove-tr    654  * kate: eol "unix"; indent-width 3; remove-trailing-space on; replace-trailing-space-save on; tab-width 8; replace-tabs off; space-indent off; mixed-indent off
655  */                                               655  */
656                                                   656 
  This page was automatically generated by the LXR engine.