Home | History | Annotate | Line # | Download | only in dev
grf_cvreg.h revision 1.3
      1  1.3  chopps /*	$NetBSD: grf_cvreg.h,v 1.3 1995/12/27 07:15:55 chopps 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.3  chopps #define SEQ_ID_MORE_MAGIC	0x1A
    162  1.1  chopps 
    163  1.1  chopps /* CRT Controller: */
    164  1.1  chopps #define CRT_ADDRESS		0x03D4
    165  1.1  chopps #define CRT_ADDRESS_R		0x03D5
    166  1.1  chopps #define CRT_ADDRESS_W		0x03D5
    167  1.1  chopps #define CRT_ID_HOR_TOTAL	0x00
    168  1.1  chopps #define CRT_ID_HOR_DISP_ENA_END	0x01
    169  1.1  chopps #define CRT_ID_START_HOR_BLANK	0x02
    170  1.1  chopps #define CRT_ID_END_HOR_BLANK	0x03
    171  1.1  chopps #define CRT_ID_START_HOR_RETR	0x04
    172  1.1  chopps #define CRT_ID_END_HOR_RETR	0x05
    173  1.1  chopps #define CRT_ID_VER_TOTAL	0x06
    174  1.1  chopps #define CRT_ID_OVERFLOW		0x07
    175  1.1  chopps #define CRT_ID_PRESET_ROW_SCAN	0x08
    176  1.1  chopps #define CRT_ID_MAX_SCAN_LINE	0x09
    177  1.1  chopps #define CRT_ID_CURSOR_START	0x0A
    178  1.1  chopps #define CRT_ID_CURSOR_END	0x0B
    179  1.1  chopps #define CRT_ID_START_ADDR_HIGH	0x0C
    180  1.1  chopps #define CRT_ID_START_ADDR_LOW	0x0D
    181  1.1  chopps #define CRT_ID_CURSOR_LOC_HIGH	0x0E
    182  1.1  chopps #define CRT_ID_CURSOR_LOC_LOW	0x0F
    183  1.1  chopps #define CRT_ID_START_VER_RETR	0x10
    184  1.1  chopps #define CRT_ID_END_VER_RETR	0x11
    185  1.1  chopps #define CRT_ID_VER_DISP_ENA_END	0x12
    186  1.1  chopps #define CRT_ID_SCREEN_OFFSET	0x13
    187  1.1  chopps #define CRT_ID_UNDERLINE_LOC	0x14
    188  1.1  chopps #define CRT_ID_START_VER_BLANK	0x15
    189  1.1  chopps #define CRT_ID_END_VER_BLANK	0x16
    190  1.1  chopps #define CRT_ID_MODE_CONTROL	0x17
    191  1.1  chopps #define CRT_ID_LINE_COMPARE	0x18
    192  1.1  chopps #define CRT_ID_GD_LATCH_RBACK	0x22
    193  1.1  chopps #define CRT_ID_ACT_TOGGLE_RBACK	0x24
    194  1.1  chopps #define CRT_ID_ACT_INDEX_RBACK	0x26
    195  1.1  chopps /* S3 extensions: S3 VGA Registers */
    196  1.1  chopps #define CRT_ID_DEVICE_HIGH	0x2D
    197  1.1  chopps #define CRT_ID_DEVICE_LOW	0x2E
    198  1.1  chopps #define CRT_ID_REVISION 	0x2F
    199  1.1  chopps #define CRT_ID_CHIP_ID_REV	0x30
    200  1.1  chopps #define CRT_ID_MEMORY_CONF	0x31
    201  1.1  chopps #define CRT_ID_BACKWAD_COMP_1	0x32
    202  1.1  chopps #define CRT_ID_BACKWAD_COMP_2	0x33
    203  1.1  chopps #define CRT_ID_BACKWAD_COMP_3	0x34
    204  1.1  chopps #define CRT_ID_REGISTER_LOCK	0x35
    205  1.1  chopps #define CRT_ID_CONFIG_1 	0x36
    206  1.1  chopps #define CRT_ID_CONFIG_2 	0x37
    207  1.1  chopps #define CRT_ID_REGISTER_LOCK_1	0x38
    208  1.1  chopps #define CRT_ID_REGISTER_LOCK_2	0x39
    209  1.1  chopps #define CRT_ID_MISC_1		0x3A
    210  1.1  chopps #define CRT_ID_DISPLAY_FIFO	0x3B
    211  1.1  chopps #define CRT_ID_LACE_RETR_START	0x3C
    212  1.1  chopps /* S3 extensions: System Control Registers  */
    213  1.1  chopps #define CRT_ID_SYSTEM_CONFIG	0x40
    214  1.1  chopps #define CRT_ID_BIOS_FLAG	0x41
    215  1.1  chopps #define CRT_ID_LACE_CONTROL	0x42
    216  1.1  chopps #define CRT_ID_EXT_MODE 	0x43
    217  1.1  chopps #define CRT_ID_HWGC_MODE	0x45	/* HWGC = Hardware Graphics Cursor */
    218  1.1  chopps #define CRT_ID_HWGC_ORIGIN_X_HI	0x46
    219  1.1  chopps #define CRT_ID_HWGC_ORIGIN_X_LO	0x47
    220  1.1  chopps #define CRT_ID_HWGC_ORIGIN_Y_HI	0x48
    221  1.1  chopps #define CRT_ID_HWGC_ORIGIN_Y_LO	0x49
    222  1.1  chopps #define CRT_ID_HWGC_FG_STACK	0x4A
    223  1.1  chopps #define CRT_ID_HWGC_BG_STACK	0x4B
    224  1.1  chopps #define CRT_ID_HWGC_START_AD_HI	0x4C
    225  1.1  chopps #define CRT_ID_HWGC_START_AD_LO	0x4D
    226  1.1  chopps #define CRT_ID_HWGC_DSTART_X	0x4E
    227  1.1  chopps #define CRT_ID_HWGC_DSTART_Y	0x4F
    228  1.1  chopps /* S3 extensions: System Extension Registers  */
    229  1.1  chopps #define CRT_ID_EXT_SYS_CNTL_1	0x50
    230  1.1  chopps #define CRT_ID_EXT_SYS_CNTL_2	0x51
    231  1.1  chopps #define CRT_ID_EXT_BIOS_FLAG_1	0x52
    232  1.1  chopps #define CRT_ID_EXT_MEM_CNTL_1	0x53
    233  1.1  chopps #define CRT_ID_EXT_MEM_CNTL_2	0x54
    234  1.1  chopps #define CRT_ID_EXT_DAC_CNTL	0x55
    235  1.1  chopps #define CRT_ID_EX_SYNC_1	0x56
    236  1.1  chopps #define CRT_ID_EX_SYNC_2	0x57
    237  1.1  chopps #define CRT_ID_LAW_CNTL		0x58	/* LAW = Linear Address Window */
    238  1.1  chopps #define CRT_ID_LAW_POS_HI	0x59
    239  1.1  chopps #define CRT_ID_LAW_POS_LO	0x5A
    240  1.1  chopps #define CRT_ID_GOUT_PORT	0x5C
    241  1.1  chopps #define CRT_ID_EXT_HOR_OVF	0x5D
    242  1.1  chopps #define CRT_ID_EXT_VER_OVF	0x5E
    243  1.1  chopps #define CRT_ID_EXT_MEM_CNTL_3	0x60
    244  1.1  chopps #define CRT_ID_EX_SYNC_3	0x63
    245  1.1  chopps #define CRT_ID_EXT_MISC_CNTL	0x65
    246  1.1  chopps #define CRT_ID_EXT_MISC_CNTL_1	0x66
    247  1.1  chopps #define CRT_ID_EXT_MISC_CNTL_2	0x67
    248  1.1  chopps #define CRT_ID_CONFIG_3 	0x68
    249  1.1  chopps #define CRT_ID_EXT_SYS_CNTL_3	0x69
    250  1.1  chopps #define CRT_ID_EXT_SYS_CNTL_4	0x6A
    251  1.1  chopps #define CRT_ID_EXT_BIOS_FLAG_3	0x6B
    252  1.1  chopps #define CRT_ID_EXT_BIOS_FLAG_4	0x6C
    253  1.1  chopps 
    254  1.1  chopps /* Enhanced Commands Registers: */
    255  1.1  chopps #define ECR_SUBSYSTEM_STAT	0x42E8
    256  1.1  chopps #define ECR_SUBSYSTEM_CNTL	0x42E8
    257  1.1  chopps #define ECR_ADV_FUNC_CNTL	0x4AE8
    258  1.1  chopps #define ECR_CURRENT_Y_POS	0x82E8
    259  1.1  chopps #define ECR_CURRENT_Y_POS2	0x82EA	/* Trio64 only */
    260  1.1  chopps #define ECR_CURRENT_X_POS	0x86E8
    261  1.1  chopps #define ECR_CURRENT_X_POS2	0x86EA	/* Trio64 only */
    262  1.1  chopps #define ECR_DEST_Y__AX_STEP	0x8AE8
    263  1.1  chopps #define ECR_DEST_Y2__AX_STEP2	0x8AEA	/* Trio64 only */
    264  1.1  chopps #define ECR_DEST_X__DIA_STEP	0x8EE8
    265  1.1  chopps #define ECR_DEST_X2__DIA_STEP2	0x8EEA	/* Trio64 only */
    266  1.1  chopps #define ECR_ERR_TERM		0x92E8
    267  1.1  chopps #define ECR_ERR_TERM2		0x92EA	/* Trio64 only */
    268  1.1  chopps #define ECR_MAJ_AXIS_PIX_CNT	0x96E8
    269  1.1  chopps #define ECR_MAJ_AXIS_PIX_CNT2	0x96EA	/* Trio64 only */
    270  1.1  chopps #define ECR_GP_STAT		0x9AE8	/* GP = Graphics Processor */
    271  1.1  chopps #define ECR_DRAW_CMD		0x9AE8
    272  1.1  chopps #define ECR_DRAW_CMD2		0x9AEA	/* Trio64 only */
    273  1.1  chopps #define ECR_SHORT_STROKE	0x9EE8
    274  1.1  chopps #define ECR_BKGD_COLOR		0xA2E8	/* BKGD = Background */
    275  1.1  chopps #define ECR_FRGD_COLOR		0xA6E8	/* FRGD = Foreground */
    276  1.1  chopps #define ECR_BITPLANE_WRITE_MASK	0xAAE8
    277  1.1  chopps #define ECR_BITPLANE_READ_MASK	0xAEE8
    278  1.1  chopps #define ECR_COLOR_COMPARE	0xB2E8
    279  1.1  chopps #define ECR_BKGD_MIX		0xB6E8
    280  1.1  chopps #define ECR_FRGD_MIX		0xBAE8
    281  1.1  chopps #define ECR_READ_REG_DATA	0xBEE8
    282  1.1  chopps #define ECR_ID_MIN_AXIS_PIX_CNT	0x00
    283  1.1  chopps #define ECR_ID_SCISSORS_TOP	0x01
    284  1.1  chopps #define ECR_ID_SCISSORS_LEFT	0x02
    285  1.1  chopps #define ECR_ID_SCISSORS_BUTTOM	0x03
    286  1.1  chopps #define ECR_ID_SCISSORS_RIGHT	0x04
    287  1.1  chopps #define ECR_ID_PIX_CNTL		0x0A
    288  1.1  chopps #define ECR_ID_MULT_CNTL_MISC_2	0x0D
    289  1.1  chopps #define ECR_ID_MULT_CNTL_MISC	0x0E
    290  1.1  chopps #define ECR_ID_READ_SEL		0x0F
    291  1.1  chopps #define ECR_PIX_TRANS		0xE2E8
    292  1.1  chopps #define ECR_PIX_TRANS_EXT	0xE2EA
    293  1.1  chopps #define ECR_PATTERN_Y		0xEAE8	/* Trio64 only */
    294  1.1  chopps #define ECR_PATTERN_X		0xEAEA	/* Trio64 only */
    295  1.1  chopps 
    296  1.1  chopps 
    297  1.1  chopps /* Pass-through */
    298  1.1  chopps #define PASS_ADDRESS		0x40001
    299  1.1  chopps #define PASS_ADDRESS_W		0x40001
    300  1.1  chopps 
    301  1.1  chopps /* Video DAC */
    302  1.1  chopps #define VDAC_ADDRESS		0x03c8
    303  1.1  chopps #define VDAC_ADDRESS_W		0x03c8
    304  1.1  chopps #define VDAC_ADDRESS_R		0x03c7
    305  1.1  chopps #define VDAC_STATE		0x03c7
    306  1.1  chopps #define VDAC_DATA		0x03c9
    307  1.1  chopps #define VDAC_MASK		0x03c6
    308  1.1  chopps 
    309  1.1  chopps 
    310  1.1  chopps #define WGfx(ba, idx, val) \
    311  1.1  chopps 	do { vgaw(ba, GCT_ADDRESS, idx); vgaw(ba, GCT_ADDRESS_W , val); } while (0)
    312  1.1  chopps 
    313  1.1  chopps #define WSeq(ba, idx, val) \
    314  1.1  chopps 	do { vgaw(ba, SEQ_ADDRESS, idx); vgaw(ba, SEQ_ADDRESS_W , val); } while (0)
    315  1.1  chopps 
    316  1.1  chopps #define WCrt(ba, idx, val) \
    317  1.1  chopps 	do { vgaw(ba, CRT_ADDRESS, idx); vgaw(ba, CRT_ADDRESS_W , val); } while (0)
    318  1.1  chopps 
    319  1.1  chopps #define WAttr(ba, idx, val) \
    320  1.1  chopps 	do {	\
    321  1.1  chopps 		unsigned char tmp;\
    322  1.1  chopps 		tmp = vgar(ba, ACT_ADDRESS_RESET);\
    323  1.1  chopps 		vgaw(ba, ACT_ADDRESS_W, idx);\
    324  1.1  chopps 		vgaw(ba, ACT_ADDRESS_W, val);\
    325  1.1  chopps 	} while (0)
    326  1.1  chopps 
    327  1.1  chopps 
    328  1.1  chopps #define SetTextPlane(ba, m) \
    329  1.1  chopps 	do { \
    330  1.1  chopps 		WGfx(ba, GCT_ID_READ_MAP_SELECT, m & 3 );\
    331  1.1  chopps 		WSeq(ba, SEQ_ID_MAP_MASK, (1 << (m & 3)));\
    332  1.1  chopps 	} while (0)
    333  1.1  chopps 
    334  1.1  chopps /* Special wakeup/passthrough registers on graphics boards
    335  1.1  chopps  *
    336  1.1  chopps  * The methods have diverged a bit for each board, so
    337  1.1  chopps  * WPass(P) has been converted into a set of specific
    338  1.1  chopps  * inline functions.
    339  1.1  chopps  */
    340  1.1  chopps 
    341  1.1  chopps static inline unsigned char
    342  1.1  chopps RAttr(ba, idx)
    343  1.2     jtc 	volatile caddr_t ba;
    344  1.1  chopps 	short idx;
    345  1.1  chopps {
    346  1.1  chopps 
    347  1.1  chopps 	vgaw(ba, ACT_ADDRESS_W, idx);
    348  1.1  chopps 	delay(0);
    349  1.1  chopps 	return vgar(ba, ACT_ADDRESS_R);
    350  1.1  chopps }
    351  1.1  chopps 
    352  1.1  chopps static inline unsigned char
    353  1.1  chopps RSeq(ba, idx)
    354  1.2     jtc 	volatile caddr_t ba;
    355  1.1  chopps 	short idx;
    356  1.1  chopps {
    357  1.1  chopps 	vgaw(ba, SEQ_ADDRESS, idx);
    358  1.1  chopps 	return vgar(ba, SEQ_ADDRESS_R);
    359  1.1  chopps }
    360  1.1  chopps 
    361  1.1  chopps static inline unsigned char
    362  1.1  chopps RCrt(ba, idx)
    363  1.2     jtc 	volatile caddr_t ba;
    364  1.1  chopps 	short idx;
    365  1.1  chopps {
    366  1.1  chopps 	vgaw(ba, CRT_ADDRESS, idx);
    367  1.1  chopps 	return vgar(ba, CRT_ADDRESS_R);
    368  1.1  chopps }
    369  1.1  chopps 
    370  1.1  chopps static inline unsigned char
    371  1.1  chopps RGfx(ba, idx)
    372  1.2     jtc 	volatile caddr_t ba;
    373  1.1  chopps 	short idx;
    374  1.1  chopps {
    375  1.1  chopps 	vgaw(ba, GCT_ADDRESS, idx);
    376  1.1  chopps 	return vgar(ba, GCT_ADDRESS_R);
    377  1.1  chopps }
    378  1.1  chopps 
    379  1.1  chopps 
    380  1.1  chopps static inline void
    381  1.1  chopps cv_write_port(bits, BoardAddr)
    382  1.1  chopps 	unsigned short bits;
    383  1.2     jtc 	volatile caddr_t BoardAddr;
    384  1.1  chopps {
    385  1.1  chopps 	volatile char *addr;
    386  1.2     jtc 	static unsigned char CVPortBits = 0;	/* mirror port bits here */
    387  1.1  chopps 
    388  1.1  chopps 	addr = BoardAddr + 0x40001;
    389  1.1  chopps 	if (bits & 0x8000)
    390  1.1  chopps 		CVPortBits |= bits&0xFF;	/* Set bits */
    391  1.1  chopps 	else {
    392  1.1  chopps 		bits = bits & 0xFF;
    393  1.1  chopps 		bits = (~bits) & 0xFF ;
    394  1.1  chopps 		CVPortBits &= bits;	/* Clear bits */
    395  1.1  chopps 	}
    396  1.1  chopps 
    397  1.1  chopps 	*addr = CVPortBits;
    398  1.1  chopps }
    399  1.1  chopps 
    400  1.1  chopps #define set_port_bits(b, ba) cv_write_port((unsigned short )b | 0x8000,ba)
    401  1.1  chopps #define clear_port_bits(b, ba) cv_write_port((unsigned short )b & 0xff,ba)
    402  1.1  chopps 
    403  1.1  chopps 
    404  1.1  chopps /*
    405  1.1  chopps  *  Monitor Switch
    406  1.1  chopps  *  0 = CyberVision Signal
    407  1.1  chopps  *  1 = Amiga Signal,
    408  1.1  chopps  * ba = boardaddr
    409  1.1  chopps  */
    410  1.1  chopps 
    411  1.1  chopps static inline void
    412  1.1  chopps cvscreen(toggle, ba)
    413  1.2     jtc 	char *toggle;
    414  1.2     jtc 	volatile caddr_t ba;
    415  1.1  chopps {
    416  1.1  chopps 
    417  1.1  chopps 	if (toggle)
    418  1.1  chopps 		cv_write_port (0x10, ba);
    419  1.1  chopps 	else
    420  1.1  chopps 		cv_write_port (0x8010, ba);
    421  1.1  chopps }
    422  1.1  chopps 
    423  1.1  chopps /* 0 = on, 1= off */
    424  1.1  chopps /* ba= registerbase */
    425  1.1  chopps static inline void
    426  1.1  chopps gfx_on_off(toggle, ba)
    427  1.2     jtc 	int toggle;
    428  1.2     jtc 	volatile caddr_t ba;
    429  1.1  chopps {
    430  1.2     jtc 	int r;
    431  1.1  chopps 
    432  1.1  chopps 	toggle &= 0x1;
    433  1.1  chopps 	toggle = toggle << 5;
    434  1.1  chopps 
    435  1.2     jtc 	r = RSeq(ba, SEQ_ID_CLOCKING_MODE);
    436  1.2     jtc 	r &= 0xdf;	/* set Bit 5 to 0 */
    437  1.2     jtc 
    438  1.2     jtc 	WSeq(ba, SEQ_ID_CLOCKING_MODE, r | toggle);
    439  1.1  chopps }
    440  1.1  chopps 
    441  1.2     jtc #if 0
    442  1.1  chopps int grfcv_cnprobe __P((void));
    443  1.1  chopps void grfcv_iteinit __P((struct grf_softc *gp));
    444  1.1  chopps #endif
    445  1.1  chopps 
    446  1.1  chopps static unsigned char clocks[]={
    447  1.1  chopps 0x13, 0x61, 0x6b, 0x6d, 0x51, 0x69, 0x54, 0x69,
    448  1.1  chopps 0x4f, 0x68, 0x6b, 0x6b, 0x18, 0x61, 0x7b, 0x6c,
    449  1.1  chopps 0x51, 0x67, 0x24, 0x62, 0x56, 0x67, 0x77, 0x6a,
    450  1.1  chopps 0x1d, 0x61, 0x53, 0x66, 0x6b, 0x68, 0x79, 0x69,
    451  1.1  chopps 0x7c, 0x69, 0x7f, 0x69, 0x22, 0x61, 0x54, 0x65,
    452  1.1  chopps 0x56, 0x65, 0x58, 0x65, 0x67, 0x66, 0x41, 0x63,
    453  1.1  chopps 0x27, 0x61, 0x13, 0x41, 0x37, 0x62, 0x6b, 0x4d,
    454  1.1  chopps 0x23, 0x43, 0x51, 0x49, 0x79, 0x66, 0x54, 0x49,
    455  1.1  chopps 0x7d, 0x66, 0x34, 0x56, 0x4f, 0x63, 0x1f, 0x42,
    456  1.1  chopps 0x6b, 0x4b, 0x7e, 0x4d, 0x18, 0x41, 0x2a, 0x43,
    457  1.1  chopps 0x7b, 0x4c, 0x74, 0x4b, 0x51, 0x47, 0x65, 0x49,
    458  1.1  chopps 0x24, 0x42, 0x68, 0x49, 0x56, 0x47, 0x75, 0x4a,
    459  1.1  chopps 0x77, 0x4a, 0x31, 0x43, 0x1d, 0x41, 0x71, 0x49,
    460  1.1  chopps 0x53, 0x46, 0x29, 0x42, 0x6b, 0x48, 0x1f, 0x41,
    461  1.1  chopps 0x79, 0x49, 0x6f, 0x48, 0x7c, 0x49, 0x38, 0x43,
    462  1.1  chopps 0x7f, 0x49, 0x5d, 0x46, 0x22, 0x41, 0x53, 0x45,
    463  1.1  chopps 0x54, 0x45, 0x55, 0x45, 0x56, 0x45, 0x57, 0x45,
    464  1.1  chopps 0x58, 0x45, 0x25, 0x41, 0x67, 0x46, 0x5b, 0x45,
    465  1.1  chopps 0x41, 0x43, 0x78, 0x47, 0x27, 0x41, 0x51, 0x44,
    466  1.1  chopps 0x13, 0x21, 0x7d, 0x47, 0x37, 0x42, 0x71, 0x46,
    467  1.1  chopps 0x6b, 0x2d, 0x14, 0x21, 0x23, 0x23, 0x7d, 0x2f,
    468  1.1  chopps 0x51, 0x29, 0x61, 0x2b, 0x79, 0x46, 0x1d, 0x22,
    469  1.1  chopps 0x54, 0x29, 0x45, 0x27, 0x7d, 0x46, 0x7f, 0x46,
    470  1.1  chopps 0x4f, 0x43, 0x2f, 0x41, 0x1f, 0x22, 0x6a, 0x2b,
    471  1.1  chopps 0x6b, 0x2b, 0x5b, 0x29, 0x7e, 0x2d, 0x65, 0x44,
    472  1.1  chopps 0x18, 0x21, 0x5e, 0x29, 0x2a, 0x23, 0x45, 0x26,
    473  1.1  chopps 0x7b, 0x2c, 0x19, 0x21, 0x74, 0x2b, 0x75, 0x2b,
    474  1.1  chopps 0x51, 0x27, 0x3f, 0x25, 0x65, 0x29, 0x40, 0x25,
    475  1.1  chopps 0x24, 0x22, 0x41, 0x25, 0x68, 0x29, 0x42, 0x25,
    476  1.1  chopps 0x56, 0x27, 0x7e, 0x2b, 0x75, 0x2a, 0x1c, 0x21,
    477  1.1  chopps 0x77, 0x2a, 0x4f, 0x26, 0x31, 0x23, 0x6f, 0x29,
    478  1.1  chopps 0x1d, 0x21, 0x32, 0x23, 0x71, 0x29, 0x72, 0x29,
    479  1.1  chopps 0x53, 0x26, 0x69, 0x28, 0x29, 0x22, 0x75, 0x29,
    480  1.1  chopps 0x6b, 0x28, 0x1f, 0x21, 0x1f, 0x21, 0x6d, 0x28,
    481  1.1  chopps 0x79, 0x29, 0x2b, 0x22, 0x6f, 0x28, 0x59, 0x26,
    482  1.1  chopps 0x7c, 0x29, 0x7d, 0x29, 0x38, 0x23, 0x21, 0x21,
    483  1.1  chopps 0x7f, 0x29, 0x39, 0x23, 0x5d, 0x26, 0x75, 0x28,
    484  1.1  chopps 0x22, 0x21, 0x77, 0x28, 0x53, 0x25, 0x6c, 0x27,
    485  1.1  chopps 0x54, 0x25, 0x61, 0x26, 0x55, 0x25, 0x30, 0x22,
    486  1.1  chopps 0x56, 0x25, 0x63, 0x26, 0x57, 0x25, 0x71, 0x27,
    487  1.1  chopps 0x58, 0x25, 0x7f, 0x28, 0x25, 0x21, 0x74, 0x27,
    488  1.1  chopps 0x67, 0x26, 0x40, 0x23, 0x5b, 0x25, 0x26, 0x21,
    489  1.1  chopps 0x41, 0x23, 0x34, 0x22, 0x78, 0x27, 0x6b, 0x26,
    490  1.1  chopps 0x27, 0x21, 0x35, 0x22, 0x51, 0x24, 0x7b, 0x27,
    491  1.1  chopps 0x13, 0x1,  0x13, 0x1,  0x7d, 0x27, 0x4c, 0x9,
    492  1.1  chopps 0x37, 0x22, 0x5b, 0xb,  0x71, 0x26, 0x5c, 0xb,
    493  1.1  chopps 0x6b, 0xd,  0x47, 0x23, 0x14, 0x1,  0x4f, 0x9,
    494  1.1  chopps 0x23, 0x3,  0x75, 0x26, 0x7d, 0xf,  0x1c, 0x2,
    495  1.1  chopps 0x51, 0x9,  0x59, 0x24, 0x61, 0xb,  0x69, 0x25,
    496  1.1  chopps 0x79, 0x26, 0x34, 0x5,  0x1d, 0x2,  0x6b, 0x25,
    497  1.1  chopps 0x54, 0x9,  0x35, 0x5,  0x45, 0x7,  0x6d, 0x25,
    498  1.1  chopps 0x7d, 0x26, 0x16, 0x1,  0x7f, 0x26, 0x77, 0xd,
    499  1.1  chopps 0x4f, 0x23, 0x78, 0xd,  0x2f, 0x21, 0x27, 0x3,
    500  1.1  chopps 0x1f, 0x2,  0x59, 0x9,  0x6a, 0xb,  0x73, 0x25,
    501  1.1  chopps 0x6b, 0xb,  0x63, 0x24, 0x5b, 0x9,  0x20, 0x2,
    502  1.1  chopps 0x7e, 0xd,  0x4b, 0x7,  0x65, 0x24, 0x43, 0x22,
    503  1.1  chopps 0x18, 0x1,  0x6f, 0xb,  0x5e, 0x9,  0x70, 0xb,
    504  1.1  chopps 0x2a, 0x3,  0x33, 0x4,  0x45, 0x6,  0x60, 0x9,
    505  1.1  chopps 0x7b, 0xc,  0x19, 0x1,  0x19, 0x1,  0x7d, 0xc,
    506  1.1  chopps 0x74, 0xb,  0x50, 0x7,  0x75, 0xb,  0x63, 0x9,
    507  1.1  chopps 0x51, 0x7,  0x23, 0x2,  0x3f, 0x5,  0x1a, 0x1,
    508  1.1  chopps 0x65, 0x9,  0x2d, 0x3,  0x40, 0x5,  0x0,  0x0,
    509  1.1  chopps };
    510  1.1  chopps 
    511  1.1  chopps #endif /* _GRF_RHREG_H */
    512  1.1  chopps 
    513