hc
2024-05-09 b9d5c334faa47a75f1f28e72d203fc0334e8471d
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
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
/*
 * Permedia2 framebuffer driver definitions.
 * Copyright (c) 1998-2000 Ilario Nardinocchi (nardinoc@CS.UniBO.IT)
 * --------------------------------------------------------------------------
 * $Id: pm2fb.h,v 1.26 2000/09/19 00:11:53 illo Exp $
 * --------------------------------------------------------------------------
 * This file is subject to the terms and conditions of the GNU General Public
 * License.  See the file COPYING in the main directory of this archive
 * for more details.
 */
 
#ifndef PM2FB_H
#define PM2FB_H
 
#define PM2_REFERENCE_CLOCK    14318            /* in KHz */
#define PM2_MAX_PIXCLOCK    230000            /* in KHz */
#define PM2_REGS_SIZE        0x10000
 
#define PM2TAG(r) (u32 )(((r)-0x8000)>>3)
 
/*****************************************************************************
 * Permedia2 registers used in the framebuffer
 *****************************************************************************/
 
#define PM2R_RESET_STATUS                0x0000
#define PM2R_IN_FIFO_SPACE                0x0018
#define PM2R_OUT_FIFO_WORDS                0x0020
#define PM2R_APERTURE_ONE                0x0050
#define PM2R_APERTURE_TWO                0x0058
#define PM2R_FIFO_DISCON                0x0068
#define PM2R_CHIP_CONFIG                0x0070
 
#define PM2R_REBOOT                    0x1000
#define PM2R_MEM_CONTROL                0x1040
#define PM2R_BOOT_ADDRESS                0x1080
#define PM2R_MEM_CONFIG                    0x10c0
#define PM2R_BYPASS_WRITE_MASK                0x1100
#define PM2R_FRAMEBUFFER_WRITE_MASK            0x1140
 
#define PM2R_OUT_FIFO                    0x2000
 
#define PM2R_SCREEN_BASE                0x3000
#define PM2R_SCREEN_STRIDE                0x3008
#define PM2R_H_TOTAL                    0x3010
#define PM2R_HG_END                    0x3018
#define PM2R_HB_END                    0x3020
#define PM2R_HS_START                    0x3028
#define PM2R_HS_END                    0x3030
#define PM2R_V_TOTAL                    0x3038
#define PM2R_VB_END                    0x3040
#define PM2R_VS_START                    0x3048
#define PM2R_VS_END                    0x3050
#define PM2R_VIDEO_CONTROL                0x3058
#define PM2R_LINE_COUNT                    0x3070
#define PM2R_FIFO_CONTROL                0x3078
 
#define PM2R_RD_PALETTE_WRITE_ADDRESS            0x4000
#define PM2R_RD_PALETTE_DATA                0x4008
#define PM2R_RD_PIXEL_MASK                0x4010
#define PM2R_RD_PALETTE_READ_ADDRESS            0x4018
#define PM2R_RD_CURSOR_COLOR_ADDRESS                0x4020
#define PM2R_RD_CURSOR_COLOR_DATA                0x4028
#define PM2R_RD_INDEXED_DATA                0x4050
#define PM2R_RD_CURSOR_DATA                0x4058
#define PM2R_RD_CURSOR_X_LSB                0x4060
#define PM2R_RD_CURSOR_X_MSB                0x4068
#define PM2R_RD_CURSOR_Y_LSB                0x4070
#define PM2R_RD_CURSOR_Y_MSB                0x4078
 
