1 /*        $NetBSD: zz9kreg.h,v 1.1 2023/05/03 13:49:30 phx Exp $ */
2 
3 /*
4  * Copyright (c) 2020 The NetBSD Foundation, Inc.
5  * All rights reserved.
6  *
7  * This code is derived from software contributed to The NetBSD Foundation
8  * by Alain Runa. Register names derived from original drivers for AmigaOS.
9  *
10  * Redistribution and use in source and binary forms, with or without
11  * modification, are permitted provided that the following conditions
12  * are met:
13  * 1. Redistributions of source code must retain the above copyright
14  *        notice, this list of conditions and the following disclaimer.
15  * 2. Redistributions in binary form must reproduce the above copyright
16  *        notice, this list of conditions and the following disclaimer in the
17  *        documentation and/or other materials provided with the distribution.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
20  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
21  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
22  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
23  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
24  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
28  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
30 
31 #ifndef ZZ9KREG_H
32 #define ZZ9KREG_H
33 
34 /* Expected hardware and firmware versions */
35 #define ZZ9K_HW_VER                     (0x0000)
36 #define ZZ9K_FW_VER                     (0x010D)        /* v1.13 */
37 #define ZZ9K_FW_VER_MIN                           (0x010D)        /* v1.13 */
38 
39 /* Zorro IDs */
40 #define ZZ9K_MANID                      (0x6D6E)
41 #define ZZ9K_PRODID_Z2                            (0x0003)
42 #define ZZ9K_PRODID_Z3                            (0x0004)
43 
44 /* Address space */
45 #define ZZ9K_REG_BASE                             (0x00000000)
46 #define ZZ9K_REG_SIZE                             (0x00002000)        /* 8 KB */
47 #define ZZ9K_FB_BASE                              (0x00010000)
48 #define ZZ9K_FB_SIZE                              (0x02FF0000)        /* 48 MB - 64 KB */
49 #define ZZ9K_RX_BASE                              (0x00002000)
50 #define ZZ9K_RX_SIZE                              (0x00002000)        /* 8 KB */
51 #define ZZ9K_TX_BASE                              (0x00008000)
52 #define ZZ9K_TX_SIZE                              (0x00002000)        /* 8 KB */
53 
54 /* Color mode */
55 #define ZZ9K_COLOR_8BIT                           (0)
56 #define ZZ9K_COLOR_16BIT                (1)
57 #define ZZ9K_COLOR_32BIT                (2)
58 #define ZZ9K_COLOR_15BIT                (3)
59 
60 /* Modes of ZZ9K_MODE */
61 #define ZZ9K_MODE_1280x720              (0)
62 #define ZZ9K_MODE_800x600               (1)
63 #define ZZ9K_MODE_640x480               (2)
64 #define ZZ9K_MODE_1024x768              (3)
65 #define ZZ9K_MODE_1280x1024             (4)
66 #define ZZ9K_MODE_1920x1080             (5)
67 #define ZZ9K_MODE_720x576p50            (6)
68 #define ZZ9K_MODE_1920x1080p50                    (7)
69 #define ZZ9K_MODE_720x480               (8)
70 #define ZZ9K_MODE_640x512               (9)
71 #define ZZ9K_MODE_1600x1200             (10)
72 #define ZZ9K_MODE_2560x1440p30                    (11)
73 #define ZZ9K_MODE_720x576p50_NS_PAL     (12)
74 #define ZZ9K_MODE_720x480_NS_PAL        (13)
75 #define ZZ9K_MODE_720x576p50_NS_NTSC    (14)
76 #define ZZ9K_MODE_720x480_NS_NTSC       (15)
77 #define ZZ9K_MODE_640x400               (16)
78 #define ZZ9K_MODE_1920x800              (17)
79 
80 /* Some registers expect the modes and scale factors shifted */
81 #define ZZ9K_MODE_COLOR_8BIT            (ZZ9K_COLOR_8BIT  << 8)
82 #define ZZ9K_MODE_COLOR_16BIT           (ZZ9K_COLOR_16BIT << 8)
83 #define ZZ9K_MODE_COLOR_32BIT           (ZZ9K_COLOR_32BIT << 8)
84 #define ZZ9K_MODE_COLOR_15BIT           (ZZ9K_COLOR_15BIT << 8)
85 #define ZZ9K_MODE_SCALE_0               (0 << 12)
86 #define ZZ9K_MODE_SCALE_1               (1 << 12)
87 #define ZZ9K_MODE_SCALE_2               (2 << 12)
88 #define ZZ9K_MODE_SCALE_3               (3 << 12)
89 
90 /* Feature of ZZ9K_BLITTER_USER1 for ZZ9K_FEATURE */
91 #define   ZZ9K_FEATURE_NONE             (0)
92 #define   ZZ9K_FEATURE_SECONDARY_PALETTE          (1)
93 #define   ZZ9K_FEATURE_NONSTANDARD_VSYNC          (2)
94 
95 /* Video capture pan */
96 #define ZZ9K_CAPTURE_PAN_NTSC           (0x00E00000)
97 #define ZZ9K_CAPTURE_PAN_PAL            (0x00E00000)
98 #define ZZ9K_CAPTURE_PAN_VGA            (0x00DFF2F8)
99 
100 /* Modes of ZZ9K_VIDEO_CAPTURE_MODE */
101 #define ZZ9K_CAPTURE_OFF                (0)
102 #define ZZ9K_CAPTURE_ON                           (1)
103 
104 /* Operations of MNTZ_VIDEO_CONTROL_OP */
105 #define ZZ9K_OP_NOP                     (0)
106 #define ZZ9K_OP_PALETTE                           (3)
107 #define ZZ9K_OP_VSYNC                             (5)
108 
109 #define ZZ9K_PALETTE_SIZE               (256)
110 
111 /* Options of ZZ9K_BLITTER_OP_COPYRECT */
112 #define ZZ9K_OPT_REGULAR                (1)
113 #define ZZ90_OPT_NOMASK                 (2)
114 
115 /* Video Control */
116 #define ZZ9K_VIDEO_CTRL_DATA_HI                   (0x1000)
117 #define ZZ9K_VIDEO_CTRL_DATA_LO                   (0x1002)
118 #define ZZ9K_VIDEO_CTRL_OP              (0x1004)
119 #define ZZ9K_VIDEO_CAPTURE_MODE                   (0x1006)
120 #define ZZ9K_VIDEO_BLANK_STATUS                   (0x1600)
121 
122 /* Bits of ZZ9K_CONFIG */
123 #define ZZ9K_CONFIG_INT_ETH             (1 << 0)
124 #define ZZ9K_CONFIG_INT_AUDIO           (1 << 1)
125 #define ZZ9K_CONFIG_INT_ACK             (1 << 3)
126 #define ZZ9K_CONFIG_INT_ACK_ETH                   (1 << 4)
127 #define ZZ9K_CONFIG_INT_ACK_AUDIO       (1 << 5)
128 
129 /* Bits of ZZ9K_AUDIO_CONFIG */
130 #define ZZ9K_AUDIO_CONFIG_INT_AUDIO     (1 << 0)
131 
132 /* Parameters of ZZ9K_AUDIO_PARAM */
133 #define ZZ9K_AP_TX_BUF_OFFS_HI                    (0)
134 #define ZZ9K_AP_TX_BUF_OFFS_LO                    (1)
135 #define ZZ9K_AP_RX_BUF_OFFS_HI                    (2)
136 #define ZZ9K_AP_RX_BUF_OFFS_LO                    (3)
137 #define ZZ9K_AP_DSP_PROG_OFFS_HI        (4)
138 #define ZZ9K_AP_DSP_PROG_OFFS_LO        (5)
139 #define ZZ9K_AP_DSP_PARAM_OFFS_HI       (6)
140 #define ZZ9K_AP_DSP_PARAM_OFFS_LO       (7)
141 #define ZZ9K_AP_DSP_UPLOAD              (8)
142 #define ZZ9K_AP_DSP_SET_LOWPASS                   (9)
143 #define ZZ9K_AP_DSP_SET_VOLUMES                   (10)
144 #define ZZ9K_AP_DSP_SET_PREFACTOR       (11)
145 #define ZZ9K_AP_DSP_SET_EQ_BAND1        (12)
146 #define ZZ9K_AP_DSP_SET_EQ_BAND2        (13)
147 #define ZZ9K_AP_DSP_SET_EQ_BAND3        (14)
148 #define ZZ9K_AP_DSP_SET_EQ_BAND4        (15)
149 #define ZZ9K_AP_DSP_SET_EQ_BAND5        (16)
150 #define ZZ9K_AP_DSP_SET_EQ_BAND6        (17)
151 #define ZZ9K_AP_DSP_SET_EQ_BAND7        (18)
152 #define ZZ9K_AP_DSP_SET_EQ_BAND8        (29)
153 #define ZZ9K_AP_DSP_SET_EQ_BAND9        (20)
154 #define ZZ9K_AP_DSP_SET_EQ_BAND10       (21)
155 #define ZZ9K_AP_DSP_SET_STEREO_VOLUME   (22)
156 
157 /* Parameters of ZZ9K_DECODER_PARAM */
158 #define ZZ9K_DP_DECODE_CLEAR            (0)
159 #define ZZ9K_DP_DECODE_INIT             (1)
160 #define ZZ9K_DP_DECODE_RUN              (2)
161 
162 
163 /* REGISTERS */
164 
165 /* Config and Video */
166 #define ZZ9K_HW_VERSION                           0x00
167 #define ZZ9K_MODE                       0x02
168 #define ZZ9K_CONFIG                     0x04
169 
170 #define ZZ9K_SPRITE_X                             0x06
171 #define ZZ9K_SPRITE_Y                             0x08
172 
173 #define ZZ9K_PAN_PTR_HI                           0x0A
174 #define ZZ9K_PAN_PTR_LO                           0x0C
175 #define ZZ9K_VIDEOCAP_VMODE             0x0E
176 
177 /* Blitter */
178 #define ZZ9K_BLITTER_X1                           0x10
179 #define ZZ9K_BLITTER_Y1                           0x12
180 #define ZZ9K_BLITTER_X2                           0x14
181 #define ZZ9K_BLITTER_Y2                           0x16
182 #define ZZ9K_BLITTER_ROW_PITCH                    0x18
183 #define ZZ9K_BLITTER_X3                           0x1A
184 #define ZZ9K_BLITTER_Y3                           0x1C
185 #define ZZ9K_BLITTER_RGB_HI             0x1E
186 #define ZZ9K_BLITTER_RGB_LO             0x20
187 #define ZZ9K_BLITTER_OP_FILLRECT        0x22
188 #define ZZ9K_BLITTER_OP_COPYRECT        0x24
189 #define ZZ9K_BLITTER_OP_FILLTEMPLATE    0x26
190 #define ZZ9K_BLITTER_SRC_HI             0x28
191 #define ZZ9K_BLITTER_SRC_LO             0x2A
192 #define ZZ9K_BLITTER_DST_HI             0x2C
193 #define ZZ9K_BLITTER_DST_LO             0x2E
194 #define ZZ9K_BLITTER_COLORMODE                    0x30
195 #define ZZ9K_BLITTER_SRC_PITCH                    0x32
196 #define ZZ9K_BLITTER_RGB2_HI            0x34
197 #define ZZ9K_BLITTER_RGB2_LO            0x36
198 #define ZZ9K_BLITTER_OP_P2C             0x38
199 #define ZZ9K_BLITTER_OP_DRAW_LINE       0x3A
200 #define ZZ9K_BLITTER_OP_P2D             0x3C
201 #define ZZ9K_BLITTER_OP_INVERTRECT      0x3E
202 
203 #define ZZ9K_BLITTER_USER1              0x40
204 #define ZZ9K_BLITTER_USER2              0x42
205 #define ZZ9K_BLITTER_USER3              0x44
206 #define ZZ9K_BLITTER_USER4              0x46
207 
208 /* Sprite cursor */
209 #define ZZ9K_SPRITE_BITMAP              0x48
210 #define ZZ9K_SPRITE_COLORS              0x4A
211 
212 #define ZZ9K_VBLANK_STATUS              0x4C
213 
214 /* ? */
215 #define ZZ9K_SCRATCH_COPY               0x50
216 #define ZZ9K_CVMODE_PARAM               0x52
217 #define ZZ9K_CVMODE_VAL                           0x54
218 #define ZZ9K_CVMODE_SEL                           0x56
219 #define ZZ9K_CVMODE                     0x58
220 
221 /* Blitter */
222 #define ZZ9K_BLITTER_OP_DMA             0x5A
223 #define ZZ9K_BLITTER_OP_ACC             0x5C
224 #define ZZ9K_BLITTER_SPLIT_POS                    0x5E
225 
226 /* ? */
227 #define ZZ9K_SET_FEATURE                0x60
228 
229 /* Audio */
230 #define ZZ9K_AUDIO_SWAB                           0x70
231 #define ZZ9K_DECODER_FIFO               0x72
232 #define ZZ9K_AUDIO_SCALE                0x74
233 #define ZZ9K_AUDIO_PARAM                0x76
234 #define ZZ9K_AUDIO_VAL                            0x78
235 #define ZZ9K_DECODER_PARAM              0x7A
236 #define ZZ9K_DECODER_VAL                0x7C
237 #define ZZ9K_DECODE                     0x7E
238 
239 /* Network */
240 #define ZZ9K_ETH_TX                     0x80
241 #define ZZ9K_ETH_RX                     0x82
242 #define ZZ9K_ETH_MAC_HI                           0x84
243 #define ZZ9K_ETH_MAC_MD                           0x86
244 #define ZZ9K_ETH_MAC_LO                           0x88
245 
246 /* ARM processing */
247 #define ZZ9K_ARM_RUN_HI                           0x90
248 #define ZZ9K_ARM_RUN_LO                           0x92
249 #define ZZ9K_ARM_ARGC                             0x94
250 #define ZZ9K_ARM_ARGV0                            0x96
251 #define ZZ9K_ARM_ARGV1                            0x98
252 #define ZZ9K_ARM_ARGV2                            0x9A
253 #define ZZ9K_ARM_ARGV3                            0x9C
254 #define ZZ9K_ARM_ARGV4                            0x9E
255 #define ZZ9K_ARM_ARGV5                            0xA0
256 #define ZZ9K_ARM_ARGV6                            0xA2
257 #define ZZ9K_ARM_ARGV7                            0xA4
258 
259 #define ZZ9K_ARM_EVENT_SERIAL           0xB0
260 #define ZZ9K_ARM_EVENT_CODE             0xB2
261 
262 /* Board hardware */
263 #define ZZ9K_FW_VERSION                           0xC0
264 
265 /* USB */
266 #define ZZ9K_USB_TX_HI                            0xD0
267 #define ZZ9K_USB_TX_LO                            0xD2
268 #define ZZ9K_USB_RX_HI                            0xD4
269 #define ZZ9K_USB_RX_LO                            0xD6
270 #define ZZ9K_USB_STATUS                           0xD8
271 #define ZZ9K_USB_BUFSEL                           0xDA
272 #define ZZ9K_USB_CAPACITY               0xDC
273 
274 /* Hardware Status */
275 #define ZZ9K_TEMPERATURE                0xE0
276 #define ZZ9K_VOLTAGE_AUX                0xE2
277 #define ZZ9K_VOLTAGE_CORE               0xE4
278 
279 /* Misccellaneous */
280 #define ZZ9K_PRINT_CHR                            0xF0
281 #define ZZ9K_PRINT_HEX                            0xF2
282 #define ZZ9K_AUDIO_CONFIG               0xF4
283 
284 #define ZZ9K_DEBUG                      0xFC
285 #define ZZ9K_DEBUG_TIMER                0xFE
286 
287 
288 #endif /* ZZ9KREG_H */
289