summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/sys/vgareg.h
blob: 1626a45a84ec7afde2317eb7a37ddb137e0837ed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
 * or http://www.opensolaris.org/os/licensing.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
 * If applicable, add the following below this CDDL HEADER, with the
 * fields enclosed by brackets "[]" replaced with your own identifying
 * information: Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 */
/*
 * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
 * Use is subject to license terms.
 */

#ifndef	_SYS_VGAREG_H
#define	_SYS_VGAREG_H

#ifdef	__cplusplus
extern "C" {
#endif

#define	VGA_REG_ADDR	0x3c0
#define	VGA_REG_SIZE	0x20

#define	VGA_MEM_ADDR	0xa0000
#define	VGA_MEM_SIZE	0x20000

#define	VGA_TEXT_COLS	80
#define	VGA_TEXT_ROWS	25

/*
 * VGA frame buffer hardware definitions.
 */

#define	VGA8_DEPTH		8
#define	VGA8_CMAP_ENTRIES	256
#define	VGA_TEXT_CMAP_ENTRIES	64

/*
 * General VGA registers
 * These are relative to their register set, which
 * the 3c0-3df set.
 */
#define	VGA_ATR_AD	0x00
#define	VGA_ATR_DATA	0x01
#define	VGA_MISC_W	0x02
#define	VGA_SEQ_ADR	0x04
#define	VGA_SEQ_DATA	0x05
#define	VGA_DAC_BASE	0x06
#define	VGA_DAC_AD_MK	0x06
#define	VGA_DAC_RD_AD	0x07
#define	VGA_DAC_STS	0x07
#define	VGA_DAC_WR_AD	0x08
#define	VGA_DAC_DATA	0x09
#define	VGA_MISC_R	0x0c
#define	VGA_GRC_ADR	0x0e
#define	VGA_GRC_DATA	0x0f
#define	VGA_CRTC_ADR	0x14
#define	VGA_CRTC_DATA	0x15
#define	CGA_STAT	0x1a

/*
 * Attribute controller index bits
 */
#define	VGA_ATR_ENB_PLT	0x20

/*
 * Miscellaneous output bits
 */
#define	VGA_MISC_IOA_SEL	0x01
#define	VGA_MISC_ENB_RAM	0x02
#define	VGA_MISC_VCLK		0x0c
#define		VGA_MISC_VCLK0		0x00
#define		VGA_MISC_VCLK1		0x04
#define		VGA_MISC_VCLK2		0x08
#define		VGA_MISC_VCLK3		0x0c
#define	VGA_MISC_PGSL		0x20
#define	VGA_MISC_HSP		0x40
#define	VGA_MISC_VSP		0x80
#define	VGA_MISC_IS1_VR		0x08	/* Vertical Retrace */
#define	VGA_MISC_IS1_DD		0x01	/* Display Disabled */

/*
 * CRT Controller registers
 */
#define	VGA_CRTC_H_TOTAL	0x00
#define	VGA_CRTC_H_D_END	0x01
#define	VGA_CRTC_S_H_BLNK	0x02
#define	VGA_CRTC_E_H_BLNK	0x03
#define		VGA_CRTC_E_H_BLNK_PUT_EHB(n) \
			((n)&0x1f)
#define	VGA_CRTC_S_H_SY_P	0x04
#define	VGA_CRTC_E_H_SY_P	0x05
#define		VGA_CRTC_E_H_SY_P_HOR_SKW_SHIFT	5
#define		VGA_CRTC_E_H_SY_P_HOR_SKW	0x60
#define		VGA_CRTC_E_H_SY_P_EHB5		7
#define		VGA_CRTC_E_H_SY_P_PUT_HOR_SKW(skew) \
			((skew)<<VGA_CRTC_E_H_SY_P_HOR_SKW_SHIFT)
#define		VGA_CRTC_E_H_SY_P_PUT_EHB(n) \
			((((n)>>5)&1)<<VGA_CRTC_E_H_SY_P_EHB5)
#define		VGA_CRTC_E_H_SY_P_PUT_EHS(n) \
			((n)&0x1f)
#define	VGA_CRTC_V_TOTAL	0x06
#define	VGA_CRTC_OVFL_REG	0x07
#define		VGA_CRTC_OVFL_REG_VT8	0
#define		VGA_CRTC_OVFL_REG_VDE8	1
#define		VGA_CRTC_OVFL_REG_VRS8	2
#define		VGA_CRTC_OVFL_REG_SVB8	3
#define		VGA_CRTC_OVFL_REG_LCM8	4
#define		VGA_CRTC_OVFL_REG_VT9	5
#define		VGA_CRTC_OVFL_REG_VDE9	6
#define		VGA_CRTC_OVFL_REG_VRS9	7
#define		VGA_CRTC_OVFL_REG_PUT_VT(n)	\
			((((n)>>8)&1)<<VGA_CRTC_OVFL_REG_VT8) \
			| ((((n)>>9)&1)<<VGA_CRTC_OVFL_REG_VT9)
#define		VGA_CRTC_OVFL_REG_PUT_VDE(n)	\
			((((n)>>8)&1)<<VGA_CRTC_OVFL_REG_VDE8) \
			| ((((n)>>9)&1)<<VGA_CRTC_OVFL_REG_VDE9)
#define		VGA_CRTC_OVFL_REG_PUT_VRS(n)	\
			((((n)>>8)&1)<<VGA_CRTC_OVFL_REG_VRS8) \
			| ((((n)>>9)&1)<<VGA_CRTC_OVFL_REG_VRS9)
#define		VGA_CRTC_OVFL_REG_PUT_LCM(n)	\
			((((n)>>8)&1)<<VGA_CRTC_OVFL_REG_LCM8)
#define		VGA_CRTC_OVFL_REG_PUT_SVB(n)	\
			((((n)>>8)&1)<<VGA_CRTC_OVFL_REG_SVB8)
#define	VGA_CRTC_P_R_SCAN	0x08
#define	VGA_CRTC_MAX_S_LN	0x09
#define		VGA_CRTC_MAX_S_LN_SVB9	5
#define		VGA_CRTC_MAX_S_LN_LCM9	6
#define		VGA_CRTC_MAX_S_LN_PUT_SVB(n)	\
			((((n)>>9)&1)<<VGA_CRTC_MAX_S_LN_SVB9)
#define		VGA_CRTC_MAX_S_LN_PUT_LCM(n)	\
			((((n)>>9)&1)<<VGA_CRTC_MAX_S_LN_LCM9)
#define	VGA_CRTC_CSSL		0x0a
#define	VGA_CRTC_CESL		0x0b
#define	VGA_CRTC_STAH		0x0c
#define	VGA_CRTC_STAL		0x0d
#define	VGA_CRTC_CLAH		0x0e
#define	VGA_CRTC_CLAL		0x0f
#define	VGA_CRTC_VRS		0x10
#define	VGA_CRTC_VRE		0x11
#define		VGA_CRTC_VRE_LOCK	0x80
#define		VGA_CRTC_VRE_DIS_VINT	0x20
#define		VGA_CRTC_VRE_PUT_VRE(n) \
			((n)&0x0f)
#define	VGA_CRTC_VDE		0x12
#define	VGA_CRTC_SCREEN_OFFSET	0x13
#define	VGA_CRTC_ULL		0x14
#define	VGA_CRTC_SVB		0x15
#define	VGA_CRTC_EVB		0x16
#define	VGA_CRTC_CRT_MD		0x17
#define		VGA_CRTC_CRT_MD_2BK_CGA		0x01
#define		VGA_CRTC_CRT_MD_4BK_HGC		0x02
#define		VGA_CRTC_CRT_MD_VT_X2		0x04
#define		VGA_CRTC_CRT_MD_WRD_MODE	0x08
#define		VGA_CRTC_CRT_MD_ADW_16K		0x20
#define		VGA_CRTC_CRT_MD_BYTE_MODE	0x40
#define		VGA_CRTC_CRT_MD_NO_RESET	0x80
#define	VGA_CRTC_LCM		0x18

/*
 * Sequencer registers
 */
#define	VGA_SEQ_RST_SYN		0x00
#define		VGA_SEQ_RST_SYN_ASYNC_RESET	0x00
#define		VGA_SEQ_RST_SYN_NO_ASYNC_RESET	0x01
#define		VGA_SEQ_RST_SYN_SYNC_RESET	0x00
#define		VGA_SEQ_RST_SYN_NO_SYNC_RESET	0x02
#define	VGA_SEQ_CLK_MODE	0x01
#define		VGA_SEQ_CLK_MODE_8DC		0x01
#define	VGA_SEQ_EN_WT_PL	0x02
#define		VGA_SEQ_EN_WT_PL_ALL		0x0f
#define	VGA_SEQ_CMS		0x03		/* Char Map Select */
#define		VGA_SEQ_CMS_SAH			0x20	/* Char. A (bit 2) */
#define		VGA_SEQ_CMS_SBH			0x10	/* Char. B (bit 2) */
#define		VGA_SEQ_CMS_SA			0x0C	/* Char. A (bit 0+1) */
#define		VGA_SEQ_CMS_SB			0x03	/* Char. B (bit 0+1) */
#define	VGA_SEQ_MEM_MODE	0x04
#define		VGA_SEQ_MEM_MODE_EXT_MEM	0x02
#define		VGA_SEQ_MEM_MODE_SEQ_MODE	0x04
#define		VGA_SEQ_MEM_MODE_CHN_4M		0x08

/*
 * Graphics Controller
 */
#define	VGA_GRC_SET_RST_DT	0x00
#define	VGA_GRC_EN_S_R_DT	0x01
#define	VGA_GRC_COLOR_CMP	0x02
#define	VGA_GRC_WT_ROP_RTC	0x03
#define	VGA_GRC_RD_PL_SL	0x04
#define	VGA_GRC_GRP_MODE	0x05
#define		VGA_GRC_GRP_MODE_SHF_MODE_256	0x40
#define	VGA_GRC_MISC_GM		0x06
#define		VGA_GRC_MISC_GM_GRAPH		0x01
#define		VGA_GRC_MISC_GM_MEM_MAP_1	0x04
#define	VGA_GRC_CMP_DNTC	0x07
#define		VGA_GRC_CMP_DNTC_ALL		0x0f
#define	VGA_GRC_BIT_MASK	0x08

/*
 * Attribute controller registers
 */
#define	VGA_ATR_PAS		0x20	/* Palette Address Source */
#define	VGA_ATR_PLT_REG		0x00	/* Palette Register */
#define	VGA_ATR_NUM_PLT		0x10	/* Palette Register count */
#define	VGA_ATR_MODE		0x10	/* Attribute mode control */
#define		VGA_ATR_MODE_GRAPH	0x01	/* Graphics enable */
#define		VGA_ATR_MODE_MONO	0x02	/* Monochrome emulation */
#define		VGA_ATR_MODE_9WIDE	0x04	/* Line Graphics enable */
#define		VGA_ATR_MODE_BLINK	0x08	/* Blink enable */
#define		VGA_ATR_MODE_PPM	0x20	/* Pixel panning mode */
#define		VGA_ATR_MODE_256CLR	0x40	/* 8-bit color enable */
#define		VGA_ATR_MODE_P54S	0x80	/* Palette bits 4-5 select */
#define	VGA_ATR_BDR_CLR		0x11
#define	VGA_ATR_DISP_PLN	0x12
#define		VGA_ATR_DISP_PLN_ALL	0x0f
#define	VGA_ATR_H_PX_PAN	0x13
#define	VGA_ATR_PX_PADD		0x14

/*
 * Low-memory frame buffer definitions.  These are relative to the
 * A0000 register set.
 */
#define	VGA_MONO_BASE		0x10000	/* Base of monochrome text */
#define	VGA_COLOR_BASE		0x18000	/* Base of color text */
#define	VGA_TEXT_SIZE		0x8000	/* Size of text frame buffer */

#ifdef	__cplusplus
}
#endif

#endif /* _SYS_VGAREG_H */