Temporary switch cc3 to the old stabs debugging format to unbreak gdb5.
[dragonfly.git] / sys / i386 / include / ioctl_bt848.h
1 /*
2  * extensions to ioctl_meteor.h for the bt848 cards
3  *
4  * $FreeBSD: src/sys/i386/include/ioctl_bt848.h,v 1.25.2.3 2000/10/31 14:31:27 roger Exp $
5  * $DragonFly: src/sys/i386/include/Attic/ioctl_bt848.h,v 1.2 2003/06/17 04:28:35 dillon Exp $
6  */
7
8 #ifndef  _MACHINE_IOCTL_BT848_H_
9 #define  _MACHINE_IOCTL_BT848_H_
10
11 /*
12  * frequency sets
13  */
14 #define CHNLSET_NABCST          1
15 #define CHNLSET_CABLEIRC        2
16 #define CHNLSET_CABLEHRC        3
17 #define CHNLSET_WEUROPE         4
18 #define CHNLSET_JPNBCST         5
19 #define CHNLSET_JPNCABLE        6
20 #define CHNLSET_XUSSR           7
21 #define CHNLSET_AUSTRALIA       8
22 #define CHNLSET_FRANCE          9
23 #define CHNLSET_MIN             CHNLSET_NABCST
24 #define CHNLSET_MAX             CHNLSET_FRANCE
25
26
27 /*
28  * constants for various tuner registers
29  */
30 #define BT848_HUEMIN            (-90)
31 #define BT848_HUEMAX            90
32 #define BT848_HUECENTER         0
33 #define BT848_HUERANGE          179.3
34 #define BT848_HUEREGMIN         (-128)
35 #define BT848_HUEREGMAX         127
36 #define BT848_HUESTEPS          256
37
38 #define BT848_BRIGHTMIN         (-50)
39 #define BT848_BRIGHTMAX         50
40 #define BT848_BRIGHTCENTER      0
41 #define BT848_BRIGHTRANGE       99.6
42 #define BT848_BRIGHTREGMIN      (-128)
43 #define BT848_BRIGHTREGMAX      127
44 #define BT848_BRIGHTSTEPS       256
45
46 #define BT848_CONTRASTMIN       0
47 #define BT848_CONTRASTMAX       237
48 #define BT848_CONTRASTCENTER    100
49 #define BT848_CONTRASTRANGE     236.57
50 #define BT848_CONTRASTREGMIN    0
51 #define BT848_CONTRASTREGMAX    511
52 #define BT848_CONTRASTSTEPS     512
53
54 #define BT848_CHROMAMIN         0
55 #define BT848_CHROMAMAX         284
56 #define BT848_CHROMACENTER      100
57 #define BT848_CHROMARANGE       283.89
58 #define BT848_CHROMAREGMIN      0
59 #define BT848_CHROMAREGMAX      511
60 #define BT848_CHROMASTEPS       512
61
62 #define BT848_SATUMIN           0
63 #define BT848_SATUMAX           202
64 #define BT848_SATUCENTER        100
65 #define BT848_SATURANGE         201.18
66 #define BT848_SATUREGMIN        0
67 #define BT848_SATUREGMAX        511
68 #define BT848_SATUSTEPS         512
69
70 #define BT848_SATVMIN           0
71 #define BT848_SATVMAX           284
72 #define BT848_SATVCENTER        100
73 #define BT848_SATVRANGE         283.89
74 #define BT848_SATVREGMIN        0
75 #define BT848_SATVREGMAX        511
76 #define BT848_SATVSTEPS         512
77
78
79 /*
80  * audio stuff
81  */
82 #define AUDIO_TUNER             0x00    /* command for the audio routine */
83 #define AUDIO_EXTERN            0x01    /* don't confuse them with bit */
84 #define AUDIO_INTERN            0x02    /* settings */
85 #define AUDIO_MUTE              0x80
86 #define AUDIO_UNMUTE            0x81
87
88
89 /*
90  * EEProm stuff
91  */
92 struct eeProm {
93         short   offset;
94         short   count;
95         u_char  bytes[ 256 ];
96 };
97
98
99 /*
100  * XXX: this is a hack, should be in ioctl_meteor.h
101  * here to avoid touching that file for now...
102  */
103 #define TVTUNER_SETCHNL    _IOW('x', 32, unsigned int)  /* set channel */
104 #define TVTUNER_GETCHNL    _IOR('x', 32, unsigned int)  /* get channel */
105 #define TVTUNER_SETTYPE    _IOW('x', 33, unsigned int)  /* set tuner type */
106 #define TVTUNER_GETTYPE    _IOR('x', 33, unsigned int)  /* get tuner type */
107 #define TVTUNER_GETSTATUS  _IOR('x', 34, unsigned int)  /* get tuner status */
108 #define TVTUNER_SETFREQ    _IOW('x', 35, unsigned int)  /* set frequency */
109 #define TVTUNER_GETFREQ    _IOR('x', 36, unsigned int)  /* get frequency */
110  
111
112 #define BT848_SHUE      _IOW('x', 37, int)              /* set hue */
113 #define BT848_GHUE      _IOR('x', 37, int)              /* get hue */
114 #define BT848_SBRIG     _IOW('x', 38, int)              /* set brightness */
115 #define BT848_GBRIG     _IOR('x', 38, int)              /* get brightness */
116 #define BT848_SCSAT     _IOW('x', 39, int)              /* set chroma sat */
117 #define BT848_GCSAT     _IOR('x', 39, int)              /* get UV saturation */
118 #define BT848_SCONT     _IOW('x', 40, int)              /* set contrast */
119 #define BT848_GCONT     _IOR('x', 40, int)              /* get contrast */
120 #define BT848_SVSAT     _IOW('x', 41, int)              /* set chroma V sat */
121 #define BT848_GVSAT     _IOR('x', 41, int)              /* get V saturation */
122 #define BT848_SUSAT     _IOW('x', 42, int)              /* set chroma U sat */
123 #define BT848_GUSAT     _IOR('x', 42, int)              /* get U saturation */
124
125 #define BT848_SCBARS    _IOR('x', 43, int)              /* set colorbar */
126 #define BT848_CCBARS    _IOR('x', 44, int)              /* clear colorbar */
127
128
129 #define BT848_SAUDIO    _IOW('x', 46, int)              /* set audio channel */
130 #define BT848_GAUDIO    _IOR('x', 47, int)              /* get audio channel */
131 #define BT848_SBTSC     _IOW('x', 48, int)              /* set audio channel */
132
133 #define BT848_GSTATUS   _IOR('x', 49, unsigned int)     /* reap status */
134
135 #define BT848_WEEPROM   _IOWR('x', 50, struct eeProm)   /* write to EEProm */
136 #define BT848_REEPROM   _IOWR('x', 51, struct eeProm)   /* read from EEProm */
137
138 #define BT848_SIGNATURE _IOWR('x', 52, struct eeProm)   /* read card sig */
139
140 #define TVTUNER_SETAFC  _IOW('x', 53, int)              /* turn AFC on/off */
141 #define TVTUNER_GETAFC  _IOR('x', 54, int)              /* query AFC on/off */
142 #define BT848_SLNOTCH   _IOW('x', 55, int)              /* set luma notch */
143 #define BT848_GLNOTCH   _IOR('x', 56, int)              /* get luma notch */
144
145 /* Read/Write the BT848's I2C bus directly
146  * b7-b0:    data (read/write)
147  * b15-b8:   internal peripheral register (write)   
148  * b23-b16:  i2c addr (write)
149  * b31-b24:  1 = write, 0 = read 
150  */
151 #define BT848_I2CWR     _IOWR('x', 57, u_long)    /* i2c read-write */
152
153 struct bktr_msp_control {
154         unsigned char function;
155         unsigned int  address;
156         unsigned int  data;
157 };
158
159 #define BT848_MSP_RESET _IO('x', 76)                            /* MSP chip reset */
160 #define BT848_MSP_READ  _IOWR('x', 77, struct bktr_msp_control) /* MSP chip read */
161 #define BT848_MSP_WRITE _IOWR('x', 78, struct bktr_msp_control) /* MSP chip write */
162
163 /* Support for radio tuner */
164 #define RADIO_SETMODE    _IOW('x', 58, unsigned int)  /* set radio modes */
165 #define RADIO_GETMODE    _IOR('x', 58, unsigned char)  /* get radio modes */
166 #define   RADIO_AFC      0x01           /* These modes will probably not */
167 #define   RADIO_MONO     0x02           /*  work on the FRxxxx. It does  */
168 #define   RADIO_MUTE     0x08           /*  work on the FMxxxx. */
169 #define RADIO_SETFREQ    _IOW('x', 59, unsigned int)  /* set frequency   */
170 #define RADIO_GETFREQ    _IOR('x', 59, unsigned int)  /* set frequency   */
171  /*        Argument is frequency*100MHz  */
172
173 /*
174  * XXX: more bad magic,
175  *      we need to fix the METEORGINPUT to return something public
176  *      duplicate them here for now...
177  */
178 #define METEOR_DEV0             0x00001000
179 #define METEOR_DEV1             0x00002000
180 #define METEOR_DEV2             0x00004000
181 #define METEOR_DEV3             0x00008000
182 #define METEOR_DEV_SVIDEO       0x00006000
183 /*
184  * right now I don't know were to put these, but as they are suppose to be
185  * a part of a common video capture interface, these should be relocated to
186  * another place.  Probably most of the METEOR_xxx defines need to be
187  * renamed and moved to a common header
188  */
189
190 typedef enum { METEOR_PIXTYPE_RGB, METEOR_PIXTYPE_YUV,
191                METEOR_PIXTYPE_YUV_PACKED,
192                METEOR_PIXTYPE_YUV_12 } METEOR_PIXTYPE;
193
194
195 struct meteor_pixfmt {
196         u_int          index;         /* Index in supported pixfmt list     */
197         METEOR_PIXTYPE type;          /* What's the board gonna feed us     */
198         u_int          Bpp;           /* Bytes per pixel                    */
199         u_long         masks[3];      /* R,G,B or Y,U,V masks, respectively */
200         unsigned       swap_bytes :1; /* Bytes  swapped within shorts       */
201         unsigned       swap_shorts:1; /* Shorts swapped within longs        */
202 };
203
204
205 struct bktr_clip {
206     int          x_min;
207     int          x_max;
208     int          y_min;
209     int          y_max;
210 };
211
212 #define BT848_MAX_CLIP_NODE 100
213 struct _bktr_clip {
214     struct bktr_clip x[BT848_MAX_CLIP_NODE];
215 };
216
217 /*
218  * I'm using METEOR_xxx just because that will be common to other interface
219  * and less of a surprise
220  */
221 #define METEORSACTPIXFMT        _IOW('x', 64, int )
222 #define METEORGACTPIXFMT        _IOR('x', 64, int )
223 #define METEORGSUPPIXFMT        _IOWR('x', 65, struct meteor_pixfmt)
224
225 /* set clip list */
226 #define BT848SCLIP     _IOW('x', 66, struct _bktr_clip )
227 #define BT848GCLIP     _IOR('x', 66, struct _bktr_clip )
228
229
230 /* set input format */
231 #define BT848SFMT               _IOW('x', 67, unsigned long )
232 #define BT848GFMT               _IOR('x', 67, unsigned long )
233
234 /* set clear-buffer-on-start */
235 #define BT848SCBUF      _IOW('x', 68, int)
236 #define BT848GCBUF      _IOR('x', 68, int)
237
238 /* set capture area */
239 /* The capture area is the area of the video image which is grabbed */
240 /* Usually the capture area is 640x480 (768x576 PAL) pixels */
241 /* This area is then scaled to the dimensions the user requires */
242 /* using the METEORGEO ioctl */
243 /* However, the capture area could be 400x300 pixels from the top right */
244 /* corner of the video image */
245 struct bktr_capture_area {
246    int      x_offset;
247    int      y_offset;
248    int      x_size;
249    int      y_size;
250 };
251 #define BT848_SCAPAREA   _IOW('x', 69, struct bktr_capture_area)
252 #define BT848_GCAPAREA   _IOR('x', 69, struct bktr_capture_area)
253
254
255 /* Get channel Set */
256 #define BT848_MAX_CHNLSET_NAME_LEN 16
257 struct bktr_chnlset {
258        short   index;
259        short   max_channel;
260        char    name[BT848_MAX_CHNLSET_NAME_LEN];
261 };
262 #define TVTUNER_GETCHNLSET _IOWR('x', 70, struct bktr_chnlset)
263
264
265
266 /* Infra Red Remote Control */
267 struct bktr_remote {
268        unsigned char data[3];
269 };
270 #define REMOTE_GETKEY      _IOR('x', 71, struct bktr_remote)/*read the remote */
271                                                             /*control receiver*/
272                                                             /*returns raw data*/
273
274  
275 /*
276  * Direct access to GPIO pins. You must add BKTR_GPIO_ACCESS to your kernel
277  * configuration file to use these 
278  */
279 #define BT848_GPIO_SET_EN      _IOW('x', 72, int)      /* set gpio_out_en */
280 #define BT848_GPIO_GET_EN      _IOR('x', 73, int)      /* get gpio_out_en */
281 #define BT848_GPIO_SET_DATA    _IOW('x', 74, int)      /* set gpio_data */
282 #define BT848_GPIO_GET_DATA    _IOR('x', 75, int)      /* get gpio_data */
283
284
285
286 /*  XXX - Copied from /sys/pci/brktree_reg.h  */
287 #define BT848_IFORM_FORMAT              (0x7<<0)
288 # define BT848_IFORM_F_RSVD             (0x7)
289 # define BT848_IFORM_F_SECAM            (0x6)
290 # define BT848_IFORM_F_PALN             (0x5)
291 # define BT848_IFORM_F_PALM             (0x4)
292 # define BT848_IFORM_F_PALBDGHI         (0x3)
293 # define BT848_IFORM_F_NTSCJ            (0x2)
294 # define BT848_IFORM_F_NTSCM            (0x1)
295 # define BT848_IFORM_F_AUTO             (0x0)
296
297
298 #endif  /* _MACHINE_IOCTL_BT848_H_ */
299