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