#define PM2R_START_X_DOM                0x8000
#define PM2R_D_X_DOM                    0x8008
#define PM2R_START_X_SUB                0x8010
#define PM2R_D_X_SUB                    0x8018
#define PM2R_START_Y                    0x8020
#define PM2R_D_Y                    0x8028
#define PM2R_COUNT                    0x8030
#define PM2R_RENDER                    0x8038
#define PM2R_BIT_MASK_PATTERN                0x8068
#define PM2R_RASTERIZER_MODE                0x80a0
#define PM2R_RECTANGLE_ORIGIN                0x80d0
#define PM2R_RECTANGLE_SIZE                0x80d8
#define PM2R_PACKED_DATA_LIMITS                0x8150
#define PM2R_SCISSOR_MODE                0x8180
#define PM2R_SCISSOR_MIN_XY                0x8188
#define PM2R_SCISSOR_MAX_XY                0x8190
#define PM2R_SCREEN_SIZE                0x8198
#define PM2R_AREA_STIPPLE_MODE                0x81a0
#define PM2R_WINDOW_ORIGIN                0x81c8
#define PM2R_TEXTURE_ADDRESS_MODE            0x8380
#define PM2R_TEXTURE_MAP_FORMAT                0x8588
#define PM2R_TEXTURE_DATA_FORMAT            0x8590
#define PM2R_TEXTURE_READ_MODE                0x8670
#define PM2R_TEXEL_LUT_MODE                0x8678
#define PM2R_TEXTURE_COLOR_MODE                0x8680
#define PM2R_FOG_MODE                    0x8690
#define PM2R_TEXEL0                    0x8760
#define PM2R_COLOR_DDA_MODE                0x87e0
#define PM2R_CONSTANT_COLOR                0x87e8
#define PM2R_ALPHA_BLEND_MODE                0x8810
#define PM2R_DITHER_MODE                0x8818
#define PM2R_FB_SOFT_WRITE_MASK                0x8820
#define PM2R_LOGICAL_OP_MODE                0x8828
#define PM2R_LB_READ_MODE                0x8880
#define PM2R_LB_READ_FORMAT                0x8888
#define PM2R_LB_SOURCE_OFFSET                0x8890
#define PM2R_LB_WINDOW_BASE                0x88b8
#define PM2R_LB_WRITE_FORMAT                0x88c8
#define PM2R_STENCIL_MODE                0x8988
#define PM2R_DEPTH_MODE                    0x89a0
#define PM2R_FB_READ_MODE                0x8a80
#define PM2R_FB_SOURCE_OFFSET                0x8a88
#define PM2R_FB_PIXEL_OFFSET                0x8a90
#define PM2R_FB_WINDOW_BASE                0x8ab0
#define PM2R_FB_WRITE_MODE                0x8ab8
#define PM2R_FB_HARD_WRITE_MASK                0x8ac0
#define PM2R_FB_BLOCK_COLOR                0x8ac8
#define PM2R_FB_READ_PIXEL                0x8ad0
#define PM2R_FILTER_MODE                0x8c00
#define PM2R_SYNC                    0x8c40
#define PM2R_YUV_MODE                    0x8f00
#define PM2R_STATISTICS_MODE                0x8c08
#define PM2R_FB_SOURCE_DELTA                0x8d88
#define PM2R_CONFIG                    0x8d90
#define PM2R_DELTA_MODE                    0x9300
 
/* Permedia2v */
#define PM2VR_RD_INDEX_LOW                0x4020
#define PM2VR_RD_INDEX_HIGH                0x4028
#define PM2VR_RD_INDEXED_DATA                0x4030
 
/* Permedia2 RAMDAC indexed registers */
#define PM2I_RD_CURSOR_CONTROL                0x06
#define PM2I_RD_COLOR_MODE                0x18
#define PM2I_RD_MODE_CONTROL                0x19
#define PM2I_RD_MISC_CONTROL                0x1e
#define PM2I_RD_PIXEL_CLOCK_A1                0x20
#define PM2I_RD_PIXEL_CLOCK_A2                0x21
#define PM2I_RD_PIXEL_CLOCK_A3                0x22
#define PM2I_RD_PIXEL_CLOCK_STATUS            0x29
#define PM2I_RD_MEMORY_CLOCK_1                0x30
#define PM2I_RD_MEMORY_CLOCK_2                0x31
#define PM2I_RD_MEMORY_CLOCK_3                0x32
#define PM2I_RD_MEMORY_CLOCK_STATUS            0x33
#define PM2I_RD_COLOR_KEY_CONTROL            0x40
#define PM2I_RD_OVERLAY_KEY                0x41
#define PM2I_RD_RED_KEY                    0x42
#define PM2I_RD_GREEN_KEY                0x43
#define PM2I_RD_BLUE_KEY                0x44
 
/* Permedia2v extensions */
#define PM2VI_RD_MISC_CONTROL                0x000
#define PM2VI_RD_SYNC_CONTROL                0x001
#define PM2VI_RD_DAC_CONTROL                0x002
#define PM2VI_RD_PIXEL_SIZE                0x003
#define PM2VI_RD_COLOR_FORMAT                0x004
#define PM2VI_RD_CURSOR_MODE                0x005
#define PM2VI_RD_CURSOR_X_LOW                0x007
#define PM2VI_RD_CURSOR_X_HIGH                0x008
#define PM2VI_RD_CURSOR_Y_LOW                0x009
#define PM2VI_RD_CURSOR_Y_HIGH                0x00A
#define PM2VI_RD_CURSOR_X_HOT                0x00B
#define PM2VI_RD_CURSOR_Y_HOT                0x00C
#define PM2VI_RD_OVERLAY_KEY                0x00D
#define PM2VI_RD_CLK0_PRESCALE                0x201
#define PM2VI_RD_CLK0_FEEDBACK                0x202
#define PM2VI_RD_CLK0_POSTSCALE                0x203
#define PM2VI_RD_CLK1_PRESCALE                0x204
#define PM2VI_RD_CLK1_FEEDBACK                0x205
#define PM2VI_RD_CLK1_POSTSCALE                0x206
#define PM2VI_RD_MCLK_CONTROL                0x20D
#define PM2VI_RD_MCLK_PRESCALE                0x20E
#define PM2VI_RD_MCLK_FEEDBACK                0x20F
#define PM2VI_RD_MCLK_POSTSCALE                0x210
#define PM2VI_RD_CURSOR_PALETTE                0x303
#define PM2VI_RD_CURSOR_PATTERN                0x400
 
