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