1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
|
/* $NetBSD: ibm561reg.h,v 1.6 2012/10/20 13:29:53 macallan Exp $ */
/*-
* Copyright (c) 2001 The NetBSD Foundation, Inc.
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
* by Roland C. Dowdeswell of Ponte, Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#define IBM561_ADDR_LOW 0x00
#define IBM561_ADDR_HIGH 0x01
#define IBM561_CMD 0x02
#define IBM561_CMD_FB_WAT 0x03
#define IBM561_CMD_CMAP 0x03
#define IBM561_CMD_GAMMA 0x03
#define IBM561_CONFIG_REG1 0x0001
#define CR1_MODEMASK 0xe0
#define CR1_MODE_5_1_BASIC 0x00
#define CR1_MODE_4_1_BASIC 0x20
#define CR1_MODE_4_1_EXTENDED 0x40
#define CR1_MODE_4_1_SUPER_EXT 0x60
#define CR1_MODE_5_1_30BPP 0x80
#define CR1_MODE_8_1_MODE_B 0xa0
#define CR1_MODE_4_1_30BPP 0xc0
#define CR1_MODE_8_1_MODE_A 0xe0
#define CR1_OVL_MASK 0x18
#define CR1_OVL_NONE 0x00
#define CR1_OVL_8BPP 0x08
#define CR1_OVL_16BPP 0x10
#define CR1_OVL_VARIABLE 0x18
#define CR1_WID_BITS_MASK 0x07
#define CR1_WID_0 0x00
#define CR1_WID_2 0x01
#define CR1_WID_4 0x02
#define CR1_WID_6 0x03
#define CR1_WID_8 0x04
#define IBM561_CONFIG_REG2 0x0002
#define CR2_ENABLE_VRAM_MASKING 0x20
#define CR2_ENABLE_PLL 0x10
#define CR2_ENABLE_CLC 0x08 /* sane handling of cursor
* coordinate updates, without
* this updates occur
* immediately instead of
* waiting for the 2nd byte */
#define CR2_PLL_REF_SELECT 0x04 /* 0 - REFCLK, 1 - EXTCLK */
#define CR2_PIXEL_CLOCK_SELECT 0x02 /* 0 - PLL, 1 - EXTCLK */
#define CR2_ENABLE_RGB_OUTPUT 0x01
#define IBM561_CONFIG_REG3 0x0003
#define CR3_ENABLE_INTERLACE 0x80
#define CR3_SERIAL_CLK_CTRL 0x40 /* 1 - enable output */
#define CR3_FIELD_POLARITY 0x20 /* 0 - EVEN first */
#define CR3_ENABLE_MISR 0x10 /* diagnostic mode */
#define CR3_CURSOR_UPDATE_ASYNC 0x08 /* don't wait for VBLANK */
#define CR3_ENABLE_VIDEO 0x04 /* AUX video output */
#define CR3_RGB 0x01 /* 1 - RGB, 0 - BGR */
#define IBM561_CONFIG_REG4 0x0004
#define CR4_FB_SPLIT_WID_MASK 0x78 /* number of FB WID bits */
#define CR4_ENABLE_SPLIT_WID 0x04
#define CR4_SELECT_OL_WID 0x02 /* 1 - use upper 4 bit for OL */
#define CR4_SELECT_FB_WID 0x01 /* 1 - use upper 4 bit for FB */
#define IBM561_SYNC_CNTL 0x0020
#define SYNC_HSYNC_ENABLE 0x20
#define SYNC_HSYNC_POLARITY 0x08 /* 1 - active high */
#define SYNC_SYNC_ON_GREEN 0x02
#define SYNC_ENABLE_PEDESTAL 0x01
#define IBM561_PLL_VCO_DIV 0x0021
#define IBM561_PLL_REF_REG 0x0022
#define IBM561_CURS_CNTL_REG 0x0030
#define CURS_COLOR_3_TRANS 0x80 /* 0 - color 3, 1 - trans */
#define CURS_SEPARATE 0x40 /* move crosshair separately */
#define CURS_OVERLAP_MASK 0x30
#define CURS_OVERLAP_XOR 0x00 /* XOR cursor and xhair */
#define CURS_OVERLAP_OR 0x10
#define CURS_OVERLAP_CURSOR 0x20 /* cursor has priority */
#define CURS_OVERLAP_XHAIR 0x30 /* crosshair has priority */
#define CURS_XHAIR_BLINK 0x08 /* enable xhair blinking */
#define CURS_XHAIR_ENABLE 0x04
#define CURS_BLINK 0x02 /* blink cursor */
#define CURS_ENABLE 0x01 /* enable cursor */
#define IBM561_XHAIR_CONTROL_REG 0x0031
#define XHAIR_PRIORITY 0x80 /* FILL or OUTLINE colour */
#define XHAIR_WIDTH_MASK 0x60
#define XHAIR_WIDTH_1 0x00
#define XHAIR_WIDTH_3 0x20
#define XHAIR_WIDTH_5 0x40
#define XHAIR_WIDTH_7 0x60
#define XHAIR_CLIP_MASK 0x18
#define XHAIR_CLIP_NONE 0x00
#define XHAIR_CLIP_SCISSORS 0x08 /* use scissors registers */
#define XHAIR_CLIP_WINDOW 0x10 /* use window registers */
#define XHAIR_CLIP_BOTH 0x18 /* window/scissor intersect */
#define XHAIR_COLOR_MASK 0x06 /* 0 is transparent */
#define XHAIR_EXT_PATTERN 0x01 /* enables colours, patterns */
#define IBM561_CURSOR_BLINK_RATE 0x0032
#define IBM561_CURSOR_BLINK_DUTY 0x0033
#define IBM561_HOTSPOT_REG 0x0034
#define IBM561_HOTSPOT_X_REG 0x0034
#define IBM561_HOTSPOT_Y_REG 0x0035
/* two registers each, low 8 bit first */
#define IBM561_CURSOR_X_REG 0x0036
#define IBM561_CURSOR_Y_REG 0x0038
#define IBM561_XHAIR_SCISSORS 0x0040
/*
* four 16bit registers, low first
* X start, Y start, X end, Y end
*/
#define IBM561_XHAIR_LOCATION 0x0048
/* 2x 16bit, X first, lsb first */
#define IBM561_XHAIR_PATTERN_CONTROL 0x004c
#define IBM561_XHAIR_PATTERN_HORZ 0x004d
#define IBM561_XHAIR_PATTERN_VERT 0x004e
#define IBM561_VRAM_MASK_REG 0x0050
#define IBM561_DAC_CONTROL 0x005f
#define DAC_DISABLE_OUTPUT 0x08
#define DAC_10BIT_ENABLE 0x04 /* 0 forces bit 0 to 0 */
#define DAC_SHUNT_ENABLE 0x02
#define DAC_SLEW_ENABLE 0x01 /* 0 - 2.5ns, 1 - 7.5ns */
#define IBM561_CURSOR_LUT 0x0a10
/*
* four blocks of 4, transparent, 1, 2, 3 each
* cursor primary, cursor blink, xhair primary, xhair blink
*/
#define IBM561_CURSOR_BITMAP 0x2000
/* 64x64, 2bit packed, msb first */
#define IBM561_DIV_DOTCLCK 0x0082
#define IBM561_FB_WINTYPE 0x1000
#define FB_CLUT_SELECT_MASK 0x03c0 /* selects which 64 entry block
* in the CLUT to start with */
#define FB_PIXEL_FORM_MASK 0x0030
#define FB_PIXEL_8BIT 0x0000
#define FB_PIXEL_12BIT 0x0010
#define FB_PIXEL_16BIT 0x0020
#define FB_PIXEL_24BIT 0x0030
#define FB_BUFFER_SELECT 0x0008 /* 1 - buffer B */
#define FB_MODE_MASK 0x0006
#define FB_MODE_INDEXED 0x0000
#define FB_MODE_GREYSCALE 0x0002
#define FB_MODE_DIRECT 0x0004
#define FB_MODE_TRUECOLOR 0x0006 /* doesn't work right for me */
#define FB_MODE_TRANSP_ENABLE 0x0001
#define IBM561_AUXFB_WINTYPE 0x0e00
#define AUXFB_BYPASS_GAMMA 0x04
#define AUXFB_XHAIR_ENABLE 0x02
#define AUXFB_TRANSPARENT 0x01 /* 0 - 0x00, 1 - 0xff */
#define IBM561_OL_WINTYPE 0x1400
#define OL_CLUT_SELECT_MASK 0x03c0 /* selects which 64 entry block
* in the CLUT to start with */
#define OL_PIXEL_FORM_MASK 0x0030
#define OL_PIXEL_8BIT 0x0000
#define OL_PIXEL_6_2BIT 0x0010 /* 6 overlay, 2 underlay */
#define OL_PIXEL_4_4BIT 0x0020
#define OL_PIXEL_4_DBL 0x0030
#define OL_BUFFER_SELECT 0x0008 /* 1 - buffer B */
#define OL_MODE_MASK 0x0006
#define OL_MODE_INDEXED 0x0000
#define OL_MODE_GREYSCALE 0x0002
#define OL_MODE_INDIRECT 0x0004
#define OL_MODE_DIRECT 0x0006
#define OL_MODE_TRANSP_ENABLE 0x0001
#define IBM561_AUXOL_WINTYPE 0x0f00
#define AUXOL_TRANSP_MASK 0x21
#define AUXOL_TRANSP_00 0x00
#define AUXOL_TRANSP_FF 0x01
#define AUXOL_TRANSP_CHROMA0 0x20
#define AUXOL_TRANSP_CHROMA1 0x21
#define AUXOL_UNDERLAY_ENABLE 0x10
#define AUXOL_OVERLAY_ENABLE 0x08
#define AUXOL_BYPASS_GAMMA 0x04
#define AUXOL_XHAIR_ENABLE 0x02
#define IBM561_CMAP_TABLE 0x4000
#define IBM561_RED_GAMMA_TABLE 0x3000
#define IBM561_GREEN_GAMMA_TABLE 0x3400
#define IBM561_BLUE_GAMMA_TABLE 0x3800
#define IBM561_CHROMAKEY0 0x0010
#define IBM561_CHROMAKEY1 0x0011
#define IBM561_CHROMAKEYMASK0 0x0012
#define IBM561_CHROMAKEYMASK1 0x0013
#define IBM561_WAT_SEG_REG 0x0006
#define IBM561_NCMAP_ENTRIES 1024
#define IBM561_NGAMMA_ENTRIES 256
/* we actually have 1024 of them, but I am just
* going define a few, so this is good.
*/
#define IBM561_NWTYPES 16
|