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
|
/* $NetBSD: p9100reg.h,v 1.6 2012/09/21 01:07:44 macallan Exp $ */
/*-
* Copyright (c) 1998 The NetBSD Foundation, Inc.
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
* by Matt Thomas.
*
* 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.
*
* 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.
*/
#ifndef P9100_REG_H
#define P9100_REG_H
/* The Tadpole 3GX Technical Reference Manual lies. The ramdac registers
* are map in 4 byte increments, not 8.
*/
#define SCRN_RPNT_CTL_1 0x0138 /* Screen Respaint Timing Control 1 */
#define VIDEO_ENABLED 0x00000020
#define PWRUP_CNFG 0x0194 /* Power Up Configuration */
#define DAC_CMAP_WRIDX 0x0200 /* IBM RGB528 Palette Address (Write) */
#define DAC_CMAP_DATA 0x0204 /* IBM RGB528 Palette Data */
#define DAC_PXL_MASK 0x0208 /* IBM RGB528 Pixel Mask */
#define DAC_CMAP_RDIDX 0x020c /* IBM RGB528 Palette Address (Read) */
#define DAC_INDX_LO 0x0210 /* IBM RGB528 Index Low */
#define DAC_INDX_HI 0x0214 /* IBM RGB528 Index High */
#define DAC_INDX_DATA 0x0218 /* IBM RGB528 Index Data (Indexed Registers) */
#define DAC_INDX_CTL 0x021c /* IBM RGB528 Index Control */
#define DAC_INDX_AUTOINCR 0x01
#define DAC_VERSION 0x01
#define DAC_MISC_CLK 0x02
#define DAC_POWER_MGT 0x05
#define DAC_POWER_SCLK_DISABLE 0x10
#define DAC_POWER_DDOT_DISABLE 0x08
#define DAC_POWER_SYNC_DISABLE 0x04
/* Disable internal DAC clock */
#define DAC_POWER_ICLK_DISABLE 0x02
/* Disable internal DAC power */
#define DAC_POWER_IPWR_DISABLE 0x01
#define DAC_OPERATION 0x06
#define DAC_SYNC_ON_GREEN 0x08
#define DAC_PALETTE_CTRL 0x07
#define DAC_PIXEL_FMT 0x0a
#define DAC_8BIT_CTRL 0x0b
#define DAC8_DIRECT_COLOR 0x01
#define DAC_16BIT_CTRL 0x0c
#define DAC16_INDIRECT_COLOR 0x00
#define DAC16_DYNAMIC_COLOR 0x40
#define DAC16_DIRECT_COLOR 0xc0
#define DAC16_BYPASS_POLARITY 0x20
#define DAC16_BIT_FILL_LINEAR 0x04
#define DAC16_555 0x00
#define DAC16_565 0x02
#define DAC16_CONTIGUOUS 0x01
#define DAC_24BIT_CTRL 0x0d
#define DAC24_DIRECT_COLOR 0x01
#define DAC_32BIT_CTRL 0x0e
#define DAC32_BYPASS_POLARITY 0x04
#define DAC32_INDIRECT_COLOR 0x00
#define DAC32_DYNAMIC_COLOR 0x01
#define DAC32_DIRECT_COLOR 0x03
#define DAC_VCO_DIV 0x16
#define DAC_PLL0 0x20
#define DAC_MISC_1 0x70
#define DAC_MISC_2 0x71
#define DAC_MISC_3 0x72
#define DAC_CURSOR_CTL 0x30
#define DAC_CURSOR_OFF 0x00
#define DAC_CURSOR_WIN 0x02
#define DAC_CURSOR_X11 0x03
#define DAC_CURSOR_64 0x04 /* clear for 32x32 cursor */
#define DAC_CURSOR_X 0x31 /* 8-low, 8-high */
#define DAC_CURSOR_Y 0x33 /* 8-low, 8-high */
#define DAC_CURSOR_HOT_X 0x35 /* hotspot */
#define DAC_CURSOR_HOT_Y 0x36
#define DAC_CURSOR_COL_1 0x40 /* red. green and blue */
#define DAC_CURSOR_COL_2 0x43
#define DAC_CURSOR_COL_3 0x46
#define DAC_PIX_PLL 0x8e
#define DAC_CURSOR_DATA 0x100
/* main registers */
#define SYS_CONF 0x0004 /* System Configuration Register */
#define BUFFER_WRITE_1 0x0200 /* writes got o buffer 1 */
#define BUFFER_WRITE_0 0x0000 /* writes go to buffer 0 */
#define BUFFER_READ_1 0x0400 /* read from buffer 1 */
#define BUFFER_READ_0 0x0000
#define MEM_SWAP_BITS 0x0800 /* swap bits when accessing VRAM */
#define MEM_SWAP_BYTES 0x1000 /* swap bytes when accessing VRAM */
#define MEM_SWAP_HWORDS 0x2000 /* swap halfwords when accessing VRAM */
#define SHIFT_0 14
#define SHIFT_1 17
#define SHIFT_2 20
#define SHIFT_3 29
#define PIXEL_SHIFT 26
#define SWAP_SHIFT 11
/* this is what the 3GX manual says */
#define SC_8BIT 2
#define SC_16BIT 3
#define SC_24BIT 7
#define SC_32BIT 5
/* video controller registers */
#define VID_HCOUNTER 0x104
#define VID_HTOTAL 0x108
#define VID_HSRE 0x10c /* hsync raising edge */
#define VID_HBRE 0x110 /* hblank raising edge */
#define VID_HBFE 0x114 /* hblank falling edge */
#define VID_HCNTPRLD 0x118 /* hcounter preload */
#define VID_VCOUNTER 0x11c /* vcounter */
#define VID_VLENGTH 0x120 /* lines, including blanks */
#define VID_VSRE 0x124 /* vsync raising edge */
#define VID_VBRE 0x128 /* vblank raising edge */
#define VID_VBFE 0x12c /* vblank falling edge */
#define VID_VCNTPRLD 0x130 /* vcounter preload */
#define VID_SRADDR 0x134 /* screen repaint address */
#define VID_SRTC 0x138 /* screen repaint timing control */
#define VID_QSFCNTR 0x13c /* QSF counter */
#define VID_MEM_CONFIG 0x184 /* memory config */
#define VID_RFPERIOD 0x188 /* refresh period */
#define VID_RFCOUNT 0x18c /* refresh counter */
#define VID_RLMAX 0x190 /* RAS low max */
#define VID_RLCUR 0x194 /* RAS low current */
#define VID_DACSYNC 0x198 /* read after last DAC access */
#define ENGINE_STATUS 0x2000 /* drawing engine status register */
#define BLITTER_BUSY 0x80000000
#define ENGINE_BUSY 0x40000000
#define COMMAND_BLIT 0x2004
#define COMMAND_QUAD 0x2008
#define COMMAND_PIXEL8 0x200c
/* pixel data for monochrome colour expansion */
#define PIXEL_1 0x2080
/* apparently bits 2-6 control how many pixels we write - n+1 */
/* drawing engine registers */
#define COORD_INDEX 0x218c
#define WINDOW_OFFSET 0x2190
#define FOREGROUND_COLOR 0x2200
#define BACKGROUND_COLOR 0x2204
#define PLANE_MASK 0x2208
#define DRAW_MODE 0x220c
#define PATTERN_ORIGIN_X 0x2210
#define PATTERN_ORIGIN_Y 0x2214
#define RASTER_OP 0x2218
#define ROP_NO_SOLID 0x02000 /* if set use pattern instead of color for quad operations */
#define ROP_2BIT_PATTERN 0x04000 /* 4-colour pattern instead of mono */
#define ROP_PIX1_TRANS 0x08000 /* transparent background in mono */
#define ROP_OVERSIZE 0x10000
#define ROP_PATTERN 0x20000 /* the manual says pattern enable */
#define ROP_TRANS 0x20000 /* but XFree86 says trans */
#define ROP_SRC 0xCC
#define ROP_PAT 0xF0
#define ROP_DST 0xAA
#define ROP_SET 0xff
#define PIXEL_8 0x221c
#define WINDOW_MIN 0x2220
#define WINDOW_MAX 0x2224
#define PATTERN0 0x2280
#define PATTERN1 0x2284
#define PATTERN2 0x2288
#define PATTERN3 0x228c
#define USER0 0x2290
#define USER1 0x2294
#define USER2 0x2298
#define USER3 0x229c
#define BYTE_CLIP_MIN 0x22a0
#define BYTE_CLIP_MAX 0x22a4
/* coordinate registers */
#define ABS_X0 0x3008
#define ABS_Y0 0x3010
#define ABS_XY0 0x3018
#define REL_X0 0x3028
#define REL_Y0 0x3030
#define REL_XY0 0x3038
#define ABS_X1 0x3048
#define ABS_Y1 0x3050
#define ABS_XY1 0x3058
#define REL_X1 0x3068
#define REL_Y1 0x3070
#define REL_XY1 0x3078
#define ABS_X2 0x3088
#define ABS_Y2 0x3090
#define ABS_XY2 0x3098
#define REL_X2 0x30a8
#define REL_Y2 0x30b0
#define REL_XY2 0x30b8
#define ABS_X3 0x30c8
#define ABS_Y3 0x30d0
#define ABS_XY3 0x30d8
#define REL_X3 0x30e8
#define REL_Y3 0x30f0
#define REL_XY3 0x30f8
/* meta-coordinates */
#define POINT_RTW_X 0x3208
#define POINT_RTW_Y 0x3210
#define POINT_RTW_XY 0x3218
#define POINT_RTP_X 0x3228
#define POINT_RTP_Y 0x3220
#define POINT_RTP_XY 0x3238
#define LINE_RTW_X 0x3248
#define LINE_RTW_Y 0x3250
#define LINE_RTW_XY 0x3258
#define LINE_RTP_X 0x3268
#define LINE_RTP_Y 0x3260
#define LINE_RTP_XY 0x3278
#define TRIANGLE_RTW_X 0x3288
#define TRIANGLE_RTW_Y 0x3290
#define TRIANGLE_RTW_XY 0x3298
#define TRIANGLE_RTP_X 0x32a8
#define TRIANGLE_RTP_Y 0x32a0
#define TRIANGLE_RTP_XY 0x32b8
#define QUAD_RTW_X 0x32c8
#define QUAD_RTW_Y 0x32d0
#define QUAD_RTW_XY 0x32d8
#define QUAD_RTP_X 0x32e8
#define QUAD_RTP_Y 0x32e0
#define QUAD_RTP_XY 0x32f8
#define RECT_RTW_X 0x3308
#define RECT_RTW_Y 0x3310
#define RECT_RTW_XY 0x3318
#define RECT_RTP_X 0x3328
#define RECT_RTP_Y 0x3320
#define RECT_RTP_XY 0x3338
#endif
|