1 /*	$NetBSD: ct65550reg.h,v 1.2 2011/03/23 04:02:43 macallan Exp $	*/
2 
3 /*
4  * Copyright 2006 by Michael Lorenz.
5  *
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.
14  *
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.
25  *
26 */
27 
28 #ifndef CHIPSFB_H
29 #define CHIPSFB_H
30 
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
40 
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
47 
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
55 
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
61 
62 #define CT_OFF_BE	0x00800000
63 
64 /* blitter registers */
65 #define CT_BLT_STRIDE	0x00000000
66 	/*
67 	 * upper 16 bit are destination stride in bytes
68 	 * lower 16 bit are source stride in bytes
69 	 */
70 
71 #define CT_BLT_BG	0x04
72 #define CT_BLT_FG	0x08
73 #define CT_BLT_EXPCTL	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_* */
84 
85 #define CT_BLT_CONTROL	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
98 
99 #define ROP_COPY	0xcc
100 #define ROP_NOT_SRC	0x33
101 #define ROP_NOT_DST	0x55
102 #define ROP_PAT		0xf0
103 
104 #define CT_BLT_PATTERN	0x14 /* address in vram */
105 #define CT_BLT_SRCADDR	0x18
106 #define CT_BLT_DSTADDR	0x1c
107 
108 #define CT_BLT_SIZE	0x20	/* width and height */
109 /*
110  * upper 16 bit are destination height
111  * lower 16 bit are destination width in bytes
112  */
113 
114 #define CT_SRC_EXP_BG	0x24
115 #define CT_SRC_EXP_FG	0x28
116 
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
125 
126 #define XR_CONFIGURATION	0x08
127 	#define BUS_PCI		0x01
128 	#define BUS_VL		0x00
129 	#define ENABLE_PCI	0x02
130 
131 #define XR_IO_CONTROL		0x09
132 	#define ENABLE_CRTC_EXT	0x01
133 	#define ENABLE_ATTR_EXT	0x02
134 
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
142 
143 #define XR_BURST_WRITE_MODE	0x0b
144 
145 #define XR_PAGE_SELECT		0x0e
146 
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 */
154 
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
159 
160 #define XR_DRAM_TYPE		0x41
161 	#define DRAM_FASTPAGE	0x00
162 	#define DRAM_EDO	0x01
163 
164 #define XR_DRAM_CONFIG		0x42
165 	#define DRAM_8BIT_COL	0x00
166 	#define DRAM_9BIT_COL	0x01
167 
168 #define XR_DRAM_INTERFACE	0x43
169 #define XR_DRAM_TIMING		0x44
170 
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
180 
181 /*
182  * upper 6 bit define if corresponding bits in DATA are input or output
183  * 1 selects output
184  */
185 #define XR_GPIO_CONTROL		0x62
186 #define XR_GPIO_DATA		0x63
187 
188 #define XR_PIN_TRISTATE_CONTROL	0x67
189 
190 #define XR_CONFIG_PINS_0	0x70
191 #define XR_CONFIG_PINS_1	0x71
192 
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 */
202 
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
210 
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
216 
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
225 
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
234 
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
239 
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
244 
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
249 
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
254 
255 #define XR_MODULE_POWER_DOWN	0xd0
256 #define XR_DOWN_COUNTER		0xd2
257 
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
266 
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
272 
273 /* flat panel control registers, via CT_FP_* */
274 #define FP_FEATURE		0x00
275 	#define PANEL_EXISTS	0x01
276 	#define POPUP_EXISTS	0x04
277 
278 #define FP_CRT_FP_CONTROL	0x01
279 	#define ENABLE_CRT	0x01
280 	#define ENABLE_PANEL	0x02
281 
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
289 
290 #define FP_POWER_SEQ_DELAY	0x04
291 /*
292  * upper 4 bits select power up delay in 3.4ms increments
293  * lower 4 bits select power down delay in 29ms increments
294  */
295 
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
303 
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
309 
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
318 
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
326 
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
335 
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
345 
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
350 
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
359 
360 #define FP_PANEL_FORMAT_1	0x11
361 
362 #define FP_PANEL_FORMAT_2	0x12
363 #define FP_PANEL_FORMAT_3	0x13
364 
365 #define FP_FRC_OPTION_SELECT	0x16
366 #define FP_POLYNOMIAL_FRC_CTL	0x17
367 
368 #define FP_TEXTMODE_CONTROL	0x18
369 #define FP_BLINK_RATE_CONTROL	0x19
370 #define FP_FB_CONTROL		0x1a
371 
372 #define FP_ACDCLK_CONTROL	0x1e
373 #define FP_DIAGNOSTIC		0x1f
374 
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
381 /*
382  * upper 4 bits are upper 4 bits of FP_HSYNC_START
383  * lower 4 bits are upper 4 bits of FP_HSIZE_LSB
384  */
385 
386 #define FP_HORZ_OVERFLOW_2	0x26
387 /*
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
390  */
391 
392 #define FP_HSYNC_WIDTH_DISABLE	0x27
393 /* lower 7 bits are HSYNC width - 1 */
394 	#define DELAY_DISABLE	0x80
395 
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
402 /*
403  * upper 4 bits are upper 4 bits of FP_VSYNC_START
404  * lower 4 bits are upper 4 bits of FP_VSIZE_LSB
405  */
406 
407 #define FP_VERT_OVERFLOW_2	0x36
408 /*
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
411  */
412 
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
417 
418 #define FP_HORZ_COMPENSATION	0x40
419 #define FP_VERT_COMPENSATION	0x41
420 #define FP_VERT_COMPENSATION2	0x48
421 
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
428 
429 
430 
431 #endif
432