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