Home | History | Annotate | Line # | Download | only in dev
grf_cvreg.h revision 1.2
      1  1.2     jtc /*	$NetBSD: grf_cvreg.h,v 1.2 1995/11/30 00:56:59 jtc Exp $	*/
      2  1.2     jtc 
      3  1.1  chopps /*
      4  1.1  chopps  * Copyright (c) 1995 Michael Teske
      5  1.1  chopps  * All rights reserved.
      6  1.1  chopps  *
      7  1.1  chopps  * Redistribution and use in source and binary forms, with or without
      8  1.1  chopps  * modification, are permitted provided that the following conditions
      9  1.1  chopps  * are met:
     10  1.1  chopps  * 1. Redistributions of source code must retain the above copyright
     11  1.1  chopps  *    notice, this list of conditions and the following disclaimer.
     12  1.1  chopps  * 2. Redistributions in binary form must reproduce the above copyright
     13  1.1  chopps  *    notice, this list of conditions and the following disclaimer in the
     14  1.1  chopps  *    documentation and/or other materials provided with the distribution.
     15  1.1  chopps  * 3. All advertising materials mentioning features or use of this software
     16  1.1  chopps  *    must display the following acknowledgement:
     17  1.1  chopps  *      This product includes software developed by Ezra Story, by Kari
     18  1.1  chopps  *      Mettinen and by Bernd Ernesti.
     19  1.1  chopps  * 4. The name of the author may not be used to endorse or promote products
     20  1.1  chopps  *    derived from this software without specific prior written permission
     21  1.1  chopps  *
     22  1.1  chopps  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
     23  1.1  chopps  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     24  1.1  chopps  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     25  1.1  chopps  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
     26  1.1  chopps  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
     27  1.1  chopps  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     28  1.1  chopps  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     29  1.1  chopps  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     30  1.1  chopps  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
     31  1.1  chopps  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     32  1.1  chopps  */
     33  1.1  chopps 
     34  1.1  chopps #ifndef _GRF_CVREG_H
     35  1.1  chopps #define _GRF_CVREG_H
     36  1.1  chopps 
     37  1.1  chopps /*
     38  1.1  chopps  * This is derived from ciruss driver source
     39  1.1  chopps  */
     40  1.1  chopps 
     41  1.1  chopps /* Extension to grfvideo_mode to support text modes.
     42  1.1  chopps  * This can be passed to both text & gfx functions
     43  1.1  chopps  * without worry.  If gv.depth == 4, then the extended
     44  1.1  chopps  * fields for a text mode are present.
     45  1.1  chopps  */
     46  1.1  chopps 
     47  1.1  chopps struct grfcvtext_mode {
     48  1.1  chopps 	struct grfvideo_mode gv;
     49  1.1  chopps 	unsigned short	fx;	/* font x dimension */
     50  1.1  chopps 	unsigned short	fy;	/* font y dimension */
     51  1.1  chopps 	unsigned short	cols;	/* screen dimensions */
     52  1.1  chopps 	unsigned short	rows;
     53  1.1  chopps 	void		*fdata;	/* font data */
     54  1.1  chopps 	unsigned short	fdstart;
     55  1.1  chopps 	unsigned short	fdend;
     56  1.1  chopps };
     57  1.1  chopps 
     58  1.1  chopps 
     59  1.1  chopps /* read VGA register */
     60  1.2     jtc #define vgar(ba, reg) (*(((volatile caddr_t)ba)+reg))
     61  1.1  chopps 
     62  1.1  chopps /* write VGA register */
     63  1.1  chopps #define vgaw(ba, reg, val) \
     64  1.2     jtc 	*(((volatile caddr_t)ba)+reg) = ((val) & 0xff)
     65  1.1  chopps 
     66  1.1  chopps /*
     67  1.1  chopps  * defines for the used register addresses (mw)
     68  1.1  chopps  *
     69  1.1  chopps  * NOTE: there are some registers that have different addresses when
     70  1.1  chopps  *       in mono or color mode. We only support color mode, and thus
     71  1.1  chopps  *       some addresses won't work in mono-mode!
     72  1.1  chopps  *
     73  1.1  chopps  * General and VGA-registers taken from retina driver. Fixed a few
     74  1.1  chopps  * bugs in it. (SR and GR read address is Port + 1, NOT Port)
     75  1.1  chopps  *
     76  1.1  chopps  */
     77  1.1  chopps 
     78  1.1  chopps /* General Registers: */
     79  1.1  chopps #define GREG_MISC_OUTPUT_R	0x03CC
     80  1.1  chopps #define GREG_MISC_OUTPUT_W	0x03C2
     81  1.1  chopps #define GREG_FEATURE_CONTROL_R	0x03CA
     82  1.1  chopps #define GREG_FEATURE_CONTROL_W	0x03DA
     83  1.1  chopps #define GREG_INPUT_STATUS0_R	0x03C2
     84  1.1  chopps #define GREG_INPUT_STATUS1_R	0x03DA
     85  1.1  chopps 
     86  1.1  chopps /* Setup Registers: */
     87  1.1  chopps #define SREG_OPTION_SELECT	0x0102
     88  1.1  chopps #define SREG_VIDEO_SUBS_ENABLE	0x46E8
     89  1.1  chopps 
     90  1.1  chopps /* Attribute Controller: */
     91  1.1  chopps #define ACT_ADDRESS		0x03C0
     92  1.1  chopps #define ACT_ADDRESS_R		0x03C1
     93  1.1  chopps #define ACT_ADDRESS_W		0x03C0
     94  1.1  chopps #define ACT_ADDRESS_RESET	0x03DA
     95  1.1  chopps #define ACT_ID_PALETTE0		0x00
     96  1.1  chopps #define ACT_ID_PALETTE1		0x01
     97  1.1  chopps #define ACT_ID_PALETTE2		0x02
     98  1.1  chopps #define ACT_ID_PALETTE3		0x03
     99  1.1  chopps #define ACT_ID_PALETTE4		0x04
    100  1.1  chopps #define ACT_ID_PALETTE5		0x05
    101  1.1  chopps #define ACT_ID_PALETTE6		0x06
    102  1.1  chopps #define ACT_ID_PALETTE7		0x07
    103  1.1  chopps #define ACT_ID_PALETTE8		0x08
    104  1.1  chopps #define ACT_ID_PALETTE9		0x09
    105  1.1  chopps #define ACT_ID_PALETTE10	0x0A
    106  1.1  chopps #define ACT_ID_PALETTE11	0x0B
    107  1.1  chopps #define ACT_ID_PALETTE12	0x0C
    108  1.1  chopps #define ACT_ID_PALETTE13	0x0D
    109  1.1  chopps #define ACT_ID_PALETTE14	0x0E
    110  1.1  chopps #define ACT_ID_PALETTE15	0x0F
    111  1.1  chopps #define ACT_ID_ATTR_MODE_CNTL	0x10
    112  1.1  chopps #define ACT_ID_OVERSCAN_COLOR	0x11
    113  1.1  chopps #define ACT_ID_COLOR_PLANE_ENA	0x12
    114  1.1  chopps #define ACT_ID_HOR_PEL_PANNING	0x13
    115  1.1  chopps #define ACT_ID_COLOR_SELECT	0x14
    116  1.1  chopps 
    117  1.1  chopps /* Graphics Controller: */
    118  1.1  chopps #define GCT_ADDRESS		0x03CE
    119  1.1  chopps #define GCT_ADDRESS_R		0x03CF
    120  1.1  chopps #define GCT_ADDRESS_W		0x03CF
    121  1.1  chopps #define GCT_ID_SET_RESET	0x00
    122  1.1  chopps #define GCT_ID_ENABLE_SET_RESET	0x01
    123  1.1  chopps #define GCT_ID_COLOR_COMPARE	0x02
    124  1.1  chopps #define GCT_ID_DATA_ROTATE	0x03
    125  1.1  chopps #define GCT_ID_READ_MAP_SELECT	0x04
    126  1.1  chopps #define GCT_ID_GRAPHICS_MODE	0x05
    127  1.1  chopps #define GCT_ID_MISC		0x06
    128  1.1  chopps #define GCT_ID_COLOR_XCARE	0x07
    129  1.1  chopps #define GCT_ID_BITMASK		0x08
    130  1.1  chopps 
    131  1.1  chopps /* Sequencer: */
    132  1.1  chopps #define SEQ_ADDRESS		0x03C4
    133  1.1  chopps #define SEQ_ADDRESS_R		0x03C5
    134  1.1  chopps #define SEQ_ADDRESS_W		0x03C5
    135  1.1  chopps #define SEQ_ID_RESET		0x00
    136  1.1  chopps #define SEQ_ID_CLOCKING_MODE	0x01
    137  1.1  chopps #define SEQ_ID_MAP_MASK		0x02
    138  1.1  chopps #define SEQ_ID_CHAR_MAP_SELECT	0x03
    139  1.1  chopps #define SEQ_ID_MEMORY_MODE	0x04
    140  1.1  chopps #define SEQ_ID_UNKNOWN1		0x05
    141  1.1  chopps #define SEQ_ID_UNKNOWN2		0x06
    142  1.1  chopps #define SEQ_ID_UNKNOWN3		0x07
    143  1.1  chopps /* S3 extensions */
    144  1.1  chopps #define SEQ_ID_UNLOCK_EXT	0x08
    145  1.1  chopps #define SEQ_ID_EXT_SEQ_REG9	0x09
    146  1.1  chopps #define SEQ_ID_BUS_REQ_CNTL	0x0A
    147  1.1  chopps #define SEQ_ID_EXT_MISC_SEQ	0x0B
    148  1.1  chopps #define SEQ_ID_UNKNOWN4		0x0C
    149  1.1  chopps #define SEQ_ID_EXT_SEQ		0x0D
    150  1.1  chopps #define SEQ_ID_UNKNOWN5		0x0E
    151  1.1  chopps #define SEQ_ID_UNKNOWN6		0x0F
    152  1.1  chopps #define SEQ_ID_MCLK_LO		0x10
    153  1.1  chopps #define SEQ_ID_MCLK_HI		0x11
    154  1.1  chopps #define SEQ_ID_DCLK_LO		0x12
    155  1.1  chopps #define SEQ_ID_DCLK_HI		0x13
    156  1.1  chopps #define SEQ_ID_CLKSYN_CNTL_1	0x14
    157  1.1  chopps #define SEQ_ID_CLKSYN_CNTL_2	0x15
    158  1.1  chopps #define SEQ_ID_CLKSYN_TEST_HI	0x16	/* reserved for S3 testing of the */
    159  1.1  chopps #define SEQ_ID_CLKSYN_TEST_LO	0x17	/*   internal clock synthesizer   */
    160  1.1  chopps #define SEQ_ID_RAMDAC_CNTL	0x18
    161  1.1  chopps 
    162  1.1  chopps /* CRT Controller: */
    163  1.1  chopps #define CRT_ADDRESS		0x03D4
    164  1.1  chopps #define CRT_ADDRESS_R		0x03D5
    165  1.1  chopps #define CRT_ADDRESS_W		0x03D5
    166  1.1  chopps #define CRT_ID_HOR_TOTAL	0x00
    167  1.1  chopps #define CRT_ID_HOR_DISP_ENA_END	0x01
    168  1.1  chopps #define CRT_ID_START_HOR_BLANK	0x02
    169  1.1  chopps #define CRT_ID_END_HOR_BLANK	0x03
    170  1.1  chopps #define CRT_ID_START_HOR_RETR	0x04
    171  1.1  chopps #define CRT_ID_END_HOR_RETR	0x05
    172  1.1  chopps #define CRT_ID_VER_TOTAL	0x06
    173  1.1  chopps #define CRT_ID_OVERFLOW		0x07
    174  1.1  chopps #define CRT_ID_PRESET_ROW_SCAN	0x08
    175  1.1  chopps #define CRT_ID_MAX_SCAN_LINE	0x09
    176  1.1  chopps #define CRT_ID_CURSOR_START	0x0A
    177  1.1  chopps #define CRT_ID_CURSOR_END	0x0B
    178  1.1  chopps #define CRT_ID_START_ADDR_HIGH	0x0C
    179  1.1  chopps #define CRT_ID_START_ADDR_LOW	0x0D
    180  1.1  chopps #define CRT_ID_CURSOR_LOC_HIGH	0x0E
    181  1.1  chopps #define CRT_ID_CURSOR_LOC_LOW	0x0F
    182  1.1  chopps #define CRT_ID_START_VER_RETR	0x10
    183  1.1  chopps #define CRT_ID_END_VER_RETR	0x11
    184  1.1  chopps #define CRT_ID_VER_DISP_ENA_END	0x12
    185  1.1  chopps #define CRT_ID_SCREEN_OFFSET	0x13
    186  1.1  chopps #define CRT_ID_UNDERLINE_LOC	0x14
    187  1.1  chopps #define CRT_ID_START_VER_BLANK	0x15
    188  1.1  chopps #define CRT_ID_END_VER_BLANK	0x16
    189  1.1  chopps #define CRT_ID_MODE_CONTROL	0x17
    190  1.1  chopps #define CRT_ID_LINE_COMPARE	0x18
    191  1.1  chopps #define CRT_ID_GD_LATCH_RBACK	0x22
    192  1.1  chopps #define CRT_ID_ACT_TOGGLE_RBACK	0x24
    193  1.1  chopps #define CRT_ID_ACT_INDEX_RBACK	0x26
    194  1.1  chopps /* S3 extensions: S3 VGA Registers */
    195  1.1  chopps #define CRT_ID_DEVICE_HIGH	0x2D
    196  1.1  chopps #define CRT_ID_DEVICE_LOW	0x2E
    197  1.1  chopps #define CRT_ID_REVISION 	0x2F
    198  1.1  chopps #define CRT_ID_CHIP_ID_REV	0x30
    199  1.1  chopps #define CRT_ID_MEMORY_CONF	0x31
    200  1.1  chopps #define CRT_ID_BACKWAD_COMP_1	0x32
    201  1.1  chopps #define CRT_ID_BACKWAD_COMP_2	0x33
    202  1.1  chopps #define CRT_ID_BACKWAD_COMP_3	0x34
    203  1.1  chopps #define CRT_ID_REGISTER_LOCK	0x35
    204  1.1  chopps #define CRT_ID_CONFIG_1 	0x36
    205  1.1  chopps #define CRT_ID_CONFIG_2 	0x37
    206  1.1  chopps #define CRT_ID_REGISTER_LOCK_1	0x38
    207  1.1  chopps #define CRT_ID_REGISTER_LOCK_2	0x39
    208  1.1  chopps #define CRT_ID_MISC_1		0x3A
    209  1.1  chopps #define CRT_ID_DISPLAY_FIFO	0x3B
    210  1.1  chopps #define CRT_ID_LACE_RETR_START	0x3C
    211  1.1  chopps /* S3 extensions: System Control Registers  */
    212  1.1  chopps #define CRT_ID_SYSTEM_CONFIG	0x40
    213  1.1  chopps #define CRT_ID_BIOS_FLAG	0x41
    214  1.1  chopps #define CRT_ID_LACE_CONTROL	0x42
    215  1.1  chopps #define CRT_ID_EXT_MODE 	0x43
    216  1.1  chopps #define CRT_ID_HWGC_MODE	0x45	/* HWGC = Hardware Graphics Cursor */
    217  1.1  chopps #define CRT_ID_HWGC_ORIGIN_X_HI	0x46
    218  1.1  chopps #define CRT_ID_HWGC_ORIGIN_X_LO	0x47
    219  1.1  chopps #define CRT_ID_HWGC_ORIGIN_Y_HI	0x48
    220  1.1  chopps #define CRT_ID_HWGC_ORIGIN_Y_LO	0x49
    221  1.1  chopps #define CRT_ID_HWGC_FG_STACK	0x4A
    222  1.1  chopps #define CRT_ID_HWGC_BG_STACK	0x4B
    223  1.1  chopps #define CRT_ID_HWGC_START_AD_HI	0x4C
    224  1.1  chopps #define CRT_ID_HWGC_START_AD_LO	0x4D
    225  1.1  chopps #define CRT_ID_HWGC_DSTART_X	0x4E
    226  1.1  chopps #define CRT_ID_HWGC_DSTART_Y	0x4F
    227  1.1  chopps /* S3 extensions: System Extension Registers  */
    228  1.1  chopps #define CRT_ID_EXT_SYS_CNTL_1	0x50
    229  1.1  chopps #define CRT_ID_EXT_SYS_CNTL_2	0x51
    230  1.1  chopps #define CRT_ID_EXT_BIOS_FLAG_1	0x52
    231  1.1  chopps #define CRT_ID_EXT_MEM_CNTL_1	0x53
    232  1.1  chopps #define CRT_ID_EXT_MEM_CNTL_2	0x54
    233  1.1  chopps #define CRT_ID_EXT_DAC_CNTL	0x55
    234  1.1  chopps #define CRT_ID_EX_SYNC_1	0x56
    235  1.1  chopps #define CRT_ID_EX_SYNC_2	0x57
    236  1.1  chopps #define CRT_ID_LAW_CNTL		0x58	/* LAW = Linear Address Window */
    237  1.1  chopps #define CRT_ID_LAW_POS_HI	0x59
    238  1.1  chopps #define CRT_ID_LAW_POS_LO	0x5A
    239  1.1  chopps #define CRT_ID_GOUT_PORT	0x5C
    240  1.1  chopps #define CRT_ID_EXT_HOR_OVF	0x5D
    241  1.1  chopps #define CRT_ID_EXT_VER_OVF	0x5E
    242  1.1  chopps #define CRT_ID_EXT_MEM_CNTL_3	0x60
    243  1.1  chopps #define CRT_ID_EX_SYNC_3	0x63
    244  1.1  chopps #define CRT_ID_EXT_MISC_CNTL	0x65
    245  1.1  chopps #define CRT_ID_EXT_MISC_CNTL_1	0x66
    246  1.1  chopps #define CRT_ID_EXT_MISC_CNTL_2	0x67
    247  1.1  chopps #define CRT_ID_CONFIG_3 	0x68
    248  1.1  chopps #define CRT_ID_EXT_SYS_CNTL_3	0x69
    249  1.1  chopps #define CRT_ID_EXT_SYS_CNTL_4	0x6A
    250  1.1  chopps #define CRT_ID_EXT_BIOS_FLAG_3	0x6B
    251  1.1  chopps #define CRT_ID_EXT_BIOS_FLAG_4	0x6C
    252  1.1  chopps 
    253  1.1  chopps /* Enhanced Commands Registers: */
    254  1.1  chopps #define ECR_SUBSYSTEM_STAT	0x42E8
    255  1.1  chopps #define ECR_SUBSYSTEM_CNTL	0x42E8
    256  1.1  chopps #define ECR_ADV_FUNC_CNTL	0x4AE8
    257  1.1  chopps #define ECR_CURRENT_Y_POS	0x82E8
    258  1.1  chopps #define ECR_CURRENT_Y_POS2	0x82EA	/* Trio64 only */
    259  1.1  chopps #define ECR_CURRENT_X_POS	0x86E8
    260  1.1  chopps #define ECR_CURRENT_X_POS2	0x86EA	/* Trio64 only */
    261  1.1  chopps #define ECR_DEST_Y__AX_STEP	0x8AE8
    262  1.1  chopps #define ECR_DEST_Y2__AX_STEP2	0x8AEA	/* Trio64 only */
    263  1.1  chopps #define ECR_DEST_X__DIA_STEP	0x8EE8
    264  1.1  chopps #define ECR_DEST_X2__DIA_STEP2	0x8EEA	/* Trio64 only */
    265  1.1  chopps #define ECR_ERR_TERM		0x92E8
    266  1.1  chopps #define ECR_ERR_TERM2		0x92EA	/* Trio64 only */
    267  1.1  chopps #define ECR_MAJ_AXIS_PIX_CNT	0x96E8
    268  1.1  chopps #define ECR_MAJ_AXIS_PIX_CNT2	0x96EA	/* Trio64 only */
    269  1.1  chopps #define ECR_GP_STAT		0x9AE8	/* GP = Graphics Processor */
    270  1.1  chopps #define ECR_DRAW_CMD		0x9AE8
    271  1.1  chopps #define ECR_DRAW_CMD2		0x9AEA	/* Trio64 only */
    272  1.1  chopps #define ECR_SHORT_STROKE	0x9EE8
    273  1.1  chopps #define ECR_BKGD_COLOR		0xA2E8	/* BKGD = Background */
    274  1.1  chopps #define ECR_FRGD_COLOR		0xA6E8	/* FRGD = Foreground */
    275  1.1  chopps #define ECR_BITPLANE_WRITE_MASK	0xAAE8
    276  1.1  chopps #define ECR_BITPLANE_READ_MASK	0xAEE8
    277  1.1  chopps #define ECR_COLOR_COMPARE	0xB2E8
    278  1.1  chopps #define ECR_BKGD_MIX		0xB6E8
    279  1.1  chopps #define ECR_FRGD_MIX		0xBAE8
    280  1.1  chopps #define ECR_READ_REG_DATA	0xBEE8
    281  1.1  chopps #define ECR_ID_MIN_AXIS_PIX_CNT	0x00
    282  1.1  chopps #define ECR_ID_SCISSORS_TOP	0x01
    283  1.1  chopps #define ECR_ID_SCISSORS_LEFT	0x02
    284  1.1  chopps #define ECR_ID_SCISSORS_BUTTOM	0x03
    285  1.1  chopps #define ECR_ID_SCISSORS_RIGHT	0x04
    286  1.1  chopps #define ECR_ID_PIX_CNTL		0x0A
    287  1.1  chopps #define ECR_ID_MULT_CNTL_MISC_2	0x0D
    288  1.1  chopps #define ECR_ID_MULT_CNTL_MISC	0x0E
    289  1.1  chopps #define ECR_ID_READ_SEL		0x0F
    290  1.1  chopps #define ECR_PIX_TRANS		0xE2E8
    291  1.1  chopps #define ECR_PIX_TRANS_EXT	0xE2EA
    292  1.1  chopps #define ECR_PATTERN_Y		0xEAE8	/* Trio64 only */
    293  1.1  chopps #define ECR_PATTERN_X		0xEAEA	/* Trio64 only */
    294  1.1  chopps 
    295  1.1  chopps 
    296  1.1  chopps /* Pass-through */
    297  1.1  chopps #define PASS_ADDRESS		0x40001
    298  1.1  chopps #define PASS_ADDRESS_W		0x40001
    299  1.1  chopps 
    300  1.1  chopps /* Video DAC */
    301  1.1  chopps #define VDAC_ADDRESS		0x03c8
    302  1.1  chopps #define VDAC_ADDRESS_W		0x03c8
    303  1.1  chopps #define VDAC_ADDRESS_R		0x03c7
    304  1.1  chopps #define VDAC_STATE		0x03c7
    305  1.1  chopps #define VDAC_DATA		0x03c9
    306  1.1  chopps #define VDAC_MASK		0x03c6
    307  1.1  chopps 
    308  1.1  chopps 
    309  1.1  chopps #define WGfx(ba, idx, val) \
    310  1.1  chopps 	do { vgaw(ba, GCT_ADDRESS, idx); vgaw(ba, GCT_ADDRESS_W , val); } while (0)
    311  1.1  chopps 
    312  1.1  chopps #define WSeq(ba, idx, val) \
    313  1.1  chopps 	do { vgaw(ba, SEQ_ADDRESS, idx); vgaw(ba, SEQ_ADDRESS_W , val); } while (0)
    314  1.1  chopps 
    315  1.1  chopps #define WCrt(ba, idx, val) \
    316  1.1  chopps 	do { vgaw(ba, CRT_ADDRESS, idx); vgaw(ba, CRT_ADDRESS_W , val); } while (0)
    317  1.1  chopps 
    318  1.1  chopps #define WAttr(ba, idx, val) \
    319  1.1  chopps 	do {	\
    320  1.1  chopps 		unsigned char tmp;\
    321  1.1  chopps 		tmp = vgar(ba, ACT_ADDRESS_RESET);\
    322  1.1  chopps 		vgaw(ba, ACT_ADDRESS_W, idx);\
    323  1.1  chopps 		vgaw(ba, ACT_ADDRESS_W, val);\
    324  1.1  chopps 	} while (0)
    325  1.1  chopps 
    326  1.1  chopps 
    327  1.1  chopps #define SetTextPlane(ba, m) \
    328  1.1  chopps 	do { \
    329  1.1  chopps 		WGfx(ba, GCT_ID_READ_MAP_SELECT, m & 3 );\
    330  1.1  chopps 		WSeq(ba, SEQ_ID_MAP_MASK, (1 << (m & 3)));\
    331  1.1  chopps 	} while (0)
    332  1.1  chopps 
    333  1.1  chopps /* Special wakeup/passthrough registers on graphics boards
    334  1.1  chopps  *
    335  1.1  chopps  * The methods have diverged a bit for each board, so
    336  1.1  chopps  * WPass(P) has been converted into a set of specific
    337  1.1  chopps  * inline functions.
    338  1.1  chopps  */
    339  1.1  chopps 
    340  1.1  chopps static inline unsigned char
    341  1.1  chopps RAttr(ba, idx)
    342  1.2     jtc 	volatile caddr_t ba;
    343  1.1  chopps 	short idx;
    344  1.1  chopps {
    345  1.1  chopps 
    346  1.1  chopps 	vgaw(ba, ACT_ADDRESS_W, idx);
    347  1.1  chopps 	delay(0);
    348  1.1  chopps 	return vgar(ba, ACT_ADDRESS_R);
    349  1.1  chopps }
    350  1.1  chopps 
    351  1.1  chopps static inline unsigned char
    352  1.1  chopps RSeq(ba, idx)
    353  1.2     jtc 	volatile caddr_t ba;
    354  1.1  chopps 	short idx;
    355  1.1  chopps {
    356  1.1  chopps 	vgaw(ba, SEQ_ADDRESS, idx);
    357  1.1  chopps 	return vgar(ba, SEQ_ADDRESS_R);
    358  1.1  chopps }
    359  1.1  chopps 
    360  1.1  chopps static inline unsigned char
    361  1.1  chopps RCrt(ba, idx)
    362  1.2     jtc 	volatile caddr_t ba;
    363  1.1  chopps 	short idx;
    364  1.1  chopps {
    365  1.1  chopps 	vgaw(ba, CRT_ADDRESS, idx);
    366  1.1  chopps 	return vgar(ba, CRT_ADDRESS_R);
    367  1.1  chopps }
    368  1.1  chopps 
    369  1.1  chopps static inline unsigned char
    370  1.1  chopps RGfx(ba, idx)
    371  1.2     jtc 	volatile caddr_t ba;
    372  1.1  chopps 	short idx;
    373  1.1  chopps {
    374  1.1  chopps 	vgaw(ba, GCT_ADDRESS, idx);
    375  1.1  chopps 	return vgar(ba, GCT_ADDRESS_R);
    376  1.1  chopps }
    377  1.1  chopps 
    378  1.1  chopps 
    379  1.1  chopps static inline void
    380  1.1  chopps cv_write_port(bits, BoardAddr)
    381  1.1  chopps 	unsigned short bits;
    382  1.2     jtc 	volatile caddr_t BoardAddr;
    383  1.1  chopps {
    384  1.1  chopps 	volatile char *addr;
    385  1.2     jtc 	static unsigned char CVPortBits = 0;	/* mirror port bits here */
    386  1.1  chopps 
    387  1.1  chopps 	addr = BoardAddr + 0x40001;
    388  1.1  chopps 	if (bits & 0x8000)
    389  1.1  chopps 		CVPortBits |= bits&0xFF;	/* Set bits */
    390  1.1  chopps 	else {
    391  1.1  chopps 		bits = bits & 0xFF;
    392  1.1  chopps 		bits = (~bits) & 0xFF ;
    393  1.1  chopps 		CVPortBits &= bits;	/* Clear bits */
    394  1.1  chopps 	}
    395  1.1  chopps 
    396  1.1  chopps 	*addr = CVPortBits;
    397  1.1  chopps }
    398  1.1  chopps 
    399  1.1  chopps #define set_port_bits(b, ba) cv_write_port((unsigned short )b | 0x8000,ba)
    400  1.1  chopps #define clear_port_bits(b, ba) cv_write_port((unsigned short )b & 0xff,ba)
    401  1.1  chopps 
    402  1.1  chopps 
    403  1.1  chopps /*
    404  1.1  chopps  *  Monitor Switch
    405  1.1  chopps  *  0 = CyberVision Signal
    406  1.1  chopps  *  1 = Amiga Signal,
    407  1.1  chopps  * ba = boardaddr
    408  1.1  chopps  */
    409  1.1  chopps 
    410  1.1  chopps static inline void
    411  1.1  chopps cvscreen(toggle, ba)
    412  1.2     jtc 	char *toggle;
    413  1.2     jtc 	volatile caddr_t ba;
    414  1.1  chopps {
    415  1.1  chopps 
    416  1.1  chopps 	if (toggle)
    417  1.1  chopps 		cv_write_port (0x10, ba);
    418  1.1  chopps 	else
    419  1.1  chopps 		cv_write_port (0x8010, ba);
    420  1.1  chopps }
    421  1.1  chopps 
    422  1.1  chopps /* 0 = on, 1= off */
    423  1.1  chopps /* ba= registerbase */
    424  1.1  chopps static inline void
    425  1.1  chopps gfx_on_off(toggle, ba)
    426  1.2     jtc 	int toggle;
    427  1.2     jtc 	volatile caddr_t ba;
    428  1.1  chopps {
    429  1.2     jtc 	int r;
    430  1.1  chopps 
    431  1.1  chopps 	toggle &= 0x1;
    432  1.1  chopps 	toggle = toggle << 5;
    433  1.1  chopps 
    434  1.2     jtc 	r = RSeq(ba, SEQ_ID_CLOCKING_MODE);
    435  1.2     jtc 	r &= 0xdf;	/* set Bit 5 to 0 */
    436  1.2     jtc 
    437  1.2     jtc 	WSeq(ba, SEQ_ID_CLOCKING_MODE, r | toggle);
    438  1.1  chopps }
    439  1.1  chopps 
    440  1.2     jtc #if 0
    441  1.1  chopps int grfcv_cnprobe __P((void));
    442  1.1  chopps void grfcv_iteinit __P((struct grf_softc *gp));
    443  1.1  chopps #endif
    444  1.1  chopps 
    445  1.1  chopps static unsigned char clocks[]={
    446  1.1  chopps 0x13, 0x61, 0x6b, 0x6d, 0x51, 0x69, 0x54, 0x69,
    447  1.1  chopps 0x4f, 0x68, 0x6b, 0x6b, 0x18, 0x61, 0x7b, 0x6c,
    448  1.1  chopps 0x51, 0x67, 0x24, 0x62, 0x56, 0x67, 0x77, 0x6a,
    449  1.1  chopps 0x1d, 0x61, 0x53, 0x66, 0x6b, 0x68, 0x79, 0x69,
    450  1.1  chopps 0x7c, 0x69, 0x7f, 0x69, 0x22, 0x61, 0x54, 0x65,
    451  1.1  chopps 0x56, 0x65, 0x58, 0x65, 0x67, 0x66, 0x41, 0x63,
    452  1.1  chopps 0x27, 0x61, 0x13, 0x41, 0x37, 0x62, 0x6b, 0x4d,
    453  1.1  chopps 0x23, 0x43, 0x51, 0x49, 0x79, 0x66, 0x54, 0x49,
    454  1.1  chopps 0x7d, 0x66, 0x34, 0x56, 0x4f, 0x63, 0x1f, 0x42,
    455  1.1  chopps 0x6b, 0x4b, 0x7e, 0x4d, 0x18, 0x41, 0x2a, 0x43,
    456  1.1  chopps 0x7b, 0x4c, 0x74, 0x4b, 0x51, 0x47, 0x65, 0x49,
    457  1.1  chopps 0x24, 0x42, 0x68, 0x49, 0x56, 0x47, 0x75, 0x4a,
    458  1.1  chopps 0x77, 0x4a, 0x31, 0x43, 0x1d, 0x41, 0x71, 0x49,
    459  1.1  chopps 0x53, 0x46, 0x29, 0x42, 0x6b, 0x48, 0x1f, 0x41,
    460  1.1  chopps 0x79, 0x49, 0x6f, 0x48, 0x7c, 0x49, 0x38, 0x43,
    461  1.1  chopps 0x7f, 0x49, 0x5d, 0x46, 0x22, 0x41, 0x53, 0x45,
    462  1.1  chopps 0x54, 0x45, 0x55, 0x45, 0x56, 0x45, 0x57, 0x45,
    463  1.1  chopps 0x58, 0x45, 0x25, 0x41, 0x67, 0x46, 0x5b, 0x45,
    464  1.1  chopps 0x41, 0x43, 0x78, 0x47, 0x27, 0x41, 0x51, 0x44,
    465  1.1  chopps 0x13, 0x21, 0x7d, 0x47, 0x37, 0x42, 0x71, 0x46,
    466  1.1  chopps 0x6b, 0x2d, 0x14, 0x21, 0x23, 0x23, 0x7d, 0x2f,
    467  1.1  chopps 0x51, 0x29, 0x61, 0x2b, 0x79, 0x46, 0x1d, 0x22,
    468  1.1  chopps 0x54, 0x29, 0x45, 0x27, 0x7d, 0x46, 0x7f, 0x46,
    469  1.1  chopps 0x4f, 0x43, 0x2f, 0x41, 0x1f, 0x22, 0x6a, 0x2b,
    470  1.1  chopps 0x6b, 0x2b, 0x5b, 0x29, 0x7e, 0x2d, 0x65, 0x44,
    471  1.1  chopps 0x18, 0x21, 0x5e, 0x29, 0x2a, 0x23, 0x45, 0x26,
    472  1.1  chopps 0x7b, 0x2c, 0x19, 0x21, 0x74, 0x2b, 0x75, 0x2b,
    473  1.1  chopps 0x51, 0x27, 0x3f, 0x25, 0x65, 0x29, 0x40, 0x25,
    474  1.1  chopps 0x24, 0x22, 0x41, 0x25, 0x68, 0x29, 0x42, 0x25,
    475  1.1  chopps 0x56, 0x27, 0x7e, 0x2b, 0x75, 0x2a, 0x1c, 0x21,
    476  1.1  chopps 0x77, 0x2a, 0x4f, 0x26, 0x31, 0x23, 0x6f, 0x29,
    477  1.1  chopps 0x1d, 0x21, 0x32, 0x23, 0x71, 0x29, 0x72, 0x29,
    478  1.1  chopps 0x53, 0x26, 0x69, 0x28, 0x29, 0x22, 0x75, 0x29,
    479  1.1  chopps 0x6b, 0x28, 0x1f, 0x21, 0x1f, 0x21, 0x6d, 0x28,
    480  1.1  chopps 0x79, 0x29, 0x2b, 0x22, 0x6f, 0x28, 0x59, 0x26,
    481  1.1  chopps 0x7c, 0x29, 0x7d, 0x29, 0x38, 0x23, 0x21, 0x21,
    482  1.1  chopps 0x7f, 0x29, 0x39, 0x23, 0x5d, 0x26, 0x75, 0x28,
    483  1.1  chopps 0x22, 0x21, 0x77, 0x28, 0x53, 0x25, 0x6c, 0x27,
    484  1.1  chopps 0x54, 0x25, 0x61, 0x26, 0x55, 0x25, 0x30, 0x22,
    485  1.1  chopps 0x56, 0x25, 0x63, 0x26, 0x57, 0x25, 0x71, 0x27,
    486  1.1  chopps 0x58, 0x25, 0x7f, 0x28, 0x25, 0x21, 0x74, 0x27,
    487  1.1  chopps 0x67, 0x26, 0x40, 0x23, 0x5b, 0x25, 0x26, 0x21,
    488  1.1  chopps 0x41, 0x23, 0x34, 0x22, 0x78, 0x27, 0x6b, 0x26,
    489  1.1  chopps 0x27, 0x21, 0x35, 0x22, 0x51, 0x24, 0x7b, 0x27,
    490  1.1  chopps 0x13, 0x1,  0x13, 0x1,  0x7d, 0x27, 0x4c, 0x9,
    491  1.1  chopps 0x37, 0x22, 0x5b, 0xb,  0x71, 0x26, 0x5c, 0xb,
    492  1.1  chopps 0x6b, 0xd,  0x47, 0x23, 0x14, 0x1,  0x4f, 0x9,
    493  1.1  chopps 0x23, 0x3,  0x75, 0x26, 0x7d, 0xf,  0x1c, 0x2,
    494  1.1  chopps 0x51, 0x9,  0x59, 0x24, 0x61, 0xb,  0x69, 0x25,
    495  1.1  chopps 0x79, 0x26, 0x34, 0x5,  0x1d, 0x2,  0x6b, 0x25,
    496  1.1  chopps 0x54, 0x9,  0x35, 0x5,  0x45, 0x7,  0x6d, 0x25,
    497  1.1  chopps 0x7d, 0x26, 0x16, 0x1,  0x7f, 0x26, 0x77, 0xd,
    498  1.1  chopps 0x4f, 0x23, 0x78, 0xd,  0x2f, 0x21, 0x27, 0x3,
    499  1.1  chopps 0x1f, 0x2,  0x59, 0x9,  0x6a, 0xb,  0x73, 0x25,
    500  1.1  chopps 0x6b, 0xb,  0x63, 0x24, 0x5b, 0x9,  0x20, 0x2,
    501  1.1  chopps 0x7e, 0xd,  0x4b, 0x7,  0x65, 0x24, 0x43, 0x22,
    502  1.1  chopps 0x18, 0x1,  0x6f, 0xb,  0x5e, 0x9,  0x70, 0xb,
    503  1.1  chopps 0x2a, 0x3,  0x33, 0x4,  0x45, 0x6,  0x60, 0x9,
    504  1.1  chopps 0x7b, 0xc,  0x19, 0x1,  0x19, 0x1,  0x7d, 0xc,
    505  1.1  chopps 0x74, 0xb,  0x50, 0x7,  0x75, 0xb,  0x63, 0x9,
    506  1.1  chopps 0x51, 0x7,  0x23, 0x2,  0x3f, 0x5,  0x1a, 0x1,
    507  1.1  chopps 0x65, 0x9,  0x2d, 0x3,  0x40, 0x5,  0x0,  0x0,
    508  1.1  chopps };
    509  1.1  chopps 
    510  1.1  chopps #endif /* _GRF_RHREG_H */
    511  1.1  chopps 
    512