[BACK]Return to bt8xx.h CVS log [TXT][DIR] Up to [local] / sys / dev / ic

Annotation of sys/dev/ic/bt8xx.h, Revision 1.1.1.1

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

CVSweb