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
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
|
/* $NetBSD: zz9kreg.h,v 1.1 2023/05/03 13:49:30 phx Exp $ */
/*
* Copyright (c) 2020 The NetBSD Foundation, Inc.
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
* by Alain Runa. Register names derived from original drivers for AmigaOS.
*
* 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 AUTHOR ``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 AUTHOR 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.
*/
#ifndef ZZ9KREG_H
#define ZZ9KREG_H
/* Expected hardware and firmware versions */
#define ZZ9K_HW_VER (0x0000)
#define ZZ9K_FW_VER (0x010D) /* v1.13 */
#define ZZ9K_FW_VER_MIN (0x010D) /* v1.13 */
/* Zorro IDs */
#define ZZ9K_MANID (0x6D6E)
#define ZZ9K_PRODID_Z2 (0x0003)
#define ZZ9K_PRODID_Z3 (0x0004)
/* Address space */
#define ZZ9K_REG_BASE (0x00000000)
#define ZZ9K_REG_SIZE (0x00002000) /* 8 KB */
#define ZZ9K_FB_BASE (0x00010000)
#define ZZ9K_FB_SIZE (0x02FF0000) /* 48 MB - 64 KB */
#define ZZ9K_RX_BASE (0x00002000)
#define ZZ9K_RX_SIZE (0x00002000) /* 8 KB */
#define ZZ9K_TX_BASE (0x00008000)
#define ZZ9K_TX_SIZE (0x00002000) /* 8 KB */
/* Color mode */
#define ZZ9K_COLOR_8BIT (0)
#define ZZ9K_COLOR_16BIT (1)
#define ZZ9K_COLOR_32BIT (2)
#define ZZ9K_COLOR_15BIT (3)
/* Modes of ZZ9K_MODE */
#define ZZ9K_MODE_1280x720 (0)
#define ZZ9K_MODE_800x600 (1)
#define ZZ9K_MODE_640x480 (2)
#define ZZ9K_MODE_1024x768 (3)
#define ZZ9K_MODE_1280x1024 (4)
#define ZZ9K_MODE_1920x1080 (5)
#define ZZ9K_MODE_720x576p50 (6)
#define ZZ9K_MODE_1920x1080p50 (7)
#define ZZ9K_MODE_720x480 (8)
#define ZZ9K_MODE_640x512 (9)
#define ZZ9K_MODE_1600x1200 (10)
#define ZZ9K_MODE_2560x1440p30 (11)
#define ZZ9K_MODE_720x576p50_NS_PAL (12)
#define ZZ9K_MODE_720x480_NS_PAL (13)
#define ZZ9K_MODE_720x576p50_NS_NTSC (14)
#define ZZ9K_MODE_720x480_NS_NTSC (15)
#define ZZ9K_MODE_640x400 (16)
#define ZZ9K_MODE_1920x800 (17)
/* Some registers expect the modes and scale factors shifted */
#define ZZ9K_MODE_COLOR_8BIT (ZZ9K_COLOR_8BIT << 8)
#define ZZ9K_MODE_COLOR_16BIT (ZZ9K_COLOR_16BIT << 8)
#define ZZ9K_MODE_COLOR_32BIT (ZZ9K_COLOR_32BIT << 8)
#define ZZ9K_MODE_COLOR_15BIT (ZZ9K_COLOR_15BIT << 8)
#define ZZ9K_MODE_SCALE_0 (0 << 12)
#define ZZ9K_MODE_SCALE_1 (1 << 12)
#define ZZ9K_MODE_SCALE_2 (2 << 12)
#define ZZ9K_MODE_SCALE_3 (3 << 12)
/* Feature of ZZ9K_BLITTER_USER1 for ZZ9K_FEATURE */
#define ZZ9K_FEATURE_NONE (0)
#define ZZ9K_FEATURE_SECONDARY_PALETTE (1)
#define ZZ9K_FEATURE_NONSTANDARD_VSYNC (2)
/* Video capture pan */
#define ZZ9K_CAPTURE_PAN_NTSC (0x00E00000)
#define ZZ9K_CAPTURE_PAN_PAL (0x00E00000)
#define ZZ9K_CAPTURE_PAN_VGA (0x00DFF2F8)
/* Modes of ZZ9K_VIDEO_CAPTURE_MODE */
#define ZZ9K_CAPTURE_OFF (0)
#define ZZ9K_CAPTURE_ON (1)
/* Operations of MNTZ_VIDEO_CONTROL_OP */
#define ZZ9K_OP_NOP (0)
#define ZZ9K_OP_PALETTE (3)
#define ZZ9K_OP_VSYNC (5)
#define ZZ9K_PALETTE_SIZE (256)
/* Options of ZZ9K_BLITTER_OP_COPYRECT */
#define ZZ9K_OPT_REGULAR (1)
#define ZZ90_OPT_NOMASK (2)
/* Video Control */
#define ZZ9K_VIDEO_CTRL_DATA_HI (0x1000)
#define ZZ9K_VIDEO_CTRL_DATA_LO (0x1002)
#define ZZ9K_VIDEO_CTRL_OP (0x1004)
#define ZZ9K_VIDEO_CAPTURE_MODE (0x1006)
#define ZZ9K_VIDEO_BLANK_STATUS (0x1600)
/* Bits of ZZ9K_CONFIG */
#define ZZ9K_CONFIG_INT_ETH (1 << 0)
#define ZZ9K_CONFIG_INT_AUDIO (1 << 1)
#define ZZ9K_CONFIG_INT_ACK (1 << 3)
#define ZZ9K_CONFIG_INT_ACK_ETH (1 << 4)
#define ZZ9K_CONFIG_INT_ACK_AUDIO (1 << 5)
/* Bits of ZZ9K_AUDIO_CONFIG */
#define ZZ9K_AUDIO_CONFIG_INT_AUDIO (1 << 0)
/* Parameters of ZZ9K_AUDIO_PARAM */
#define ZZ9K_AP_TX_BUF_OFFS_HI (0)
#define ZZ9K_AP_TX_BUF_OFFS_LO (1)
#define ZZ9K_AP_RX_BUF_OFFS_HI (2)
#define ZZ9K_AP_RX_BUF_OFFS_LO (3)
#define ZZ9K_AP_DSP_PROG_OFFS_HI (4)
#define ZZ9K_AP_DSP_PROG_OFFS_LO (5)
#define ZZ9K_AP_DSP_PARAM_OFFS_HI (6)
#define ZZ9K_AP_DSP_PARAM_OFFS_LO (7)
#define ZZ9K_AP_DSP_UPLOAD (8)
#define ZZ9K_AP_DSP_SET_LOWPASS (9)
#define ZZ9K_AP_DSP_SET_VOLUMES (10)
#define ZZ9K_AP_DSP_SET_PREFACTOR (11)
#define ZZ9K_AP_DSP_SET_EQ_BAND1 (12)
#define ZZ9K_AP_DSP_SET_EQ_BAND2 (13)
#define ZZ9K_AP_DSP_SET_EQ_BAND3 (14)
#define ZZ9K_AP_DSP_SET_EQ_BAND4 (15)
#define ZZ9K_AP_DSP_SET_EQ_BAND5 (16)
#define ZZ9K_AP_DSP_SET_EQ_BAND6 (17)
#define ZZ9K_AP_DSP_SET_EQ_BAND7 (18)
#define ZZ9K_AP_DSP_SET_EQ_BAND8 (29)
#define ZZ9K_AP_DSP_SET_EQ_BAND9 (20)
#define ZZ9K_AP_DSP_SET_EQ_BAND10 (21)
#define ZZ9K_AP_DSP_SET_STEREO_VOLUME (22)
/* Parameters of ZZ9K_DECODER_PARAM */
#define ZZ9K_DP_DECODE_CLEAR (0)
#define ZZ9K_DP_DECODE_INIT (1)
#define ZZ9K_DP_DECODE_RUN (2)
/* REGISTERS */
/* Config and Video */
#define ZZ9K_HW_VERSION 0x00
#define ZZ9K_MODE 0x02
#define ZZ9K_CONFIG 0x04
#define ZZ9K_SPRITE_X 0x06
#define ZZ9K_SPRITE_Y 0x08
#define ZZ9K_PAN_PTR_HI 0x0A
#define ZZ9K_PAN_PTR_LO 0x0C
#define ZZ9K_VIDEOCAP_VMODE 0x0E
/* Blitter */
#define ZZ9K_BLITTER_X1 0x10
#define ZZ9K_BLITTER_Y1 0x12
#define ZZ9K_BLITTER_X2 0x14
#define ZZ9K_BLITTER_Y2 0x16
#define ZZ9K_BLITTER_ROW_PITCH 0x18
#define ZZ9K_BLITTER_X3 0x1A
#define ZZ9K_BLITTER_Y3 0x1C
#define ZZ9K_BLITTER_RGB_HI 0x1E
#define ZZ9K_BLITTER_RGB_LO 0x20
#define ZZ9K_BLITTER_OP_FILLRECT 0x22
#define ZZ9K_BLITTER_OP_COPYRECT 0x24
#define ZZ9K_BLITTER_OP_FILLTEMPLATE 0x26
#define ZZ9K_BLITTER_SRC_HI 0x28
#define ZZ9K_BLITTER_SRC_LO 0x2A
#define ZZ9K_BLITTER_DST_HI 0x2C
#define ZZ9K_BLITTER_DST_LO 0x2E
#define ZZ9K_BLITTER_COLORMODE 0x30
#define ZZ9K_BLITTER_SRC_PITCH 0x32
#define ZZ9K_BLITTER_RGB2_HI 0x34
#define ZZ9K_BLITTER_RGB2_LO 0x36
#define ZZ9K_BLITTER_OP_P2C 0x38
#define ZZ9K_BLITTER_OP_DRAW_LINE 0x3A
#define ZZ9K_BLITTER_OP_P2D 0x3C
#define ZZ9K_BLITTER_OP_INVERTRECT 0x3E
#define ZZ9K_BLITTER_USER1 0x40
#define ZZ9K_BLITTER_USER2 0x42
#define ZZ9K_BLITTER_USER3 0x44
#define ZZ9K_BLITTER_USER4 0x46
/* Sprite cursor */
#define ZZ9K_SPRITE_BITMAP 0x48
#define ZZ9K_SPRITE_COLORS 0x4A
#define ZZ9K_VBLANK_STATUS 0x4C
/* ? */
#define ZZ9K_SCRATCH_COPY 0x50
#define ZZ9K_CVMODE_PARAM 0x52
#define ZZ9K_CVMODE_VAL 0x54
#define ZZ9K_CVMODE_SEL 0x56
#define ZZ9K_CVMODE 0x58
/* Blitter */
#define ZZ9K_BLITTER_OP_DMA 0x5A
#define ZZ9K_BLITTER_OP_ACC 0x5C
#define ZZ9K_BLITTER_SPLIT_POS 0x5E
/* ? */
#define ZZ9K_SET_FEATURE 0x60
/* Audio */
#define ZZ9K_AUDIO_SWAB 0x70
#define ZZ9K_DECODER_FIFO 0x72
#define ZZ9K_AUDIO_SCALE 0x74
#define ZZ9K_AUDIO_PARAM 0x76
#define ZZ9K_AUDIO_VAL 0x78
#define ZZ9K_DECODER_PARAM 0x7A
#define ZZ9K_DECODER_VAL 0x7C
#define ZZ9K_DECODE 0x7E
/* Network */
#define ZZ9K_ETH_TX 0x80
#define ZZ9K_ETH_RX 0x82
#define ZZ9K_ETH_MAC_HI 0x84
#define ZZ9K_ETH_MAC_MD 0x86
#define ZZ9K_ETH_MAC_LO 0x88
/* ARM processing */
#define ZZ9K_ARM_RUN_HI 0x90
#define ZZ9K_ARM_RUN_LO 0x92
#define ZZ9K_ARM_ARGC 0x94
#define ZZ9K_ARM_ARGV0 0x96
#define ZZ9K_ARM_ARGV1 0x98
#define ZZ9K_ARM_ARGV2 0x9A
#define ZZ9K_ARM_ARGV3 0x9C
#define ZZ9K_ARM_ARGV4 0x9E
#define ZZ9K_ARM_ARGV5 0xA0
#define ZZ9K_ARM_ARGV6 0xA2
#define ZZ9K_ARM_ARGV7 0xA4
#define ZZ9K_ARM_EVENT_SERIAL 0xB0
#define ZZ9K_ARM_EVENT_CODE 0xB2
/* Board hardware */
#define ZZ9K_FW_VERSION 0xC0
/* USB */
#define ZZ9K_USB_TX_HI 0xD0
#define ZZ9K_USB_TX_LO 0xD2
#define ZZ9K_USB_RX_HI 0xD4
#define ZZ9K_USB_RX_LO 0xD6
#define ZZ9K_USB_STATUS 0xD8
#define ZZ9K_USB_BUFSEL 0xDA
#define ZZ9K_USB_CAPACITY 0xDC
/* Hardware Status */
#define ZZ9K_TEMPERATURE 0xE0
#define ZZ9K_VOLTAGE_AUX 0xE2
#define ZZ9K_VOLTAGE_CORE 0xE4
/* Misccellaneous */
#define ZZ9K_PRINT_CHR 0xF0
#define ZZ9K_PRINT_HEX 0xF2
#define ZZ9K_AUDIO_CONFIG 0xF4
#define ZZ9K_DEBUG 0xFC
#define ZZ9K_DEBUG_TIMER 0xFE
#endif /* ZZ9KREG_H */
|