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