1 1.4 andvar /* $NetBSD: sbd_tr2.h,v 1.4 2024/02/08 20:30:39 andvar Exp $ */ 2 1.1 tsutsui 3 1.1 tsutsui /*- 4 1.1 tsutsui * Copyright (c) 2004 The NetBSD Foundation, Inc. 5 1.1 tsutsui * All rights reserved. 6 1.1 tsutsui * 7 1.1 tsutsui * This code is derived from software contributed to The NetBSD Foundation 8 1.1 tsutsui * by UCHIYAMA Yasushi. 9 1.1 tsutsui * 10 1.1 tsutsui * Redistribution and use in source and binary forms, with or without 11 1.1 tsutsui * modification, are permitted provided that the following conditions 12 1.1 tsutsui * are met: 13 1.1 tsutsui * 1. Redistributions of source code must retain the above copyright 14 1.1 tsutsui * notice, this list of conditions and the following disclaimer. 15 1.1 tsutsui * 2. Redistributions in binary form must reproduce the above copyright 16 1.1 tsutsui * notice, this list of conditions and the following disclaimer in the 17 1.1 tsutsui * documentation and/or other materials provided with the distribution. 18 1.1 tsutsui * 19 1.1 tsutsui * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 20 1.1 tsutsui * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 21 1.1 tsutsui * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 22 1.1 tsutsui * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 23 1.1 tsutsui * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24 1.1 tsutsui * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25 1.1 tsutsui * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26 1.1 tsutsui * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27 1.1 tsutsui * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28 1.1 tsutsui * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29 1.1 tsutsui * POSSIBILITY OF SUCH DAMAGE. 30 1.1 tsutsui */ 31 1.1 tsutsui 32 1.1 tsutsui #ifndef _SBD_TR2_PRIVATE 33 1.4 andvar #error "Don't include this file except for TR2 implementation" 34 1.1 tsutsui #endif /* !_SBD_TR2_PRIVATE */ 35 1.1 tsutsui 36 1.1 tsutsui #ifndef _EWS4800MIPS_SBD_TR2_H_ 37 1.1 tsutsui #define _EWS4800MIPS_SBD_TR2_H_ 38 1.1 tsutsui /* 39 1.1 tsutsui * EWS4800/350 (TR2) specific system board definition 40 1.1 tsutsui */ 41 1.1 tsutsui 42 1.1 tsutsui /* ROM */ 43 1.1 tsutsui #define TR2_ROM_FONT_ADDR 0xbfc0ec00 44 1.1 tsutsui #define TR2_ROM_FONT_SIZE ((0x7f - 0x20) * 24 * sizeof(int16_t)) 45 1.1 tsutsui 46 1.1 tsutsui #define TR2_ROM_KEYMAP_NORMAL ((uint8_t *)0xbfc12d6c) 47 1.1 tsutsui #define TR2_ROM_KEYMAP_SHIFTED ((uint8_t *)0xbfc12dec) 48 1.1 tsutsui #define TR2_ROM_KEYMAP_CONTROL ((uint8_t *)0xbfc12e6c) 49 1.1 tsutsui #define TR2_ROM_KEYMAP_CAPSLOCK ((uint8_t *)0xbfc12eec) 50 1.1 tsutsui #define TR2_ROM_KBD_TYPE 0xbfc0fe04 /* [d0 00 00 01] used by kbmskbreset. */ 51 1.1 tsutsui 52 1.1 tsutsui #define TR2_ROM_PUTC ((void (*)(int, int, int))0xbfc04f28) 53 1.1 tsutsui #define TR2_ROM_GETC ((int (*)(void))0xbfc11fa0) 54 1.1 tsutsui 55 1.1 tsutsui /* System board I/O devices */ 56 1.1 tsutsui #define TR2_PICNIC_ADDR 0xbb000000 57 1.1 tsutsui #define TR2_KBMS_ADDR 0xbb010000 58 1.1 tsutsui #define TR2_SIO_ADDR 0xbb011000 59 1.1 tsutsui #define TR2_NVSRAM_ADDR 0xbb020000 60 1.1 tsutsui #define TR2_NVSRAM_SIZE 0x00004000 61 1.1 tsutsui #define TR2_FDC_ADDR 0xbb030000 62 1.1 tsutsui #define TR2_LPT_ADDR 0xbb040000 63 1.1 tsutsui #define TR2_SCSI_ADDR 0xbb050000 64 1.1 tsutsui #define TR2_ETHER_ADDR 0xbb060000 65 1.1 tsutsui #define TR2_MEMC_ADDR 0xbfa00000 66 1.1 tsutsui #define TR2_NABI_ADDR 0xbfb00000 67 1.1 tsutsui #define TR2_GAFB_ADDR 0xf0000000 68 1.1 tsutsui #define TR2_GAFB_SIZE 0x08000000 69 1.1 tsutsui #define TR2_GACTRL_ADDR 0xf5f00000 70 1.1 tsutsui #define TR2_GACTRL_SIZE 0x1000 71 1.1 tsutsui 72 1.1 tsutsui #define SOFTRESET_REG ((volatile uint32_t *)0xbfb00000) 73 1.1 tsutsui #define POWEROFF_REG ((volatile uint8_t *)0xbb004000) 74 1.1 tsutsui #define UPS_STATUS_REG ((volatile uint8_t *)0xbb004008) /* mask 0xffffffbb, 0x4 */ 75 1.1 tsutsui 76 1.1 tsutsui #define LED_TF_REG ((volatile uint8_t *)0xbb006000) /* 0/1 (Red)*/ 77 1.1 tsutsui #define TF_ERROR_CODE ((volatile uint8_t *)0xbb006004) /* 1-255 */ 78 1.1 tsutsui 79 1.1 tsutsui #define BUZZER_REG ((volatile uint8_t *)0xbb007000) 80 1.1 tsutsui 81 1.1 tsutsui /* NABI */ 82 1.1 tsutsui #define NABI0_CTRL_REG ((volatile uint32_t *)0xbfb00000) 83 1.1 tsutsui #define NABI1_CTRL_REG ((volatile uint32_t *)0xbfb00004) 84 1.1 tsutsui #define NABI2_CTRL_REG ((volatile uint32_t *)0xbfb00008) 85 1.1 tsutsui #define NABI0_INTR_REG ((volatile uint32_t *)0xbfb00010) 86 1.1 tsutsui #define NABI1_INTR_REG ((volatile uint32_t *)0xbfb00018) /* VME */ 87 1.1 tsutsui #define NABI2_INTR_REG ((volatile uint32_t *)0xbfb0001c) 88 1.1 tsutsui 89 1.1 tsutsui /* 90 1.1 tsutsui * PICNIC (interrupt controller) 91 1.1 tsutsui */ 92 1.1 tsutsui #define PICNIC_INT0_STATUS_REG ((volatile uint8_t *)0xbb000000) 93 1.1 tsutsui #define PICNIC_INT2_STATUS_REG ((volatile uint8_t *)0xbb000004) 94 1.1 tsutsui #define PICNIC_INT4_STATUS_REG ((volatile uint8_t *)0xbb000008) 95 1.1 tsutsui #define PICNIC_INT5_STATUS_REG ((volatile uint8_t *)0xbb000010) 96 1.1 tsutsui #define PICNIC_NMI_REG ((volatile uint8_t *)0xbb000014) 97 1.1 tsutsui 98 1.1 tsutsui #define PICNIC_INT0_MASK_REG ((volatile uint8_t *)0xbb001000) 99 1.1 tsutsui #define PICNIC_INT2_MASK_REG ((volatile uint8_t *)0xbb001004) 100 1.1 tsutsui #define PICNIC_INT4_MASK_REG ((volatile uint8_t *)0xbb001008) 101 1.1 tsutsui #define PICNIC_INT5_MASK_REG ((volatile uint8_t *)0xbb001010) 102 1.1 tsutsui /* Interrupt source */ 103 1.1 tsutsui #define PICNIC_INT_FDDLPT 0x80 104 1.1 tsutsui #define PICNIC_INT_ETHER 0x40 105 1.1 tsutsui #define PICNIC_INT_SCSI 0x20 106 1.1 tsutsui #define PICNIC_INT_SERIAL 0x04 107 1.1 tsutsui #define PICNIC_INT_KBMS 0x01 108 1.1 tsutsui #define PICNIC_INT_CLOCK 0x01 109 1.1 tsutsui /* 110 1.1 tsutsui * 76543210 111 1.1 tsutsui * ||| | +-- keyboard, mouse 112 1.1 tsutsui * ||| +-----serial 113 1.1 tsutsui * ||+--------SCSI 114 1.1 tsutsui * |+---------ether 115 1.1 tsutsui * +----------FDC, printer 116 1.1 tsutsui *0xbb00 UX IPL mips int 117 1.1 tsutsui * 1000 0x80 0x00 7 INT0 118 1.1 tsutsui * 1004 0x60 0x00 65 INT2 119 1.1 tsutsui * 1008 0x05 0x00 2 0 INT4 120 1.1 tsutsui * 1010 0x01 0x01 0 Clock INT5 121 1.1 tsutsui */ 122 1.1 tsutsui 123 1.1 tsutsui /* SIO0 Z85C30 */ 124 1.1 tsutsui #define KBD_STATUS ((volatile uint8_t *)0xbb010000) 125 1.1 tsutsui #define KBD_DATA ((volatile uint8_t *)0xbb010004) 126 1.1 tsutsui #define MOUSE_STATUS ((volatile uint8_t *)0xbb010008) 127 1.1 tsutsui #define MOUSE_DATA ((volatile uint8_t *)0xbb01000c) 128 1.1 tsutsui /* SIO1 Z85C30 */ 129 1.1 tsutsui #define SIOA_STATUS ((volatile uint8_t *)0xbb011008) 130 1.1 tsutsui #define SIOA_RDATA ((volatile uint8_t *)0xbb01100c) 131 1.1 tsutsui #define SIOB_STATUS ((volatile uint8_t *)0xbb011000) 132 1.1 tsutsui #define SIOB_RDATA ((volatile uint8_t *)0xbb011004) 133 1.1 tsutsui 134 1.1 tsutsui /* ETHER i82589 */ 135 1.1 tsutsui /* read operation invokes channel attention. */ 136 1.1 tsutsui #define ETHER_SETADDR_REG ((volatile uint32_t *)0xbb060000) 137 1.1 tsutsui 138 1.3 msaitoh /* DCC (DMA controller. Parallel port and FDD use this.) */ 139 1.1 tsutsui struct DCC { 140 1.1 tsutsui uint32_t addr; /* DMA address */ 141 1.1 tsutsui uint32_t cnt; /* transfer count */ 142 1.1 tsutsui uint32_t ctrl; /* DMA status/command */ 143 1.1 tsutsui uint32_t drm; 144 1.1 tsutsui } __attribute__((__packed__)); 145 1.1 tsutsui 146 1.1 tsutsui /* FDD uPD72065 (80track ready) */ 147 1.1 tsutsui #define FDC_DMA ((volatile struct DCC *)0xbb030000) 148 1.1 tsutsui #define FDC_STATUS ((volatile uint8_t *)0xbb030010) 149 1.1 tsutsui #define FDC_DATA ((volatile uint8_t *)0xbb030014) 150 1.1 tsutsui 151 1.1 tsutsui /* LPT */ 152 1.1 tsutsui #define LPT_DMA (((volatile struct DCC *)0xbb040000) 153 1.1 tsutsui #define LPT_COUNT ((volatile uint8_t *)0xbb040010) 154 1.1 tsutsui #define LPT_STRR ((volatile uint8_t *)0xbb040011) 155 1.1 tsutsui 156 1.1 tsutsui /* NVSRAM MK48T08B-15 (word aligned byte access) */ 157 1.1 tsutsui /* 0, 4, 8, c */ 158 1.1 tsutsui #define NVSRAM_SIGNATURE 0xbb020000 159 1.1 tsutsui /* 10, 14 18 1c */ 160 1.1 tsutsui #define NVSRAM_MACHINEID 0xbb020010 161 1.1 tsutsui #define NVSRAM_ETHERADDR ((uint8_t *)0xbb021008) 162 1.1 tsutsui /* 2000, 2004, 2008, 200c */ 163 1.1 tsutsui #define NVSRAM_CDUMP_ADDR ((uint8_t *)0xbb022000) 164 1.1 tsutsui #define NVSRAM_DUMPDEV_1XXX 0xbb022020 165 1.1 tsutsui #define NVSRAM_DUMPDEV_2XXX 0xbb022040 166 1.1 tsutsui /* 2050, 2054, 2058, 205c */ 167 1.1 tsutsui #define NVSRAM_TF_SCRATCH_ADDR 0xbb022050 168 1.1 tsutsui #if 0 169 1.1 tsutsui /* kbd */ 170 1.1 tsutsui #define NVSRAM_KBD??? 0xbb0220a0 /* 0x90 */ 171 1.1 tsutsui #endif 172 1.1 tsutsui #define NVSRAM_TF_TESTDATA1 0xbb023000 173 1.1 tsutsui #define NVSRAM_TF_TESTDATA2 0xbb023004 174 1.1 tsutsui #define NVSRAM_KEYMAP ((uint8_t *)0xbb023014) /* scratch */ 175 1.1 tsutsui #define NVSRAM_TF_PROGRESS ((uint8_t *)0xbb02301c) 176 1.1 tsutsui #define NVSRAM_BEV_ROM 32 /* Exception from ROM routine */ 177 1.1 tsutsui 178 1.1 tsutsui #define NVSRAM_KBDCONNECT ((uint8_t *)0xbb023010) 179 1.1 tsutsui #define HAS_KBD() (*NVSRAM_KBDCONNECT != 255) 180 1.1 tsutsui #define NVSRAM_CONSTYPE ((uint8_t *)0xbb023020) 181 1.1 tsutsui #define IS_FBCONS() (*NVSRAM_CONSTYPE == 0) 182 1.1 tsutsui #define NVSRAM_GA 0xbb023008 183 1.1 tsutsui #define HAS_GA 0 184 1.1 tsutsui #define NVSRAM_TF_RESULT_HI 0xbb023024 185 1.1 tsutsui #define NVSRAM_TF_RESULT_LO 0xbb023028 186 1.1 tsutsui #define NVSRAM_IPLMODE ((uint8_t *)0xbb02302c) 187 1.1 tsutsui /* 188 1.1 tsutsui * 0: Normal mode 189 1.1 tsutsui * 1: ERROR continue mode 190 1.1 tsutsui * 2: Details mode 191 1.1 tsutsui * 3: LOOP mode 192 1.1 tsutsui */ 193 1.1 tsutsui #define NVSRAM_BOOTDEV ((uint8_t *)0xbb023030) 194 1.1 tsutsui #define NVSRAM_BOOTUNIT ((uint8_t *)0xbb023034) 195 1.1 tsutsui 196 1.1 tsutsui /* V1 is memory area information */ 197 1.1 tsutsui #define NVSRAM_1STBOOT_ARG_V1_3 ((uint8_t *)0xbb023048) /* 24-31 */ 198 1.1 tsutsui #define NVSRAM_1STBOOT_ARG_V1_2 ((uint8_t *)0xbb02304c) /* 16-23 */ 199 1.1 tsutsui #define NVSRAM_1STBOOT_ARG_V1_1 ((uint8_t *)0xbb023050) /* 8 -15 */ 200 1.1 tsutsui #define NVSRAM_1STBOOT_ARG_V1_0 ((uint8_t *)0xbb023054) /* 0 - 7 */ 201 1.1 tsutsui #define NVSRAM_1STBOOT_ARG_V0 ((uint8_t *)0xbb023058) 202 1.1 tsutsui 203 1.1 tsutsui #define NVSRAM_SIMM_3_2 ((uint8_t *)0xbb023050) 204 1.1 tsutsui #define NVSRAM_SIMM_1_0 ((uint8_t *)0xbb023054) 205 1.1 tsutsui #define SIMM_16M 0x1 206 1.1 tsutsui #define SIMM_32M 0x2 207 1.1 tsutsui 208 1.1 tsutsui #define NVSRAM_RTCADDR ((uint8_t *)0xbb027fe0) 209 1.1 tsutsui 210 1.1 tsutsui /* Graphic adapter */ 211 1.1 tsutsui #include <machine/gareg.h> 212 1.1 tsutsui 213 1.1 tsutsui /* 214 1.1 tsutsui * VME (350/380) 215 1.1 tsutsui */ 216 1.1 tsutsui #define VME_ADDR 0xf8000000 217 1.1 tsutsui #define VME_32_ADDR 0xf8000000 218 1.1 tsutsui #define VME_32_SIZE 0x07000000 219 1.1 tsutsui #define VME_BUFFER_ADDR 0xff000000 220 1.1 tsutsui #define VME_BUFFER_SIZE 0x00800000 221 1.1 tsutsui #define VME_24_ADDR 0xff800000 222 1.1 tsutsui #define VME_24_SIZE 0x007f0000 223 1.1 tsutsui #define VME_SHORTIO_ADDR 0xffff0000 224 1.1 tsutsui #define VME_SHORTIO_SIZE 0x00010000 225 1.1 tsutsui 226 1.1 tsutsui #endif /* !_EWS4800MIPS_SBD_TR2_H_ */ 227