Expand PMF_FN_* macros.
[netbsd-mini2440.git] / sys / dev / pci / chipsfbreg.h
blob662958dd2a10bfd30d6d4b9bfa247cd3e7dd9009
1 /* $NetBSD: chipsfbreg.h,v 1.2 2006/09/27 05:19:23 macallan Exp $ */
3 /*
4 * Copyright 2006 by Michael Lorenz.
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
15 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
16 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
17 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
18 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 #ifndef CHIPSFB_H
29 #define CHIPSFB_H
31 /* VGA */
32 #define CRTC_INDEX 0x3d4
33 #define CRTC_DATA 0x3d5
34 #define SEQ_INDEX 0x3c4
35 #define SEQ_DATA 0x3c5
36 #define MISC_W 0x3c2
37 #define GRA_INDEX 0x3ce
38 #define GRA_DATA 0x3cf
39 #define ATT_IW 0x3c0
41 /* palette */
42 #define CT_DACMASK 0x3c6
43 #define CT_DACSTATE 0x3c7 /* read only */
44 #define CT_READINDEX 0x3c7 /* write only */
45 #define CT_WRITEINDEX 0x3c8
46 #define CT_DACDATA 0x3c9
48 /* extended VGA */
49 #define CT_FP_INDEX 0x3d0
50 #define CT_FP_DATA 0x3d1
51 #define CT_MM_INDEX 0x3d2
52 #define CT_MM_DATA 0x3d3
53 #define CT_CONF_INDEX 0x3d6
54 #define CT_CONF_DATA 0x3d7
56 /* offsets in aperture */
57 #define CT_OFF_FB 0x00000000
58 #define CT_OFF_BITBLT 0x00400000
59 #define CT_OFF_DRAW 0x00400040
60 #define CT_OFF_DATA 0x00410000
62 #define CT_OFF_BE 0x00800000
64 /* blitter registers */
65 #define CT_BLT_STRIDE CT_OFF_BITBLT
66 /*
67 * upper 16 bit are destination stride in bytes
68 * lower 16 bit are source stride in bytes
71 #define CT_BLT_BG CT_OFF_BITBLT + 0x04
72 #define CT_BLT_FG CT_OFF_BITBLT + 0x08
73 #define CT_BLT_EXPCTL CT_OFF_BITBLT + 0x0c /* expansion control */
74 #define LEFT_CLIPPING_MSK 0x0000003f
75 #define MONO_RIGHT_CLIPPING_MSK 0x00003f00
76 #define MONO_INITIAL_DISCARD 0x003f0000
77 #define MONO_SRC_ALIGN_MASK 0x07000000
78 #define MONO_SRC_ALIGN_BIT 0x01000000
79 #define MONO_SRC_ALIGN_BYTE 0x02000000
80 #define MONO_SRC_ALIGN_WORD 0x03000000
81 #define MONO_SRC_ALIGN_LONG 0x04000000
82 #define MONO_SRC_ALIGN_LONGLONG 0x05000000
83 #define MONO_SELECT_ALT_FG_BG 0x08000000 /* use CT_SRC_EXP_* */
85 #define CT_BLT_CONTROL CT_OFF_BITBLT + 0x10
86 #define BLT_ROP_MASK 0x000000ff
87 #define BLT_START_RIGHT 0x00000100 /* 0 for start left */
88 #define BLT_START_BOTTOM 0x00000200 /* 0 for start top */
89 #define BLT_SRC_IS_CPU 0x00000400 /* 0 for vram source */
90 #define BLT_SRC_IS_MONO 0x00001000
91 #define BLT_MONO_TRANSPARENCY 0x00002000
92 #define BLT_COLOR_COMPARE_MASK 0x0001c000 /* 0 for no color keying */
93 #define BLT_PAT_TRANSPARENCY 0x00020000 /* pattern is transparent */
94 #define BLT_PAT_IS_MONO 0x00040000
95 #define BLT_PAT_IS_SOLID 0x00080000 /* ignore pattern */
96 #define BLT_PAT_VERT_ALIGN_MASK 0x00700000
97 #define BLT_IS_BUSY 0x80000000
99 #define ROP_COPY 0xcc
100 #define ROP_NOT_SRC 0x33
101 #define ROP_NOT_DST 0x55
102 #define ROP_PAT 0xf0
104 #define CT_BLT_PATTERN CT_OFF_BITBLT + 0x14 /* address in vram */
105 #define CT_BLT_SRCADDR CT_OFF_BITBLT + 0x18
106 #define CT_BLT_DSTADDR CT_OFF_BITBLT + 0x1c
108 #define CT_BLT_SIZE CT_OFF_BITBLT + 0x20 /* width and height */
110 * upper 16 bit are destination height
111 * lower 16 bit are destination width in bytes
114 #define CT_SRC_EXP_BG CT_OFF_BITBLT + 0x24
115 #define CT_SRC_EXP_FG CT_OFF_BITBLT + 0x28
117 /* extension registers ( via CT_CONF */
118 #define XR_VENDOR_LO 0x00
119 #define XR_VENDOR_HI 0x01
120 #define XR_DEVICE_LO 0x02
121 #define XR_DEVICE_HI 0x03
122 #define XR_REVISION 0x04
123 #define XR_LINEAR_BASE_LO 0x05
124 #define XR_LINEAR_BASE_HI 0x06
126 #define XR_CONFIGURATION 0x08
127 #define BUS_PCI 0x01
128 #define BUS_VL 0x00
129 #define ENABLE_PCI 0x02
131 #define XR_IO_CONTROL 0x09
132 #define ENABLE_CRTC_EXT 0x01
133 #define ENABLE_ATTR_EXT 0x02
135 #define XR_ADDR_MAPPING 0x0a
136 #define ENABLE_MAPPING 0x01 /* in VGA window */
137 #define ENABLE_LINEAR 0x02
138 #define ENABLE_PACKED 0x04
139 #define FB_SWAP_NONE 0x00
140 #define FB_SWAP_16 0x10
141 #define FB_SWAP_32 0x20
143 #define XR_BURST_WRITE_MODE 0x0b
145 #define XR_PAGE_SELECT 0x0e
147 #define XR_BITBLT_CONTROL0 0x20
148 #define BLITTER_BUSY 0x01
149 #define BLITTER_RESET 0x02
150 #define BLITTER_8BIT 0x00
151 #define BLITTER_16BIT 0x10
152 #define BLITTER_24BIT 0x20
153 #define BLITTER_32BIT 0x30 /* reserved */
155 #define XR_DRAM_ACCESS_CONTROL 0x40
156 #define ENABLE_64BIT 0x01
157 #define DISABLE_WRAP 0x02 /* otherwise only 256kB */
158 #define EXTENDED_TEXT 0x10
160 #define XR_DRAM_TYPE 0x41
161 #define DRAM_FASTPAGE 0x00
162 #define DRAM_EDO 0x01
164 #define XR_DRAM_CONFIG 0x42
165 #define DRAM_8BIT_COL 0x00
166 #define DRAM_9BIT_COL 0x01
168 #define XR_DRAM_INTERFACE 0x43
169 #define XR_DRAM_TIMING 0x44
171 #define XR_VIDEO_PIN_CONTROL 0x60
172 #define XR_DDC_SYNC_SELECT 0x61
173 #define DDC_HSYNC_DATA 0x01
174 #define DDC_HSYNC_OUT 0x02 /* hsync is controlled by above */
175 #define DDC_VSYNC_DATA 0x04
176 #define DDC_VSYNC_OUT 0x08 /* vsync is controlled by above */
177 #define DDC_HV_POWERDOWN 0x10
178 #define DDC_ENABLE_HSYNC 0x20
179 #define DDC_ENABLE_VSYNC 0x40
182 * upper 6 bit define if corresponding bits in DATA are input or output
183 * 1 selects output
185 #define XR_GPIO_CONTROL 0x62
186 #define XR_GPIO_DATA 0x63
188 #define XR_PIN_TRISTATE_CONTROL 0x67
190 #define XR_CONFIG_PINS_0 0x70
191 #define XR_CONFIG_PINS_1 0x71
193 #define XR_PIXEL_PIPELINE_CTL_0 0x80
194 #define ENABLE_EXTENDED_PALETTE 0x01
195 #define ENABLE_CRT_OVERSCAN 0x02
196 #define ENABLE_PANEL_OVERSCAN 0x04
197 #define ENABLE_EXTENDED_STATUS 0x08
198 #define ENABLE_CURSOR_1 0x10
199 #define ENABLE_PIXEL_AVERAGING 0x20
200 #define SELECT_PIXEL_STREAM 0x40 /* 1 for P1 */
201 #define ENABLE_8BIT_DAC 0x80 /* 6 bit otherwise */
203 #define XR_PIXEL_PIPELINE_CTL_1 0x81
204 #define COLOR_VGA 0x00
205 #define COLOR_8BIT_EXTENDED 0x02
206 #define COLOR_15BIT 0x04
207 #define COLOR_16BIT 0x05
208 #define COLOR_24BIT 0x06
209 #define COLOR_32BIT 0x07
211 #define XR_PIXEL_PIPELINE_CTL_2 0x82
212 #define ENABLE_BLANK_PEDESTAL 0x01
213 #define ENABLE_SYNC_ON_GREEN 0x02
214 #define ENABLE_VIDEO_GAMMA 0x04
215 #define ENABLE_GRAPHICS_GAMMA 0x08
217 #define XR_CURSOR_1_CTL 0xa0
218 #define XR_CURSOR_1_VERT_EXT 0xa1
219 #define XR_CURSOR_1_BASEADDR_LO 0xa2
220 #define XR_CURSOR_1_BASEADDR_HI 0xa3
221 #define XR_CURSOR_1_X_LO 0xa4
222 #define XR_CURSOR_1_X_HI 0xa5
223 #define XR_CURSOR_1_Y_LO 0xa6
224 #define XR_CURSOR_1_Y_HI 0xa7
226 #define XR_CURSOR_2_CTL 0xa8
227 #define XR_CURSOR_2_VERT_EXT 0xa9
228 #define XR_CURSOR_2_BASEADDR_LO 0xaa
229 #define XR_CURSOR_2_BASEADDR_HI 0xab
230 #define XR_CURSOR_2_X_LO 0xac
231 #define XR_CURSOR_2_X_HI 0xad
232 #define XR_CURSOR_2_Y_LO 0xae
233 #define XR_CURSOR_2_Y_HI 0xaf
235 #define XR_VCLOCK_0_M 0xc0
236 #define XR_VCLOCK_0_N 0xc1
237 #define XR_VCLOCK_0_MN_MSBS 0xc2
238 #define XR_VCLOCK_0_DIV_SELECT 0xc3
240 #define XR_VCLOCK_1_M 0xc4
241 #define XR_VCLOCK_1_N 0xc5
242 #define XR_VCLOCK_1_MN_MSBS 0xc6
243 #define XR_VCLOCK_1_DIV_SELECT 0xc7
245 #define XR_VCLOCK_2_M 0xc8
246 #define XR_VCLOCK_2_N 0xc9
247 #define XR_VCLOCK_2_MN_MSBS 0xca
248 #define XR_VCLOCK_2_DIV_SELECT 0xcb
250 #define XR_MEMCLOCK_M 0xcc
251 #define XR_MEMCLOCK_N 0xcd
252 #define XR_MEMCLOCK_DIV_SELECT 0xce
253 #define XR_CLOCK_CONFIG 0xcf
255 #define XR_MODULE_POWER_DOWN 0xd0
256 #define XR_DOWN_COUNTER 0xd2
258 #define XR_SOFTWARE_FLAG_0 0xe0
259 #define XR_SOFTWARE_FLAG_1 0xe1
260 #define XR_SOFTWARE_FLAG_2 0xe2
261 #define XR_SOFTWARE_FLAG_3 0xe3
262 #define XR_SOFTWARE_FLAG_4 0xe4
263 #define XR_SOFTWARE_FLAG_5 0xe5
264 #define XR_SOFTWARE_FLAG_6 0xe6
265 #define XR_SOFTWARE_FLAG_7 0xe7
267 #define XR_TEST_BLOCK_SELECT 0xf8
268 #define XR_TEST_CONTROL_PORT 0xf9
269 #define XR_TEST_DATA_PORT 0xfa
270 #define XR_SCAN_TEST_CONTROL_0 0xfb
271 #define XR_SCAN_TEST_CONTROL_1 0xfc
273 /* flat panel control registers, via CT_FP_* */
274 #define FP_FEATURE 0x00
275 #define PANEL_EXISTS 0x01
276 #define POPUP_EXISTS 0x04
278 #define FP_CRT_FP_CONTROL 0x01
279 #define ENABLE_CRT 0x01
280 #define ENABLE_PANEL 0x02
282 #define FP_MODE_CONTROL 0x02
283 #define FP_DOT_CLOCK_SOURCE 0x03
284 #define FP_CLOCK_0 0x00
285 #define FP_CLOCK_1 0x04
286 #define FP_CLOCK_2 0x08
287 #define USE_VIDEO_CLOCK 0x00
288 #define USE_MEM_CLOCK 0x10
290 #define FP_POWER_SEQ_DELAY 0x04
292 * upper 4 bits select power up delay in 3.4ms increments
293 * lower 4 bits select power down delay in 29ms increments
296 #define FP_POWER_DOWN_CTL_1 0x05
297 /* the lower 3 bits select how many refresh cycles per scanline are preformed */
298 #define PANEL_POWER_OFF 0x08
299 #define HOST_STANDBY 0x10
300 #define PANEL_TRISTATE 0x20
301 #define NO_SEFL_REFRESH 0x40
302 #define PANEL_INACTIVE 0x80
304 /* these bits are effective when the panel is powered down */
305 #define FP_POWER_DOWN_CTL_0 0x06
306 #define FP_VGA_PALETTE_POWERDOWN 0x01
307 #define FP_VGA_PALETTE_ENABLE 0x02
308 #define FP_ENABLE_SYNC 0x04
310 #define FP_PIN_POLARITY 0x08
311 #define FP_DISPLAY_NEGATIVE 0x02
312 #define FP_HSYNC_NEGATIVE 0x04
313 #define FP_VSYNC_NEGATIVE 0x08
314 #define FP_TEXT_VIDEO_INVERT 0x10
315 #define FP_GRAPHICS_INVERT 0x20
316 #define CRT_HSYNC_NEGATIVE 0x40
317 #define CRT_VSYNC_NEGATIVE 0x80
319 #define FP_OUTPUT_DRIVE 0x0a
320 #define VL_THRESHOLD_5V 0x02 /* 3.3v otherwise */
321 #define FP_DRIVE_HIGH 0x04 /* req. with 3.3v */
322 #define BUS_INTERFACE_LOW 0x08 /* req. with 3.3v */
323 #define MEM_DRIVE_HIGHER 0x10
324 #define MEM_C_DRIVE_HIGHER 0x20
325 #define SYNC_DRIVE_HIGHER 0x40
327 #define FP_PIN_CONTROL_1 0x0b
328 #define DISPLAY_ENABLE_ON_69 0x01 /* M signal otherwise */
329 #define DISPLAY_ENABLE_ON_68 0x02 /* FP Hsync otherwise */
330 #define COMPOSITE_SYNC_ON_65 0x04 /* separate otherwise */
331 #define BACKLIGHT_ON_61 0x08 /* on 54 otherwise */
332 #define GPIO_ON_154 0x10
333 #define SIMPLE_COMPOSITE_SYNC 0x20
334 #define MEM_C_TRISTATE 0x80
336 #define FP_PIN_CONTROL_2 0x0c
337 #define ACTI_ON_53 0x00
338 #define COMPOSITE_SYNC_ON_53 0x08
339 #define GPIO_IN_ON_53 0x10
340 #define GPIO_OUT_ON_53 0x18
341 #define ENABKL_ON_54 0x00
342 #define COMPOSITE_SYNC_ON_54 0x40
343 #define GPIO_IN_ON_54 0x80
344 #define GPIO_OUT_ON_54 0xc0
346 #define FP_ACTIVITY_CONTROL 0x0f
347 /* the lower 5 bits select a timeout in 28.1s increments */
348 #define PANEL_OFF_ON_TIMEOUT 0x40 /* backlight off otherwise */
349 #define ENABLE_ACTIVITY_TIMER 0x80
351 #define FP_PANEL_FORMAT_0 0x10
352 #define SINGLE_PANEL_SINGLE_DRIVE 0x00
353 #define DUAL_PANEL_DUAL_DRIVE 0x03
354 #define MONO_NTSC 0x00
355 #define MONO_EQUIV_WEIGHT 0x04
356 #define MONO_GREEN_ONLY 0x08
357 #define COLOUR_PANEL 0x0c
358 #define SHIFT_CLOCK_DIVIDER_MASK 0x70
360 #define FP_PANEL_FORMAT_1 0x11
362 #define FP_PANEL_FORMAT_2 0x12
363 #define FP_PANEL_FORMAT_3 0x13
365 #define FP_FRC_OPTION_SELECT 0x16
366 #define FP_POLYNOMIAL_FRC_CTL 0x17
368 #define FP_TEXTMODE_CONTROL 0x18
369 #define FP_BLINK_RATE_CONTROL 0x19
370 #define FP_FB_CONTROL 0x1a
372 #define FP_ACDCLK_CONTROL 0x1e
373 #define FP_DIAGNOSTIC 0x1f
375 #define FP_HSIZE_LSB 0x20 /* panel size - 1 */
376 #define FP_HSYNC_START 0x21 /* value - 1 */
377 #define FP_HSYNC_END 0x22
378 #define FP_HTOTAL_LSB 0x23 /* value - 5 */
379 #define FP_HSYNC_DELAY_LSB 0x24
380 #define FP_HORZ_OVERFLOW_1 0x25
382 * upper 4 bits are upper 4 bits of FP_HSYNC_START
383 * lower 4 bits are upper 4 bits of FP_HSIZE_LSB
386 #define FP_HORZ_OVERFLOW_2 0x26
388 * upper 4 bits are upper 4 bits of FP_HSYNC_DELAY_LSB
389 * lower 4 bits are upper 4 bits of FP_HTOTAL_LSB
392 #define FP_HSYNC_WIDTH_DISABLE 0x27
393 /* lower 7 bits are HSYNC width - 1 */
394 #define DELAY_DISABLE 0x80
396 #define FP_VSIZE_LSB 0x30 /* panel size - 1 */
397 #define FP_VSYNC_START 0x31 /* value - 1 */
398 #define FP_VSYNC_END 0x32 /* value - 1 */
399 #define FP_VTOTAL_LSB 0x33 /* value - 2 */
400 #define FP_VSYNC_DELAY_LSB 0x34 /* value - 1 */
401 #define FP_VERT_OVERFLOW_1 0x35
403 * upper 4 bits are upper 4 bits of FP_VSYNC_START
404 * lower 4 bits are upper 4 bits of FP_VSIZE_LSB
407 #define FP_VERT_OVERFLOW_2 0x36
409 * upper 4 bits are upper 4 bits of FP_VSYNC_DELAY_LSB
410 * lower 4 bits are upper 4 bits of FP_VTOTAL_LSB
413 #define FP_VSYNC_DISABLE 0x37
414 #define FP_VSYNC_WIDTH_MASK 0x38 /* value - 1 */
415 #define FP_VSYNC_IS_CRT_VSYNC 0x40
416 #define FP_VSYNC_DELAY_DISABLE 0x80
418 #define FP_HORZ_COMPENSATION 0x40
419 #define FP_VERT_COMPENSATION 0x41
420 #define FP_VERT_COMPENSATION2 0x48
422 #define FP_TEXT_VSTRETCH_0_MSB 0x49
423 #define FP_TEXT_VSTRETCH_0_LSB 0x4a
424 #define FP_TEXT_VSTRETCH_1_MSB 0x4b
425 #define FP_TEXT_VSTRETCH_1_LSB 0x4c
426 #define FP_TEXT_LINE_REPL 0x4d
427 #define FP_SEL_VSTRETCH_DISABLE 0x4e
431 #endif