diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
commit | 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (patch) | |
tree | 0bba044c4ce775e45a88a51686b5d9f90697ea9d /drivers/media/dvb/ttpci/av7110.h |
Linux-2.6.12-rc2v2.6.12-rc2
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.
Let it rip!
Diffstat (limited to 'drivers/media/dvb/ttpci/av7110.h')
-rw-r--r-- | drivers/media/dvb/ttpci/av7110.h | 284 |
1 files changed, 284 insertions, 0 deletions
diff --git a/drivers/media/dvb/ttpci/av7110.h b/drivers/media/dvb/ttpci/av7110.h new file mode 100644 index 000000000000..5070e0523da7 --- /dev/null +++ b/drivers/media/dvb/ttpci/av7110.h | |||
@@ -0,0 +1,284 @@ | |||
1 | #ifndef _AV7110_H_ | ||
2 | #define _AV7110_H_ | ||
3 | |||
4 | #include <linux/interrupt.h> | ||
5 | #include <linux/socket.h> | ||
6 | #include <linux/netdevice.h> | ||
7 | #include <linux/i2c.h> | ||
8 | |||
9 | #ifdef CONFIG_DEVFS_FS | ||
10 | #include <linux/devfs_fs_kernel.h> | ||
11 | #endif | ||
12 | |||
13 | #include <linux/dvb/video.h> | ||
14 | #include <linux/dvb/audio.h> | ||
15 | #include <linux/dvb/dmx.h> | ||
16 | #include <linux/dvb/ca.h> | ||
17 | #include <linux/dvb/osd.h> | ||
18 | #include <linux/dvb/net.h> | ||
19 | |||
20 | #include "dvbdev.h" | ||
21 | #include "demux.h" | ||
22 | #include "dvb_demux.h" | ||
23 | #include "dmxdev.h" | ||
24 | #include "dvb_filter.h" | ||
25 | #include "dvb_net.h" | ||
26 | #include "dvb_ringbuffer.h" | ||
27 | #include "dvb_frontend.h" | ||
28 | #include "ves1820.h" | ||
29 | #include "ves1x93.h" | ||
30 | #include "stv0299.h" | ||
31 | #include "tda8083.h" | ||
32 | #include "sp8870.h" | ||
33 | #include "stv0297.h" | ||
34 | #include "l64781.h" | ||
35 | |||
36 | #include <media/saa7146_vv.h> | ||
37 | |||
38 | |||
39 | #define ANALOG_TUNER_VES1820 1 | ||
40 | #define ANALOG_TUNER_STV0297 2 | ||
41 | #define ANALOG_TUNER_VBI 0x100 | ||
42 | |||
43 | extern int av7110_debug; | ||
44 | |||
45 | #define dprintk(level,args...) \ | ||
46 | do { if ((av7110_debug & level)) { printk("dvb-ttpci: %s(): ", __FUNCTION__); printk(args); } } while (0) | ||
47 | |||
48 | #define MAXFILT 32 | ||
49 | |||
50 | enum {AV_PES_STREAM, PS_STREAM, TS_STREAM, PES_STREAM}; | ||
51 | |||
52 | struct av7110_p2t { | ||
53 | u8 pes[TS_SIZE]; | ||
54 | u8 counter; | ||
55 | long int pos; | ||
56 | int frags; | ||
57 | struct dvb_demux_feed *feed; | ||
58 | }; | ||
59 | |||
60 | /* video MPEG decoder events: */ | ||
61 | /* (code copied from dvb_frontend.c, should maybe be factored out...) */ | ||
62 | #define MAX_VIDEO_EVENT 8 | ||
63 | struct dvb_video_events { | ||
64 | struct video_event events[MAX_VIDEO_EVENT]; | ||
65 | int eventw; | ||
66 | int eventr; | ||
67 | int overflow; | ||
68 | wait_queue_head_t wait_queue; | ||
69 | spinlock_t lock; | ||
70 | }; | ||
71 | |||
72 | |||
73 | /* place to store all the necessary device information */ | ||
74 | struct av7110 { | ||
75 | |||
76 | /* devices */ | ||
77 | |||
78 | struct dvb_device dvb_dev; | ||
79 | struct dvb_net dvb_net; | ||
80 | |||
81 | struct video_device *v4l_dev; | ||
82 | struct video_device *vbi_dev; | ||
83 | |||
84 | struct saa7146_dev *dev; | ||
85 | |||
86 | struct i2c_adapter i2c_adap; | ||
87 | |||
88 | char *card_name; | ||
89 | |||
90 | /* support for analog module of dvb-c */ | ||
91 | int analog_tuner_flags; | ||
92 | int current_input; | ||
93 | u32 current_freq; | ||
94 | |||
95 | struct tasklet_struct debi_tasklet; | ||
96 | struct tasklet_struct gpio_tasklet; | ||
97 | |||
98 | int adac_type; /* audio DAC type */ | ||
99 | #define DVB_ADAC_TI 0 | ||
100 | #define DVB_ADAC_CRYSTAL 1 | ||
101 | #define DVB_ADAC_MSP 2 | ||
102 | #define DVB_ADAC_NONE -1 | ||
103 | |||
104 | |||
105 | /* buffers */ | ||
106 | |||
107 | void *iobuf; /* memory for all buffers */ | ||
108 | struct dvb_ringbuffer avout; /* buffer for video or A/V mux */ | ||
109 | #define AVOUTLEN (128*1024) | ||
110 | struct dvb_ringbuffer aout; /* buffer for audio */ | ||
111 | #define AOUTLEN (64*1024) | ||
112 | void *bmpbuf; | ||
113 | #define BMPLEN (8*32768+1024) | ||
114 | |||
115 | /* bitmap buffers and states */ | ||
116 | |||
117 | int bmpp; | ||
118 | int bmplen; | ||
119 | volatile int bmp_state; | ||
120 | #define BMP_NONE 0 | ||
121 | #define BMP_LOADING 1 | ||
122 | #define BMP_LOADINGS 2 | ||
123 | #define BMP_LOADED 3 | ||
124 | wait_queue_head_t bmpq; | ||
125 | |||
126 | |||
127 | /* DEBI and polled command interface */ | ||
128 | |||
129 | spinlock_t debilock; | ||
130 | struct semaphore dcomlock; | ||
131 | volatile int debitype; | ||
132 | volatile int debilen; | ||
133 | |||
134 | |||
135 | /* Recording and playback flags */ | ||
136 | |||
137 | int rec_mode; | ||
138 | int playing; | ||
139 | #define RP_NONE 0 | ||
140 | #define RP_VIDEO 1 | ||
141 | #define RP_AUDIO 2 | ||
142 | #define RP_AV 3 | ||
143 | |||
144 | |||
145 | /* OSD */ | ||
146 | |||
147 | int osdwin; /* currently active window */ | ||
148 | u16 osdbpp[8]; | ||
149 | struct semaphore osd_sema; | ||
150 | |||
151 | /* CA */ | ||
152 | |||
153 | ca_slot_info_t ci_slot[2]; | ||
154 | |||
155 | int vidmode; | ||
156 | struct dmxdev dmxdev; | ||
157 | struct dvb_demux demux; | ||
158 | |||
159 | struct dmx_frontend hw_frontend; | ||
160 | struct dmx_frontend mem_frontend; | ||
161 | |||
162 | /* for budget mode demux1 */ | ||
163 | struct dmxdev dmxdev1; | ||
164 | struct dvb_demux demux1; | ||
165 | struct dvb_net dvb_net1; | ||
166 | spinlock_t feedlock1; | ||
167 | int feeding1; | ||
168 | u8 tsf; | ||
169 | u32 ttbp; | ||
170 | unsigned char *grabbing; | ||
171 | struct saa7146_pgtable pt; | ||
172 | struct tasklet_struct vpe_tasklet; | ||
173 | |||
174 | int fe_synced; | ||
175 | struct semaphore pid_mutex; | ||
176 | |||
177 | int video_blank; | ||
178 | struct video_status videostate; | ||
179 | int display_ar; | ||
180 | int trickmode; | ||
181 | #define TRICK_NONE 0 | ||
182 | #define TRICK_FAST 1 | ||
183 | #define TRICK_SLOW 2 | ||
184 | #define TRICK_FREEZE 3 | ||
185 | struct audio_status audiostate; | ||
186 | |||
187 | struct dvb_demux_filter *handle2filter[32]; | ||
188 | struct av7110_p2t p2t_filter[MAXFILT]; | ||
189 | struct dvb_filter_pes2ts p2t[2]; | ||
190 | struct ipack ipack[2]; | ||
191 | u8 *kbuf[2]; | ||
192 | |||
193 | int sinfo; | ||
194 | int feeding; | ||
195 | |||
196 | int arm_errors; | ||
197 | int registered; | ||
198 | |||
199 | |||
200 | /* AV711X */ | ||
201 | |||
202 | u32 arm_fw; | ||
203 | u32 arm_rtsl; | ||
204 | u32 arm_vid; | ||
205 | u32 arm_app; | ||
206 | u32 avtype; | ||
207 | int arm_ready; | ||
208 | struct task_struct *arm_thread; | ||
209 | wait_queue_head_t arm_wait; | ||
210 | u16 arm_loops; | ||
211 | int arm_rmmod; | ||
212 | |||
213 | void *debi_virt; | ||
214 | dma_addr_t debi_bus; | ||
215 | |||
216 | u16 pids[DMX_PES_OTHER]; | ||
217 | |||
218 | struct dvb_ringbuffer ci_rbuffer; | ||
219 | struct dvb_ringbuffer ci_wbuffer; | ||
220 | |||
221 | struct audio_mixer mixer; | ||
222 | |||
223 | struct dvb_adapter *dvb_adapter; | ||
224 | struct dvb_device *video_dev; | ||
225 | struct dvb_device *audio_dev; | ||
226 | struct dvb_device *ca_dev; | ||
227 | struct dvb_device *osd_dev; | ||
228 | |||
229 | struct dvb_video_events video_events; | ||
230 | video_size_t video_size; | ||
231 | |||
232 | u32 ir_config; | ||
233 | |||
234 | /* firmware stuff */ | ||
235 | unsigned char *bin_fw; | ||
236 | unsigned long size_fw; | ||
237 | |||
238 | unsigned char *bin_dpram; | ||
239 | unsigned long size_dpram; | ||
240 | |||
241 | unsigned char *bin_root; | ||
242 | unsigned long size_root; | ||
243 | |||
244 | struct dvb_frontend* fe; | ||
245 | fe_status_t fe_status; | ||
246 | int (*fe_init)(struct dvb_frontend* fe); | ||
247 | int (*fe_read_status)(struct dvb_frontend* fe, fe_status_t* status); | ||
248 | int (*fe_diseqc_reset_overload)(struct dvb_frontend* fe); | ||
249 | int (*fe_diseqc_send_master_cmd)(struct dvb_frontend* fe, struct dvb_diseqc_master_cmd* cmd); | ||
250 | int (*fe_diseqc_send_burst)(struct dvb_frontend* fe, fe_sec_mini_cmd_t minicmd); | ||
251 | int (*fe_set_tone)(struct dvb_frontend* fe, fe_sec_tone_mode_t tone); | ||
252 | int (*fe_set_voltage)(struct dvb_frontend* fe, fe_sec_voltage_t voltage); | ||
253 | int (*fe_dishnetwork_send_legacy_command)(struct dvb_frontend* fe, unsigned int cmd); | ||
254 | int (*fe_set_frontend)(struct dvb_frontend* fe, struct dvb_frontend_parameters* params); | ||
255 | }; | ||
256 | |||
257 | |||
258 | extern void ChangePIDs(struct av7110 *av7110, u16 vpid, u16 apid, u16 ttpid, | ||
259 | u16 subpid, u16 pcrpid); | ||
260 | |||
261 | extern void av7110_register_irc_handler(void (*func)(u32)); | ||
262 | extern void av7110_unregister_irc_handler(void (*func)(u32)); | ||
263 | extern void av7110_setup_irc_config (struct av7110 *av7110, u32 ir_config); | ||
264 | |||
265 | extern int av7110_ir_init (void); | ||
266 | extern void av7110_ir_exit (void); | ||
267 | |||
268 | /* msp3400 i2c subaddresses */ | ||
269 | #define MSP_WR_DEM 0x10 | ||
270 | #define MSP_RD_DEM 0x11 | ||
271 | #define MSP_WR_DSP 0x12 | ||
272 | #define MSP_RD_DSP 0x13 | ||
273 | |||
274 | extern int i2c_writereg(struct av7110 *av7110, u8 id, u8 reg, u8 val); | ||
275 | extern u8 i2c_readreg(struct av7110 *av7110, u8 id, u8 reg); | ||
276 | extern int msp_writereg(struct av7110 *av7110, u8 dev, u16 reg, u16 val); | ||
277 | extern int msp_readreg(struct av7110 *av7110, u8 dev, u16 reg, u16 *val); | ||
278 | |||
279 | |||
280 | extern int av7110_init_analog_module(struct av7110 *av7110); | ||
281 | extern int av7110_init_v4l(struct av7110 *av7110); | ||
282 | extern int av7110_exit_v4l(struct av7110 *av7110); | ||
283 | |||
284 | #endif /* _AV7110_H_ */ | ||