1/*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License").  You may not use this file except in compliance
7 * with the License.
8 *
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
13 *
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
19 *
20 * CDDL HEADER END
21 */
22/*
23 * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
24 * Use is subject to license terms.
25 */
26
27#ifndef	_SYS_VGAREG_H
28#define	_SYS_VGAREG_H
29
30#pragma ident	"%Z%%M%	%I%	%E% SMI"
31
32#ifdef	__cplusplus
33extern "C" {
34#endif
35
36/*
37 * VGA frame buffer hardware definitions.
38 */
39
40#define	VGA8_DEPTH		8
41#define	VGA8_CMAP_ENTRIES	256
42#define	VGA_TEXT_CMAP_ENTRIES	64
43
44/*
45 * General VGA registers
46 * These are relative to their register set, which
47 * the 3c0-3df set.
48 */
49#define	VGA_ATR_AD	0x00
50#define	VGA_ATR_DATA	0x01
51#define	VGA_MISC_W	0x02
52#define	VGA_SEQ_ADR	0x04
53#define	VGA_SEQ_DATA	0x05
54#define	VGA_DAC_BASE	0x06
55#define	VGA_DAC_AD_MK	0x06
56#define	VGA_DAC_RD_AD	0x07
57#define	VGA_DAC_STS	0x07
58#define	VGA_DAC_WR_AD	0x08
59#define	VGA_DAC_DATA	0x09
60#define	VGA_MISC_R	0x0c
61#define	VGA_GRC_ADR	0x0e
62#define	VGA_GRC_DATA	0x0f
63#define	VGA_CRTC_ADR	0x14
64#define	VGA_CRTC_DATA	0x15
65#define	CGA_STAT	0x1a
66
67/*
68 * Attribute controller index bits
69 */
70#define	VGA_ATR_ENB_PLT	0x20
71
72/*
73 * Miscellaneous output bits
74 */
75#define	VGA_MISC_IOA_SEL	0x01
76#define	VGA_MISC_ENB_RAM	0x02
77#define	VGA_MISC_VCLK		0x0c
78#define		VGA_MISC_VCLK0		0x00
79#define		VGA_MISC_VCLK1		0x04
80#define		VGA_MISC_VCLK2		0x08
81#define		VGA_MISC_VCLK3		0x0c
82#define	VGA_MISC_PGSL		0x20
83#define	VGA_MISC_HSP		0x40
84#define	VGA_MISC_VSP		0x80
85
86/*
87 * CRT Controller registers
88 */
89#define	VGA_CRTC_H_TOTAL	0x00
90#define	VGA_CRTC_H_D_END	0x01
91#define	VGA_CRTC_S_H_BLNK	0x02
92#define	VGA_CRTC_E_H_BLNK	0x03
93#define		VGA_CRTC_E_H_BLNK_PUT_EHB(n) \
94			((n)&0x1f)
95#define	VGA_CRTC_S_H_SY_P	0x04
96#define	VGA_CRTC_E_H_SY_P	0x05
97#define		VGA_CRTC_E_H_SY_P_HOR_SKW_SHIFT	5
98#define		VGA_CRTC_E_H_SY_P_HOR_SKW	0x60
99#define		VGA_CRTC_E_H_SY_P_EHB5		7
100#define		VGA_CRTC_E_H_SY_P_PUT_HOR_SKW(skew) \
101			((skew)<<VGA_CRTC_E_H_SY_P_HOR_SKW_SHIFT)
102#define		VGA_CRTC_E_H_SY_P_PUT_EHB(n) \
103			((((n)>>5)&1)<<VGA_CRTC_E_H_SY_P_EHB5)
104#define		VGA_CRTC_E_H_SY_P_PUT_EHS(n) \
105			((n)&0x1f)
106#define	VGA_CRTC_V_TOTAL	0x06
107#define	VGA_CRTC_OVFL_REG	0x07
108#define		VGA_CRTC_OVFL_REG_VT8	0
109#define		VGA_CRTC_OVFL_REG_VDE8	1
110#define		VGA_CRTC_OVFL_REG_VRS8	2
111#define		VGA_CRTC_OVFL_REG_SVB8	3
112#define		VGA_CRTC_OVFL_REG_LCM8	4
113#define		VGA_CRTC_OVFL_REG_VT9	5
114#define		VGA_CRTC_OVFL_REG_VDE9	6
115#define		VGA_CRTC_OVFL_REG_VRS9	7
116#define		VGA_CRTC_OVFL_REG_PUT_VT(n)	\
117			((((n)>>8)&1)<<VGA_CRTC_OVFL_REG_VT8) \
118			| ((((n)>>9)&1)<<VGA_CRTC_OVFL_REG_VT9)
119#define		VGA_CRTC_OVFL_REG_PUT_VDE(n)	\
120			((((n)>>8)&1)<<VGA_CRTC_OVFL_REG_VDE8) \
121			| ((((n)>>9)&1)<<VGA_CRTC_OVFL_REG_VDE9)
122#define		VGA_CRTC_OVFL_REG_PUT_VRS(n)	\
123			((((n)>>8)&1)<<VGA_CRTC_OVFL_REG_VRS8) \
124			| ((((n)>>9)&1)<<VGA_CRTC_OVFL_REG_VRS9)
125#define		VGA_CRTC_OVFL_REG_PUT_LCM(n)	\
126			((((n)>>8)&1)<<VGA_CRTC_OVFL_REG_LCM8)
127#define		VGA_CRTC_OVFL_REG_PUT_SVB(n)	\
128			((((n)>>8)&1)<<VGA_CRTC_OVFL_REG_SVB8)
129#define	VGA_CRTC_P_R_SCAN	0x08
130#define	VGA_CRTC_MAX_S_LN	0x09
131#define		VGA_CRTC_MAX_S_LN_SVB9	5
132#define		VGA_CRTC_MAX_S_LN_LCM9	6
133#define		VGA_CRTC_MAX_S_LN_PUT_SVB(n)	\
134			((((n)>>9)&1)<<VGA_CRTC_MAX_S_LN_SVB9)
135#define		VGA_CRTC_MAX_S_LN_PUT_LCM(n)	\
136			((((n)>>9)&1)<<VGA_CRTC_MAX_S_LN_LCM9)
137#define	VGA_CRTC_CSSL		0x0a
138#define	VGA_CRTC_CESL		0x0b
139#define	VGA_CRTC_STAH		0x0c
140#define	VGA_CRTC_STAL		0x0d
141#define	VGA_CRTC_CLAH		0x0e
142#define	VGA_CRTC_CLAL		0x0f
143#define	VGA_CRTC_VRS		0x10
144#define	VGA_CRTC_VRE		0x11
145#define		VGA_CRTC_VRE_LOCK	0x80
146#define		VGA_CRTC_VRE_DIS_VINT	0x20
147#define		VGA_CRTC_VRE_PUT_VRE(n) \
148			((n)&0x0f)
149#define	VGA_CRTC_VDE		0x12
150#define	VGA_CRTC_SCREEN_OFFSET	0x13
151#define	VGA_CRTC_ULL		0x14
152#define	VGA_CRTC_SVB		0x15
153#define	VGA_CRTC_EVB		0x16
154#define	VGA_CRTC_CRT_MD		0x17
155#define		VGA_CRTC_CRT_MD_2BK_CGA		0x01
156#define		VGA_CRTC_CRT_MD_4BK_HGC		0x02
157#define		VGA_CRTC_CRT_MD_VT_X2		0x04
158#define		VGA_CRTC_CRT_MD_WRD_MODE	0x08
159#define		VGA_CRTC_CRT_MD_ADW_16K		0x20
160#define		VGA_CRTC_CRT_MD_BYTE_MODE	0x40
161#define		VGA_CRTC_CRT_MD_NO_RESET	0x80
162#define	VGA_CRTC_LCM		0x18
163
164/*
165 * Sequencer registers
166 */
167#define	VGA_SEQ_RST_SYN		0x00
168#define		VGA_SEQ_RST_SYN_ASYNC_RESET	0x00
169#define		VGA_SEQ_RST_SYN_NO_ASYNC_RESET	0x01
170#define		VGA_SEQ_RST_SYN_SYNC_RESET	0x00
171#define		VGA_SEQ_RST_SYN_NO_SYNC_RESET	0x02
172#define	VGA_SEQ_CLK_MODE	0x01
173#define		VGA_SEQ_CLK_MODE_8DC		0x01
174#define	VGA_SEQ_EN_WT_PL	0x02
175#define		VGA_SEQ_EN_WT_PL_ALL		0x0f
176#define	VGA_SEQ_MEM_MODE	0x04
177#define		VGA_SEQ_MEM_MODE_EXT_MEM	0x02
178#define		VGA_SEQ_MEM_MODE_SEQ_MODE	0x04
179#define		VGA_SEQ_MEM_MODE_CHN_4M		0x08
180
181/*
182 * Graphics Controller
183 */
184#define	VGA_GRC_SET_RST_DT	0x00
185#define	VGA_GRC_EN_S_R_DT	0x01
186#define	VGA_GRC_COLOR_CMP	0x02
187#define	VGA_GRC_WT_ROP_RTC	0x03
188#define	VGA_GRC_RD_PL_SL	0x04
189#define	VGA_GRC_GRP_MODE	0x05
190#define		VGA_GRC_GRP_MODE_SHF_MODE_256	0x40
191#define	VGA_GRC_MISC_GM		0x06
192#define		VGA_GRC_MISC_GM_GRAPH		0x01
193#define		VGA_GRC_MISC_GM_MEM_MAP_1	0x04
194#define	VGA_GRC_CMP_DNTC	0x07
195#define		VGA_GRC_CMP_DNTC_ALL		0x0f
196#define	VGA_GRC_BIT_MASK	0x08
197
198/*
199 * Attribute controller registers
200 */
201#define	VGA_ATR_PLT_REG		0x00
202#define	VGA_ATR_NUM_PLT		0x10
203#define	VGA_ATR_MODE		0x10
204#define		VGA_ATR_MODE_GRAPH	0x01
205#define		VGA_ATR_MODE_9WIDE	0x04
206#define		VGA_ATR_MODE_BLINK	0x08
207#define		VGA_ATR_MODE_256CLR	0x40
208#define	VGA_ATR_BDR_CLR		0x11
209#define	VGA_ATR_DISP_PLN	0x12
210#define		VGA_ATR_DISP_PLN_ALL	0x0f
211#define	VGA_ATR_H_PX_PAN	0x13
212#define	VGA_ATR_PX_PADD		0x14
213
214/*
215 * Low-memory frame buffer definitions.  These are relative to the
216 * A0000 register set.
217 */
218#define	VGA_MONO_BASE		0x10000	/* Base of monochrome text */
219#define	VGA_COLOR_BASE		0x18000	/* Base of color text */
220#define	VGA_TEXT_SIZE		0x8000	/* Size of text frame buffer */
221
222#ifdef	__cplusplus
223}
224#endif
225
226#endif /* _SYS_VGAREG_H */
227