r128fbreg.h revision 1.3 1 /* $NetBSD: r128fbreg.h,v 1.3 2010/09/30 03:14:39 macallan Exp $ */
2
3 /*
4 * Copyright 1999, 2000 ATI Technologies Inc., Markham, Ontario,
5 * Precision Insight, Inc., Cedar Park, Texas, and
6 * VA Linux Systems Inc., Fremont, California.
7 *
8 * All Rights Reserved.
9 *
10 * Permission is hereby granted, free of charge, to any person obtaining
11 * a copy of this software and associated documentation files (the
12 * "Software"), to deal in the Software without restriction, including
13 * without limitation on the rights to use, copy, modify, merge,
14 * publish, distribute, sublicense, and/or sell copies of the Software,
15 * and to permit persons to whom the Software is furnished to do so,
16 * subject to the following conditions:
17 *
18 * The above copyright notice and this permission notice (including the
19 * next paragraph) shall be included in all copies or substantial
20 * portions of the Software.
21 *
22 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
25 * NON-INFRINGEMENT. IN NO EVENT SHALL ATI, PRECISION INSIGHT, VA LINUX
26 * SYSTEMS AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
27 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
28 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
29 * OTHER DEALINGS IN THE SOFTWARE.
30 */
31
32 /*
33 * Authors:
34 * Rickard E. Faith <faith (at) valinux.com>
35 * Kevin E. Martin <martin (at) valinux.com>
36 * Gareth Hughes <gareth (at) valinux.com>
37 *
38 * References:
39 *
40 * RAGE 128 VR/ RAGE 128 GL Register Reference Manual (Technical
41 * Reference Manual P/N RRG-G04100-C Rev. 0.04), ATI Technologies: April
42 * 1999.
43 *
44 * RAGE 128 Software Development Manual (Technical Reference Manual P/N
45 * SDK-G04000 Rev. 0.01), ATI Technologies: June 1999.
46 *
47 */
48
49 /*
50 * register definitions for ATI Rage 128 graphics controllers
51 * mostly from XFree86's ati driver
52 */
53
54
55 #ifndef R128FB_REG_H
56 #define R128FB_REG_H
57
58 /* RAMDAC */
59 #define R128_PALETTE_DATA 0x00b4
60 #define R128_PALETTE_INDEX 0x00b0
61
62 /* flat panel registers */
63 #define R128_FP_PANEL_CNTL 0x0288
64 #define FPCNT_DIGON 0x00000001 /* FP dig. voltage */
65 #define FPCNT_BACKLIGHT_ON 0x00000002
66 #define FPCNT_BL_MODULATION_ON 0x00000004
67 #define FPCNT_BL_CLK_SEL 0x00000008 /* 1 - divide by 3 */
68 #define FPCNT_MONID_EN 0x00000010 /* use MONID pins for
69 backlight control */
70 #define FPCNT_FPENABLE_POL 0x00000020 /* 1 - active low */
71 #define FPCNT_LEVEL_MASK 0x0000ff00
72 #define FPCNT_LEVEL_SHIFT 8
73
74 #define R128_LVDS_GEN_CNTL 0x02d0
75 # define R128_LVDS_ON (1 << 0)
76 # define R128_LVDS_DISPLAY_DIS (1 << 1)
77 # define R128_LVDS_EN (1 << 7)
78 # define R128_LVDS_DIGON (1 << 18)
79 # define R128_LVDS_BLON (1 << 19)
80 # define R128_LVDS_SEL_CRTC2 (1 << 23)
81 # define R128_HSYNC_DELAY_SHIFT 28
82 # define R128_HSYNC_DELAY_MASK (0xf << 28)
83 # define R128_LEVEL_MASK 0x0000ff00
84 # define R128_LEVEL_SHIFT 8
85
86 /* drawing engine */
87 #define R128_PC_NGUI_CTLSTAT 0x0184
88 # define R128_PC_FLUSH_GUI (3 << 0)
89 # define R128_PC_RI_GUI (1 << 2)
90 # define R128_PC_FLUSH_ALL 0x00ff
91 # define R128_PC_BUSY (1 << 31)
92
93 #define R128_CRTC_OFFSET 0x0224
94
95 #define R128_DST_OFFSET 0x1404
96 #define R128_DST_PITCH 0x1408
97
98 #define R128_DP_GUI_MASTER_CNTL 0x146c
99 # define R128_GMC_SRC_PITCH_OFFSET_CNTL (1 << 0)
100 # define R128_GMC_DST_PITCH_OFFSET_CNTL (1 << 1)
101 # define R128_GMC_SRC_CLIPPING (1 << 2)
102 # define R128_GMC_DST_CLIPPING (1 << 3)
103 # define R128_GMC_BRUSH_DATATYPE_MASK (0x0f << 4)
104 # define R128_GMC_BRUSH_8X8_MONO_FG_BG (0 << 4)
105 # define R128_GMC_BRUSH_8X8_MONO_FG_LA (1 << 4)
106 # define R128_GMC_BRUSH_1X8_MONO_FG_BG (4 << 4)
107 # define R128_GMC_BRUSH_1X8_MONO_FG_LA (5 << 4)
108 # define R128_GMC_BRUSH_32x1_MONO_FG_BG (6 << 4)
109 # define R128_GMC_BRUSH_32x1_MONO_FG_LA (7 << 4)
110 # define R128_GMC_BRUSH_32x32_MONO_FG_BG (8 << 4)
111 # define R128_GMC_BRUSH_32x32_MONO_FG_LA (9 << 4)
112 # define R128_GMC_BRUSH_8x8_COLOR (10 << 4)
113 # define R128_GMC_BRUSH_1X8_COLOR (12 << 4)
114 # define R128_GMC_BRUSH_SOLID_COLOR (13 << 4)
115 # define R128_GMC_BRUSH_NONE (15 << 4)
116 # define R128_GMC_DST_8BPP_CI (2 << 8)
117 # define R128_GMC_DST_15BPP (3 << 8)
118 # define R128_GMC_DST_16BPP (4 << 8)
119 # define R128_GMC_DST_24BPP (5 << 8)
120 # define R128_GMC_DST_32BPP (6 << 8)
121 # define R128_GMC_DST_8BPP_RGB (7 << 8)
122 # define R128_GMC_DST_Y8 (8 << 8)
123 # define R128_GMC_DST_RGB8 (9 << 8)
124 # define R128_GMC_DST_VYUY (11 << 8)
125 # define R128_GMC_DST_YVYU (12 << 8)
126 # define R128_GMC_DST_AYUV444 (14 << 8)
127 # define R128_GMC_DST_ARGB4444 (15 << 8)
128 # define R128_GMC_DST_DATATYPE_MASK (0x0f << 8)
129 # define R128_GMC_DST_DATATYPE_SHIFT 8
130 # define R128_GMC_SRC_DATATYPE_MASK (3 << 12)
131 # define R128_GMC_SRC_DATATYPE_MONO_FG_BG (0 << 12)
132 # define R128_GMC_SRC_DATATYPE_MONO_FG_LA (1 << 12)
133 # define R128_GMC_SRC_DATATYPE_COLOR (3 << 12)
134 # define R128_GMC_BYTE_PIX_ORDER (1 << 14)
135 # define R128_GMC_BYTE_MSB_TO_LSB (0 << 14)
136 # define R128_GMC_BYTE_LSB_TO_MSB (1 << 14)
137 # define R128_GMC_CONVERSION_TEMP (1 << 15)
138 # define R128_GMC_CONVERSION_TEMP_6500 (0 << 15)
139 # define R128_GMC_CONVERSION_TEMP_9300 (1 << 15)
140 # define R128_GMC_ROP3_MASK (0xff << 16)
141 # define R128_DP_SRC_SOURCE_MASK (7 << 24)
142 # define R128_DP_SRC_SOURCE_MEMORY (2 << 24)
143 # define R128_DP_SRC_SOURCE_HOST_DATA (3 << 24)
144 # define R128_DP_SRC_SOURCE_HOST_ALIGN (4 << 24)
145 # define R128_GMC_3D_FCN_EN (1 << 27)
146 # define R128_GMC_CLR_CMP_CNTL_DIS (1 << 28)
147 # define R128_GMC_AUX_CLIP_DIS (1 << 29)
148 # define R128_GMC_WR_MSK_DIS (1 << 30)
149 # define R128_GMC_LD_BRUSH_Y_X (1 << 31)
150 # define R128_ROP3_ZERO 0x00000000
151 # define R128_ROP3_DSa 0x00880000
152 # define R128_ROP3_SDna 0x00440000
153 # define R128_ROP3_S 0x00cc0000
154 # define R128_ROP3_DSna 0x00220000
155 # define R128_ROP3_D 0x00aa0000
156 # define R128_ROP3_DSx 0x00660000
157 # define R128_ROP3_DSo 0x00ee0000
158 # define R128_ROP3_DSon 0x00110000
159 # define R128_ROP3_DSxn 0x00990000
160 # define R128_ROP3_Dn 0x00550000
161 # define R128_ROP3_SDno 0x00dd0000
162 # define R128_ROP3_Sn 0x00330000
163 # define R128_ROP3_DSno 0x00bb0000
164 # define R128_ROP3_DSan 0x00770000
165 # define R128_ROP3_ONE 0x00ff0000
166 # define R128_ROP3_DPa 0x00a00000
167 # define R128_ROP3_PDna 0x00500000
168 # define R128_ROP3_P 0x00f00000
169 # define R128_ROP3_DPna 0x000a0000
170 # define R128_ROP3_D 0x00aa0000
171 # define R128_ROP3_DPx 0x005a0000
172 # define R128_ROP3_DPo 0x00fa0000
173 # define R128_ROP3_DPon 0x00050000
174 # define R128_ROP3_PDxn 0x00a50000
175 # define R128_ROP3_PDno 0x00f50000
176 # define R128_ROP3_Pn 0x000f0000
177 # define R128_ROP3_DPno 0x00af0000
178 # define R128_ROP3_DPan 0x005f0000
179
180 #define R128_DP_BRUSH_BKGD_CLR 0x1478
181 #define R128_DP_BRUSH_FRGD_CLR 0x147c
182 #define R128_SRC_X_Y 0x1590
183 #define R128_DST_X_Y 0x1594
184 #define R128_DST_WIDTH_HEIGHT 0x1598
185
186 #define R128_SRC_OFFSET 0x15ac
187 #define R128_SRC_PITCH 0x15b0
188
189 #define R128_AUX_SC_CNTL 0x1660
190 # define R128_AUX1_SC_EN (1 << 0)
191 # define R128_AUX1_SC_MODE_OR (0 << 1)
192 # define R128_AUX1_SC_MODE_NAND (1 << 1)
193 # define R128_AUX2_SC_EN (1 << 2)
194 # define R128_AUX2_SC_MODE_OR (0 << 3)
195 # define R128_AUX2_SC_MODE_NAND (1 << 3)
196 # define R128_AUX3_SC_EN (1 << 4)
197 # define R128_AUX3_SC_MODE_OR (0 << 5)
198 # define R128_AUX3_SC_MODE_NAND (1 << 5)
199
200 #define R128_DP_CNTL 0x16c0
201 # define R128_DST_X_LEFT_TO_RIGHT (1 << 0)
202 # define R128_DST_Y_TOP_TO_BOTTOM (1 << 1)
203
204 #define R128_DP_DATATYPE 0x16c4
205 # define R128_HOST_BIG_ENDIAN_EN (1 << 29)
206
207 #define R128_DP_MIX 0x16c8
208 # define R128_MIX_SRC_VRAM (2 << 8)
209 # define R128_MIX_SRC_HOSTDATA (3 << 8)
210 # define R128_MIX_SRC_HOST_BYTEALIGN (4 << 8)
211 # define R128_MIX_SRC_ROP3_MASK (0xff << 16)
212
213 #define R128_DP_WRITE_MASK 0x16cc
214 #define R128_DP_SRC_BKGD_CLR 0x15dc
215 #define R128_DP_SRC_FRGD_CLR 0x15d8
216
217 #define R128_DP_CNTL_XDIR_YDIR_YMAJOR 0x16d0
218 # define R128_DST_Y_MAJOR (1 << 2)
219 # define R128_DST_Y_DIR_TOP_TO_BOTTOM (1 << 15)
220 # define R128_DST_X_DIR_LEFT_TO_RIGHT (1 << 31)
221
222 #define R128_DEFAULT_OFFSET 0x16e0
223 #define R128_DEFAULT_PITCH 0x16e4
224 #define R128_DEFAULT_SC_BOTTOM_RIGHT 0x16e8
225 # define R128_DEFAULT_SC_RIGHT_MAX (0x1fff << 0)
226 # define R128_DEFAULT_SC_BOTTOM_MAX (0x1fff << 16)
227
228 /* scissor registers */
229 #define R128_SC_BOTTOM 0x164c
230 #define R128_SC_BOTTOM_RIGHT 0x16f0
231 #define R128_SC_BOTTOM_RIGHT_C 0x1c8c
232 #define R128_SC_LEFT 0x1640
233 #define R128_SC_RIGHT 0x1644
234 #define R128_SC_TOP 0x1648
235 #define R128_SC_TOP_LEFT 0x16ec
236 #define R128_SC_TOP_LEFT_C 0x1c88
237
238 #define R128_GUI_STAT 0x1740
239 # define R128_GUI_FIFOCNT_MASK 0x0fff
240 # define R128_GUI_ACTIVE (1 << 31)
241
242 #define R128_HOST_DATA0 0x17c0
243 #define R128_HOST_DATA1 0x17c4
244 #define R128_HOST_DATA2 0x17c8
245 #define R128_HOST_DATA3 0x17cc
246 #define R128_HOST_DATA4 0x17d0
247 #define R128_HOST_DATA5 0x17d4
248 #define R128_HOST_DATA6 0x17d8
249 #define R128_HOST_DATA7 0x17dc
250
251 #endif /* R128FB_REG_H */
252