1 1.15 andvar /* $NetBSD: hd64570reg.h,v 1.15 2025/08/18 20:59:55 andvar Exp $ */ 2 1.1 explorer 3 1.1 explorer /* 4 1.1 explorer * Copyright (c) 1998 Vixie Enterprises 5 1.1 explorer * All rights reserved. 6 1.1 explorer * 7 1.1 explorer * Redistribution and use in source and binary forms, with or without 8 1.1 explorer * modification, are permitted provided that the following conditions 9 1.1 explorer * are met: 10 1.1 explorer * 11 1.1 explorer * 1. Redistributions of source code must retain the above copyright 12 1.1 explorer * notice, this list of conditions and the following disclaimer. 13 1.1 explorer * 2. Redistributions in binary form must reproduce the above copyright 14 1.1 explorer * notice, this list of conditions and the following disclaimer in the 15 1.1 explorer * documentation and/or other materials provided with the distribution. 16 1.1 explorer * 3. Neither the name of Vixie Enterprises nor the names 17 1.1 explorer * of its contributors may be used to endorse or promote products derived 18 1.1 explorer * from this software without specific prior written permission. 19 1.1 explorer * 20 1.1 explorer * THIS SOFTWARE IS PROVIDED BY VIXIE ENTERPRISES AND 21 1.1 explorer * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, 22 1.1 explorer * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 23 1.1 explorer * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 24 1.1 explorer * DISCLAIMED. IN NO EVENT SHALL VIXIE ENTERPRISES OR 25 1.1 explorer * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 26 1.1 explorer * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 27 1.1 explorer * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 28 1.1 explorer * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 29 1.1 explorer * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 30 1.1 explorer * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 31 1.1 explorer * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32 1.1 explorer * SUCH DAMAGE. 33 1.1 explorer * 34 1.1 explorer * This software has been written for Vixie Enterprises by Michael Graff 35 1.1 explorer * <explorer (at) flame.org>. To learn more about Vixie Enterprises, see 36 1.1 explorer * ``http://www.vix.com''. 37 1.1 explorer */ 38 1.1 explorer 39 1.2 kleink #ifndef _DEV_IC_HD64570REG_H_ 40 1.2 kleink #define _DEV_IC_HD64570REG_H_ 41 1.1 explorer 42 1.1 explorer /* XXX 43 1.1 explorer * This is really HDLC specific stuff, but... 44 1.1 explorer */ 45 1.1 explorer #define CISCO_MULTICAST 0x8f /* Cisco multicast address */ 46 1.1 explorer #define CISCO_UNICAST 0x0f /* Cisco unicast address */ 47 1.1 explorer #define CISCO_KEEPALIVE 0x8035 /* Cisco keepalive protocol */ 48 1.1 explorer #define CISCO_ADDR_REQ 0 /* Cisco address request */ 49 1.1 explorer #define CISCO_ADDR_REPLY 1 /* Cisco address reply */ 50 1.1 explorer #define CISCO_KEEPALIVE_REQ 2 /* Cisco keepalive request */ 51 1.1 explorer 52 1.4 chopps struct cisco_pkt { 53 1.1 explorer u_int32_t type; 54 1.1 explorer u_int32_t par1; 55 1.1 explorer u_int32_t par2; 56 1.1 explorer u_int16_t rel; 57 1.1 explorer u_int16_t time0; 58 1.1 explorer u_int16_t time1; 59 1.4 chopps }; 60 1.1 explorer #define CISCO_PKT_LEN 18 /* sizeof doesn't work right... */ 61 1.1 explorer 62 1.1 explorer #define HDLC_PROTOCOL_IP 0x0800 /* IP */ 63 1.6 itojun #define HDLC_PROTOCOL_IPV6 0x86dd /* IPv6 */ 64 1.4 chopps #define HDLC_PROTOCOL_ISO 0xfefe /* LLC_ISO_LSAP dsap,ssap */ 65 1.1 explorer 66 1.4 chopps struct hdlc_header { 67 1.4 chopps u_int8_t h_addr; 68 1.4 chopps u_int8_t h_resv; 69 1.4 chopps u_int16_t h_proto; 70 1.4 chopps }; 71 1.1 explorer #define HDLC_HDRLEN 4 72 1.4 chopps 73 1.4 chopps struct hdlc_llc_header { 74 1.4 chopps u_int8_t hl_addr; 75 1.4 chopps u_int8_t hl_resv; 76 1.4 chopps u_int8_t hl_dsap; 77 1.4 chopps u_int8_t hl_ssap; 78 1.5 chopps u_int8_t hl_ffb; /* cisco: friendly fudge byte */ 79 1.4 chopps }; 80 1.1 explorer 81 1.1 explorer /* 82 1.13 andvar * Hitachi HD64570 definitions 83 1.1 explorer */ 84 1.1 explorer 85 1.1 explorer /* SCA Control Registers */ 86 1.1 explorer #define SCA_PABR0 2 87 1.1 explorer #define SCA_PABR1 3 88 1.1 explorer #define SCA_WCRL 4 /* Wait Control reg */ 89 1.1 explorer #define SCA_WCRM 5 /* Wait Control reg */ 90 1.1 explorer #define SCA_WCRH 6 /* Wait Control reg */ 91 1.1 explorer #define SCA_PCR 8 /* DMA priority control reg */ 92 1.1 explorer 93 1.1 explorer /* Interrupt registers */ 94 1.1 explorer #define SCA_ISR0 0x10 /* Interrupt status register 0 */ 95 1.1 explorer #define SCA_ISR1 0x11 /* Interrupt status register 1 */ 96 1.1 explorer #define SCA_ISR2 0x12 /* Interrupt status register 2 */ 97 1.1 explorer #define SCA_IER0 0x14 /* Interrupt enable register 0 */ 98 1.1 explorer #define SCA_IER1 0x15 /* Interrupt enable register 1 */ 99 1.1 explorer #define SCA_IER2 0x16 /* Interrupt enable register 2 */ 100 1.1 explorer #define SCA_ITCR 0x18 /* interrupt control register */ 101 1.1 explorer #define SCA_IVR 0x1a /* interrupt vector */ 102 1.1 explorer #define SCA_IMVR 0x1c /* modified interrupt vector */ 103 1.1 explorer 104 1.1 explorer /* MSCI Channel 0 Registers */ 105 1.10 perry #define SCA_TRBL0 0x20 /* TX/RX buffer reg */ 106 1.10 perry #define SCA_TRBH0 0x21 /* TX/RX buffer reg */ 107 1.1 explorer #define SCA_ST00 0x22 /* Status reg 0 */ 108 1.1 explorer #define SCA_ST10 0x23 /* Status reg 1 */ 109 1.1 explorer #define SCA_ST20 0x24 /* Status reg 2 */ 110 1.1 explorer #define SCA_ST30 0x25 /* Status reg 3 */ 111 1.1 explorer #define SCA_FST0 0x26 /* frame Status reg */ 112 1.1 explorer #define SCA_IE00 0x28 /* Interrupt enable reg 0 */ 113 1.1 explorer #define SCA_IE10 0x29 /* Interrupt enable reg 1 */ 114 1.1 explorer #define SCA_IE20 0x2a /* Interrupt enable reg 2 */ 115 1.1 explorer #define SCA_FIE0 0x2b /* Frame Interrupt enable reg */ 116 1.1 explorer #define SCA_CMD0 0x2c /* Command reg */ 117 1.1 explorer #define SCA_MD00 0x2e /* Mode reg 0 */ 118 1.1 explorer #define SCA_MD10 0x2f /* Mode reg 1 */ 119 1.1 explorer #define SCA_MD20 0x30 /* Mode reg 2 */ 120 1.1 explorer #define SCA_CTL0 0x31 /* Control reg */ 121 1.1 explorer #define SCA_SA00 0x32 /* Syn Address reg 0 */ 122 1.1 explorer #define SCA_SA10 0x33 /* Syn Address reg 1 */ 123 1.1 explorer #define SCA_IDL0 0x34 /* Idle register */ 124 1.1 explorer #define SCA_TMC0 0x35 /* Time constant */ 125 1.1 explorer #define SCA_RXS0 0x36 /* RX clock source */ 126 1.1 explorer #define SCA_TXS0 0x37 /* TX clock source */ 127 1.10 perry #define SCA_TRC00 0x38 /* TX Ready control reg 0 */ 128 1.10 perry #define SCA_TRC10 0x39 /* TX Ready control reg 1 */ 129 1.10 perry #define SCA_RRC0 0x3A /* RX Ready control reg */ 130 1.1 explorer 131 1.1 explorer /* MSCI Channel 1 Registers */ 132 1.10 perry #define SCA_TRBL1 0x40 /* TX/RX buffer reg */ 133 1.10 perry #define SCA_TRBH1 0x41 /* TX/RX buffer reg */ 134 1.1 explorer #define SCA_ST01 0x42 /* Status reg 0 */ 135 1.1 explorer #define SCA_ST11 0x43 /* Status reg 1 */ 136 1.1 explorer #define SCA_ST21 0x44 /* Status reg 2 */ 137 1.1 explorer #define SCA_ST31 0x45 /* Status reg 3 */ 138 1.1 explorer #define SCA_FST1 0x46 /* Frame Status reg */ 139 1.1 explorer #define SCA_IE01 0x48 /* Interrupt enable reg 0 */ 140 1.1 explorer #define SCA_IE11 0x49 /* Interrupt enable reg 1 */ 141 1.1 explorer #define SCA_IE21 0x4a /* Interrupt enable reg 2 */ 142 1.1 explorer #define SCA_FIE1 0x4b /* Frame Interrupt enable reg */ 143 1.1 explorer #define SCA_CMD1 0x4c /* Command reg */ 144 1.1 explorer #define SCA_MD01 0x4e /* Mode reg 0 */ 145 1.1 explorer #define SCA_MD11 0x4f /* Mode reg 1 */ 146 1.1 explorer #define SCA_MD21 0x50 /* Mode reg 2 */ 147 1.1 explorer #define SCA_CTL1 0x51 /* Control reg */ 148 1.1 explorer #define SCA_SA01 0x52 /* Syn Address reg 0 */ 149 1.1 explorer #define SCA_SA11 0x53 /* Syn Address reg 1 */ 150 1.1 explorer #define SCA_IDL1 0x54 /* Idle register */ 151 1.1 explorer #define SCA_TMC1 0x55 /* Time constant */ 152 1.1 explorer #define SCA_RXS1 0x56 /* RX clock source */ 153 1.1 explorer #define SCA_TXS1 0x57 /* TX clock source */ 154 1.10 perry #define SCA_TRC01 0x58 /* TX Ready control reg 0 */ 155 1.10 perry #define SCA_TRC11 0x59 /* TX Ready control reg 1 */ 156 1.10 perry #define SCA_RRC1 0x5A /* RX Ready control reg */ 157 1.1 explorer 158 1.1 explorer 159 1.1 explorer /* SCA DMA registers */ 160 1.1 explorer 161 1.1 explorer #define SCA_DMER 0x9 /* DMA Master Enable reg */ 162 1.1 explorer 163 1.1 explorer /* DMA Channel 0 Registers (MSCI -> memory, or rx) */ 164 1.1 explorer #define SCA_BARL0 0x80 /* buffer address reg */ 165 1.1 explorer #define SCA_BARH0 0x81 /* buffer address reg */ 166 1.1 explorer #define SCA_BARB0 0x82 /* buffer address reg */ 167 1.1 explorer #define SCA_DARL0 0x80 /* Dest. address reg */ 168 1.1 explorer #define SCA_DARH0 0x81 /* Dest. address reg */ 169 1.1 explorer #define SCA_DARB0 0x82 /* Dest. address reg */ 170 1.1 explorer #define SCA_CPB0 0x86 /* Chain pointer base */ 171 1.1 explorer #define SCA_CDAL0 0x88 /* Current descriptor address */ 172 1.1 explorer #define SCA_CDAH0 0x89 /* Current descriptor address */ 173 1.1 explorer #define SCA_EDAL0 0x8A /* Error descriptor address */ 174 1.1 explorer #define SCA_EDAH0 0x8B /* Error descriptor address */ 175 1.1 explorer #define SCA_BFLL0 0x8C /* RX buffer length Low */ 176 1.1 explorer #define SCA_BFLH0 0x8D /* RX buffer length High */ 177 1.1 explorer #define SCA_BCRL0 0x8E /* Byte Count reg */ 178 1.1 explorer #define SCA_BCRH0 0x8F /* Byte Count reg */ 179 1.1 explorer #define SCA_DSR0 0x90 /* DMA Status reg */ 180 1.1 explorer #define SCA_DMR0 0x91 /* DMA Mode reg */ 181 1.1 explorer #define SCA_FCT0 0x93 /* Frame end interrupt Counter */ 182 1.1 explorer #define SCA_DIR0 0x94 /* DMA interrupt enable */ 183 1.1 explorer #define SCA_DCR0 0x95 /* DMA Command reg */ 184 1.1 explorer 185 1.1 explorer /* DMA Channel 1 Registers (memory -> MSCI, or tx) */ 186 1.1 explorer #define SCA_BARL1 0xA0 /* buffer address reg */ 187 1.1 explorer #define SCA_BARH1 0xA1 /* buffer address reg */ 188 1.1 explorer #define SCA_BARB1 0xA2 /* buffer address reg */ 189 1.1 explorer #define SCA_SARL1 0xA4 /* Source address reg */ 190 1.1 explorer #define SCA_SARH1 0xA5 /* Source address reg */ 191 1.1 explorer #define SCA_SARB1 0xA6 /* Source address reg */ 192 1.1 explorer #define SCA_CPB1 0xA6 /* Chain pointer base */ 193 1.1 explorer #define SCA_CDAL1 0xA8 /* Current descriptor address */ 194 1.1 explorer #define SCA_CDAH1 0xA9 /* Current descriptor address */ 195 1.1 explorer #define SCA_EDAL1 0xAA /* Error descriptor address */ 196 1.1 explorer #define SCA_EDAH1 0xAB /* Error descriptor address */ 197 1.1 explorer #define SCA_BCRL1 0xAE /* Byte Count reg */ 198 1.1 explorer #define SCA_BCRH1 0xAF /* Byte Count reg */ 199 1.1 explorer #define SCA_DSR1 0xB0 /* DMA Status reg */ 200 1.1 explorer #define SCA_DMR1 0xB1 /* DMA Mode reg */ 201 1.1 explorer #define SCA_FCT1 0xB3 /* Frame end interrupt Counter */ 202 1.1 explorer #define SCA_DIR1 0xB4 /* DMA interrupt enable */ 203 1.1 explorer #define SCA_DCR1 0xB5 /* DMA Command reg */ 204 1.1 explorer 205 1.1 explorer /* DMA Channel 2 Registers (MSCI -> memory) */ 206 1.1 explorer #define SCA_BARL2 0xC0 /* buffer address reg */ 207 1.1 explorer #define SCA_BARH2 0xC1 /* buffer address reg */ 208 1.1 explorer #define SCA_BARB2 0xC2 /* buffer address reg */ 209 1.3 chopps #define SCA_CDAL2 0xC8 210 1.1 explorer #define SCA_DSR2 0xD0 /* DMA Status reg */ 211 1.1 explorer 212 1.1 explorer /* DMA Channel 3 Registers (memory -> MSCI) */ 213 1.1 explorer #define SCA_BARL3 0xE0 /* buffer address reg */ 214 1.1 explorer #define SCA_BARH3 0xE1 /* buffer address reg */ 215 1.1 explorer #define SCA_BARB3 0xE2 /* buffer address reg */ 216 1.3 chopps #define SCA_CDAL3 0xE8 217 1.1 explorer #define SCA_DSR3 0xF0 /* DMA Status reg */ 218 1.1 explorer 219 1.1 explorer /* 220 1.3 chopps * Timer Registers 221 1.3 chopps */ 222 1.3 chopps 223 1.3 chopps /* Timer up-counter */ 224 1.3 chopps #define SCA_TCNTL0 0x60 /* channel 0 */ 225 1.3 chopps #define SCA_TCNTH0 0x61 /* channel 0 */ 226 1.3 chopps #define SCA_TCNTL1 0x68 /* channel 1 */ 227 1.3 chopps #define SCA_TCNTH1 0x69 /* channel 1 */ 228 1.3 chopps #define SCA_TCNTL2 0x70 /* channel 2 */ 229 1.3 chopps #define SCA_TCNTH2 0x71 /* channel 2 */ 230 1.3 chopps #define SCA_TCNTL3 0x78 /* channel 3 */ 231 1.3 chopps #define SCA_TCNTH3 0x79 /* channel 3 */ 232 1.3 chopps 233 1.3 chopps /* Timer constant register */ 234 1.3 chopps #define SCA_TCONRL0 0x62 /* channel 0 */ 235 1.3 chopps #define SCA_TCONRH0 0x63 /* channel 0 */ 236 1.3 chopps #define SCA_TCONRL1 0x6a /* channel 1 */ 237 1.3 chopps #define SCA_TCONRH1 0x6b /* channel 1 */ 238 1.3 chopps #define SCA_TCONRL2 0x72 /* channel 2 */ 239 1.3 chopps #define SCA_TCONRH2 0x73 /* channel 2 */ 240 1.3 chopps #define SCA_TCONRL3 0x7a /* channel 3 */ 241 1.3 chopps #define SCA_TCONRH3 0x7b /* channel 3 */ 242 1.3 chopps 243 1.3 chopps /* Timer control/status register */ 244 1.3 chopps #define SCA_TCSR0 0x64 /* channel 0 */ 245 1.3 chopps #define SCA_TCSR1 0x6c /* channel 1 */ 246 1.3 chopps #define SCA_TCSR2 0x74 /* channel 2 */ 247 1.3 chopps #define SCA_TCSR3 0x7c /* channel 3 */ 248 1.3 chopps 249 1.3 chopps /* Timer expand prescale register */ 250 1.3 chopps #define SCA_TEPR0 0x65 /* channel 0 */ 251 1.3 chopps #define SCA_TEPR1 0x6d /* channel 1 */ 252 1.3 chopps #define SCA_TEPR2 0x75 /* channel 2 */ 253 1.3 chopps #define SCA_TEPR3 0x7d /* channel 3 */ 254 1.3 chopps 255 1.3 chopps /* 256 1.1 explorer * SCA HD64570 Register Definitions 257 1.1 explorer */ 258 1.1 explorer 259 1.1 explorer #define ST3_CTS 8 /* modem input /CTS bit */ 260 1.1 explorer #define ST3_DCD 4 /* modem input /DCD bit */ 261 1.1 explorer 262 1.1 explorer /* 263 1.1 explorer * SCA commands 264 1.1 explorer */ 265 1.1 explorer #define SCA_CMD_TXRESET 0x01 266 1.1 explorer #define SCA_CMD_TXENABLE 0x02 267 1.1 explorer #define SCA_CMD_TXDISABLE 0x03 268 1.1 explorer #define SCA_CMD_TXCRCINIT 0x04 269 1.1 explorer #define SCA_CMD_TXCRCEXCL 0x05 270 1.1 explorer #define SCA_CMS_TXEOM 0x06 271 1.1 explorer #define SCA_CMD_TXABORT 0x07 272 1.1 explorer #define SCA_CMD_MPON 0x08 273 1.1 explorer #define SCA_CMD_TXBCLEAR 0x09 274 1.1 explorer 275 1.1 explorer #define SCA_CMD_RXRESET 0x11 276 1.1 explorer #define SCA_CMD_RXENABLE 0x12 277 1.1 explorer #define SCA_CMD_RXDISABLE 0x13 278 1.1 explorer #define SCA_CMD_RXCRCINIT 0x14 279 1.1 explorer #define SCA_CMD_RXMSGREJ 0x15 280 1.1 explorer #define SCA_CMD_MPSEARCH 0x16 281 1.1 explorer #define SCA_CMD_RXCRCEXCL 0x17 282 1.1 explorer #define SCA_CMD_RXCRCCALC 0x18 283 1.1 explorer 284 1.1 explorer #define SCA_CMD_NOP 0x00 285 1.1 explorer #define SCA_CMD_RESET 0x21 286 1.1 explorer #define SCA_CMD_SEARCH 0x31 287 1.1 explorer 288 1.1 explorer #define SCA_MD0_CRC_1 0x01 289 1.1 explorer #define SCA_MD0_CRC_CCITT 0x02 290 1.1 explorer #define SCA_MD0_CRC_ENABLE 0x04 291 1.1 explorer #define SCA_MD0_AUTO_ENABLE 0x10 292 1.1 explorer #define SCA_MD0_MODE_ASYNC 0x00 293 1.1 explorer #define SCA_MD0_MODE_BYTESYNC1 0x20 294 1.1 explorer #define SCA_MD0_MODE_BISYNC 0x40 295 1.1 explorer #define SCA_MD0_MODE_BYTESYNC2 0x60 296 1.1 explorer #define SCA_MD0_MODE_HDLC 0x80 297 1.1 explorer 298 1.1 explorer #define SCA_MD1_NOADDRCHK 0x00 299 1.1 explorer #define SCA_MD1_SNGLADDR1 0x40 300 1.1 explorer #define SCA_MD1_SNGLADDR2 0x80 301 1.1 explorer #define SCA_MD1_DUALADDR 0xC0 302 1.1 explorer 303 1.1 explorer #define SCA_MD2_DUPLEX 0x00 304 1.1 explorer #define SCA_MD2_ECHO 0x01 305 1.1 explorer #define SCA_MD2_LOOPBACK 0x03 306 1.1 explorer #define SCA_MD2_ADPLLx8 0x00 307 1.1 explorer #define SCA_MD2_ADPLLx16 0x08 308 1.1 explorer #define SCA_MD2_ADPLLx32 0x10 309 1.1 explorer #define SCA_MD2_NRZ 0x00 310 1.1 explorer #define SCA_MD2_NRZI 0x20 311 1.1 explorer #define SCA_MD2_MANCHESTER 0x80 312 1.1 explorer #define SCA_MD2_FM0 0xC0 313 1.1 explorer #define SCA_MD2_FM1 0xA0 314 1.1 explorer 315 1.3 chopps #define SCA_CTL_RTS_MASK 0x01 /* control state of RTS */ 316 1.3 chopps #define SCA_CTL_RTS_HIGH 0x00 /* raise RTS (low !RTS) */ 317 1.3 chopps #define SCA_CTL_RTS_LOW 0x01 /* lower RTS (raise !RTS) */ 318 1.3 chopps #define SCA_CTL_IDLC_MASK 0x10 /* control idle state */ 319 1.3 chopps #define SCA_CTL_IDLC_MARK 0x00 /* transmit mark in idle state */ 320 1.15 andvar #define SCA_CTL_IDLC_PATTERN 0x10 /* transmit idle pattern */ 321 1.7 wiz #define SCA_CTL_UDRNC_MASK 0x20 /* control underrun state */ 322 1.3 chopps #define SCA_CTL_UDRNC_AFTER_ABORT 0x00 /* idle after aborting trans */ 323 1.3 chopps #define SCA_CTL_UDRNC_AFTER_FCS 0x20 /* idle after FCS and flag trans */ 324 1.3 chopps 325 1.3 chopps #define SCA_RXS_DIV_MASK 0x0F /* BRG divisor is 2^(value) */ 326 1.3 chopps #define SCA_RXS_DIV_1 0x00 /* 1 */ 327 1.3 chopps #define SCA_RXS_DIV_2 0x01 /* 2 */ 328 1.3 chopps #define SCA_RXS_DIV_4 0x02 /* 4 */ 329 1.3 chopps #define SCA_RXS_DIV_8 0x03 /* 8 */ 330 1.3 chopps #define SCA_RXS_DIV_16 0x04 /* 16 */ 331 1.3 chopps #define SCA_RXS_DIV_32 0x05 /* 32 */ 332 1.3 chopps #define SCA_RXS_DIV_64 0x06 /* 64 */ 333 1.3 chopps #define SCA_RXS_DIV_128 0x07 /* 128 */ 334 1.3 chopps #define SCA_RXS_DIV_256 0x08 /* 256 */ 335 1.3 chopps #define SCA_RXS_DIV_512 0x09 /* 512 */ 336 1.3 chopps #define SCA_RXS_CLK_MASK 0x70 /* which clock source */ 337 1.3 chopps #define SCA_RXS_CLK_LINE 0x00 /* RXC line input */ 338 1.3 chopps #define SCA_RXS_CLK_LINE_SN 0x20 /* RXC line with noise suppression */ 339 1.3 chopps #define SCA_RXS_CLK_INTERNAL 0x40 /* Baud Rate Gen. output */ 340 1.3 chopps #define SCA_RXS_CLK_ADPLL_OUT 0x60 /* BRG out for ADPLL clock */ 341 1.3 chopps #define SCA_RXS_CLK_ADPLL_IN 0x70 /* line input for ADPLL clock */ 342 1.3 chopps 343 1.12 andvar #define SCA_TXS_DIV_MASK 0x0F /* BRG divisor is 2^(value) */ 344 1.3 chopps #define SCA_TXS_DIV_1 0x00 /* 1 */ 345 1.3 chopps #define SCA_TXS_DIV_2 0x01 /* 2 */ 346 1.3 chopps #define SCA_TXS_DIV_4 0x02 /* 4 */ 347 1.3 chopps #define SCA_TXS_DIV_8 0x03 /* 8 */ 348 1.3 chopps #define SCA_TXS_DIV_16 0x04 /* 16 */ 349 1.3 chopps #define SCA_TXS_DIV_32 0x05 /* 32 */ 350 1.3 chopps #define SCA_TXS_DIV_64 0x06 /* 64 */ 351 1.3 chopps #define SCA_TXS_DIV_128 0x07 /* 128 */ 352 1.3 chopps #define SCA_TXS_DIV_256 0x08 /* 256 */ 353 1.3 chopps #define SCA_TXS_DIV_512 0x09 /* 512 */ 354 1.3 chopps #define SCA_TXS_CLK_MASK 0x70 /* which clock source */ 355 1.3 chopps #define SCA_TXS_CLK_LINE 0x00 /* TXC line input */ 356 1.3 chopps #define SCA_TXS_CLK_INTERNAL 0x40 /* Baud Rate Gen. output */ 357 1.8 wiz #define SCA_TXS_CLK_RXCLK 0x60 /* Receive clock */ 358 1.1 explorer 359 1.1 explorer #define SCA_ST0_RXRDY 0x01 360 1.1 explorer #define SCA_ST0_TXRDY 0x02 361 1.1 explorer #define SCA_ST0_RXINT 0x40 362 1.1 explorer #define SCA_ST0_TXINT 0x80 363 1.1 explorer 364 1.1 explorer #define SCA_ST1_IDLST 0x01 365 1.1 explorer #define SCA_ST1_ABTST 0x02 366 1.1 explorer #define SCA_ST1_DCDCHG 0x04 367 1.1 explorer #define SCA_ST1_CTSCHG 0x08 368 1.1 explorer #define SCA_ST1_FLAG 0x10 369 1.1 explorer #define SCA_ST1_TXIDL 0x40 370 1.1 explorer #define SCA_ST1_UDRN 0x80 371 1.1 explorer 372 1.1 explorer /* ST2 and FST look the same */ 373 1.1 explorer #define SCA_FST_CRCERR 0x04 374 1.1 explorer #define SCA_FST_OVRN 0x08 375 1.1 explorer #define SCA_FST_RESFRM 0x10 376 1.1 explorer #define SCA_FST_ABRT 0x20 377 1.1 explorer #define SCA_FST_SHRT 0x40 378 1.1 explorer #define SCA_FST_EOM 0x80 379 1.1 explorer 380 1.1 explorer #define SCA_ST3_RXENA 0x01 381 1.1 explorer #define SCA_ST3_TXENA 0x02 382 1.1 explorer #define SCA_ST3_DCD 0x04 383 1.1 explorer #define SCA_ST3_CTS 0x08 384 1.1 explorer #define SCA_ST3_ADPLLSRCH 0x10 385 1.1 explorer #define SCA_ST3_TXDATA 0x20 386 1.1 explorer 387 1.1 explorer #define SCA_FIE_EOMFE 0x80 388 1.1 explorer 389 1.1 explorer #define SCA_IE0_RXRDY 0x01 390 1.1 explorer #define SCA_IE0_TXRDY 0x02 391 1.1 explorer #define SCA_IE0_RXINT 0x40 392 1.1 explorer #define SCA_IE0_TXINT 0x80 393 1.1 explorer 394 1.1 explorer #define SCA_IE1_IDLDE 0x01 395 1.1 explorer #define SCA_IE1_ABTDE 0x02 396 1.1 explorer #define SCA_IE1_DCD 0x04 397 1.1 explorer #define SCA_IE1_CTS 0x08 398 1.1 explorer #define SCA_IE1_FLAG 0x10 399 1.1 explorer #define SCA_IE1_IDL 0x40 400 1.1 explorer #define SCA_IE1_UDRN 0x80 401 1.1 explorer 402 1.1 explorer #define SCA_IE2_CRCERR 0x04 403 1.1 explorer #define SCA_IE2_OVRN 0x08 404 1.1 explorer #define SCA_IE2_RESFRM 0x10 405 1.1 explorer #define SCA_IE2_ABRT 0x20 406 1.1 explorer #define SCA_IE2_SHRT 0x40 407 1.1 explorer #define SCA_IE2_EOM 0x80 408 1.1 explorer 409 1.3 chopps 410 1.3 chopps /* 411 1.3 chopps * Interrupt status register bits 412 1.3 chopps */ 413 1.3 chopps #define SCA_ISR0_MSCI_RXRDY0 0x01 /* rx ready port 0 int */ 414 1.3 chopps #define SCA_ISR0_MSCI_TXRDY0 0x02 /* tx ready port 0 int */ 415 1.3 chopps #define SCA_ISR0_MSCI_RXINT0 0x04 /* rx error port 0 int */ 416 1.3 chopps #define SCA_ISR0_MSCI_TXINT0 0x08 /* tx error port 0 int */ 417 1.3 chopps #define SCA_ISR0_MSCI_RXRDY1 0x10 /* rx ready port 1 int */ 418 1.3 chopps #define SCA_ISR0_MSCI_TXRDY1 0x20 /* tx ready port 1 int */ 419 1.3 chopps #define SCA_ISR0_MSCI_RXINT1 0x40 /* rx error port 1 int */ 420 1.3 chopps #define SCA_ISR0_MSCI_TXINT1 0x80 /* tx error port 1 int */ 421 1.3 chopps 422 1.3 chopps #define SCA_ISR1_DMAC_RX0A 0x01 /* dmac channel 0 int a */ 423 1.3 chopps #define SCA_ISR1_DMAC_RX0B 0x02 /* dmac channel 0 int b */ 424 1.3 chopps #define SCA_ISR1_DMAC_TX0A 0x04 /* dmac channel 1 int a */ 425 1.3 chopps #define SCA_ISR1_DMAC_TX0B 0x08 /* dmac channel 1 int b */ 426 1.3 chopps #define SCA_ISR1_DMAC_RX1A 0x10 /* dmac channel 2 int a */ 427 1.3 chopps #define SCA_ISR1_DMAC_RX1B 0x20 /* dmac channel 2 int b */ 428 1.3 chopps #define SCA_ISR1_DMAC_TX1A 0x40 /* dmac channel 3 int a */ 429 1.3 chopps #define SCA_ISR1_DMAC_TX1B 0x80 /* dmac channel 3 int b */ 430 1.3 chopps 431 1.3 chopps #define SCA_ISR2_TIMER_IRQ0 0x10 /* timer channel 0 int */ 432 1.3 chopps #define SCA_ISR2_TIMER_IRQ1 0x20 /* timer channel 1 int */ 433 1.3 chopps #define SCA_ISR2_TIMER_IRQ2 0x40 /* timer channel 2 int */ 434 1.3 chopps #define SCA_ISR2_TIMER_IRQ3 0x80 /* timer channel 3 int */ 435 1.3 chopps 436 1.3 chopps /* masks/values for the Interrupt Control Register (ITCR) */ 437 1.14 andvar #define SCA_ITCR_INTR_PRI_MASK 0x80 /* priority of interrupts */ 438 1.3 chopps #define SCA_ITCR_INTR_PRI_MSCI 0x00 /* msci over dmac */ 439 1.3 chopps #define SCA_ITCR_INTR_PRI_DMAC 0x80 /* dmac over msci */ 440 1.3 chopps #define SCA_ITCR_ACK_MASK 0x60 /* mask for intr ack cycle setting */ 441 1.3 chopps #define SCA_ITCR_ACK_NONE 0x00 /* no intr ack cycle */ 442 1.3 chopps #define SCA_ITCR_ACK_SINGLE 0x20 /* single intr ack cycle */ 443 1.3 chopps #define SCA_ITCR_ACK_DOUBLE 0x40 /* double intr ack cycle */ 444 1.3 chopps #define SCA_ITCR_ACK_RESV 0x60 /* reserverd */ 445 1.3 chopps #define SCA_ITCR_VOUT_MASK 0x10 /* vector output */ 446 1.3 chopps #define SCA_ITCR_VOUT_IVR 0x00 /* use IVR */ 447 1.3 chopps #define SCA_ITCR_VOUT_IMVR 0x10 /* use IMVR */ 448 1.3 chopps 449 1.3 chopps /* 450 1.3 chopps * Interrupt enable register bits 451 1.3 chopps */ 452 1.3 chopps #define SCA_IER0_MSCI_RXRDY0 0x01 /* enable rx ready port 0 int */ 453 1.3 chopps #define SCA_IER0_MSCI_TXRDY0 0x02 /* enable tx ready port 0 int */ 454 1.3 chopps #define SCA_IER0_MSCI_RXINT0 0x04 /* enable rx error port 0 int */ 455 1.3 chopps #define SCA_IER0_MSCI_TXINT0 0x08 /* enable tx error port 0 int */ 456 1.3 chopps #define SCA_IER0_MSCI_RXRDY1 0x10 /* enable rx ready port 1 int */ 457 1.3 chopps #define SCA_IER0_MSCI_TXRDY1 0x20 /* enable tx ready port 1 int */ 458 1.3 chopps #define SCA_IER0_MSCI_RXINT1 0x40 /* enable rx error port 1 int */ 459 1.3 chopps #define SCA_IER0_MSCI_TXINT1 0x80 /* enable tx error port 1 int */ 460 1.3 chopps 461 1.3 chopps #define SCA_IER1_DMAC_RX0A 0x01 /* enable dmac channel 0 int a */ 462 1.3 chopps #define SCA_IER1_DMAC_RX0B 0x02 /* enable dmac channel 0 int b */ 463 1.3 chopps #define SCA_IER1_DMAC_TX0A 0x04 /* enable dmac channel 1 int a */ 464 1.3 chopps #define SCA_IER1_DMAC_TX0B 0x08 /* enable dmac channel 1 int b */ 465 1.3 chopps #define SCA_IER1_DMAC_RX1A 0x10 /* enable dmac channel 2 int a */ 466 1.3 chopps #define SCA_IER1_DMAC_RX1B 0x20 /* enable dmac channel 2 int b */ 467 1.3 chopps #define SCA_IER1_DMAC_TX1A 0x40 /* enable dmac channel 3 int a */ 468 1.3 chopps #define SCA_IER1_DMAC_TX1B 0x80 /* enable dmac channel 3 int b */ 469 1.3 chopps 470 1.3 chopps #define SCA_IER2_TIMER_IRQ0 0x10 /* enable timer channel 0 int */ 471 1.3 chopps #define SCA_IER2_TIMER_IRQ1 0x20 /* enable timer channel 1 int */ 472 1.3 chopps #define SCA_IER2_TIMER_IRQ2 0x40 /* enable timer channel 2 int */ 473 1.3 chopps #define SCA_IER2_TIMER_IRQ3 0x80 /* enable timer channel 3 int */ 474 1.3 chopps 475 1.1 explorer /* This is for RRC, TRC0 and TRC1. */ 476 1.1 explorer #define SCA_RCR_MASK 0x1F 477 1.1 explorer 478 1.1 explorer #define SCA_IE1_ 479 1.1 explorer 480 1.1 explorer #define SCA_IV_CHAN0 0x00 481 1.1 explorer #define SCA_IV_CHAN1 0x20 482 1.1 explorer 483 1.1 explorer #define SCA_IV_RXRDY 0x04 484 1.1 explorer #define SCA_IV_TXRDY 0x06 485 1.1 explorer #define SCA_IV_RXINT 0x08 486 1.1 explorer #define SCA_IV_TXINT 0x0A 487 1.1 explorer 488 1.1 explorer #define SCA_IV_DMACH0 0x00 489 1.1 explorer #define SCA_IV_DMACH1 0x08 490 1.1 explorer #define SCA_IV_DMACH2 0x20 491 1.1 explorer #define SCA_IV_DMACH3 0x28 492 1.1 explorer 493 1.1 explorer #define SCA_IV_DMIA 0x14 494 1.1 explorer #define SCA_IV_DMIB 0x16 495 1.1 explorer 496 1.1 explorer #define SCA_IV_TIMER0 0x1C 497 1.1 explorer #define SCA_IV_TIMER1 0x1E 498 1.1 explorer #define SCA_IV_TIMER2 0x3C 499 1.1 explorer #define SCA_IV_TIMER3 0x3E 500 1.1 explorer 501 1.1 explorer /* 502 1.1 explorer * DMA registers 503 1.1 explorer */ 504 1.1 explorer #define SCA_DSR_EOT 0x80 505 1.1 explorer #define SCA_DSR_EOM 0x40 506 1.1 explorer #define SCA_DSR_BOF 0x20 507 1.1 explorer #define SCA_DSR_COF 0x10 508 1.1 explorer #define SCA_DSR_DE 0x02 509 1.1 explorer #define SCA_DSR_DEWD 0x01 /* write DISABLE DE bit */ 510 1.1 explorer 511 1.1 explorer #define SCA_DMR_TMOD 0x10 512 1.1 explorer #define SCA_DMR_NF 0x04 513 1.1 explorer #define SCA_DMR_CNTE 0x02 514 1.1 explorer 515 1.1 explorer #define SCA_DMER_EN 0x80 516 1.1 explorer 517 1.1 explorer #define SCA_DCR_ABRT 0x01 518 1.1 explorer #define SCA_DCR_FCCLR 0x02 /* Clear frame end intr counter */ 519 1.1 explorer 520 1.1 explorer #define SCA_DIR_EOT 0x80 521 1.1 explorer #define SCA_DIR_EOM 0x40 522 1.1 explorer #define SCA_DIR_BOF 0x20 523 1.1 explorer #define SCA_DIR_COF 0x10 524 1.1 explorer 525 1.1 explorer #define SCA_PCR_BRC 0x10 526 1.1 explorer #define SCA_PCR_CCC 0x08 527 1.1 explorer #define SCA_PCR_PR2 0x04 528 1.1 explorer #define SCA_PCR_PR1 0x02 529 1.1 explorer #define SCA_PCR_PR0 0x01 530 1.1 explorer 531 1.10 perry /* 532 1.1 explorer * Descriptor Status byte bit definitions: 533 1.1 explorer * 534 1.1 explorer * Bit Receive Status Transmit Status 535 1.1 explorer * ------------------------------------------------- 536 1.1 explorer * 7 EOM EOM 537 1.1 explorer * 6 Short Frame ... 538 1.1 explorer * 5 Abort ... 539 1.1 explorer * 4 Residual bit ... 540 1.1 explorer * 3 Overrun ... 541 1.1 explorer * 2 CRC ... 542 1.1 explorer * 1 ... ... 543 1.1 explorer * 0 ... EOT 544 1.1 explorer * ------------------------------------------------- 545 1.1 explorer */ 546 1.1 explorer 547 1.1 explorer #define ST_EOM 0x80 /* End of frame */ 548 1.1 explorer #define ST_SHRT 0x40 /* Short frame */ 549 1.1 explorer #define ST_ABT 0x20 /* Abort detected */ 550 1.1 explorer #define ST_RBIT 0x10 /* Residual bit detected */ 551 1.1 explorer #define ST_OVRN 0x8 /* Overrun error */ 552 1.1 explorer #define ST_CRCE 0x4 /* CRC Error */ 553 1.1 explorer #define ST_OVFL 0x1 /* Buffer OverFlow error (software defined) */ 554 1.1 explorer 555 1.1 explorer #define ST_EOT 1 /* End of transmit command */ 556 1.10 perry 557 1.1 explorer 558 1.1 explorer /* DMA Status register (DSR) bit definitions */ 559 1.1 explorer #define DSR_EOT 0x80 /* end of transfer EOT bit */ 560 1.1 explorer #define DSR_EOM 0x40 /* end of frame EOM bit */ 561 1.1 explorer #define DSR_BOF 0x20 /* buffer overflow BOF bit */ 562 1.1 explorer #define DSR_COF 0x10 /* counter overflow COF bit */ 563 1.1 explorer #define DSR_DWE 1 /* write disable DWE bit */ 564 1.1 explorer 565 1.1 explorer /* MSCI Status register 0 bits */ 566 1.1 explorer 567 1.1 explorer #define RXRDY_BIT 1 /* RX ready */ 568 1.1 explorer #define TXRDY_BIT 2 /* TX ready */ 569 1.1 explorer 570 1.1 explorer #define ST3_CTS 8 /* modem input /CTS bit */ 571 1.1 explorer #define ST3_DCD 4 /* modem input /DCD bit */ 572 1.3 chopps 573 1.3 chopps /* 574 1.3 chopps * timer register values 575 1.3 chopps */ 576 1.3 chopps #define SCA_TCSR_TME 0x10 /* timer enable */ 577 1.3 chopps #define SCA_TCSR_ECMI 0x40 /* interrupt enable */ 578 1.3 chopps #define SCA_TCSR_CMF 0x80 /* timer complete */ 579 1.3 chopps 580 1.3 chopps #define SCA_TEPR_DIV_1 0x00 /* 2^(n) prescale divisor */ 581 1.3 chopps #define SCA_TEPR_DIV_2 0x01 582 1.3 chopps #define SCA_TEPR_DIV_4 0x02 583 1.3 chopps #define SCA_TEPR_DIV_8 0x03 584 1.3 chopps #define SCA_TEPR_DIV_16 0x04 585 1.3 chopps #define SCA_TEPR_DIV_32 0x05 586 1.3 chopps #define SCA_TEPR_DIV_64 0x06 587 1.3 chopps #define SCA_TEPR_DIV_128 0x06 588 1.1 explorer 589 1.1 explorer 590 1.1 explorer /* TX and RX Clock Source */ 591 1.1 explorer #define CLK_LINE 0x00 /* TX/RX line input */ 592 1.1 explorer #define CLK_BRG 0x40 /* internal baud rate generator */ 593 1.1 explorer #define CLK_RXC 0x60 /* receive clock */ 594 1.1 explorer 595 1.10 perry /* Clocking options */ 596 1.1 explorer #define CLK_INT 0 /* Internal - Baud Rate generator output */ 597 1.1 explorer #define CLK_EXT 1 /* External - both clocks */ 598 1.1 explorer #define CLK_RXCI 2 /* External - Receive Clock only */ 599 1.1 explorer #define CLK_EETC 3 /* EETC clock: TX = int. / RX = ext.*/ 600 1.1 explorer 601 1.1 explorer #define SCA_DMAC_OFF_0 0x00 /* offset of DMAC for port 0 */ 602 1.1 explorer #define SCA_DMAC_OFF_1 0x40 /* offset of DMAC for port 1 */ 603 1.1 explorer #define SCA_MSCI_OFF_0 0x00 /* offset of MSCI for port 0 */ 604 1.1 explorer #define SCA_MSCI_OFF_1 0x20 /* offset of MSCI for port 1 */ 605 1.1 explorer 606 1.1 explorer /* 607 1.1 explorer * DMA constraints 608 1.1 explorer */ 609 1.1 explorer #define SCA_DMA_ALIGNMENT (64 * 1024) /* 64 KB alignment */ 610 1.9 wiz #define SCA_DMA_BOUNDARY (16 * 1024 * 1024) /* 16 MB region */ 611 1.1 explorer 612 1.2 kleink #endif /* _DEV_IC_HD64570REG_H_ */ 613