intelfb -- uses stride alignment of 64 on the 9xx chipsets.
[safe/jmp/linux-2.6] / drivers / video / retz3fb.h
1 /*
2  * linux/drivers/video/retz3fb.h -- Defines and macros for the RetinaZ3 frame
3  *                                  buffer device
4  *
5  *    Copyright (C) 1997 Jes Sorensen
6  *
7  * History:
8  *   - 22 Jan 97: Initial work
9  *
10  *
11  * This file is subject to the terms and conditions of the GNU General Public
12  * License.  See the file COPYING in the main directory of this archive
13  * for more details.
14  */
15
16 /*
17  * Macros to read and write to registers.
18  */
19 #define reg_w(regs, reg,dat) (*(regs + reg) = dat)
20 #define reg_r(regs, reg) (*(regs + reg))
21
22 /*
23  * Macro to access the sequencer.
24  */
25 #define seq_w(regs, sreg, sdat) \
26         do{ reg_w(regs, SEQ_IDX, sreg); reg_w(regs, SEQ_DATA, sdat); } while(0)
27
28 /*
29  * Macro to access the CRT controller.
30  */
31 #define crt_w(regs, creg, cdat) \
32         do{ reg_w(regs, CRT_IDX, creg); reg_w(regs, CRT_DATA, cdat); } while(0)
33
34 /*
35  * Macro to access the graphics controller.
36  */
37 #define gfx_w(regs, greg, gdat) \
38         do{ reg_w(regs, GFX_IDX, greg); reg_w(regs, GFX_DATA, gdat); } while(0)
39
40 /*
41  * Macro to access the attribute controller.
42  */
43 #define attr_w(regs, areg, adat) \
44         do{ reg_w(regs, ACT_IDX, areg); reg_w(regs, ACT_DATA, adat); } while(0)
45
46 /*
47  * Macro to access the pll.
48  */
49 #define pll_w(regs, preg, pdat) \
50         do{ reg_w(regs, PLL_IDX, preg); \
51             reg_w(regs, PLL_DATA, (pdat & 0xff)); \
52             reg_w(regs, PLL_DATA, (pdat >> 8));\
53         } while(0)
54
55 /*
56  * Offsets
57  */
58 #define VIDEO_MEM_OFFSET        0x00c00000
59 #define ACM_OFFSET              0x00b00000
60
61 /*
62  * Accelerator Control Menu
63  */
64 #define ACM_PRIMARY_OFFSET      0x00
65 #define ACM_SECONDARY_OFFSET    0x04
66 #define ACM_MODE_CONTROL        0x08
67 #define ACM_CURSOR_POSITION     0x0c
68 #define ACM_START_STATUS        0x30
69 #define ACM_CONTROL             0x34
70 #define ACM_RASTEROP_ROTATION   0x38
71 #define ACM_BITMAP_DIMENSION    0x3c
72 #define ACM_DESTINATION         0x40
73 #define ACM_SOURCE              0x44
74 #define ACM_PATTERN             0x48
75 #define ACM_FOREGROUND          0x4c
76 #define ACM_BACKGROUND          0x50
77
78 /*
79  * Video DAC addresses
80  */
81 #define VDAC_ADDRESS            0x03c8
82 #define VDAC_ADDRESS_W          0x03c8
83 #define VDAC_ADDRESS_R          0x03c7
84 #define VDAC_STATE              0x03c7
85 #define VDAC_DATA               0x03c9
86 #define VDAC_MASK               0x03c6
87
88 /*
89  * Sequencer
90  */
91 #define SEQ_IDX                 0x03c4  /* Sequencer Index */
92 #define SEQ_DATA                0x03c5
93 #define SEQ_RESET               0x00
94 #define SEQ_CLOCKING_MODE       0x01
95 #define SEQ_MAP_MASK            0x02
96 #define SEQ_CHAR_MAP_SELECT     0x03
97 #define SEQ_MEMORY_MODE         0x04
98 #define SEQ_EXTENDED_ENABLE     0x05    /* NCR extensions */
99 #define SEQ_UNKNOWN1            0x06
100 #define SEQ_UNKNOWN2            0x07
101 #define SEQ_CHIP_ID             0x08
102 #define SEQ_UNKNOWN3            0x09
103 #define SEQ_CURSOR_COLOR1       0x0a
104 #define SEQ_CURSOR_COLOR0       0x0b
105 #define SEQ_CURSOR_CONTROL      0x0c
106 #define SEQ_CURSOR_X_LOC_HI     0x0d
107 #define SEQ_CURSOR_X_LOC_LO     0x0e
108 #define SEQ_CURSOR_Y_LOC_HI     0x0f
109 #define SEQ_CURSOR_Y_LOC_LO     0x10
110 #define SEQ_CURSOR_X_INDEX      0x11
111 #define SEQ_CURSOR_Y_INDEX      0x12
112 #define SEQ_CURSOR_STORE_HI     0x13
113 #define SEQ_CURSOR_STORE_LO     0x14
114 #define SEQ_CURSOR_ST_OFF_HI    0x15
115 #define SEQ_CURSOR_ST_OFF_LO    0x16
116 #define SEQ_CURSOR_PIXELMASK    0x17
117 #define SEQ_PRIM_HOST_OFF_HI    0x18
118 #define SEQ_PRIM_HOST_OFF_LO    0x19
119 #define SEQ_LINEAR_0            0x1a
120 #define SEQ_LINEAR_1            0x1b
121 #define SEQ_SEC_HOST_OFF_HI     0x1c
122 #define SEQ_SEC_HOST_OFF_LO     0x1d
123 #define SEQ_EXTENDED_MEM_ENA    0x1e
124 #define SEQ_EXT_CLOCK_MODE      0x1f
125 #define SEQ_EXT_VIDEO_ADDR      0x20
126 #define SEQ_EXT_PIXEL_CNTL      0x21
127 #define SEQ_BUS_WIDTH_FEEDB     0x22
128 #define SEQ_PERF_SELECT         0x23
129 #define SEQ_COLOR_EXP_WFG       0x24
130 #define SEQ_COLOR_EXP_WBG       0x25
131 #define SEQ_EXT_RW_CONTROL      0x26
132 #define SEQ_MISC_FEATURE_SEL    0x27
133 #define SEQ_COLOR_KEY_CNTL      0x28
134 #define SEQ_COLOR_KEY_MATCH0    0x29
135 #define SEQ_COLOR_KEY_MATCH1    0x2a
136 #define SEQ_COLOR_KEY_MATCH2    0x2b
137 #define SEQ_UNKNOWN6            0x2c
138 #define SEQ_CRC_CONTROL         0x2d
139 #define SEQ_CRC_DATA_LOW        0x2e
140 #define SEQ_CRC_DATA_HIGH       0x2f
141 #define SEQ_MEMORY_MAP_CNTL     0x30
142 #define SEQ_ACM_APERTURE_1      0x31
143 #define SEQ_ACM_APERTURE_2      0x32
144 #define SEQ_ACM_APERTURE_3      0x33
145 #define SEQ_BIOS_UTILITY_0      0x3e
146 #define SEQ_BIOS_UTILITY_1      0x3f
147
148 /*
149  * Graphics Controller
150  */
151 #define GFX_IDX                 0x03ce
152 #define GFX_DATA                0x03cf
153 #define GFX_SET_RESET           0x00
154 #define GFX_ENABLE_SET_RESET    0x01
155 #define GFX_COLOR_COMPARE       0x02
156 #define GFX_DATA_ROTATE         0x03
157 #define GFX_READ_MAP_SELECT     0x04
158 #define GFX_GRAPHICS_MODE       0x05
159 #define GFX_MISC                0x06
160 #define GFX_COLOR_XCARE         0x07
161 #define GFX_BITMASK             0x08
162
163 /*
164  * CRT Controller
165  */
166 #define CRT_IDX                 0x03d4
167 #define CRT_DATA                0x03d5
168 #define CRT_HOR_TOTAL           0x00
169 #define CRT_HOR_DISP_ENA_END    0x01
170 #define CRT_START_HOR_BLANK     0x02
171 #define CRT_END_HOR_BLANK       0x03
172 #define CRT_START_HOR_RETR      0x04
173 #define CRT_END_HOR_RETR        0x05
174 #define CRT_VER_TOTAL           0x06
175 #define CRT_OVERFLOW            0x07
176 #define CRT_PRESET_ROW_SCAN     0x08
177 #define CRT_MAX_SCAN_LINE       0x09
178 #define CRT_CURSOR_START        0x0a
179 #define CRT_CURSOR_END          0x0b
180 #define CRT_START_ADDR_HIGH     0x0c
181 #define CRT_START_ADDR_LOW      0x0d
182 #define CRT_CURSOR_LOC_HIGH     0x0e
183 #define CRT_CURSOR_LOC_LOW      0x0f
184 #define CRT_START_VER_RETR      0x10
185 #define CRT_END_VER_RETR        0x11
186 #define CRT_VER_DISP_ENA_END    0x12
187 #define CRT_OFFSET              0x13
188 #define CRT_UNDERLINE_LOC       0x14
189 #define CRT_START_VER_BLANK     0x15
190 #define CRT_END_VER_BLANK       0x16
191 #define CRT_MODE_CONTROL        0x17
192 #define CRT_LINE_COMPARE        0x18
193 #define CRT_UNKNOWN1            0x19
194 #define CRT_UNKNOWN2            0x1a
195 #define CRT_UNKNOWN3            0x1b
196 #define CRT_UNKNOWN4            0x1c
197 #define CRT_UNKNOWN5            0x1d
198 #define CRT_UNKNOWN6            0x1e
199 #define CRT_UNKNOWN7            0x1f
200 #define CRT_UNKNOWN8            0x20
201 #define CRT_UNKNOWN9            0x21
202 #define CRT_UNKNOWN10           0x22
203 #define CRT_UNKNOWN11           0x23
204 #define CRT_UNKNOWN12           0x24
205 #define CRT_UNKNOWN13           0x25
206 #define CRT_UNKNOWN14           0x26
207 #define CRT_UNKNOWN15           0x27
208 #define CRT_UNKNOWN16           0x28
209 #define CRT_UNKNOWN17           0x29
210 #define CRT_UNKNOWN18           0x2a
211 #define CRT_UNKNOWN19           0x2b
212 #define CRT_UNKNOWN20           0x2c
213 #define CRT_UNKNOWN21           0x2d
214 #define CRT_UNKNOWN22           0x2e
215 #define CRT_UNKNOWN23           0x2f
216 #define CRT_EXT_HOR_TIMING1     0x30    /* NCR crt extensions */
217 #define CRT_EXT_START_ADDR      0x31
218 #define CRT_EXT_HOR_TIMING2     0x32
219 #define CRT_EXT_VER_TIMING      0x33
220 #define CRT_MONITOR_POWER       0x34
221
222 /*
223  * General Registers
224  */
225 #define GREG_STATUS0_R          0x03c2
226 #define GREG_STATUS1_R          0x03da
227 #define GREG_MISC_OUTPUT_R      0x03cc
228 #define GREG_MISC_OUTPUT_W      0x03c2  
229 #define GREG_FEATURE_CONTROL_R  0x03ca
230 #define GREG_FEATURE_CONTROL_W  0x03da
231 #define GREG_POS                0x0102
232
233 /*
234  * Attribute Controller
235  */
236 #define ACT_IDX                 0x03C0
237 #define ACT_ADDRESS_R           0x03C0
238 #define ACT_DATA                0x03C0
239 #define ACT_ADDRESS_RESET       0x03DA
240 #define ACT_PALETTE0            0x00
241 #define ACT_PALETTE1            0x01
242 #define ACT_PALETTE2            0x02
243 #define ACT_PALETTE3            0x03
244 #define ACT_PALETTE4            0x04
245 #define ACT_PALETTE5            0x05
246 #define ACT_PALETTE6            0x06
247 #define ACT_PALETTE7            0x07
248 #define ACT_PALETTE8            0x08
249 #define ACT_PALETTE9            0x09
250 #define ACT_PALETTE10           0x0A
251 #define ACT_PALETTE11           0x0B
252 #define ACT_PALETTE12           0x0C
253 #define ACT_PALETTE13           0x0D
254 #define ACT_PALETTE14           0x0E
255 #define ACT_PALETTE15           0x0F
256 #define ACT_ATTR_MODE_CNTL      0x10
257 #define ACT_OVERSCAN_COLOR      0x11
258 #define ACT_COLOR_PLANE_ENA     0x12
259 #define ACT_HOR_PEL_PANNING     0x13
260 #define ACT_COLOR_SELECT        0x14
261
262 /*
263  * PLL
264  */
265 #define PLL_IDX                 0x83c8
266 #define PLL_DATA                0x83c9
267
268 /*
269  * Blitter operations
270  */
271 #define Z3BLTclear              0x00    /* 0 */
272 #define Z3BLTand                0x80    /* src AND dst */
273 #define Z3BLTandReverse         0x40    /* src AND NOT dst */
274 #define Z3BLTcopy               0xc0    /* src */
275 #define Z3BLTandInverted        0x20    /* NOT src AND dst */
276 #define Z3BLTnoop               0xa0    /* dst */
277 #define Z3BLTxor                0x60    /* src XOR dst */
278 #define Z3BLTor                 0xe0    /* src OR dst */
279 #define Z3BLTnor                0x10    /* NOT src AND NOT dst */
280 #define Z3BLTequiv              0x90    /* NOT src XOR dst */
281 #define Z3BLTinvert             0x50    /* NOT dst */
282 #define Z3BLTorReverse          0xd0    /* src OR NOT dst */
283 #define Z3BLTcopyInverted       0x30    /* NOT src */
284 #define Z3BLTorInverted         0xb0    /* NOT src OR dst */
285 #define Z3BLTnand               0x70    /* NOT src OR NOT dst */
286 #define Z3BLTset                0xf0    /* 1 */