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