[BACK]Return to bktr_reg.h CVS log [TXT][DIR] Up to [local] / sys / dev / pci / bktr

Annotation of sys/dev/pci/bktr/bktr_reg.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: bktr_reg.h,v 1.10 2007/06/11 08:10:22 robert Exp $    */
        !             2: /*
        !             3:  * $FreeBSD: src/sys/dev/bktr/bktr_reg.h,v 1.42 2000/10/31 13:09:56 roger Exp $
        !             4:  *
        !             5:  * Copyright (c) 1999 Roger Hardiman
        !             6:  * Copyright (c) 1998 Amancio Hasty
        !             7:  * Copyright (c) 1995 Mark Tinguely and Jim Lowe
        !             8:  * All rights reserved.
        !             9:  *
        !            10:  * Redistribution and use in source and binary forms, with or without
        !            11:  * modification, are permitted provided that the following conditions
        !            12:  * are met:
        !            13:  * 1. Redistributions of source code must retain the above copyright
        !            14:  *    notice, this list of conditions and the following disclaimer.
        !            15:  * 2. Redistributions in binary form must reproduce the above copyright
        !            16:  *    notice, this list of conditions and the following disclaimer in the
        !            17:  *    documentation and/or other materials provided with the distribution.
        !            18:  * 3. All advertising materials mentioning features or use of this software
        !            19:  *    must display the following acknowledgement:
        !            20:  *     This product includes software developed by Mark Tinguely and Jim Lowe
        !            21:  * 4. The name of the author may not be used to endorse or promote products
        !            22:  *    derived from this software without specific prior written permission.
        !            23:  *
        !            24:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
        !            25:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        !            26:  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        !            27:  * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
        !            28:  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
        !            29:  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        !            30:  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        !            31:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
        !            32:  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
        !            33:  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        !            34:  * POSSIBILITY OF SUCH DAMAGE.
        !            35:  *
        !            36:  */
        !            37:
        !            38: #include <machine/bus.h>               /* struct device */
        !            39: #include <sys/device.h>
        !            40: #include <sys/selinfo.h>                       /* struct selinfo */
        !            41:
        !            42: #ifdef DEBUG
        !            43: #  define      bootverbose 1
        !            44: #else
        !            45: #  define      bootverbose 0
        !            46: #endif
        !            47:
        !            48: /*
        !            49:  * The kernel options for the driver now all begin with BKTR.
        !            50:  * Support the older kernel options on OpenBSD.
        !            51:  *
        !            52:  */
        !            53: #if defined(BROOKTREE_ALLOC_PAGES)
        !            54: #define BKTR_ALLOC_PAGES BROOKTREE_ALLOC_PAGES
        !            55: #endif
        !            56:
        !            57: #if defined(BROOKTREE_SYSTEM_DEFAULT)
        !            58: #define BKTR_SYSTEM_DEFAULT BROOKTREE_SYSTEM_DEFAULT
        !            59: #endif
        !            60:
        !            61: #if defined(OVERRIDE_CARD)
        !            62: #define BKTR_OVERRIDE_CARD OVERRIDE_CARD
        !            63: #endif
        !            64:
        !            65: #if defined(OVERRIDE_TUNER)
        !            66: #define BKTR_OVERRIDE_TUNER OVERRIDE_TUNER
        !            67: #endif
        !            68:
        !            69: #if defined(OVERRIDE_DBX)
        !            70: #define BKTR_OVERRIDE_DBX OVERRIDE_DBX
        !            71: #endif
        !            72:
        !            73: #if defined(OVERRIDE_MSP)
        !            74: #define BKTR_OVERRIDE_MSP OVERRIDE_MSP
        !            75: #endif
        !            76:
        !            77: #ifndef PCI_LATENCY_TIMER
        !            78: #define        PCI_LATENCY_TIMER               0x0c    /* pci timer register */
        !            79: #endif
        !            80:
        !            81: /*
        !            82:  * Definitions for the Brooktree 848/878 video capture to pci interface.
        !            83:  */
        !            84: #include <dev/pci/pcivar.h>
        !            85:
        !            86: /* PCI vendor ID */
        !            87: #define PCI_VENDOR_BROOKTREE    0x109e                /* Brooktree */
        !            88: /* Brooktree products */
        !            89: #define PCI_PRODUCT_BROOKTREE_BT848     0x0350        /* Bt848 Video Capture */
        !            90: #define PCI_PRODUCT_BROOKTREE_BT849     0x0351        /* Bt849 Video Capture */
        !            91: #define PCI_PRODUCT_BROOKTREE_BT878     0x036e        /* Bt878 Video Capture */
        !            92: #define PCI_PRODUCT_BROOKTREE_BT879     0x036f        /* Bt879 Video Capture */
        !            93:
        !            94: #define BROOKTREE_848                   1
        !            95: #define BROOKTREE_848A                  2
        !            96: #define BROOKTREE_849A                  3
        !            97: #define BROOKTREE_878                   4
        !            98: #define BROOKTREE_879                   5
        !            99:
        !           100: typedef volatile u_int         bregister_t;
        !           101: /*
        !           102:  * if other persuasion endian, then compiler will probably require that
        !           103:  * these next
        !           104:  * macros be reversed
        !           105:  */
        !           106: #define        BTBYTE(what)    bregister_t  what:8; int :24
        !           107: #define        BTWORD(what)    bregister_t  what:16; int: 16
        !           108: #define BTLONG(what)   bregister_t  what:32
        !           109:
        !           110: struct bt848_registers {
        !           111:     BTBYTE (dstatus);          /* 0, 1,2,3 */
        !           112: #define BT848_DSTATUS_PRES             (1<<7)
        !           113: #define BT848_DSTATUS_HLOC             (1<<6)
        !           114: #define BT848_DSTATUS_FIELD            (1<<5)
        !           115: #define BT848_DSTATUS_NUML             (1<<4)
        !           116: #define BT848_DSTATUS_CSEL             (1<<3)
        !           117: #define BT848_DSTATUS_PLOCK            (1<<2)
        !           118: #define BT848_DSTATUS_LOF              (1<<1)
        !           119: #define BT848_DSTATUS_COF              (1<<0)
        !           120:     BTBYTE (iform);            /* 4, 5,6,7 */
        !           121: #define BT848_IFORM_MUXSEL             (0x3<<5)
        !           122: # define BT848_IFORM_M_MUX1            (0x03<<5)
        !           123: # define BT848_IFORM_M_MUX0            (0x02<<5)
        !           124: # define BT848_IFORM_M_MUX2            (0x01<<5)
        !           125: # define BT848_IFORM_M_MUX3            (0x0)
        !           126: # define BT848_IFORM_M_RSVD            (0x00<<5)
        !           127: #define BT848_IFORM_XTSEL              (0x3<<3)
        !           128: # define BT848_IFORM_X_AUTO            (0x03<<3)
        !           129: # define BT848_IFORM_X_XT1             (0x02<<3)
        !           130: # define BT848_IFORM_X_XT0             (0x01<<3)
        !           131: # define BT848_IFORM_X_RSVD            (0x00<<3)
        !           132:     BTBYTE (tdec);             /* 8, 9,a,b */
        !           133:     BTBYTE (e_crop);           /* c, d,e,f */
        !           134:     BTBYTE (e_vdelay_lo);      /* 10, 11,12,13 */
        !           135:     BTBYTE (e_vactive_lo);     /* 14, 15,16,17 */
        !           136:     BTBYTE (e_delay_lo);       /* 18, 19,1a,1b */
        !           137:     BTBYTE (e_hactive_lo);     /* 1c, 1d,1e,1f */
        !           138:     BTBYTE (e_hscale_hi);      /* 20, 21,22,23 */
        !           139:     BTBYTE (e_hscale_lo);      /* 24, 25,26,27 */
        !           140:     BTBYTE (bright);           /* 28, 29,2a,2b */
        !           141:     BTBYTE (e_control);                /* 2c, 2d,2e,2f */
        !           142: #define BT848_E_CONTROL_LNOTCH         (1<<7)
        !           143: #define BT848_E_CONTROL_COMP           (1<<6)
        !           144: #define BT848_E_CONTROL_LDEC           (1<<5)
        !           145: #define BT848_E_CONTROL_CBSENSE                (1<<4)
        !           146: #define BT848_E_CONTROL_RSVD           (1<<3)
        !           147: #define BT848_E_CONTROL_CON_MSB                (1<<2)
        !           148: #define BT848_E_CONTROL_SAT_U_MSB      (1<<1)
        !           149: #define BT848_E_CONTROL_SAT_V_MSB      (1<<0)
        !           150:     BTBYTE (contrast_lo);      /* 30, 31,32,33 */
        !           151:     BTBYTE (sat_u_lo);         /* 34, 35,36,37 */
        !           152:     BTBYTE (sat_v_lo);         /* 38, 39,3a,3b */
        !           153:     BTBYTE (hue);              /* 3c, 3d,3e,3f */
        !           154:     BTBYTE (e_scloop);         /* 40, 41,42,43 */
        !           155: #define BT848_E_SCLOOP_RSVD1           (1<<7)
        !           156: #define BT848_E_SCLOOP_CAGC            (1<<6)
        !           157: #define BT848_E_SCLOOP_CKILL           (1<<5)
        !           158: #define BT848_E_SCLOOP_HFILT           (0x3<<3)
        !           159: # define BT848_E_SCLOOP_HFILT_ICON     (0x3<<3)
        !           160: # define BT848_E_SCLOOP_HFILT_QCIF     (0x2<<3)
        !           161: # define BT848_E_SCLOOP_HFILT_CIF      (0x1<<3)
        !           162: # define BT848_E_SCLOOP_HFILT_AUTO     (0x0<<3)
        !           163: #define BT848_E_SCLOOP_RSVD0           (0x7<<0)
        !           164:     int                :32;            /* 44, 45,46,47 */
        !           165:     BTBYTE (oform);            /* 48, 49,4a,4b */
        !           166:     BTBYTE (e_vscale_hi);      /* 4c, 4d,4e,4f */
        !           167:     BTBYTE (e_vscale_lo);      /* 50, 51,52,53 */
        !           168:     BTBYTE (test);             /* 54, 55,56,57 */
        !           169:     int                :32;            /* 58, 59,5a,5b */
        !           170:     int                :32;            /* 5c, 5d,5e,5f */
        !           171:     BTLONG (adelay);           /* 60, 61,62,63 */
        !           172:     BTBYTE (bdelay);           /* 64, 65,66,67 */
        !           173:     BTBYTE (adc);              /* 68, 69,6a,6b */
        !           174: #define BT848_ADC_RESERVED             (0x80)  /* required pattern */
        !           175: #define BT848_ADC_SYNC_T               (1<<5)
        !           176: #define BT848_ADC_AGC_EN               (1<<4)
        !           177: #define BT848_ADC_CLK_SLEEP            (1<<3)
        !           178: #define BT848_ADC_Y_SLEEP              (1<<2)
        !           179: #define BT848_ADC_C_SLEEP              (1<<1)
        !           180: #define BT848_ADC_CRUSH                        (1<<0)
        !           181:     BTBYTE (e_vtc);            /* 6c, 6d,6e,6f */
        !           182:     int                :32;            /* 70, 71,72,73 */
        !           183:     int        :32;            /* 74, 75,76,77 */
        !           184:     int                :32;            /* 78, 79,7a,7b */
        !           185:     BTLONG (sreset);           /* 7c, 7d,7e,7f */
        !           186:     u_char     filler1[0x84-0x80];
        !           187:     BTBYTE (tgctrl);           /* 84, 85,86,87 */
        !           188: #define BT848_TGCTRL_TGCKI             (3<<3)
        !           189: #define BT848_TGCTRL_TGCKI_XTAL                (0<<3)
        !           190: #define BT848_TGCTRL_TGCKI_PLL         (1<<3)
        !           191: #define BT848_TGCTRL_TGCKI_GPCLK       (2<<3)
        !           192: #define BT848_TGCTRL_TGCKI_GPCLK_I     (3<<3)
        !           193:     u_char     filler[0x8c-0x88];
        !           194:     BTBYTE (o_crop);           /* 8c, 8d,8e,8f */
        !           195:     BTBYTE (o_vdelay_lo);      /* 90, 91,92,93 */
        !           196:     BTBYTE (o_vactive_lo);     /* 94, 95,96,97 */
        !           197:     BTBYTE (o_delay_lo);       /* 98, 99,9a,9b */
        !           198:     BTBYTE (o_hactive_lo);     /* 9c, 9d,9e,9f */
        !           199:     BTBYTE (o_hscale_hi);      /* a0, a1,a2,a3 */
        !           200:     BTBYTE (o_hscale_lo);      /* a4, a5,a6,a7 */
        !           201:     int                :32;            /* a8, a9,aa,ab */
        !           202:     BTBYTE (o_control);                /* ac, ad,ae,af */
        !           203: #define BT848_O_CONTROL_LNOTCH         (1<<7)
        !           204: #define BT848_O_CONTROL_COMP           (1<<6)
        !           205: #define BT848_O_CONTROL_LDEC           (1<<5)
        !           206: #define BT848_O_CONTROL_CBSENSE                (1<<4)
        !           207: #define BT848_O_CONTROL_RSVD           (1<<3)
        !           208: #define BT848_O_CONTROL_CON_MSB                (1<<2)
        !           209: #define BT848_O_CONTROL_SAT_U_MSB      (1<<1)
        !           210: #define BT848_O_CONTROL_SAT_V_MSB      (1<<0)
        !           211:     u_char     fillter4[16];
        !           212:     BTBYTE (o_scloop);         /* c0, c1,c2,c3 */
        !           213: #define BT848_O_SCLOOP_RSVD1           (1<<7)
        !           214: #define BT848_O_SCLOOP_CAGC            (1<<6)
        !           215: #define BT848_O_SCLOOP_CKILL           (1<<5)
        !           216: #define BT848_O_SCLOOP_HFILT           (0x3<<3)
        !           217: #define BT848_O_SCLOOP_HFILT_ICON      (0x3<<3)
        !           218: #define BT848_O_SCLOOP_HFILT_QCIF      (0x2<<3)
        !           219: #define BT848_O_SCLOOP_HFILT_CIF       (0x1<<3)
        !           220: #define BT848_O_SCLOOP_HFILT_AUTO      (0x0<<3)
        !           221: #define BT848_O_SCLOOP_RSVD0           (0x7<<0)
        !           222:     int                :32;            /* c4, c5,c6,c7 */
        !           223:     int                :32;            /* c8, c9,ca,cb */
        !           224:     BTBYTE (o_vscale_hi);      /* cc, cd,ce,cf */
        !           225:     BTBYTE (o_vscale_lo);      /* d0, d1,d2,d3 */
        !           226:     BTBYTE (color_fmt);                /* d4, d5,d6,d7 */
        !           227:     bregister_t color_ctl_swap         :4; /* d8 */
        !           228: #define BT848_COLOR_CTL_WSWAP_ODD      (1<<3)
        !           229: #define BT848_COLOR_CTL_WSWAP_EVEN     (1<<2)
        !           230: #define BT848_COLOR_CTL_BSWAP_ODD      (1<<1)
        !           231: #define BT848_COLOR_CTL_BSWAP_EVEN     (1<<0)
        !           232:     bregister_t color_ctl_gamma                :1;
        !           233:     bregister_t color_ctl_rgb_ded      :1;
        !           234:     bregister_t color_ctl_color_bars   :1;
        !           235:     bregister_t color_ctl_ext_frmrate  :1;
        !           236: #define BT848_COLOR_CTL_GAMMA          (1<<4)
        !           237: #define BT848_COLOR_CTL_RGB_DED                (1<<5)
        !           238: #define BT848_COLOR_CTL_COLOR_BARS     (1<<6)
        !           239: #define BT848_COLOR_CTL_EXT_FRMRATE     (1<<7)
        !           240:     int                :24;            /* d9,da,db */
        !           241:     BTBYTE (cap_ctl);          /* dc, dd,de,df */
        !           242: #define BT848_CAP_CTL_DITH_FRAME       (1<<4)
        !           243: #define BT848_CAP_CTL_VBI_ODD          (1<<3)
        !           244: #define BT848_CAP_CTL_VBI_EVEN         (1<<2)
        !           245: #define BT848_CAP_CTL_ODD              (1<<1)
        !           246: #define BT848_CAP_CTL_EVEN             (1<<0)
        !           247:     BTBYTE (vbi_pack_size);    /* e0, e1,e2,e3 */
        !           248:     BTBYTE (vbi_pack_del);     /* e4, e5,e6,e7 */
        !           249:     int                :32;            /* e8, e9,ea,eb */
        !           250:     BTBYTE (o_vtc);            /* ec, ed,ee,ef */
        !           251:     BTBYTE (pll_f_lo);         /* f0, f1,f2,f3 */
        !           252:     BTBYTE (pll_f_hi);         /* f4, f5,f6,f7 */
        !           253:     BTBYTE (pll_f_xci);                /* f8, f9,fa,fb */
        !           254: #define BT848_PLL_F_C                  (1<<6)
        !           255: #define BT848_PLL_F_X                  (1<<7)
        !           256:     u_char     filler2[0x100-0xfc];
        !           257:     BTLONG (int_stat);         /* 100, 101,102,103 */
        !           258:     BTLONG (int_mask);         /* 104, 105,106,107 */
        !           259: #define BT848_INT_RISCS                        (0xf<<28)
        !           260: #define BT848_INT_RISC_EN              (1<<27)
        !           261: #define BT848_INT_RACK                 (1<<25)
        !           262: #define BT848_INT_FIELD                        (1<<24)
        !           263: #define BT848_INT_MYSTERYBIT           (1<<23)
        !           264: #define BT848_INT_SCERR                        (1<<19)
        !           265: #define BT848_INT_OCERR                        (1<<18)
        !           266: #define BT848_INT_PABORT               (1<<17)
        !           267: #define BT848_INT_RIPERR               (1<<16)
        !           268: #define BT848_INT_PPERR                        (1<<15)
        !           269: #define BT848_INT_FDSR                 (1<<14)
        !           270: #define BT848_INT_FTRGT                        (1<<13)
        !           271: #define BT848_INT_FBUS                 (1<<12)
        !           272: #define BT848_INT_RISCI                        (1<<11)
        !           273: #define BT848_INT_GPINT                        (1<<9)
        !           274: #define BT848_INT_I2CDONE              (1<<8)
        !           275: #define BT848_INT_RSV1                 (1<<7)
        !           276: #define BT848_INT_RSV0                 (1<<6)
        !           277: #define BT848_INT_VPRES                        (1<<5)
        !           278: #define BT848_INT_HLOCK                        (1<<4)
        !           279: #define BT848_INT_OFLOW                        (1<<3)
        !           280: #define BT848_INT_HSYNC                        (1<<2)
        !           281: #define BT848_INT_VSYNC                        (1<<1)
        !           282: #define BT848_INT_FMTCHG               (1<<0)
        !           283: #define        BT848_INT_BITS \
        !           284:     ("\020\01FMTCHG\02VSYNC\03HSYNC\04OFLOW\05HLOCK\06VPRES\07RSV0"\
        !           285:      "\010RSV1\011I2CDONE\012GPINT\014RISCI\015FBUS\016FTRGT\017FDSR"\
        !           286:      "\020PPERR\021RIPERR\022PABORT\023OCERR\024SCERR"\
        !           287:      "\030MYSTERYBIT\031FIELD\032RACK\034RISC_EN")
        !           288:     int                :32;            /* 108, 109,10a,10b */
        !           289:     BTWORD (gpio_dma_ctl);     /* 10c, 10d,10e,10f */
        !           290: #define BT848_DMA_CTL_PL23TP4          (0<<6)  /* planar1 trigger 4 */
        !           291: #define BT848_DMA_CTL_PL23TP8          (1<<6)  /* planar1 trigger 8 */
        !           292: #define BT848_DMA_CTL_PL23TP16         (2<<6)  /* planar1 trigger 16 */
        !           293: #define BT848_DMA_CTL_PL23TP32         (3<<6)  /* planar1 trigger 32 */
        !           294: #define BT848_DMA_CTL_PL1TP4           (0<<4)  /* planar1 trigger 4 */
        !           295: #define BT848_DMA_CTL_PL1TP8           (1<<4)  /* planar1 trigger 8 */
        !           296: #define BT848_DMA_CTL_PL1TP16          (2<<4)  /* planar1 trigger 16 */
        !           297: #define BT848_DMA_CTL_PL1TP32          (3<<4)  /* planar1 trigger 32 */
        !           298: #define BT848_DMA_CTL_PKTP4            (0<<2)  /* packed trigger 4 */
        !           299: #define BT848_DMA_CTL_PKTP8            (1<<2)  /* packed trigger 8 */
        !           300: #define BT848_DMA_CTL_PKTP16           (2<<2)  /* packed trigger 16 */
        !           301: #define BT848_DMA_CTL_PKTP32           (3<<2)  /* packed trigger 32 */
        !           302: #define BT848_DMA_CTL_RISC_EN          (1<<1)
        !           303: #define BT848_DMA_CTL_FIFO_EN          (1<<0)
        !           304:     BTLONG (i2c_data_ctl);     /* 110, 111,112,113 */
        !           305: #define BT848_DATA_CTL_I2CDIV          (0xf<<4)
        !           306: #define BT848_DATA_CTL_I2CSYNC         (1<<3)
        !           307: #define BT848_DATA_CTL_I2CW3B          (1<<2)
        !           308: #define BT848_DATA_CTL_I2CSCL          (1<<1)
        !           309: #define BT848_DATA_CTL_I2CSDA          (1<<0)
        !           310:     BTLONG (risc_strt_add);    /* 114, 115,116,117 */
        !           311:     BTLONG (gpio_out_en);      /* 118, 119,11a,11b */  /* really 24 bits */
        !           312:     BTLONG (gpio_reg_inp);     /* 11c, 11d,11e,11f */  /* really 24 bits */
        !           313:     BTLONG (risc_count);       /* 120, 121,122,123 */
        !           314:     u_char     filler3[0x200-0x124];
        !           315:     BTLONG (gpio_data);                /* 200, 201,202,203 */  /* really 24 bits */
        !           316: };
        !           317:
        !           318:
        !           319: #define BKTR_DSTATUS                   0x000
        !           320: #define BKTR_IFORM                     0x004
        !           321: #define BKTR_TDEC                      0x008
        !           322: #define BKTR_E_CROP                    0x00C
        !           323: #define BKTR_O_CROP                    0x08C
        !           324: #define BKTR_E_VDELAY_LO               0x010
        !           325: #define BKTR_O_VDELAY_LO               0x090
        !           326: #define BKTR_E_VACTIVE_LO              0x014
        !           327: #define BKTR_O_VACTIVE_LO              0x094
        !           328: #define BKTR_E_DELAY_LO                        0x018
        !           329: #define BKTR_O_DELAY_LO                        0x098
        !           330: #define BKTR_E_HACTIVE_LO              0x01C
        !           331: #define BKTR_O_HACTIVE_LO              0x09C
        !           332: #define BKTR_E_HSCALE_HI               0x020
        !           333: #define BKTR_O_HSCALE_HI               0x0A0
        !           334: #define BKTR_E_HSCALE_LO               0x024
        !           335: #define BKTR_O_HSCALE_LO               0x0A4
        !           336: #define BKTR_BRIGHT                    0x028
        !           337: #define BKTR_E_CONTROL                 0x02C
        !           338: #define BKTR_O_CONTROL                 0x0AC
        !           339: #define BKTR_CONTRAST_LO               0x030
        !           340: #define BKTR_SAT_U_LO                  0x034
        !           341: #define BKTR_SAT_V_LO                  0x038
        !           342: #define BKTR_HUE                       0x03C
        !           343: #define BKTR_E_SCLOOP                  0x040
        !           344: #define BKTR_O_SCLOOP                  0x0C0
        !           345: #define BKTR_OFORM                     0x048
        !           346: #define BKTR_E_VSCALE_HI               0x04C
        !           347: #define BKTR_O_VSCALE_HI               0x0CC
        !           348: #define BKTR_E_VSCALE_LO               0x050
        !           349: #define BKTR_O_VSCALE_LO               0x0D0
        !           350: #define BKTR_TEST                      0x054
        !           351: #define BKTR_ADELAY                    0x060
        !           352: #define BKTR_BDELAY                    0x064
        !           353: #define BKTR_ADC                       0x068
        !           354: #define BKTR_E_VTC                     0x06C
        !           355: #define BKTR_O_VTC                     0x0EC
        !           356: #define BKTR_SRESET                    0x07C
        !           357: #define BKTR_COLOR_FMT                 0x0D4
        !           358: #define BKTR_COLOR_CTL                 0x0D8
        !           359: #define BKTR_CAP_CTL                   0x0DC
        !           360: #define BKTR_VBI_PACK_SIZE             0x0E0
        !           361: #define BKTR_VBI_PACK_DEL              0x0E4
        !           362: #define BKTR_INT_STAT                  0x100
        !           363: #define BKTR_INT_MASK                  0x104
        !           364: #define BKTR_RISC_COUNT                        0x120
        !           365: #define BKTR_RISC_STRT_ADD             0x114
        !           366: #define BKTR_GPIO_DMA_CTL              0x10C
        !           367: #define BKTR_GPIO_OUT_EN               0x118
        !           368: #define BKTR_GPIO_REG_INP              0x11C
        !           369: #define BKTR_GPIO_DATA                 0x200
        !           370: #define BKTR_I2C_DATA_CTL              0x110
        !           371: #define BKTR_TGCTRL                    0x084
        !           372: #define BKTR_PLL_F_LO                  0x0F0
        !           373: #define BKTR_PLL_F_HI                  0x0F4
        !           374: #define BKTR_PLL_F_XCI                 0x0F8
        !           375:
        !           376: /*
        !           377:  * device support for onboard tv tuners
        !           378:  */
        !           379:
        !           380: /* description of the LOGICAL tuner */
        !           381: struct TVTUNER {
        !           382:        int             frequency;
        !           383:        u_char          chnlset;
        !           384:        u_char          channel;
        !           385:        u_char          band;
        !           386:        u_char          afc;
        !           387:        u_char          radio_mode;     /* current mode of the radio mode */
        !           388:        int             tuner_mode;     /* current tuning mode */
        !           389: #define BT848_TUNER_MODE_TV    1
        !           390: #define BT848_TUNER_MODE_RADIO 2
        !           391: };
        !           392:
        !           393: /* description of the PHYSICAL tuner */
        !           394: struct TUNER {
        !           395:        char           *name;
        !           396:        u_char          type;
        !           397:        u_char          pllControl[4];
        !           398:        u_char          bandLimits[ 2 ];
        !           399:        u_char          bandAddrs[ 4 ];        /* 3 first for the 3 TV
        !           400:                                               ** bands. Last for radio
        !           401:                                               ** band (0x00=NoRadio).
        !           402:                                               */
        !           403:
        !           404: };
        !           405:
        !           406: /* description of the card */
        !           407: #define EEPROMBLOCKSIZE                32
        !           408: struct CARDTYPE {
        !           409:        unsigned int            card_id;        /* card id (from #define's) */
        !           410:        char                   *name;
        !           411:        const struct TUNER*     tuner;          /* Tuner details */
        !           412:        u_char                  tuner_pllAddr;  /* Tuner i2c address */
        !           413:        u_char                  dbx;            /* Has DBX chip? */
        !           414:        u_char                  msp3400c;       /* Has msp3400c chip? */
        !           415:        u_char                  dpl3518a;       /* Has dpl3518a chip? */
        !           416:        u_char                  eepromAddr;
        !           417:        u_char                  eepromSize;     /* bytes / EEPROMBLOCKSIZE */
        !           418:        u_int                   audiomuxs[ 5 ]; /* tuner, ext (line-in) */
        !           419:                                                /* int/unused (radio) */
        !           420:                                                /* mute, present */
        !           421:        u_int                   gpio_mux_bits;  /* GPIO mask for audio mux */
        !           422: };
        !           423:
        !           424: struct format_params {
        !           425:   /* Total lines, lines before image, image lines */
        !           426:   int vtotal, vdelay, vactive;
        !           427:   /* Total unscaled horizontal pixels, pixels before image, image pixels */
        !           428:   int htotal, hdelay, hactive;
        !           429:   /* Scaled horizontal image pixels, Total Scaled horizontal pixels */
        !           430:   int  scaled_hactive, scaled_htotal;
        !           431:   /* frame rate . for ntsc is 30 frames per second */
        !           432:   int frame_rate;
        !           433:   /* A-delay and B-delay */
        !           434:   u_char adelay, bdelay;
        !           435:   /* Iform XTSEL value */
        !           436:   int iform_xtsel;
        !           437:   /* VBI number of lines per field, and number of samples per line */
        !           438:   int vbi_num_lines, vbi_num_samples;
        !           439: };
        !           440:
        !           441: /* Bt848/878 register access
        !           442:  * The registers can either be access via a memory mapped structure
        !           443:  * or accessed via bus_space.
        !           444:  * bus_0pace access allows cross platform support, where as the
        !           445:  * memory mapped structure method only works on 32 bit processors
        !           446:  * with the right type of endianness.
        !           447:  */
        !           448: #define INB(sc,o)      (({                                     \
        !           449:        u_int8_t __v;                                           \
        !           450:        __v = bus_space_read_1((sc)->memt, (sc)->memh, (o));    \
        !           451:        bus_space_barrier((sc)->memt, (sc)->memh, (o), 1,       \
        !           452:            BUS_SPACE_BARRIER_READ);                            \
        !           453:        (__v);                                                  \
        !           454: }))
        !           455: #define INW(sc,o)      (({                                     \
        !           456:        u_int16_t __v;                                          \
        !           457:        __v = bus_space_read_2((sc)->memt, (sc)->memh, (o));    \
        !           458:        bus_space_barrier((sc)->memt, (sc)->memh, (o), 4,       \
        !           459:            BUS_SPACE_BARRIER_READ);                            \
        !           460:        (__v);                                                  \
        !           461: }))
        !           462: #define INL(sc,o)      (({                                     \
        !           463:        u_int32_t __v;                                          \
        !           464:        __v = bus_space_read_4((sc)->memt, (sc)->memh, (o));    \
        !           465:        bus_space_barrier((sc)->memt, (sc)->memh, (o), 4,       \
        !           466:            BUS_SPACE_BARRIER_READ);                            \
        !           467:        (__v);                                                  \
        !           468: }))
        !           469: #define OUTB(sc,o,v)   do {                                    \
        !           470:        bus_space_write_1((sc)->memt, (sc)->memh, (o), (v));    \
        !           471:        bus_space_barrier((sc)->memt, (sc)->memh, (o), 1,       \
        !           472:            BUS_SPACE_BARRIER_WRITE);                           \
        !           473: } while (0)
        !           474: #define OUTW(sc,o,v)   do {                                    \
        !           475:        bus_space_write_2((sc)->memt, (sc)->memh, (o), (v));    \
        !           476:        bus_space_barrier((sc)->memt, (sc)->memh, (o), 2,       \
        !           477:            BUS_SPACE_BARRIER_WRITE);                           \
        !           478: } while (0)
        !           479: #define OUTL(sc,o,v) do {                                      \
        !           480:        bus_space_write_4((sc)->memt, (sc)->memh, (o), (v));    \
        !           481:        bus_space_barrier((sc)->memt, (sc)->memh, (o), 4,       \
        !           482:            BUS_SPACE_BARRIER_WRITE);                           \
        !           483: } while (0)
        !           484:
        !           485: typedef struct bktr_clip bktr_clip_t;
        !           486:
        !           487: /*
        !           488:  * BrookTree 848  info structure, one per bt848 card installed.
        !           489:  */
        !           490: struct bktr_softc {
        !           491:     struct device bktr_dev;     /* base device */
        !           492:     bus_dma_tag_t      dmat;   /* DMA tag */
        !           493:     bus_space_tag_t    memt;
        !           494:     bus_space_handle_t memh;
        !           495:     bus_size_t         obmemsz;        /* size of en card (bytes) */
        !           496:     void               *ih;
        !           497:     bus_dmamap_t       dm_prog;
        !           498:     bus_dmamap_t       dm_oprog;
        !           499:     bus_dmamap_t       dm_mem;
        !           500:     bus_dmamap_t       dm_vbidata;
        !           501:     bus_dmamap_t       dm_vbibuffer;
        !           502:
        !           503:     vaddr_t bigbuf;          /* buffer that holds the captured image */
        !           504:     vaddr_t vbidata;         /* RISC program puts VBI data from the current frame here */
        !           505:     vaddr_t vbibuffer;       /* Circular buffer holding VBI data for the user */
        !           506:     vaddr_t dma_prog;        /* RISC prog for single and/or even field capture*/
        !           507:     vaddr_t odd_dma_prog;    /* RISC program for Odd field capture */
        !           508:
        !           509:     /* the following definitions are common over all platforms */
        !           510:     int                alloc_pages;    /* number of pages in bigbuf */
        !           511:     int         vbiinsert;      /* Position for next write into circular buffer */
        !           512:     int         vbistart;       /* Position of last read from circular buffer */
        !           513:     int         vbisize;        /* Number of bytes in the circular buffer */
        !           514:     u_int      vbi_sequence_number;    /* sequence number for VBI */
        !           515:     int                vbi_read_blocked;       /* user process blocked on read() from /dev/vbi */
        !           516:     struct selinfo vbi_select; /* Data used by select() on /dev/vbi */
        !           517:
        !           518:
        !           519:     struct proc        *proc;          /* process to receive raised signal */
        !           520:     int                signal;         /* signal to send to process */
        !           521:     int                clr_on_start;   /* clear cap buf on capture start? */
        !           522: #define        METEOR_SIG_MODE_MASK    0xffff0000
        !           523: #define        METEOR_SIG_FIELD_MODE   0x00010000
        !           524: #define        METEOR_SIG_FRAME_MODE   0x00000000
        !           525:     char         dma_prog_loaded;
        !           526:     struct meteor_mem *mem;    /* used to control sync. multi-frame output */
        !           527:     u_int      synch_wait;     /* wait for free buffer before continuing */
        !           528:     short      current;        /* frame number in buffer (1-frames) */
        !           529:     short      rows;           /* number of rows in a frame */
        !           530:     short      cols;           /* number of columns in a frame */
        !           531:     int                capture_area_x_offset; /* Usually the full 640x480(NTSC) image is */
        !           532:     int                capture_area_y_offset; /* captured. The capture area allows for */
        !           533:     int                capture_area_x_size;   /* example 320x200 pixels from the centre */
        !           534:     int                capture_area_y_size;   /* of the video image to be captured. */
        !           535:     char       capture_area_enabled;  /* When TRUE use user's capture area. */
        !           536:     int                pixfmt;         /* active pixel format (idx into fmt tbl) */
        !           537:     int                pixfmt_compat;  /* Y/N - in meteor pix fmt compat mode */
        !           538:     u_int      format;         /* frame format rgb, yuv, etc.. */
        !           539:     short      frames;         /* number of frames allocated */
        !           540:     int                frame_size;     /* number of bytes in a frame */
        !           541:     u_int      fifo_errors;    /* number of fifo capture errors since open */
        !           542:     u_int      dma_errors;     /* number of DMA capture errors since open */
        !           543:     u_int      frames_captured;/* number of frames captured since open */
        !           544:     u_int      even_fields_captured; /* number of even fields captured */
        !           545:     u_int      odd_fields_captured; /* number of odd fields captured */
        !           546:     u_int      range_enable;   /* enable range checking ?? */
        !           547:     u_short     capcontrol;     /* reg 0xdc capture control */
        !           548:     u_short     bktr_cap_ctl;
        !           549:     volatile u_int     flags;
        !           550: #define        METEOR_INITALIZED       0x00000001
        !           551: #define        METEOR_OPEN             0x00000002
        !           552: #define        METEOR_MMAP             0x00000004
        !           553: #define        METEOR_INTR             0x00000008
        !           554: #define        METEOR_READ             0x00000010      /* XXX never gets referenced */
        !           555: #define        METEOR_SINGLE           0x00000020      /* get single frame */
        !           556: #define        METEOR_CONTIN           0x00000040      /* continuously get frames */
        !           557: #define        METEOR_SYNCAP           0x00000080      /* synchronously get frames */
        !           558: #define        METEOR_CAP_MASK         0x000000f0
        !           559: #define        METEOR_NTSC             0x00000100
        !           560: #define        METEOR_PAL              0x00000200
        !           561: #define        METEOR_SECAM            0x00000400
        !           562: #define        BROOKTREE_NTSC          0x00000100      /* used in video open() and */
        !           563: #define        BROOKTREE_PAL           0x00000200      /* in the kernel config */
        !           564: #define        BROOKTREE_SECAM         0x00000400      /* file */
        !           565: #define        METEOR_AUTOMODE         0x00000800
        !           566: #define        METEOR_FORM_MASK        0x00000f00
        !           567: #define        METEOR_DEV0             0x00001000
        !           568: #define        METEOR_DEV1             0x00002000
        !           569: #define        METEOR_DEV2             0x00004000
        !           570: #define        METEOR_DEV3             0x00008000
        !           571: #define METEOR_DEV_SVIDEO      0x00006000
        !           572: #define METEOR_DEV_RGB         0x0000a000
        !           573: #define        METEOR_DEV_MASK         0x0000f000
        !           574: #define        METEOR_RGB16            0x00010000
        !           575: #define        METEOR_RGB24            0x00020000
        !           576: #define        METEOR_YUV_PACKED       0x00040000
        !           577: #define        METEOR_YUV_PLANAR       0x00080000
        !           578: #define        METEOR_WANT_EVEN        0x00100000      /* want even frame */
        !           579: #define        METEOR_WANT_ODD         0x00200000      /* want odd frame */
        !           580: #define        METEOR_WANT_MASK        0x00300000
        !           581: #define METEOR_ONLY_EVEN_FIELDS        0x01000000
        !           582: #define METEOR_ONLY_ODD_FIELDS 0x02000000
        !           583: #define METEOR_ONLY_FIELDS_MASK 0x03000000
        !           584: #define METEOR_YUV_422         0x04000000
        !           585: #define        METEOR_OUTPUT_FMT_MASK  0x040f0000
        !           586: #define        METEOR_WANT_TS          0x08000000      /* time-stamp a frame */
        !           587: #define METEOR_RGB             0x20000000      /* meteor rgb unit */
        !           588: #define METEOR_FIELD_MODE      0x80000000
        !           589:     u_char     tflags;                         /* Tuner flags (/dev/tuner) */
        !           590: #define        TUNER_INITALIZED        0x00000001
        !           591: #define        TUNER_OPEN              0x00000002
        !           592:     u_char      vbiflags;                      /* VBI flags (/dev/vbi) */
        !           593: #define VBI_INITALIZED          0x00000001
        !           594: #define VBI_OPEN                0x00000002
        !           595: #define VBI_CAPTURE             0x00000004
        !           596:     u_short    fps;            /* frames per second */
        !           597:     struct meteor_video video;
        !           598:     struct TVTUNER     tuner;
        !           599:     struct CARDTYPE    card;
        !           600:     u_char             audio_mux_select;       /* current mode of the audio */
        !           601:     u_char             audio_mute_state;       /* mute state of the audio */
        !           602:     u_char             format_params;
        !           603:     u_int              current_sol;
        !           604:     u_int              current_col;
        !           605:     int                 clip_start;
        !           606:     int                 line_length;
        !           607:     int                 last_y;
        !           608:     int                 y;
        !           609:     int                 y2;
        !           610:     int                 yclip;
        !           611:     int                 yclip2;
        !           612:     int                 max_clip_node;
        !           613:     bktr_clip_t                clip_list[100];
        !           614:     int                 reverse_mute;          /* Swap the GPIO values for Mute and TV Audio */
        !           615:     int                 bt848_tuner;
        !           616:     int                 bt848_card;
        !           617:     u_int              id;
        !           618: #define BT848_USE_XTALS 0
        !           619: #define BT848_USE_PLL   1
        !           620:     int                        xtal_pll_mode;  /* Use XTAL or PLL mode for PAL/SECAM */
        !           621:     int                        remote_control;      /* remote control detected */
        !           622:     int                        remote_control_addr;   /* remote control i2c address */
        !           623:     char               msp_version_string[9]; /* MSP version string 34xxx-xx */
        !           624:     int                        msp_addr;              /* MSP i2c address */
        !           625:     char               dpl_version_string[9]; /* DPL version string 35xxx-xx */
        !           626:     int                        dpl_addr;              /* DPL i2c address */
        !           627:     int                 slow_msp_audio;               /* 0 = use fast MSP3410/3415 programming sequence */
        !           628:                                               /* 1 = use slow MSP3410/3415 programming sequence */
        !           629:                                               /* 2 = use Tuner's Mono audio output via the MSP chip */
        !           630:     int                 msp_use_mono_source;   /* use Tuner's Mono audio output via the MSP chip */
        !           631:     int                 audio_mux_present;     /* 1 = has audio mux on GPIO lines, 0 = no audio mux */
        !           632:     int                 msp_source_selected;   /* 0 = TV source, 1 = Line In source, 2 = FM Radio Source */
        !           633:
        !           634: };
        !           635:
        !           636: typedef struct bktr_softc bktr_reg_t;
        !           637: typedef struct bktr_softc* bktr_ptr_t;
        !           638:
        !           639: #define Bt848_MAX_SIGN 16
        !           640:
        !           641: struct bt848_card_sig {
        !           642:   int card;
        !           643:   int tuner;
        !           644:   u_char signature[Bt848_MAX_SIGN];
        !           645: };
        !           646:
        !           647:
        !           648: /***********************************************************/
        !           649: /* ioctl_cmd_t int on old versions, u_long on new versions */
        !           650: /***********************************************************/
        !           651: typedef u_long ioctl_cmd_t;

CVSweb