1 /*        $NetBSD: bt8xx.h,v 1.9 2008/01/16 13:08:54 jmcneill Exp $   */
2 
3 /* This file is merged from ioctl_meteor.h and ioctl_bt848.h from FreeBSD. */
4 /* The copyright below only applies to the ioctl_meteor.h part of this file. */
5 
6 #ifndef _DEV_IC_BT8XX_H_
7 #define _DEV_IC_BT8XX_H_
8 /* $SourceForge: ioctl_meteor.h,v 1.4 2003/03/11 23:11:29 thomasklausner Exp $ */
9 
10 /*
11  * Copyright (c) 1995 Mark Tinguely and Jim Lowe
12  * All rights reserved.
13  *
14  * Redistribution and use in source and binary forms, with or without
15  * modification, are permitted provided that the following conditions
16  * are met:
17  * 1. Redistributions of source code must retain the above copyright
18  *    notice, this list of conditions and the following disclaimer.
19  * 2. Redistributions in binary form must reproduce the above copyright
20  *    notice, this list of conditions and the following disclaimer in the
21  *    documentation and/or other materials provided with the distribution.
22  * 3. All advertising materials mentioning features or use of this software
23  *    must display the following acknowledgement:
24  *        This product includes software developed by Mark Tinguely and Jim Lowe
25  * 4. The name of the author may not be used to endorse or promote products
26  *    derived from this software without specific prior written permission.
27  *
28  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
29  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
30  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
31  * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
32  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
33  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
34  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
35  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
36  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
37  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
38  * POSSIBILITY OF SUCH DAMAGE.
39  *
40  * $FreeBSD: src/sys/i386/include/ioctl_meteor.h,v 1.11 1999/12/29 04:33:02 peter Exp $
41  */
42 /*
43  *        ioctl constants for Matrox Meteor Capture card.
44  */
45 
46 
47 #ifndef _KERNEL
48 #include <sys/types.h>
49 #endif
50 #include <sys/ioccom.h>
51 
52 struct meteor_capframe {
53           short     command;  /* see below for valid METEORCAPFRM commands */
54           short     lowat;              /* start transfer if < this number */
55           short     hiwat;              /* stop transfer if > this number */
56 };
57 
58 /* structure for METEOR[GS]ETGEO - get/set geometry  */
59 struct meteor_geomet {
60           u_short             rows;
61           u_short             columns;
62           u_short             frames;
63           u_int               oformat;
64 };
65 
66 /* structure for METEORGCOUNT-get count of frames, fifo errors and DMA errors */
67 struct meteor_counts {
68           u_int fifo_errors;  /* count of fifo errors since open */
69           u_int dma_errors;   /* count of DMA errors since open */
70           u_int frames_captured;        /* count of frames captured since open */
71           u_int even_fields_captured; /* count of even fields captured */
72           u_int odd_fields_captured; /* count of odd fields captured */
73 };
74 
75 /* structure for getting and setting direct transfers to vram */
76 struct meteor_video {
77           u_int     addr;     /* Address of location to DMA to */
78           u_int     width;    /* Width of memory area */
79           u_int     banksize; /* Size of Vram bank */
80           u_int     ramsize;  /* Size of Vram */
81 };
82 
83 #define METEORCAPTUR _IOW('x', 1, int)                       /* capture a frame */
84 #define METEORCAPFRM _IOW('x', 2, struct meteor_capframe)  /* sync capture */
85 #define METEORSETGEO _IOW('x', 3, struct meteor_geomet)  /* set geometry */
86 #define METEORGETGEO _IOR('x', 4, struct meteor_geomet)  /* get geometry */
87 #define METEORSTATUS _IOR('x', 5, unsigned short) /* get status */
88 #define METEORSHUE   _IOW('x', 6, signed char)              /* set hue */
89 #define METEORGHUE   _IOR('x', 6, signed char)              /* get hue */
90 #define METEORSFMT   _IOW('x', 7, unsigned int)   /* set format */
91 #define METEORGFMT   _IOR('x', 7, unsigned int)   /* get format */
92 #define METEORSINPUT _IOW('x', 8, unsigned int)   /* set input dev */
93 #define METEORGINPUT _IOR('x', 8, unsigned int)   /* get input dev */
94 #define   METEORSCHCV  _IOW('x', 9, unsigned char)          /* set uv gain */
95 #define   METEORGCHCV  _IOR('x', 9, unsigned char)          /* get uv gain */
96 #define   METEORSCOUNT _IOW('x',10, struct meteor_counts)
97 #define   METEORGCOUNT _IOR('x',10, struct meteor_counts)
98 #define METEORSFPS   _IOW('x',11, unsigned short) /* set fps */
99 #define METEORGFPS   _IOR('x',11, unsigned short) /* get fps */
100 #define METEORSSIGNAL _IOW('x', 12, unsigned int) /* set signal */
101 #define METEORGSIGNAL _IOR('x', 12, unsigned int) /* get signal */
102 #define   METEORSVIDEO _IOW('x', 13, struct meteor_video)   /* set video */
103 #define   METEORGVIDEO _IOR('x', 13, struct meteor_video)   /* get video */
104 #define   METEORSBRIG  _IOW('x', 14, unsigned char)         /* set brightness */
105 #define METEORGBRIG  _IOR('x', 14, unsigned char) /* get brightness */
106 #define   METEORSCSAT  _IOW('x', 15, unsigned char)         /* set chroma sat */
107 #define METEORGCSAT  _IOR('x', 15, unsigned char) /* get uv saturation */
108 #define   METEORSCONT  _IOW('x', 16, unsigned char)         /* set contrast */
109 #define   METEORGCONT  _IOR('x', 16, unsigned char)         /* get contrast */
110 #define METEORSBT254 _IOW('x', 17, unsigned short)          /* set Bt254 reg */
111 #define METEORGBT254 _IOR('x', 17, unsigned short)          /* get Bt254 reg */
112 #define METEORSHWS   _IOW('x', 18, unsigned char) /* set hor start reg */
113 #define METEORGHWS   _IOR('x', 18, unsigned char) /* get hor start reg */
114 #define METEORSVWS   _IOW('x', 19, unsigned char) /* set vert start reg */
115 #define METEORGVWS   _IOR('x', 19, unsigned char) /* get vert start reg */
116 #define   METEORSTS    _IOW('x', 20, unsigned char)         /* set time stamp */
117 #define   METEORGTS    _IOR('x', 20, unsigned char)         /* get time stamp */
118 
119 #define   METEOR_STATUS_ID_MASK         0xf000    /* ID of 7196 */
120 #define   METEOR_STATUS_DIR   0x0800    /* Direction of Expansion port YUV */
121 #define   METEOR_STATUS_OEF   0x0200    /* Field detected: Even/Odd */
122 #define   METEOR_STATUS_SVP   0x0100    /* State of VRAM Port:inactive/active */
123 #define   METEOR_STATUS_STTC  0x0080    /* Time Constant: TV/VCR */
124 #define   METEOR_STATUS_HCLK  0x0040    /* Horiz PLL: locked/unlocked */
125 #define   METEOR_STATUS_FIDT  0x0020    /* Field detect: 50/60Hz */
126 #define   METEOR_STATUS_ALTD  0x0002    /* Line alt: no line alt/line alt */
127 #define METEOR_STATUS_CODE    0x0001    /* Colour info: no colour/colour */
128 
129                                         /* METEORCAPTUR capture options */
130 #define METEOR_CAP_SINGLE     0x0001    /* capture one frame */
131 #define METEOR_CAP_CONTINOUS  0x0002    /* continuously capture */
132 #define METEOR_CAP_STOP_CONT  0x0004    /* stop the continuous capture */
133 
134                                         /* METEORCAPFRM capture commands */
135 #define METEOR_CAP_N_FRAMES   0x0001    /* capture N frames */
136 #define METEOR_CAP_STOP_FRAMES          0x0002    /* stop capture N frames */
137 #define   METEOR_HALT_N_FRAMES          0x0003    /* halt of capture N frames */
138 #define METEOR_CONT_N_FRAMES  0x0004    /* continue after above halt */
139 
140                                         /* valid video input formats:  */
141 #define METEOR_FMT_NTSC                 0x00100   /* NTSC --  initialized default */
142 #define METEOR_FMT_PAL                  0x00200   /* PAL */
143 #define METEOR_FMT_SECAM      0x00400   /* SECAM */
144 #define METEOR_FMT_AUTOMODE   0x00800 /* auto-mode */
145 #define METEOR_INPUT_DEV0     0x01000   /* camera input 0 -- default */
146 #define METEOR_INPUT_DEV_RCA  METEOR_INPUT_DEV0
147 #define METEOR_INPUT_DEV1     0x02000   /* camera input 1 */
148 #define METEOR_INPUT_DEV2     0x04000   /* camera input 2 */
149 #define METEOR_INPUT_DEV3     0x08000   /* camera input 3 */
150 #define METEOR_INPUT_DEV_RGB  0x0a000   /* for rgb version of meteor */
151 #define METEOR_INPUT_DEV_SVIDEO         0x06000 /* S-video input port */
152 
153                                         /* valid video output formats:  */
154 #define METEOR_GEO_RGB16      0x0010000 /* packed -- initialized default */
155 #define METEOR_GEO_RGB24      0x0020000 /* RBG 24 bits packed */
156                                                     /* internally stored in 32 bits */
157 #define METEOR_GEO_YUV_PACKED 0x0040000 /* 4-2-2 YUV 16 bits packed */
158 #define METEOR_GEO_YUV_PLANAR 0x0080000 /* 4-2-2 YUV 16 bits planer */
159 #define METEOR_GEO_YUV_PLANER METEOR_GEO_YUV_PLANAR
160 #define METEOR_GEO_UNSIGNED   0x0400000 /* unsigned uv outputs */
161 #define METEOR_GEO_EVEN_ONLY  0x1000000 /* set for even only field capture */
162 #define METEOR_GEO_ODD_ONLY   0x2000000 /* set for odd only field capture */
163 #define METEOR_GEO_FIELD_MASK 0x3000000
164 #define METEOR_GEO_YUV_422    0x4000000 /* 4-2-2 YUV in Y-U-V combined */
165 #define METEOR_GEO_OUTPUT_MASK          0x40f0000
166 #define METEOR_GEO_YUV_12     0x10000000          /* YUV 12 format */
167 #define METEOR_GEO_YUV_9      0x40000000          /* YUV 9 format */
168 
169 #define   METEOR_FIELD_MODE   0x80000000          /* Field cap or Frame cap */
170 
171 #define   METEOR_SIG_MODE_MASK          0xffff0000
172 #define   METEOR_SIG_FRAME    0x00000000          /* signal every frame */
173 #define   METEOR_SIG_FIELD    0x00010000          /* signal every field */
174 
175           /* following structure is used to coordinate the synchronous */
176 
177 struct meteor_mem {
178                     /* kernel write only  */
179           int       frame_size;          /* row*columns*depth */
180           unsigned num_bufs;   /* number of frames in buffer (1-32) */
181                     /* user and kernel change these */
182           int       lowat;               /* kernel starts capture if < this number */
183           int       hiwat;               /* kernel stops capture if > this number.
184                                             hiwat <= numbufs */
185           unsigned active;     /* bit mask of active frame buffers
186                                             kernel sets, user clears */
187           int       num_active_bufs; /* count of active frame buffer
188                                             kernel increments, user decrements */
189 
190                     /* reference to mmapped data */
191           void *    buf;                 /* The real space (virtual addr) */
192 };
193 
194 /* $SourceForge: ioctl_bt848.h,v 1.4 2003/03/11 23:11:29 thomasklausner Exp $ */
195 
196 /*
197  * extensions to ioctl_meteor.h for the bt848 cards
198  *
199  * $FreeBSD: src/sys/i386/include/ioctl_bt848.h,v 1.27 2000/10/26 16:41:48 roger Exp $
200  */
201 
202 
203 /*
204  * frequency sets
205  */
206 #define CHNLSET_NABCST                  1
207 #define CHNLSET_CABLEIRC      2
208 #define CHNLSET_CABLEHRC      3
209 #define CHNLSET_WEUROPE                 4
210 #define CHNLSET_JPNBCST         5
211 #define CHNLSET_JPNCABLE        6
212 #define CHNLSET_XUSSR           7
213 #define CHNLSET_AUSTRALIA       8
214 #define CHNLSET_FRANCE          9
215 #define CHNLSET_MIN         CHNLSET_NABCST
216 #define CHNLSET_MAX         CHNLSET_FRANCE
217 
218 
219 /*
220  * constants for various tuner registers
221  */
222 #define BT848_HUEMIN                    (-90)
223 #define BT848_HUEMAX                    90
224 #define BT848_HUECENTER                 0
225 #define BT848_HUERANGE                  179.3
226 #define BT848_HUEREGMIN                 (-128)
227 #define BT848_HUEREGMAX                 127
228 #define BT848_HUESTEPS                  256
229 
230 #define BT848_BRIGHTMIN                 (-50)
231 #define BT848_BRIGHTMAX                 50
232 #define BT848_BRIGHTCENTER    0
233 #define BT848_BRIGHTRANGE     99.6
234 #define BT848_BRIGHTREGMIN    (-128)
235 #define BT848_BRIGHTREGMAX    127
236 #define BT848_BRIGHTSTEPS     256
237 
238 #define BT848_CONTRASTMIN     0
239 #define BT848_CONTRASTMAX     237
240 #define BT848_CONTRASTCENTER  100
241 #define BT848_CONTRASTRANGE   236.57
242 #define BT848_CONTRASTREGMIN  0
243 #define BT848_CONTRASTREGMAX  511
244 #define BT848_CONTRASTSTEPS   512
245 
246 #define BT848_CHROMAMIN                 0
247 #define BT848_CHROMAMAX                 284
248 #define BT848_CHROMACENTER    100
249 #define BT848_CHROMARANGE     283.89
250 #define BT848_CHROMAREGMIN    0
251 #define BT848_CHROMAREGMAX    511
252 #define BT848_CHROMASTEPS     512
253 
254 #define BT848_SATUMIN                   0
255 #define BT848_SATUMAX                   202
256 #define BT848_SATUCENTER      100
257 #define BT848_SATURANGE                 201.18
258 #define BT848_SATUREGMIN      0
259 #define BT848_SATUREGMAX      511
260 #define BT848_SATUSTEPS                 512
261 
262 #define BT848_SATVMIN                   0
263 #define BT848_SATVMAX                   284
264 #define BT848_SATVCENTER      100
265 #define BT848_SATVRANGE                 283.89
266 #define BT848_SATVREGMIN      0
267 #define BT848_SATVREGMAX      511
268 #define BT848_SATVSTEPS                 512
269 
270 
271 /*
272  * audio stuff
273  */
274 #define AUDIO_TUNER           0x00      /* command for the audio routine */
275 #define AUDIO_EXTERN                    0x01      /* don't confuse them with bit */
276 #define AUDIO_INTERN                    0x02      /* settings */
277 #define AUDIO_MUTE            0x80
278 #define AUDIO_UNMUTE                    0x81
279 
280 
281 /*
282  * EEProm stuff
283  */
284 struct eeProm {
285           short     offset;
286           short     count;
287           u_char    bytes[256];
288 };
289 
290 
291 /*
292  * XXX: this is a hack, should be in ioctl_meteor.h
293  * here to avoid touching that file for now...
294  */
295 #define   TVTUNER_SETCHNL    _IOW('x', 32, unsigned int)    /* set channel */
296 #define   TVTUNER_GETCHNL    _IOR('x', 32, unsigned int)    /* get channel */
297 #define   TVTUNER_SETTYPE    _IOW('x', 33, unsigned int)    /* set tuner type */
298 #define   TVTUNER_GETTYPE    _IOR('x', 33, unsigned int)    /* get tuner type */
299 #define   TVTUNER_GETSTATUS  _IOR('x', 34, unsigned int)    /* get tuner status */
300 #define   TVTUNER_SETFREQ    _IOW('x', 35, unsigned int)    /* set frequency */
301 #define   TVTUNER_GETFREQ    _IOR('x', 36, unsigned int)    /* get frequency */
302 
303 
304 #define BT848_SHUE  _IOW('x', 37, int)            /* set hue */
305 #define BT848_GHUE  _IOR('x', 37, int)            /* get hue */
306 #define   BT848_SBRIG         _IOW('x', 38, int)            /* set brightness */
307 #define BT848_GBRIG _IOR('x', 38, int)            /* get brightness */
308 #define   BT848_SCSAT         _IOW('x', 39, int)            /* set chroma sat */
309 #define BT848_GCSAT _IOR('x', 39, int)            /* get UV saturation */
310 #define   BT848_SCONT         _IOW('x', 40, int)            /* set contrast */
311 #define   BT848_GCONT         _IOR('x', 40, int)            /* get contrast */
312 #define   BT848_SVSAT         _IOW('x', 41, int)            /* set chroma V sat */
313 #define BT848_GVSAT _IOR('x', 41, int)            /* get V saturation */
314 #define   BT848_SUSAT         _IOW('x', 42, int)            /* set chroma U sat */
315 #define BT848_GUSAT _IOR('x', 42, int)            /* get U saturation */
316 
317 #define   BT848_SCBARS        _IOR('x', 43, int)            /* set colorbar */
318 #define   BT848_CCBARS        _IOR('x', 44, int)            /* clear colorbar */
319 
320 
321 #define   BT848_SAUDIO        _IOW('x', 46, int)            /* set audio channel */
322 #define BT848_GAUDIO          _IOR('x', 47, int)            /* get audio channel */
323 #define   BT848_SBTSC         _IOW('x', 48, int)            /* set audio channel */
324 
325 #define   BT848_GSTATUS       _IOR('x', 49, unsigned int)   /* reap status */
326 
327 #define   BT848_WEEPROM       _IOWR('x', 50, struct eeProm) /* write to EEProm */
328 #define   BT848_REEPROM       _IOWR('x', 51, struct eeProm) /* read from EEProm */
329 
330 #define   BT848_SIGNATURE     _IOWR('x', 52, struct eeProm) /* read card sig */
331 
332 #define   TVTUNER_SETAFC      _IOW('x', 53, int)            /* turn AFC on/off */
333 #define TVTUNER_GETAFC        _IOR('x', 54, int)            /* query AFC on/off */
334 #define BT848_SLNOTCH         _IOW('x', 55, int)            /* set luma notch */
335 #define BT848_GLNOTCH         _IOR('x', 56, int)            /* get luma notch */
336 
337 /* Read/Write the BT848's I2C bus directly
338  * b7-b0:    data (read/write)
339  * b15-b8:   internal peripheral register (write)
340  * b23-b16:  i2c addr (write)
341  * b31-b24:  1 = write, 0 = read
342  */
343 #define BT848_I2CWR     _IOWR('x', 57, u_int)    /* i2c read-write */
344 
345 struct bktr_msp_control {
346           unsigned char function;
347           unsigned int  address;
348           unsigned int  data;
349 };
350 
351 #define BT848_MSP_RESET _IO('x', 76)                                  /* MSP chip reset */
352 #define BT848_MSP_READ  _IOWR('x', 77, struct bktr_msp_control)       /* MSP chip read */
353 #define BT848_MSP_WRITE _IOWR('x', 78, struct bktr_msp_control)       /* MSP chip write */
354 
355 /* Support for radio tuner */
356 #define RADIO_SETMODE          _IOW('x', 58, unsigned int)  /* set radio modes */
357 #define RADIO_GETMODE          _IOR('x', 58, unsigned char)  /* get radio modes */
358 #define   RADIO_AFC  0x01               /* These modes will probably not */
359 #define   RADIO_MONO           0x02               /*  work on the FRxxxx. It does          */
360 #define   RADIO_MUTE           0x08               /*  work on the FMxxxx.       */
361 #define RADIO_SETFREQ    _IOW('x', 59, unsigned int)  /* set frequency   */
362 #define RADIO_GETFREQ    _IOR('x', 59, unsigned int)  /* set frequency   */
363  /*        Argument is frequency*100MHz  */
364 
365 /*
366  * XXX: more bad magic,
367  *      we need to fix the METEORGINPUT to return something public
368  *      duplicate them here for now...
369  */
370 #define   METEOR_DEV0                   0x00001000
371 #define   METEOR_DEV1                   0x00002000
372 #define   METEOR_DEV2                   0x00004000
373 #define   METEOR_DEV3                   0x00008000
374 #define   METEOR_DEV_SVIDEO   0x00006000
375 /*
376  * right now I don't know were to put these, but as they are suppose to be
377  * a part of a common video capture interface, these should be relocated to
378  * another place.  Probably most of the METEOR_xxx defines need to be
379  * renamed and moved to a common header
380  */
381 
382 typedef enum { METEOR_PIXTYPE_RGB, METEOR_PIXTYPE_YUV,
383                  METEOR_PIXTYPE_YUV_PACKED,
384                  METEOR_PIXTYPE_YUV_12 } METEOR_PIXTYPE;
385 
386 
387 struct meteor_pixfmt {
388           u_int          index;         /* Index in supported pixfmt list     */
389           METEOR_PIXTYPE type;          /* What's the board gonna feed us     */
390           u_int          Bpp;           /* Bytes per pixel                    */
391           u_int          masks[3];      /* R,G,B or Y,U,V masks, respectively */
392           unsigned       swap_bytes :1; /* Bytes  swapped within shorts       */
393           unsigned       swap_shorts:1; /* Shorts swapped within longs        */
394 };
395 
396 
397 struct bktr_clip {
398     int          x_min;
399     int          x_max;
400     int          y_min;
401     int          y_max;
402 };
403 
404 #define BT848_MAX_CLIP_NODE 100
405 struct _bktr_clip {
406     struct bktr_clip x[BT848_MAX_CLIP_NODE];
407 };
408 
409 /*
410  * I'm using METEOR_xxx just because that will be common to other interface
411  * and less of a surprise
412  */
413 #define METEORSACTPIXFMT      _IOW('x', 64, int)
414 #define METEORGACTPIXFMT      _IOR('x', 64, int)
415 #define METEORGSUPPIXFMT      _IOWR('x', 65, struct meteor_pixfmt)
416 
417 /* set clip list */
418 #define BT848SCLIP     _IOW('x', 66, struct _bktr_clip)
419 #define BT848GCLIP     _IOR('x', 66, struct _bktr_clip)
420 
421 
422 /* set input format */
423 #define BT848SFMT             _IOW('x', 67, unsigned int)
424 #define BT848GFMT             _IOR('x', 67, unsigned int)
425 
426 /* set clear-buffer-on-start */
427 #define BT848SCBUF  _IOW('x', 68, int)
428 #define BT848GCBUF  _IOR('x', 68, int)
429 
430 /* set capture area */
431 /* The capture area is the area of the video image which is grabbed */
432 /* Usually the capture area is 640x480 (768x576 PAL) pixels */
433 /* This area is then scaled to the dimensions the user requires */
434 /* using the METEORGEO ioctl */
435 /* However, the capture area could be 400x300 pixels from the top right */
436 /* corner of the video image */
437 struct bktr_capture_area {
438    int      x_offset;
439    int      y_offset;
440    int      x_size;
441    int      y_size;
442 };
443 #define BT848_SCAPAREA   _IOW('x', 69, struct bktr_capture_area)
444 #define BT848_GCAPAREA   _IOR('x', 69, struct bktr_capture_area)
445 
446 
447 /* Get channel Set */
448 #define BT848_MAX_CHNLSET_NAME_LEN 16
449 struct bktr_chnlset {
450        short   index;
451        short   max_channel;
452        char    name[BT848_MAX_CHNLSET_NAME_LEN];
453 };
454 #define   TVTUNER_GETCHNLSET _IOWR('x', 70, struct bktr_chnlset)
455 
456 
457 
458 /* Infra Red Remote Control */
459 struct bktr_remote {
460        unsigned char data[3];
461 };
462 #define   REMOTE_GETKEY      _IOR('x', 71, struct bktr_remote)/*read the remote */
463                                                             /*control receiver*/
464                                                             /*returns raw data*/
465 
466 
467 /*
468  * Direct access to GPIO pins. You must add BKTR_GPIO_ACCESS to your kernel
469  * configuration file to use these
470  */
471 #define BT848_GPIO_SET_EN      _IOW('x', 72, int)      /* set gpio_out_en */
472 #define BT848_GPIO_GET_EN      _IOR('x', 73, int)      /* get gpio_out_en */
473 #define BT848_GPIO_SET_DATA    _IOW('x', 74, int)      /* set gpio_data */
474 #define BT848_GPIO_GET_DATA    _IOR('x', 75, int)      /* get gpio_data */
475 
476 
477 
478 /*  XXX - Copied from /sys/pci/brktree_reg.h  */
479 #define BT848_IFORM_FORMAT              (0x7<<0)
480 # define BT848_IFORM_F_RSVD             (0x7)
481 # define BT848_IFORM_F_SECAM            (0x6)
482 # define BT848_IFORM_F_PALN             (0x5)
483 # define BT848_IFORM_F_PALM             (0x4)
484 # define BT848_IFORM_F_PALBDGHI         (0x3)
485 # define BT848_IFORM_F_NTSCJ            (0x2)
486 # define BT848_IFORM_F_NTSCM            (0x1)
487 # define BT848_IFORM_F_AUTO             (0x0)
488 
489 
490 
491 #endif /* _DEV_IC_BT8XX_H_ */
492