summaryrefslogtreecommitdiff
path: root/sys/arch/vax/vsa/lcgreg.h
blob: 5f858f7250df227898deb3ed38aea78d5e047f85 (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
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
/*	$OpenBSD: lcgreg.h,v 1.3 2006/08/22 21:05:03 miod Exp $	*/
/* $NetBSD: lcgreg.h,v 1.4 2005/12/11 12:19:34 christos Exp $ */

/*-
 * Copyright (c) 2000 The NetBSD Foundation, Inc.
 * All rights reserved.
 *
 * This code is derived from software contributed to The NetBSD Foundation
 * by Matt Thomas of 3am Software Foundry.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. All advertising materials mentioning features or use of this software
 *    must display the following acknowledgement:
 *	This product includes software developed by the NetBSD
 *	Foundation, Inc. and its contributors.
 * 4. Neither the name of The NetBSD Foundation nor the names of its
 *    contributors may be used to endorse or promote products derived
 *    from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */

/*
 * The registers of the LCG used in the VS4000/60 and VS4000/VLC.
 * All relative to 0x20100000
 */

/* Memory Control, Flow Control, Configuration Registers
 */
#define	LCG_REG_MEM_CONFIG		0x001800
#define	LCG_REG_MEM_STATUS		0x001804
#define	LCG_REG_MEM_CURRENT_STATE	0x001808
#define	LCG_REG_MEM_ERROR		0x00180c
#define	LCG_REG_SLOW_CONTROL_STATUS	0x001810

/* Video Control Registers
 */
#define	LCG_REG_VIDEO_CONFIG		0x001e00
#define	VIDEO_VSTATE				0xc0000000
#define	VIDEO_VFRONT_PORCH			0x00000000
#define	VIDEO_VSYNC				0x40000000
#define	VIDEO_VBACK_PORCH			0x80000000
#define	VIDEO_VACTIVE				0xc0000000
#define	VIDEO_HSTATE				0x30000000
#define	VIDEO_HFRONT_PORCH			0x00000000
#define	VIDEO_HSYNC				0x10000000
#define	VIDEO_HBACK_PORCH			0x20000000
#define	VIDEO_HACTIVE				0x30000000
#define	VIDEO_CONSOLE_LUT			0x02000000
#define	VIDEO_CONTROL_LUT			0x01000000
#define	VIDEO_CURSOR_ACTIVE			0x00400000
#define	VIDEO_CURSOR_SCANLINE			0x003f0000
#define	VIDEO_RESET				0x00008000
#define	VIDEO_LUT_LOAD_SIZE			0x00002000
#define	VIDEO_SYNC_ENABLE			0x00001000
#define	VIDEO_LUT_SHIFT_SEL			0x00000800
#define	VIDEO_CLOCK_SEL				0x00000400
#define	VIDEO_MEM_REFRESH_SEL_MASK		0x00000300
#define	VIDEO_MEM_REFRESH_SEL_SHIFT	8
#define	VIDEO_REFRESH_SEL			0x000000c0
#define	VIDEO_SHIFT_SEL				0x00000020
#define	VIDEO_CURSOR_PIN_TYPE			0x00000010
#define	VIDEO_LUT_LOAD_ENABLE			0x00000008
#define	VIDEO_CURSOR_ENABLE			0x00000004
#define	VIDEO_ENABLE_VIDEO			0x00000002
#define	VIDEO_TIMING_ENABLE			0x00000001
#define	LCG_REG_VIDEO_HTIMING		0x001e10
#define	LCG_REG_VIDEO_VTIMING		0x001e14
#define	LCG_REG_VIDEO_TIMING		0x001e18
#define	LCG_REG_VIDEO_X			0x000e30
#define	LCG_REG_VIDEO_Y			0x000e30
#define	LCG_REG_VIDEO_REFRESH_BASE	0x000e34
#define	LCG_REG_VIDEO_REFRESH_SHIFT	0x000e40
#define	LCG_REG_VIDEO_LUT_LOAD_COUNT	0x000e40
#define	LCG_REG_CURSOR_SCANLINE_LW0	0x000e50
#define	LCG_REG_CURSOR_SCANLINE_LW1	0x000e54
#define	LCG_REG_CURSOR_SCANLINE_LW2	0x000e58
#define	LCG_REG_CURSOR_SCANLINE_LW3	0x000e5c
#define	LCG_REG_CURSOR_BASE		0x000e80
#define	LCG_REG_CURSOR_XY		0x000e84
#define	LCG_REG_CURSOR_X		0x000e84
#define	LCG_REG_CURSOR_Y		0x000e84
#define	LCG_REG_LUT_CONSOLE_SEL		0x000ee0
#define	LUT_SEL_CONSOLE				0x00000000
#define	LUT_SEL_COLOR				0x00000001
#define	LCG_REG_LUT_COLOR_BASE_W	0x0006e4
#define	LCG_REG_LUT_COLOR_BASE_R	0x0006e4
#define	LCG_REG_LUT_CONTROL_BASE	0x000ee8
#define	LCG_REG_VIDEO_COUNTER_TEST	0x000f00
#define	LCG_REG_MEM_REFRESH_BASE	0x000f04

/* Graphics Control and VM Registers
 */
#define	LCG_REG_LCG_GO			0x000c80
#define	GO_VM					0x00000008
#define	GO_AG					0x00000002
#define	GO_FIFO					0x00000001
#define	LCG_REG_NEXT_ADDRESS		0x001334
#define	LCG_REG_PA_SPTE_PTE		0x001338
#define	LCG_REG_TB_INVALIDATE_SINGLE	0x001a00
#define	LCG_REG_TB_INVALIDATE_ALL	0x001a08
#define	LCG_REG_TB_INVALIDATE_STATUS	0x001a10
#define	LCG_REG_TB_STATUS		0x001c00
#define	LCG_REG_TB_VPN_COUNT		0x001c04
#define	LCG_REG_TB_DEST_VPN		0x001c14
#define	LCG_REG_TB_SOURCE_VPN		0x001c18
#define	LCG_REG_TB_STENCIL_VPN		0x001c1c
#define	LCG_REG_TB_DEST_DATA_PFN_R	0x001c24
#define	LCG_REG_TB_DEST_DATA_PFN_W	0x001c24
#define	LCG_REG_TB_SOURCE_DATA_PFN_R	0x001c28
#define	LCG_REG_TB_SOURCE_DATA_PFN_W	0x001c28
#define	LCG_REG_TB_STENCIL_DATA_PFN_R	0x001c2c
#define	LCG_REG_TB_STENCIL_DATA_PFN_W	0x001c2c
#define	LCG_REG_TB_DEST_PRE_PFN_R	0x001c34
#define	LCG_REG_TB_DEST_PRE_PFN_W	0x001c34
#define	LCG_REG_TB_SOURCE_PTE_PFN_R	0x001c38
#define	LCG_REG_TB_SOURCE_PTE_PFN_W	0x001c38
#define	LCG_REG_TB_STENCIL_PTE_PFN_R	0x001c3c
#define	LCG_REG_TB_STENCIL_PTE_PFN_W	0x001c3c
#define	LCG_REG_GRAPHICS_CONFIG		0x001c90
#define	LCG_REG_GRAPHICS_INT_STATUS	0x001c94
#define	LCG_REG_GRAPHICS_INT_SET_ENABLE	0x001c98
#define	LCG_REG_GRAPHICS_INT_CLR_ENABLE	0x001c9c
#define	LCG_REG_GRAPHICS_SUB_STATUS	0x001ca0
#define	GSS_AG_BUSY				0x80000000
#define	GSS_SHORT_CIRCUIT			0x20000000
#define	GSS_VALID_PACKET			0x10000000
#define	GSS_1ST_LONGWORD			0x08000000
#define	GSS_FIFO_ARBITRATE			0x04000000
#define	GSS_FIFO_COMMANDER			0x03000000
#define	GSS_AG_BACKWARDS			0x00800000
#define	GSS_AG_VIRTUAL				0x00400000
#define	GSS_AG_ARBITRATE			0x00200000
#define	GSS_AG_READ_ID				0x00100000
#define	GSS_AG_ACCESS_TYPE			0x000c0000
#define	GSS_AG_ACCESS_SIZE			0x00030000
#define	GSS_RESIDUE_LW0				0x00008000
#define	GSS_RESIDUE_LW1				0x00004000
#define	GSS_RESIDUE_LW2				0x00002000
#define	GSS_FIFO_TAIL_BITS			0x00001800
#define	GSS_FIFO_IDU				0x00000400
#define	GSS_EXECUTING_CLIP			0x00000200
#define	GSS_FIFO_BPT_STALL			0x00000100
#define	GSS_FIFO_WFSYNC_STALL			0x00000080
#define	GSS_FIFO_AGBUSY_STALL			0x00000040
#define	GSS_ADRS_BPT_VIRTUAL			0x00000010
#define	GSS_VM					0x00000008
#define	GSS_FIFO_IDLE				0x00000004
#define	GSS_AG_ACCESS				0x00000002
#define	GSS_FIFO				0x00000001
#define	LCG_REG_GRAPHICS_CONTROL	0x001ca4
#define	CTRL_RESET				0x80000000
#define	CTRL_AG					0x40000000
#define	CTRL_CLIP_LIST				0x20000000
#define	CTRL_FIFO				0x10000000
#define	CTRL_SHORT_CIRCUIT			0x08000000
#define	CTRL_VM					0x04000000
#define	CTRL_VM_PROTECTION			0x02000000
#define	CTRL_OPT_INTERFACE			0x01000000
#define	CTRL_OPT_TIMEOUT_SEL			0x00c00000
#define	CTRL_OPT_RESET				0x00200000
#define	CTRL_OPTION_NORESET			0x00100000
#define	CTRL_AG_ACCESS_BPT_ARM			0x00000800
#define	CTRL_PACKET_BPT_ARM			0x00000200
#define	CTRL_ADDRESS_BPT_ARM			0x00000100
#define	LCG_REG_BREAKPT_ADDRESS		0x001cb0
#define	LCG_REG_BREAKPT_VIRTUAL		0x001cb0
#define	LCG_REG_WRITE_PROTECT_LOW_HIGH	0x001cc0
#define	LCG_REG_WRITE_PROTECT_LOW	0x001cc0
#define	LCG_REG_WRITE_PROTECT_HIGH	0x001cc0
#define	LCG_REG_MAX_VIRTUAL_ADDRESS	0x002350
#define	LCG_REG_PA_SPTE_POBR		0x002354

/* Clip List / Command FIFO Registers
 */
#define	LCG_REG_CLIP_LIST_OFFSET	0x0004e4
#define	LCG_REG_CLIP_LIST_BASE		0x0004e4
#define	LCG_REG_CLIP_LIST		0x0004e4
#define	LCG_REG_FIFO_MASKS		0x000570
#define	FIFO_16K				0x00000000
#define	FIFO_32K				0x00004000
#define	FIFO_64K				0x0000c000
#define	FIFO_AFULL_AT_64			0x00000000
#define	FIFO_AFULL_AT_128			0x00002000
#define	FIFO_AFULL_AT_256			0x00003000
#define	FIFO_AFULL_AT_512			0x00003800
#define	FIFO_AFULL_AT_1024			0x00003c00
#define	FIFO_AFULL_AT_2048			0x00003e00
#define	FIFO_AFULL_AT_4096			0x00003f00
#define	FIFO_AEMPTY_AT_32			0x00000000
#define	FIFO_AEMPTY_AT_64			0x00000080
#define	FIFO_AEMPTY_AT_128			0x00000040
#define	FIFO_AEMPTY_AT_256			0x00000020
#define	FIFO_AEMPTY_AT_512			0x00000010
#define	FIFO_AEMPTY_AT_1024			0x00000008
#define	FIFO_AEMPTY_AT_2048			0x00000004
#define	FIFO_AEMPTY_AT_4096			0x00000002
#define	FIFO_AEMPTY_AT_8192			0x00000001
#define	LCG_REG_FIFO_HEAD_OFFSET	0x000574
#define	LCG_REG_FIFO_BASE		0x000574
#define	LCG_REG_FIFO_HEAD		0x000574
#define	LCG_REG_FIFO_TAIL_OFFSET	0x000578
#define	LCG_REG_FIFO_BASE2		0x000578
#define	LCG_REG_FIFO_TAIL		0x000578
#define	LCG_REG_CLIP_LIST_SAVE_OFFSET	0x000ce4
#define	LCG_REG_FIFO_RESIDUE_LW0	0x000d04
#define	LCG_REG_FIFO_RESIDUE_LW1	0x000d08
#define	LCG_REG_FIFO_RESIDUE_LW2	0x000d0c
#define	LCG_REG_FIFO_LENGTH		0x000d70
#define	LCG_REG_FIFO_SAVE_HEAD_OFFSET	0x000d74
#define	LCG_REG_FIFO_WINDOW_BASE	0x080000
#define	LCG_REG_FIFO_WINDOW_END		0x100000

/* Graphics Data Buffer and Pixel SLU Registers
 */
#define	LCG_REG_LOGICAL_FUNCTION	0x000220
#define	LCG_REG_PLANE_MASK		0x000234
#define	LCG_REG_SOURCE_PLANE_INDEX	0x00026c
#define	LCG_REG_FOREGROUND_PIXEL	0x0002c0
#define	LCG_REG_BACKGROUND_PIXEL	0x0004c0
#define	LCG_REG_GDB_LW0			0x000d80
#define	LCG_REG_GDB_LW1			0x000d84
#define	LCG_REG_GDB_LW2			0x000d88
#define	LCG_REG_GDB_LW3			0x000d8c
#define	LCG_REG_GDB_LW4			0x000d90
#define	LCG_REG_GDB_LW5			0x000d94
#define	LCG_REG_GDB_LW6			0x000d98
#define	LCG_REG_GDB_LW7			0x000d9c
#define	LCG_REG_SLU_STATE		0x000da0

/* Address Generator Registers
 */
#define	LCG_REG_CLIP_MIN_Y		0x000244
#define	LCG_REG_CLIP_MIN_MAX_X		0x000248
#define	LCG_REG_CLIP_MIN_X		0x000248
#define	LCG_REG_CLIP_MAX_X		0x000248
#define	LCG_REG_CLIP_MAX_Y		0x00024c
#define	LCG_REG_DEST_X_BIAS		0x000250
#define	LCG_REG_DEST_Y_ORIGIN		0x000254
#define	LCG_REG_DEST_Y_STEP		0x000258
#define	LCG_REG_SOURCE_X_BIAS		0x000260
#define	LCG_REG_SOURCE_Y_BASE		0x000264
#define	LCG_REG_SOURCE_Y_STEP_WIDTH	0x000268
#define	LCG_REG_SOURCE_Y_STEP		0x000268
#define	LCG_REG_SOURCE_WIDTH		0x000268
#define	LCG_REG_STENCIL_X_BIAS		0x000270
#define	LCG_REG_STENCIL_Y_BASE		0x000274
#define	LCG_REG_STENCIL_Y_STEP		0x000278
#define	LCG_REG_DEST_Y_BASE		0x000284
#define	LCG_REG_DEST_X			0x000290
#define	LCG_REG_DEST_WIDTH_HEIGHT	0x000294
#define	LCG_REG_DEST_WIDTH		0x000294
#define	LCG_REG_DEST_HEIGHT		0x000294
#define	LCG_REG_AG_STATUS2		0x000320
#define	LCG_REG_AG_CURRENT_STATE	0x000320
#define	LCG_REG_CURRENT_OPCODE		0x000320
#define	LCG_REG_OP_ACTION_CODE		0x000320
#define	LCG_REG_AG_STATUS		0x000324
#define	LCG_REG_NEXT_X			0x000330
#define	LCG_REG_CLIP_X_DIFF		0x000330
#define	LCG_REG_SOURCE_X_BIAS0		0x000460
#define	LCG_REG_SOURCE_WIDTH0		0x000468
#define	LCG_REG_DEST_X0			0x000490
#define	LCG_REG_DEST_WIDTH0		0x000494
#define	LCG_REG_TILE_ROTATION		0x000660
#define	LCG_REG_TILE_WIDTH		0x000668

/*
 * LUT data bits
 */
#define	LUT_ADRS_REG		0x00	/* write to address register */
#define	LUT_COLOR_AUTOINC	0x01	/* write to LUT and autoincrement */