1
2
3
4
5
6
7
8
9
10
11
12
13 struct tmComResHWDescr {
14 u8 bLength;
15 u8 bDescriptorType;
16 u8 bDescriptorSubtype;
17 u16 bcdSpecVersion;
18 u32 dwClockFrequency;
19 u32 dwClockUpdateRes;
20 u8 bCapabilities;
21 u32 dwDeviceRegistersLocation;
22 u32 dwHostMemoryRegion;
23 u32 dwHostMemoryRegionSize;
24 u32 dwHostHibernatMemRegion;
25 u32 dwHostHibernatMemRegionSize;
26 } __attribute__((packed));
27
28
29
30
31
32
33 struct tmComResInterfaceDescr {
34 u8 bLength;
35 u8 bDescriptorType;
36 u8 bDescriptorSubtype;
37 u8 bFlags;
38 u8 bInterfaceType;
39 u8 bInterfaceId;
40 u8 bBaseInterface;
41 u8 bInterruptId;
42 u8 bDebugInterruptId;
43 u8 BARLocation;
44 u8 Reserved[3];
45 };
46
47 struct tmComResBusDescr {
48 u64 CommandRing;
49 u64 ResponseRing;
50 u32 CommandWrite;
51 u32 CommandRead;
52 u32 ResponseWrite;
53 u32 ResponseRead;
54 };
55
56 enum tmBusType {
57 NONE = 0,
58 TYPE_BUS_PCI = 1,
59 TYPE_BUS_PCIe = 2,
60 TYPE_BUS_USB = 3,
61 TYPE_BUS_I2C = 4
62 };
63
64 struct tmComResBusInfo {
65 enum tmBusType Type;
66 u16 m_wMaxReqSize;
67 u8 __iomem *m_pdwSetRing;
68 u32 m_dwSizeSetRing;
69 u8 __iomem *m_pdwGetRing;
70 u32 m_dwSizeGetRing;
71 u32 m_dwSetWritePos;
72 u32 m_dwSetReadPos;
73 u32 m_dwGetWritePos;
74 u32 m_dwGetReadPos;
75
76
77 struct mutex lock;
78
79 };
80
81 struct tmComResInfo {
82 u8 id;
83 u8 flags;
84 u16 size;
85 u32 command;
86 u16 controlselector;
87 u8 seqno;
88 } __attribute__((packed));
89
90 enum tmComResCmd {
91 SET_CUR = 0x01,
92 GET_CUR = 0x81,
93 GET_MIN = 0x82,
94 GET_MAX = 0x83,
95 GET_RES = 0x84,
96 GET_LEN = 0x85,
97 GET_INFO = 0x86,
98 GET_DEF = 0x87
99 };
100
101 struct cmd {
102 u8 seqno;
103 u32 inuse;
104 u32 timeout;
105 u32 signalled;
106 struct mutex lock;
107 wait_queue_head_t wait;
108 };
109
110 struct tmDescriptor {
111 u32 pathid;
112 u32 size;
113 void *descriptor;
114 };
115
116 struct tmComResDescrHeader {
117 u8 len;
118 u8 type;
119 u8 subtype;
120 u8 unitid;
121 } __attribute__((packed));
122
123 struct tmComResExtDevDescrHeader {
124 u8 len;
125 u8 type;
126 u8 subtype;
127 u8 unitid;
128 u32 devicetype;
129 u16 deviceid;
130 u32 numgpiopins;
131 u8 numgpiogroups;
132 u8 controlsize;
133 } __attribute__((packed));
134
135 struct tmComResGPIO {
136 u32 pin;
137 u8 state;
138 } __attribute__((packed));
139
140 struct tmComResPathDescrHeader {
141 u8 len;
142 u8 type;
143 u8 subtype;
144 u8 pathid;
145 } __attribute__((packed));
146
147
148 enum tmComResTermType {
149 ITT_ANTENNA = 0x0203,
150 LINE_CONNECTOR = 0x0603,
151 SPDIF_CONNECTOR = 0x0605,
152 COMPOSITE_CONNECTOR = 0x0401,
153 SVIDEO_CONNECTOR = 0x0402,
154 COMPONENT_CONNECTOR = 0x0403,
155 STANDARD_DMA = 0xF101
156 };
157
158 struct tmComResAntTermDescrHeader {
159 u8 len;
160 u8 type;
161 u8 subtype;
162 u8 terminalid;
163 u16 terminaltype;
164 u8 assocterminal;
165 u8 iterminal;
166 u8 controlsize;
167 } __attribute__((packed));
168
169 struct tmComResTunerDescrHeader {
170 u8 len;
171 u8 type;
172 u8 subtype;
173 u8 unitid;
174 u8 sourceid;
175 u8 iunit;
176 u32 tuningstandards;
177 u8 controlsize;
178 u32 controls;
179 } __attribute__((packed));
180
181 enum tmBufferFlag {
182
183 TM_BUFFER_FLAG_EMPTY,
184
185
186 TM_BUFFER_FLAG_DONE,
187
188
189 TM_BUFFER_FLAG_DUMMY_BUFFER
190 };
191
192 struct tmBuffer {
193 u64 *pagetablevirt;
194 u64 pagetablephys;
195 u16 offset;
196 u8 *context;
197 u64 timestamp;
198 enum tmBufferFlag BufferFlag;
199 u32 lostbuffers;
200 u32 validbuffers;
201 u64 *dummypagevirt;
202 u64 dummypagephys;
203 u64 *addressvirt;
204 };
205
206 struct tmHWStreamParameters {
207 u32 bitspersample;
208 u32 samplesperline;
209 u32 numberoflines;
210 u32 pitch;
211 u32 linethreshold;
212 u64 **pagetablelistvirt;
213 u64 *pagetablelistphys;
214 u32 numpagetables;
215 u32 numpagetableentries;
216 };
217
218 struct tmStreamParameters {
219 struct tmHWStreamParameters HWStreamParameters;
220 u64 qwDummyPageTablePhys;
221 u64 *pDummyPageTableVirt;
222 };
223
224 struct tmComResDMATermDescrHeader {
225 u8 len;
226 u8 type;
227 u8 subtyle;
228 u8 unitid;
229 u16 terminaltype;
230 u8 assocterminal;
231 u8 sourceid;
232 u8 iterminal;
233 u32 BARLocation;
234 u8 flags;
235 u8 interruptid;
236 u8 buffercount;
237 u8 metadatasize;
238 u8 numformats;
239 u8 controlsize;
240 } __attribute__((packed));
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263 struct tmComResTSFormatDescrHeader {
264 u8 len;
265 u8 type;
266 u8 subtype;
267 u8 bFormatIndex;
268 u8 bDataOffset;
269 u8 bPacketLength;
270 u8 bStrideLength;
271 u8 guidStrideFormat[16];
272 } __attribute__((packed));
273
274
275
276
277 struct tmComResSelDescrHeader {
278 u8 len;
279 u8 type;
280 u8 subtype;
281 u8 unitid;
282 u8 nrinpins;
283 u8 sourceid;
284 } __attribute__((packed));
285
286
287 struct tmComResProcDescrHeader {
288 u8 len;
289 u8 type;
290 u8 subtype;
291 u8 unitid;
292 u8 sourceid;
293 u16 wreserved;
294 u8 controlsize;
295 } __attribute__((packed));
296
297
298 #define EU_VIDEO_BIT_RATE_MODE_CONSTANT (0)
299 #define EU_VIDEO_BIT_RATE_MODE_VARIABLE_AVERAGE (1)
300 #define EU_VIDEO_BIT_RATE_MODE_VARIABLE_PEAK (2)
301 struct tmComResEncVideoBitRate {
302 u8 ucVideoBitRateMode;
303 u32 dwVideoBitRate;
304 u32 dwVideoBitRatePeak;
305 } __attribute__((packed));
306
307
308 struct tmComResEncVideoInputAspectRatio {
309 u8 width;
310 u8 height;
311 } __attribute__((packed));
312
313
314
315
316
317 #define SAA7164_ENCODER_DEFAULT_GOP_DIST (1)
318 #define SAA7164_ENCODER_DEFAULT_GOP_SIZE (15)
319 struct tmComResEncVideoGopStructure {
320 u8 ucGOPSize;
321 u8 ucRefFrameDist;
322 } __attribute__((packed));
323
324
325 struct tmComResEncoderDescrHeader {
326 u8 len;
327 u8 type;
328 u8 subtype;
329 u8 unitid;
330 u8 vsourceid;
331 u8 asourceid;
332 u8 iunit;
333 u32 dwmControlCap;
334 u32 dwmProfileCap;
335 u32 dwmVidFormatCap;
336 u8 bmVidBitrateCap;
337 u16 wmVidResolutionsCap;
338 u16 wmVidFrmRateCap;
339 u32 dwmAudFormatCap;
340 u8 bmAudBitrateCap;
341 } __attribute__((packed));
342
343
344 struct tmComResAFeatureDescrHeader {
345 u8 len;
346 u8 type;
347 u8 subtype;
348 u8 unitid;
349 u8 sourceid;
350 u8 controlsize;
351 } __attribute__((packed));
352
353
354 struct tmComResAudioDefaults {
355 u8 ucDecoderLevel;
356 u8 ucDecoderFM_Level;
357 u8 ucMonoLevel;
358 u8 ucNICAM_Level;
359 u8 ucSAP_Level;
360 u8 ucADC_Level;
361 } __attribute__((packed));
362
363
364 struct tmComResEncAudioBitRate {
365 u8 ucAudioBitRateMode;
366 u32 dwAudioBitRate;
367 u32 dwAudioBitRatePeak;
368 } __attribute__((packed));
369
370
371 struct tmComResTunerStandard {
372 u8 std;
373 u32 country;
374 } __attribute__((packed));
375
376 struct tmComResTunerStandardAuto {
377 u8 mode;
378 } __attribute__((packed));
379
380
381 struct tmComResPSFormatDescrHeader {
382 u8 len;
383 u8 type;
384 u8 subtype;
385 u8 bFormatIndex;
386 u16 wPacketLength;
387 u16 wPackLength;
388 u8 bPackDataType;
389 } __attribute__((packed));
390
391
392 struct tmComResVBIFormatDescrHeader {
393 u8 len;
394 u8 type;
395 u8 subtype;
396 u8 bFormatIndex;
397 u32 VideoStandard;
398 u8 StartLine;
399 u8 EndLine;
400 u8 FieldRate;
401 u8 bNumLines;
402 } __attribute__((packed));
403
404 struct tmComResProbeCommit {
405 u16 bmHint;
406 u8 bFormatIndex;
407 u8 bFrameIndex;
408 } __attribute__((packed));
409
410 struct tmComResDebugSetLevel {
411 u32 dwDebugLevel;
412 } __attribute__((packed));
413
414 struct tmComResDebugGetData {
415 u32 dwResult;
416 u8 ucDebugData[256];
417 } __attribute__((packed));
418
419 struct tmFwInfoStruct {
420 u32 status;
421 u32 mode;
422 u32 devicespec;
423 u32 deviceinst;
424 u32 CPULoad;
425 u32 RemainHeap;
426 u32 CPUClock;
427 u32 RAMSpeed;
428 } __attribute__((packed));