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));