The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/ic/stireg.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

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

Cache object: 2acdcc4cee8e7d23b99204d47a586970


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.