1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20#ifndef __PVRUSB2_HDW_H
21#define __PVRUSB2_HDW_H
22
23#include <linux/usb.h>
24#include <linux/videodev2.h>
25#include <media/v4l2-dev.h>
26#include "pvrusb2-io.h"
27#include "pvrusb2-ctrl.h"
28
29
30
31
32#define PVR2_CID_STDCUR 2
33#define PVR2_CID_STDAVAIL 3
34#define PVR2_CID_INPUT 4
35#define PVR2_CID_AUDIOMODE 5
36#define PVR2_CID_FREQUENCY 6
37#define PVR2_CID_HRES 7
38#define PVR2_CID_VRES 8
39#define PVR2_CID_CROPL 9
40#define PVR2_CID_CROPT 10
41#define PVR2_CID_CROPW 11
42#define PVR2_CID_CROPH 12
43#define PVR2_CID_CROPCAPPAN 13
44#define PVR2_CID_CROPCAPPAD 14
45#define PVR2_CID_CROPCAPBL 15
46#define PVR2_CID_CROPCAPBT 16
47#define PVR2_CID_CROPCAPBW 17
48#define PVR2_CID_CROPCAPBH 18
49#define PVR2_CID_STDDETECT 19
50
51
52#define PVR2_CVAL_INPUT_TV 0
53#define PVR2_CVAL_INPUT_DTV 1
54#define PVR2_CVAL_INPUT_COMPOSITE 2
55#define PVR2_CVAL_INPUT_SVIDEO 3
56#define PVR2_CVAL_INPUT_RADIO 4
57
58enum pvr2_config {
59 pvr2_config_empty,
60 pvr2_config_mpeg,
61 pvr2_config_vbi,
62 pvr2_config_pcm,
63 pvr2_config_rawvideo,
64};
65
66enum pvr2_v4l_type {
67 pvr2_v4l_type_video,
68 pvr2_v4l_type_vbi,
69 pvr2_v4l_type_radio,
70};
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93#define PVR2_STATE_NONE 0
94#define PVR2_STATE_DEAD 1
95#define PVR2_STATE_COLD 2
96#define PVR2_STATE_WARM 3
97#define PVR2_STATE_ERROR 4
98#define PVR2_STATE_READY 5
99#define PVR2_STATE_RUN 6
100
101
102const char *pvr2_config_get_name(enum pvr2_config);
103
104struct pvr2_hdw;
105
106
107
108struct pvr2_hdw *pvr2_hdw_create(struct usb_interface *intf,
109 const struct usb_device_id *devid);
110
111
112
113int pvr2_hdw_initialize(struct pvr2_hdw *,
114 void (*callback_func)(void *),
115 void *callback_data);
116
117
118void pvr2_hdw_destroy(struct pvr2_hdw *);
119
120
121int pvr2_hdw_dev_ok(struct pvr2_hdw *);
122
123
124
125int pvr2_hdw_get_unit_number(struct pvr2_hdw *);
126
127
128struct usb_device *pvr2_hdw_get_dev(struct pvr2_hdw *);
129
130
131unsigned long pvr2_hdw_get_sn(struct pvr2_hdw *);
132
133
134const char *pvr2_hdw_get_bus_info(struct pvr2_hdw *);
135
136
137const char *pvr2_hdw_get_device_identifier(struct pvr2_hdw *);
138
139
140void pvr2_hdw_disconnect(struct pvr2_hdw *);
141
142
143void pvr2_hdw_set_v4l2_dev(struct pvr2_hdw *, struct video_device *);
144
145
146unsigned int pvr2_hdw_get_ctrl_count(struct pvr2_hdw *);
147
148
149struct pvr2_ctrl *pvr2_hdw_get_ctrl_by_index(struct pvr2_hdw *,unsigned int);
150
151
152struct pvr2_ctrl *pvr2_hdw_get_ctrl_by_id(struct pvr2_hdw *,unsigned int);
153
154
155struct pvr2_ctrl *pvr2_hdw_get_ctrl_v4l(struct pvr2_hdw *,unsigned int ctl_id);
156
157
158struct pvr2_ctrl *pvr2_hdw_get_ctrl_nextv4l(struct pvr2_hdw *,
159 unsigned int ctl_id);
160
161
162int pvr2_hdw_commit_ctl(struct pvr2_hdw *);
163
164
165
166unsigned int pvr2_hdw_get_input_available(struct pvr2_hdw *);
167
168
169
170unsigned int pvr2_hdw_get_input_allowed(struct pvr2_hdw *);
171
172
173
174
175
176
177int pvr2_hdw_set_input_allowed(struct pvr2_hdw *,
178 unsigned int change_mask,
179 unsigned int change_val);
180
181
182const char *pvr2_hdw_get_driver_name(struct pvr2_hdw *);
183
184
185void pvr2_hdw_execute_tuner_poll(struct pvr2_hdw *);
186
187
188int pvr2_hdw_get_tuner_status(struct pvr2_hdw *,struct v4l2_tuner *);
189
190
191int pvr2_hdw_get_cropcap(struct pvr2_hdw *, struct v4l2_cropcap *);
192
193
194int pvr2_hdw_is_hsm(struct pvr2_hdw *);
195
196
197const char *pvr2_hdw_get_type(struct pvr2_hdw *);
198
199
200const char *pvr2_hdw_get_desc(struct pvr2_hdw *);
201
202
203int pvr2_hdw_set_streaming(struct pvr2_hdw *,int);
204
205
206int pvr2_hdw_get_streaming(struct pvr2_hdw *);
207
208
209int pvr2_hdw_get_state(struct pvr2_hdw *);
210
211
212int pvr2_hdw_set_stream_type(struct pvr2_hdw *, enum pvr2_config);
213
214
215struct pvr2_stream *pvr2_hdw_get_video_stream(struct pvr2_hdw *);
216
217
218
219
220
221void pvr2_hdw_cpufw_set_enabled(struct pvr2_hdw *,
222 int mode,
223 int enable_flag);
224
225
226int pvr2_hdw_cpufw_get_enabled(struct pvr2_hdw *);
227
228
229
230
231int pvr2_hdw_cpufw_get(struct pvr2_hdw *,unsigned int offs,
232 char *buf,unsigned int cnt);
233
234
235int pvr2_hdw_v4l_get_minor_number(struct pvr2_hdw *,enum pvr2_v4l_type index);
236
237
238void pvr2_hdw_v4l_store_minor_number(struct pvr2_hdw *,
239 enum pvr2_v4l_type index,int);
240
241
242
243
244
245
246int pvr2_send_request(struct pvr2_hdw *,
247 void *write_ptr,unsigned int write_len,
248 void *read_ptr,unsigned int read_len);
249
250
251int pvr2_write_register(struct pvr2_hdw *, u16, u32);
252
253
254
255void pvr2_hdw_render_useless(struct pvr2_hdw *);
256
257
258void pvr2_hdw_cpureset_assert(struct pvr2_hdw *,int);
259
260
261void pvr2_hdw_device_reset(struct pvr2_hdw *);
262
263
264int pvr2_hdw_untrip(struct pvr2_hdw *);
265
266
267
268
269int pvr2_hdw_cmd_deep_reset(struct pvr2_hdw *);
270
271
272int pvr2_hdw_cmd_powerup(struct pvr2_hdw *);
273
274
275int pvr2_hdw_cmd_decoder_reset(struct pvr2_hdw *);
276
277
278int pvr2_hdw_gpio_get_dir(struct pvr2_hdw *hdw,u32 *);
279int pvr2_hdw_gpio_get_out(struct pvr2_hdw *hdw,u32 *);
280int pvr2_hdw_gpio_get_in(struct pvr2_hdw *hdw,u32 *);
281int pvr2_hdw_gpio_chg_dir(struct pvr2_hdw *hdw,u32 msk,u32 val);
282int pvr2_hdw_gpio_chg_out(struct pvr2_hdw *hdw,u32 msk,u32 val);
283
284
285struct pvr2_hdw_debug_info {
286 int big_lock_held;
287 int ctl_lock_held;
288 int flag_disconnected;
289 int flag_init_ok;
290 int flag_ok;
291 int fw1_state;
292 int flag_decoder_missed;
293 int flag_tripped;
294 int state_encoder_ok;
295 int state_encoder_run;
296 int state_decoder_run;
297 int state_decoder_ready;
298 int state_usbstream_run;
299 int state_decoder_quiescent;
300 int state_pipeline_config;
301 int state_pipeline_req;
302 int state_pipeline_pause;
303 int state_pipeline_idle;
304 int cmd_debug_state;
305 int cmd_debug_write_len;
306 int cmd_debug_read_len;
307 int cmd_debug_write_pend;
308 int cmd_debug_read_pend;
309 int cmd_debug_timeout;
310 int cmd_debug_rstatus;
311 int cmd_debug_wstatus;
312 unsigned char cmd_code;
313};
314
315
316
317
318
319void pvr2_hdw_get_debug_info_unlocked(const struct pvr2_hdw *hdw,
320 struct pvr2_hdw_debug_info *);
321
322
323
324
325
326void pvr2_hdw_get_debug_info_locked(struct pvr2_hdw *hdw,
327 struct pvr2_hdw_debug_info *);
328
329
330
331unsigned int pvr2_hdw_state_report(struct pvr2_hdw *hdw,
332 char *buf_ptr,unsigned int buf_size);
333
334
335void pvr2_hdw_trigger_module_log(struct pvr2_hdw *hdw);
336
337
338
339
340int pvr2_upload_firmware2(struct pvr2_hdw *hdw);
341
342#endif
343