/* Fields and flags */
#define PM2F_RENDER_AREASTIPPLE                (1L<<0)
#define PM2F_RENDER_FASTFILL                (1L<<3)
#define PM2F_RENDER_PRIMITIVE_MASK            (3L<<6)
#define PM2F_RENDER_LINE                0
#define PM2F_RENDER_TRAPEZOID                (1L<<6)
#define PM2F_RENDER_POINT                (2L<<6)
#define PM2F_RENDER_RECTANGLE                (3L<<6)
#define PM2F_RENDER_SYNC_ON_BIT_MASK            (1L<<11)
#define PM2F_RENDER_TEXTURE_ENABLE            (1L<<13)
#define PM2F_SYNCHRONIZATION                (1L<<10)
#define PM2F_PLL_LOCKED                    0x10
#define PM2F_BEING_RESET                (1L<<31)
#define PM2F_DATATYPE_COLOR                0x8000
#define PM2F_VGA_ENABLE                    0x02
#define PM2F_VGA_FIXED                    0x04
#define PM2F_FB_WRITE_ENABLE                0x01
#define PM2F_FB_READ_SOURCE_ENABLE            0x0200
#define PM2F_RD_PALETTE_WIDTH_8                0x02
#define PM2F_PART_PROD_MASK                0x01ff
#define PM2F_SCREEN_SCISSOR_ENABLE            0x02
#define PM2F_DATA_64_ENABLE                0x00010000
#define PM2F_BLANK_LOW                    0x02
#define PM2F_HSYNC_MASK                    0x18
#define PM2F_VSYNC_MASK                    0x60
#define PM2F_HSYNC_ACT_HIGH                0x08
#define PM2F_HSYNC_FORCED_LOW                0x10
#define PM2F_HSYNC_ACT_LOW                0x18
#define PM2F_VSYNC_ACT_HIGH                0x20
#define PM2F_VSYNC_FORCED_LOW                0x40
#define PM2F_VSYNC_ACT_LOW                0x60
#define PM2F_LINE_DOUBLE                0x04
#define PM2F_VIDEO_ENABLE                0x01
#define PM2F_RD_PIXELFORMAT_SVGA            0x01
#define PM2F_RD_PIXELFORMAT_RGB232OFFSET        0x02
#define PM2F_RD_PIXELFORMAT_RGBA2321            0x03
#define PM2F_RD_PIXELFORMAT_RGBA5551            0x04
#define PM2F_RD_PIXELFORMAT_RGBA4444            0x05
#define PM2F_RD_PIXELFORMAT_RGB565            0x06
#define PM2F_RD_PIXELFORMAT_RGBA8888            0x08
#define PM2F_RD_PIXELFORMAT_RGB888            0x09
#define PM2F_RD_GUI_ACTIVE                0x10
#define PM2F_RD_COLOR_MODE_RGB                0x20
#define PM2F_DELTA_ORDER_RGB                (1L<<18)
#define PM2F_RD_TRUECOLOR                0x80
#define PM2F_NO_ALPHA_BUFFER                0x10
#define PM2F_TEXTEL_SIZE_16                0x00080000
#define PM2F_TEXTEL_SIZE_32                0x00100000
#define PM2F_TEXTEL_SIZE_4                0x00180000
#define PM2F_TEXTEL_SIZE_24                0x00200000
#define PM2F_INCREASE_X                    (1L<<21)
#define PM2F_INCREASE_Y                    (1L<<22)
#define PM2F_CONFIG_FB_WRITE_ENABLE            (1L<<3)
#define PM2F_CONFIG_FB_PACKED_DATA            (1L<<2)
#define PM2F_CONFIG_FB_READ_DEST_ENABLE            (1L<<1)
#define PM2F_CONFIG_FB_READ_SOURCE_ENABLE        (1L<<0)
#define PM2F_COLOR_KEY_TEST_OFF                (1L<<4)
#define PM2F_MEM_CONFIG_RAM_MASK            (3L<<29)
#define PM2F_MEM_BANKS_1                0L
#define PM2F_MEM_BANKS_2                (1L<<29)
#define PM2F_MEM_BANKS_3                (2L<<29)
#define PM2F_MEM_BANKS_4                (3L<<29)
#define PM2F_APERTURE_STANDARD                0
#define PM2F_APERTURE_BYTESWAP                1
#define PM2F_APERTURE_HALFWORDSWAP            2
#define PM2F_CURSORMODE_CURSOR_ENABLE            (1 << 0)
#define PM2F_CURSORMODE_TYPE_X                (1 << 4)
 
typedef enum {
   PM2_TYPE_PERMEDIA2,
   PM2_TYPE_PERMEDIA2V
} pm2type_t;
 
#endif /* PM2FB_H */
 
/*****************************************************************************
 * That's all folks!
 *****************************************************************************/