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

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

1.1       nbrk        1: /*     $OpenBSD: stireg.h,v 1.11 2005/10/29 11:54:07 miod Exp $        */
                      2:
                      3: /*
                      4:  * Copyright (c) 2000 Michael Shalayeff
                      5:  * All rights reserved.
                      6:  *
                      7:  * Redistribution and use in source and binary forms, with or without
                      8:  * modification, are permitted provided that the following conditions
                      9:  * are met:
                     10:  * 1. Redistributions of source code must retain the above copyright
                     11:  *    notice, this list of conditions and the following disclaimer.
                     12:  * 2. Redistributions in binary form must reproduce the above copyright
                     13:  *    notice, this list of conditions and the following disclaimer in the
                     14:  *    documentation and/or other materials provided with the distribution.
                     15:  *
                     16:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
                     17:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
                     18:  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
                     19:  * IN NO EVENT SHALL THE AUTHOR OR HIS RELATIVES BE LIABLE FOR ANY DIRECT,
                     20:  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
                     21:  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
                     22:  * SERVICES; LOSS OF MIND, USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
                     23:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
                     24:  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
                     25:  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
                     26:  * THE POSSIBILITY OF SUCH DAMAGE.
                     27:  */
                     28:
                     29: #ifndef _IC_STIREG_H_
                     30: #define _IC_STIREG_H_
                     31:
                     32: /* #define     STIDEBUG */
                     33:
                     34: #define        STI_REGION_MAX  8
                     35: #define        STI_MONITOR_MAX 256
                     36: #define        STI_DEVNAME_LEN 32
                     37: #define        STI_NCMAP       256
                     38:
                     39: /* code ROM definitions */
                     40: #define        STI_BEGIN       0
                     41: #define        STI_INIT_GRAPH  0
                     42: #define        STI_STATE_MGMT  1
                     43: #define        STI_FONT_UNPMV  2
                     44: #define        STI_BLOCK_MOVE  3
                     45: #define        STI_SELF_TEST   4
                     46: #define        STI_EXCEP_HDLR  5
                     47: #define        STI_INQ_CONF    6
                     48: #define        STI_SCM_ENT     7
                     49: #define        STI_DMA_CTRL    8
                     50: #define        STI_FLOW_CTRL   9
                     51: #define        STI_UTIMING     10
                     52: #define        STI_PROC_MGR    11
                     53: #define        STI_UTIL        12
                     54: #define        STI_END         13
                     55: #define        STI_CODECNT     16
                     56:
                     57: #define        STI_CODEBASE_MAIN       0x40
                     58: #define        STI_CODEBASE_ALT        0x80
                     59:
                     60: #define        STI_CODEBASE_PA         STI_CODEBASE_MAIN
                     61: #define        STI_CODEBASE_M68K       STI_CODEBASE_ALT
                     62: #define        STI_CODEBASE_PA64       STI_CODEBASE_ALT
                     63:
                     64: /* sti returns */
                     65: #define        STI_OK          0
                     66: #define        STI_FAIL        -1
                     67: #define        STI_NRDY        1
                     68:
                     69: /* sti errno */
                     70: #define        STI_NOERRNO             0       /* no error */
                     71: #define        STI_BADREENTLVL         1       /* bad reentry level */
                     72: #define        STI_NOREGIONSDEF        2       /* region table is not setup */
                     73: #define        STI_ILLNPLANES          3       /* invalid num of text planes */
                     74: #define        STI_ILLINDEX            4       /* invalid font index */
                     75: #define        STI_ILLLOC              5       /* invalid font location */
                     76: #define        STI_ILLCOLOUR           6       /* invalid colour */
                     77: #define        STI_ILLBLKMVFROM        7       /* invalid from in blkmv */
                     78: #define        STI_ILLBLKMVTO          8       /* invalid to in blkmv */
                     79: #define        STI_ILLBLKMVSIZE        9       /* invalid size in blkmv */
                     80: #define        STI_BEIUNSUPP           10      /* bus error ints unsupported */
                     81: #define        STI_UNXPBE              11      /* unexpected bus error */
                     82: #define        STI_UNXHWF              12      /* unexpected hardware failure */
                     83: #define        STI_NEGCFG              13      /* no ext global config struct */
                     84: #define        STI_NEIG                14      /* no ext init struct */
                     85: #define        STI_ILLSCME             15      /* invalid set cmap entry */
                     86: #define        STI_ILLCMVAL            16      /* invalid cmap value */
                     87: #define        STI_NORESMEM            17      /* no requested global memory */
                     88: #define        STI_RESMEMCORR          18      /* reserved memory corrupted */
                     89: #define        STI_ILLNTBLKMV          19      /* invalid non-text blkmv */
                     90: #define        STI_ILLMONITOR          20      /* monitor selection is out of range */
                     91: #define        STI_ILLEXCADDR          21      /* invalid excpt handler addr */
                     92: #define        STI_ILLEXCFLAGS         22      /* invalid excpt handler flags */
                     93: #define        STI_NOEHE               23      /* no ext exhdl struct */
                     94: #define        STI_NOINQCE             24      /* no ext inq cfg struct */
                     95: #define        STI_ILLRGNPTR           25      /* invalid region pointer */
                     96: #define        STI_ILLUTLOP            26      /* invalid util opcode */
                     97: #define        STI_UNKNOWN             250     /* unknown error */
                     98: #define        STI_NOCFGPTR            251     /* no config ptr defined */
                     99: #define        STI_NOFLPTR             252     /* no flag ptr defined */
                    100: #define        STI_NOINPTR             253     /* no in ptr defined */
                    101: #define        STI_NOOUTPTR            254     /* no way you can get it */
                    102: #define        STI_NOLOCK              255     /* kernel dishonour graphics lock */
                    103:
                    104: /* colours */
                    105: #define        STI_COLOUR_BLACK        0
                    106: #define        STI_COLOUR_WHITE        1
                    107: #define        STI_COLOUR_RED          2
                    108: #define        STI_COLOUR_YELLOW       3
                    109: #define        STI_COLOUR_GREEN        4
                    110: #define        STI_COLOUR_CYAN         5
                    111: #define        STI_COLOUR_BLUE         6
                    112: #define        STI_COLOUR_MAGENTA      7
                    113:
                    114: #pragma pack(1)
                    115:
                    116:        /* LSB high */
                    117: struct sti_dd {
                    118:        u_int32_t       dd_type;        /* 0x00 device type */
                    119: #define        STI_DEVTYPE1    1
                    120: #define        STI_DEVTYPE4    3
                    121:        u_int8_t        dd_unused;
                    122:        u_int8_t        dd_nmon;        /* 0x05 number monitor rates */
                    123:        u_int8_t        dd_grrev;       /* 0x06 global rom revision */
                    124:        u_int8_t        dd_lrrev;       /* 0x07 local rom revision */
                    125:        u_int32_t       dd_grid[2];     /* 0x08 graphics id */
                    126:        u_int32_t       dd_fntaddr;     /* 0x10 font start address */
                    127:        u_int32_t       dd_maxst;       /* 0x14 max state storage */
                    128:        u_int32_t       dd_romend;      /* 0x18 rom last address */
                    129:        u_int32_t       dd_reglst;      /* 0x1c device region list */
                    130:        u_int16_t       dd_maxreent;    /* 0x20 max reent storage */
                    131:        u_int16_t       dd_maxtimo;     /* 0x22 max execution timeout .1 sec */
                    132:        u_int32_t       dd_montbl;      /* 0x24 mon table address, array of
                    133:                                                names num of dd_nmon */
                    134:        u_int32_t       dd_udaddr;      /* 0x28 user data address */
                    135:        u_int32_t       dd_stimemreq;   /* 0x2c sti memory request */
                    136:        u_int32_t       dd_udsize;      /* 0x30 user data size */
                    137:        u_int16_t       dd_pwruse;      /* 0x34 power usage */
                    138:        u_int8_t        dd_bussup;      /* 0x36 bus support */
                    139: #define        STI_BUSSUPPORT_GSCINTL  0x01    /*      supports pulling INTL for int */
                    140: #define        STI_BUSSUPPORT_GSC15X   0x02    /*      supports GSC 1.5X */
                    141: #define        STI_BUSSUPPORT_GSC2X    0x04    /*      supports GSC 2.X */
                    142: #define        STI_BUSSUPPORT_PCIIOEIM 0x08    /*      will use directed int */
                    143: #define        STI_BUSSUPPORT_PCISTD   0x10    /*      will use std PCI int */
                    144: #define        STI_BUSSUPPORT_ILOCK    0x20    /*      supports implicit locking */
                    145: #define        STI_BUSSUPPORT_ROMMAP   0x40    /*      rom is only in pci erom space */
                    146: #define        STI_BUSSUPPORT_2DECODE  0x80    /*      single address decoder */
                    147:        u_int8_t        dd_ebussup;     /* 0x37 extended bus support */
                    148: #define        STI_EBUSSUPPORT_DMA     0x01    /*      supports dma */
                    149: #define        STI_EBUSSUPPORT_PIOLOCK 0x02    /*      no implicit locking for dma */
                    150:        u_int8_t        dd_altcodet;    /* 0x38 alternate code type */
                    151: #define        STI_ALTCODE_UNKNOWN     0x00
                    152: #define        STI_ALTCODE_PA64        0x01    /*      alt code is in pa64 */
                    153:        u_int8_t        dd_eddst[3];    /* 0x39 extended DD struct */
                    154:        u_int32_t       dd_cfbaddr;     /* 0x3c CFB address, location of
                    155:                                                X11 driver to be used for
                    156:                                                servers w/o accel */
                    157:        u_int32_t       dd_pacode[16];  /* 0x40 routines for pa-risc */
                    158:        u_int32_t       dd_altcode[16]; /* 0x80 routines for m68k/i386 */
                    159: };
                    160:
                    161: #define        STI_REVISION(maj, min)  (((maj) << 4) | ((min) & 0x0f))
                    162:
                    163: /* after the last region there is one indirect list ptr */
                    164: struct sti_region {
                    165:        u_int   offset  :14;    /* page offset dev io space relative */
                    166:        u_int   sys_only: 1;    /* whether allow user access */
                    167:        u_int   cache   : 1;    /* map in cache */
                    168:        u_int   btlb    : 1;    /* should use BTLB if available */
                    169:        u_int   last    : 1;    /* last region in the list */
                    170:        u_int   length  :14;    /* size in pages */
                    171: };
                    172:
                    173: struct sti_font {
                    174:        u_int16_t       first;
                    175:        u_int16_t       last;
                    176:        u_int8_t        width;
                    177:        u_int8_t        height;
                    178:        u_int8_t        type;
                    179: #define        STI_FONT_HPROMAN8       1
                    180: #define        STI_FONT_KANA8          2
                    181:        u_int8_t        bpc;
                    182:        u_int32_t       next;
                    183:        u_int8_t        uheight;
                    184:        u_int8_t        uoffset;
                    185:        u_int8_t        unused[2];
                    186: };
                    187:
                    188: struct sti_fontcfg {
                    189:        u_int16_t       first;
                    190:        u_int16_t       last;
                    191:        u_int8_t        width;
                    192:        u_int8_t        height;
                    193:        u_int8_t        type;
                    194:        u_int8_t        bpc;
                    195:        u_int8_t        uheight;
                    196:        u_int8_t        uoffset;
                    197: };
                    198:
                    199: typedef struct sti_ecfg {
                    200:        u_int8_t        current_monitor;
                    201:        u_int8_t        uf_boot;
                    202:        u_int16_t       power;          /* power dissipation Watts */
                    203:        u_int32_t       freq_ref;
                    204:        u_int32_t       *addr;          /* memory block of size dd_stimemreq */
                    205:        void            *future;
                    206: } *sti_ecfg_t;
                    207:
                    208: typedef struct sti_cfg {
                    209:        u_int32_t       text_planes;
                    210:        u_int16_t       scr_width;
                    211:        u_int16_t       scr_height;
                    212:        u_int16_t       oscr_width;
                    213:        u_int16_t       oscr_height;
                    214:        u_int16_t       fb_width;
                    215:        u_int16_t       fb_height;
                    216:        u_int32_t       regions[STI_REGION_MAX];
                    217:        u_int32_t       reent_level;
                    218:        u_int32_t       *save_addr;
                    219:        sti_ecfg_t      ext_cfg;
                    220: } *sti_cfg_t;
                    221:
                    222:
                    223: /* routine types */
                    224: #define        STI_DEP(n) \
                    225:        typedef int (*sti_##n##_t)( \
                    226:          sti_##n##flags_t, sti_##n##in_t, sti_##n##out_t, sti_cfg_t);
                    227:
                    228: typedef struct sti_initflags {
                    229:        u_int32_t       flags;
                    230: #define        STI_INITF_WAIT  0x80000000
                    231: #define        STI_INITF_RESET 0x40000000
                    232: #define        STI_INITF_TEXT  0x20000000
                    233: #define        STI_INITF_NTEXT 0x10000000
                    234: #define        STI_INITF_CLEAR 0x08000000
                    235: #define        STI_INITF_CMB   0x04000000      /* non-text planes cmap black */
                    236: #define        STI_INITF_EBET  0x02000000      /* enable bus error timer */
                    237: #define        STI_INITF_EBETI 0x01000000      /* enable bus error timer interrupt */
                    238: #define        STI_INITF_PTS   0x00800000      /* preserve text settings */
                    239: #define        STI_INITF_PNTS  0x00400000      /* preserve non-text settings */
                    240: #define        STI_INITF_PBET  0x00200000      /* preserve BET settings */
                    241: #define        STI_INITF_PBETI 0x00100000      /* preserve BETI settings */
                    242: #define        STI_INITF_ICMT  0x00080000      /* init cmap for text planes */
                    243: #define        STI_INITF_SCMT  0x00040000      /* change current monitor type */
                    244: #define        STI_INITF_RIE   0x00020000      /* retain int enables */
                    245:        void *future;
                    246: } *sti_initflags_t;
                    247:
                    248: typedef struct sti_einitin {
                    249:        u_int8_t        mon_type;
                    250:        u_int8_t        pad;
                    251:        u_int16_t       inflight;       /* possible on pci */
                    252:        void            *future;
                    253: } *sti_einitin_t;
                    254:
                    255: typedef struct sti_initin {
                    256:        u_int32_t       text_planes;    /* number of planes for text */
                    257:        sti_einitin_t   ext_in;
                    258: } *sti_initin_t;
                    259:
                    260: typedef struct sti_initout {
                    261:        int32_t         errno;
                    262:        u_int32_t       text_planes;    /* number of planes used for text */
                    263:        void            *future;
                    264: } *sti_initout_t;
                    265:
                    266: STI_DEP(init);
                    267:
                    268: typedef struct sti_mgmtflags {
                    269:        u_int32_t       flags;
                    270: #define        STI_MGMTF_WAIT  0x80000000
                    271: #define        STI_MGMTF_SAVE  0x40000000
                    272: #define        STI_MGMTF_RALL  0x20000000      /* restore all display planes */
                    273:        void *future;
                    274: } *sti_mgmtflags_t;
                    275:
                    276: typedef struct sti_mgmtin {
                    277:        void    *addr;
                    278:        void    *future;
                    279: } *sti_mgmtin_t;
                    280:
                    281: typedef struct sti_mgmtout {
                    282:        int32_t         errno;
                    283:        void            *future;
                    284: } *sti_mgmtout_t;
                    285:
                    286: STI_DEP(mgmt);
                    287:
                    288: typedef struct sti_unpmvflags {
                    289:        u_int32_t       flags;
                    290: #define        STI_UNPMVF_WAIT 0x80000000
                    291: #define        STI_UNPMVF_NTXT 0x40000000      /* intp non-text planes */
                    292:        void            *future;
                    293: } *sti_unpmvflags_t;
                    294:
                    295: typedef struct sti_unpmvin {
                    296:        u_int32_t       *font_addr;     /* font */
                    297:        u_int16_t       index;          /* character index in the font */
                    298:        u_int8_t        fg_colour;
                    299:        u_int8_t        bg_colour;
                    300:        u_int16_t       x, y;
                    301:        void            *future;
                    302: } *sti_unpmvin_t;
                    303:
                    304: typedef struct sti_unpmvout {
                    305:        u_int32_t       errno;
                    306:        void            *future;
                    307: } *sti_unpmvout_t;
                    308:
                    309: STI_DEP(unpmv);
                    310:
                    311: typedef struct sti_blkmvflags {
                    312:        u_int32_t       flags;
                    313: #define        STI_BLKMVF_WAIT 0x80000000
                    314: #define        STI_BLKMVF_COLR 0x40000000      /* change colour on move */
                    315: #define        STI_BLKMVF_CLR  0x20000000      /* clear on move */
                    316: #define        STI_BLKMVF_NTXT 0x10000000      /* move in non-text planes */
                    317:        void            *future;
                    318: } *sti_blkmvflags_t;
                    319:
                    320: typedef struct sti_blkmvin {
                    321:        u_int8_t        fg_colour;
                    322:        u_int8_t        bg_colour;
                    323:        u_int16_t       srcx, srcy, dstx, dsty;
                    324:        u_int16_t       width, height;
                    325:        u_int16_t       pad;
                    326:        void            *future;
                    327: } *sti_blkmvin_t;
                    328:
                    329: typedef struct sti_blkmvout {
                    330:        u_int32_t       errno;
                    331:        void            *future;
                    332: } *sti_blkmvout_t;
                    333:
                    334: STI_DEP(blkmv);
                    335:
                    336: typedef struct sti_testflags {
                    337:        u_int32_t       flags;
                    338: #define        STI_TESTF_WAIT  0x80000000
                    339: #define        STI_TESTF_ETST  0x40000000
                    340:        void            *future;
                    341: } *sti_testflags_t;
                    342:
                    343: typedef struct sti_testin {
                    344:        void            *future;
                    345: } *sti_testin_t;
                    346:
                    347: typedef struct sti_testout {
                    348:        u_int32_t       errno;
                    349:        u_int32_t       result;
                    350:        void            *future;
                    351: } *sti_testout_t;
                    352:
                    353: STI_DEP(test);
                    354:
                    355: typedef struct sti_exhdlflags {
                    356:        u_int32_t       flags;
                    357: #define        STI_EXHDLF_WAIT 0x80000000
                    358: #define        STI_EXHDLF_CINT 0x40000000      /* clear int */
                    359: #define        STI_EXHDLF_CBE  0x20000000      /* clear BE */
                    360: #define        STI_EXHDLF_PINT 0x10000000      /* preserve int */
                    361: #define        STI_EXHDLF_RINT 0x08000000      /* restore int */
                    362: #define        STI_EXHDLF_WEIM 0x04000000      /* write eim w/ sti_eexhdlin */
                    363: #define        STI_EXHDLF_REIM 0x02000000      /* read eim to sti_eexhdlout */
                    364: #define        STI_EXHDLF_GIE  0x01000000      /* global int enable */
                    365: #define        STI_EXHDLF_PGIE 0x00800000
                    366: #define        STI_EXHDLF_WIEM 0x00400000
                    367: #define        STI_EXHDLF_EIEM 0x00200000
                    368: #define        STI_EXHDLF_BIC  0x00100000      /* begin int cycle */
                    369: #define        STI_EXHDLF_EIC  0x00080000      /* end int cycle */
                    370: #define        STI_EXHDLF_RIE  0x00040000      /* reset do not clear int enables */
                    371:        void            *future;
                    372: } *sti_exhdlflags_t;
                    373:
                    374: typedef struct sti_eexhdlin {
                    375:        u_int32_t       eim_addr;
                    376:        u_int32_t       eim_data;
                    377:        u_int32_t       iem;            /* enable mask */
                    378:        u_int32_t       icm;            /* clear mask */
                    379:        void            *future;
                    380: } *sti_eexhdlin_t;
                    381:
                    382: typedef struct sti_exhdlint {
                    383:        u_int32_t       flags;
                    384: #define        STI_EXHDLINT_BET        0x80000000      /* bus error timer */
                    385: #define        STI_EXHDLINT_HW         0x40000000      /* high water */
                    386: #define        STI_EXHDLINT_LW         0x20000000      /* low water */
                    387: #define        STI_EXHDLINT_TM         0x10000000      /* texture map */
                    388: #define        STI_EXHDLINT_VB         0x08000000      /* vertical blank */
                    389: #define        STI_EXHDLINT_UDC        0x04000000      /* unbuffered dma complete */
                    390: #define        STI_EXHDLINT_BDC        0x02000000      /* buffered dma complete */
                    391: #define        STI_EXHDLINT_UDPC       0x01000000      /* unbuf priv dma complete */
                    392: #define        STI_EXHDLINT_BDPC       0x00800000      /* buffered priv dma complete */
                    393: } *sti_exhdlint_t;
                    394:
                    395: typedef struct sti_exhdlin {
                    396:        sti_exhdlint_t  addr;
                    397:        sti_eexhdlin_t  ext;
                    398: } *sti_exhdlin_t;
                    399:
                    400: typedef struct sti_eexhdlout {
                    401:        u_int32_t       eim_addr;
                    402:        u_int32_t       eim_data;
                    403:        u_int32_t       iem;            /* enable mask */
                    404:        u_int32_t       icm;            /* clear mask */
                    405:        void            *future;
                    406: } *sti_eexhdlout_t;
                    407:
                    408: typedef struct sti_exhdlout {
                    409:        u_int32_t       errno;
                    410:        u_int32_t       flags;
                    411: #define        STI_EXHDLO_BE   0x80000000      /* BE was intercepted */
                    412: #define        STI_EXHDLO_IP   0x40000000      /* there is int pending */
                    413: #define        STI_EXHDLO_IE   0x20000000      /* global enable set */
                    414:        sti_eexhdlout_t ext;
                    415: } *sti_exhdlout_t;
                    416:
                    417: STI_DEP(exhdl);
                    418:
                    419: typedef struct sti_inqconfflags {
                    420:        u_int32_t       flags;
                    421: #define        STI_INQCONFF_WAIT       0x80000000
                    422:        void            *future;
                    423: } *sti_inqconfflags_t;
                    424:
                    425: typedef struct sti_inqconfin {
                    426:        void    *future;
                    427: } *sti_inqconfin_t;
                    428:
                    429: typedef struct sti_einqconfout {
                    430:        u_int32_t       crt_config[3];
                    431:        u_int32_t       crt_hw[3];
                    432:        void            *future;
                    433: } *sti_einqconfout_t;
                    434:
                    435: typedef struct sti_inqconfout {
                    436:        u_int32_t       errno;
                    437:        u_int16_t       width, height, owidth, oheight, fbwidth, fbheight;
                    438:        u_int32_t       bpp;    /* bits per pixel */
                    439:        u_int32_t       bppu;   /* accessible bpp */
                    440:        u_int32_t       planes;
                    441:        u_int8_t        name[STI_DEVNAME_LEN];
                    442:        u_int32_t       attributes;
                    443: #define        STI_INQCONF_Y2X         0x0001  /* pixel is higher than wider */
                    444: #define        STI_INQCONF_HWBLKMV     0x0002  /* hw blkmv is present */
                    445: #define        STI_INQCONF_AHW         0x0004  /* adv hw accel */
                    446: #define        STI_INQCONF_INT         0x0008  /* can interrupt */
                    447: #define        STI_INQCONF_GONOFF      0x0010  /* supports on/off */
                    448: #define        STI_INQCONF_AONOFF      0x0020  /* supports alpha on/off */
                    449: #define        STI_INQCONF_VARY        0x0040  /* variable fb height */
                    450: #define        STI_INQCONF_ODDBYTES    0x0080  /* use only odd fb bytes */
                    451: #define        STI_INQCONF_FLUSH       0x0100  /* fb cache requires flushing */
                    452: #define        STI_INQCONF_DMA         0x0200  /* supports dma */
                    453: #define        STI_INQCONF_VDMA        0x0400  /* supports vdma */
                    454: #define        STI_INQCONF_YUV1        0x2000  /* supports YUV type 1 */
                    455: #define        STI_INQCONF_YUV2        0x4000  /* supports YUV type 2 */
                    456: #define        STI_INQCONF_BITS \
                    457:     "\020\001y2x\002hwblkmv\003ahw\004int\005gonoff\006aonoff\007vary"\
                    458:     "\010oddb\011flush\012dma\013vdma\016yuv1\017yuv2"
                    459:        sti_einqconfout_t ext;
                    460: } *sti_inqconfout_t;
                    461:
                    462: STI_DEP(inqconf);
                    463:
                    464: typedef struct sti_scmentflags {
                    465:        u_int32_t       flags;
                    466: #define        STI_SCMENTF_WAIT        0x80000000
                    467:        void            *future;
                    468: } *sti_scmentflags_t;
                    469:
                    470: typedef struct sti_scmentin {
                    471:        u_int32_t       entry;
                    472:        u_int32_t       value;
                    473:        void            *future;
                    474: } *sti_scmentin_t;
                    475:
                    476: typedef struct sti_scmentout {
                    477:        u_int32_t       errno;
                    478:        void            *future;
                    479: } *sti_scmentout_t;
                    480:
                    481: STI_DEP(scment);
                    482:
                    483: typedef struct sti_dmacflags {
                    484:        u_int32_t       flags;
                    485: #define        STI_DMACF_WAIT  0x80000000
                    486: #define        STI_DMACF_PRIV  0x40000000      /* priv dma */
                    487: #define        STI_DMACF_DIS   0x20000000      /* disable */
                    488: #define        STI_DMACF_BUF   0x10000000      /* buffered */
                    489: #define        STI_DMACF_MRK   0x08000000      /* write a marker */
                    490: #define        STI_DMACF_ABRT  0x04000000      /* abort dma xfer */
                    491:        void            *future;
                    492: } *sti_dmacflags_t;
                    493:
                    494: typedef struct sti_dmacin {
                    495:        u_int32_t       pa_upper;
                    496:        u_int32_t       pa_lower;
                    497:        u_int32_t       len;
                    498:        u_int32_t       mrk_data;
                    499:        u_int32_t       mrk_off;
                    500:        void            *future;
                    501: } *sti_dmacin_t;
                    502:
                    503: typedef struct sti_dmacout {
                    504:        u_int32_t       errno;
                    505:        void            *future;
                    506: } *sti_dmacout_t;
                    507:
                    508: STI_DEP(dmac);
                    509:
                    510: typedef struct sti_flowcflags {
                    511:        u_int32_t       flags;
                    512: #define        STI_FLOWCF_WAIT 0x80000000
                    513: #define        STI_FLOWCF_CHW  0x40000000      /* check high water */
                    514: #define        STI_FLOWCF_WHW  0x20000000      /* write high water */
                    515: #define        STI_FLOWCF_WLW  0x10000000      /* write low water */
                    516: #define        STI_FLOWCF_PCSE 0x08000000      /* preserve cse */
                    517: #define        STI_FLOWCF_CSE  0x04000000
                    518: #define        STI_FLOWCF_CSWF 0x02000000      /* cs write fine */
                    519: #define        STI_FLOWCF_CSWC 0x01000000      /* cs write coarse */
                    520: #define        STI_FLOWCF_CSWQ 0x00800000      /* cs write fifo */
                    521:        void            *future;
                    522: } *sti_flowcflags_t;
                    523:
                    524: typedef struct sti_flowcin {
                    525:        u_int32_t       retry;
                    526:        u_int32_t       bufz;
                    527:        u_int32_t       hwcnt;
                    528:        u_int32_t       lwcnt;
                    529:        u_int32_t       csfv;   /* cs fine value */
                    530:        u_int32_t       cscv;   /* cs coarse value */
                    531:        u_int32_t       csqc;   /* cs fifo count */
                    532:        void            *future;
                    533: } *sti_flowcin_t;
                    534:
                    535: typedef struct sti_flowcout {
                    536:        u_int32_t       errno;
                    537:        u_int32_t       retry_result;
                    538:        u_int32_t       fifo_size;
                    539:        void            *future;
                    540: } *sti_flowcout_t;
                    541:
                    542: STI_DEP(flowc);
                    543:
                    544: typedef struct sti_utimingflags {
                    545:        u_int32_t       flags;
                    546: #define        STI_UTIMF_WAIT  0x80000000
                    547: #define        STI_UTIMF_HKS   0x40000000      /* has kbuf_size */
                    548:        void            *future;
                    549: } *sti_utimingflags_t;
                    550:
                    551: typedef struct sti_utimingin {
                    552:        void            *data;
                    553:        void            *kbuf;
                    554:        void            *future;
                    555: } *sti_utimingin_t;
                    556:
                    557: typedef struct sti_utimingout {
                    558:        u_int32_t       errno;
                    559:        u_int32_t       kbuf_size;      /* buffer required size */
                    560:        void            *future;
                    561: } *sti_utimingout_t;
                    562:
                    563: STI_DEP(utiming);
                    564:
                    565: typedef struct sti_pmgrflags {
                    566:        u_int32_t       flags;
                    567: #define        STI_UTIMF_WAIT  0x80000000
                    568: #define        STI_UTIMOP_CLEANUP      0x00000000
                    569: #define        STI_UTIMOP_BAC          0x10000000
                    570: #define        STI_UTIMF_CRIT  0x04000000
                    571: #define        STI_UTIMF_BUFF  0x02000000
                    572: #define        STI_UTIMF_IBUFF 0x01000000
                    573:        void            *future;
                    574: } *sti_pmgrflags_t;
                    575:
                    576: typedef struct sti_pmgrin {
                    577:        u_int32_t       reserved[4];
                    578:        void            *future;
                    579: } *sti_pmgrin_t;
                    580:
                    581: typedef struct sti_pmgrout {
                    582:        int32_t         errno;
                    583:        void            *future;
                    584: } *sti_pmgrout_t;
                    585:
                    586: STI_DEP(pmgr);
                    587:
                    588: typedef struct sti_utilflags {
                    589:        u_int32_t       flags;
                    590: #define        STI_UTILF_ROOT  0x80000000      /* was called as root */
                    591:        void            *future;
                    592: } *sti_utilflags_t;
                    593:
                    594: typedef struct sti_utilin {
                    595:        u_int32_t       in_size;
                    596:        u_int32_t       out_size;
                    597:        u_int8_t        *buf;
                    598: } *sti_utilin_t;
                    599:
                    600: typedef struct sti_utilout {
                    601:        int32_t         errno;
                    602:        void            *future;
                    603: } *sti_utilout_t;
                    604:
                    605: STI_DEP(util);
                    606:
                    607: #pragma pack()
                    608:
                    609: #endif /* _IC_STIREG_H_ */

CVSweb