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@valinux.com> 35 * Kevin E. Martin <martin@valinux.com> 36 * Gareth Hughes <gareth@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