hd64570.h revision 19235
1227825Stheraven/* 2227825Stheraven * Copyright (c) 1995 John Hay. All rights reserved. 3227825Stheraven * 4227825Stheraven * Redistribution and use in source and binary forms, with or without 5227825Stheraven * modification, are permitted provided that the following conditions 6227825Stheraven * are met: 7227825Stheraven * 1. Redistributions of source code must retain the above copyright 8227825Stheraven * notice, this list of conditions and the following disclaimer. 9227825Stheraven * 2. Redistributions in binary form must reproduce the above copyright 10227825Stheraven * notice, this list of conditions and the following disclaimer in the 11227825Stheraven * documentation and/or other materials provided with the distribution. 12227825Stheraven * 3. All advertising materials mentioning features or use of this software 13227825Stheraven * must display the following acknowledgement: 14227825Stheraven * This product includes software developed by [your name] 15227825Stheraven * and [any other names deserving credit ] 16227825Stheraven * 4. Neither the name of the author nor the names of any co-contributors 17227825Stheraven * may be used to endorse or promote products derived from this software 18227825Stheraven * without specific prior written permission. 19227825Stheraven * 20227825Stheraven * THIS SOFTWARE IS PROVIDED BY [your name] AND CONTRIBUTORS ``AS IS'' AND 21227825Stheraven * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22227825Stheraven * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23227825Stheraven * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 24227825Stheraven * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25227825Stheraven * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 26227825Stheraven * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 27227825Stheraven * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 28227825Stheraven * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 29227825Stheraven * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30227825Stheraven * SUCH DAMAGE. 31227825Stheraven * 32227825Stheraven * $Id: hd64570.h,v 1.2 1996/03/17 00:29:35 peter Exp $ 33227825Stheraven */ 34227825Stheraven#ifndef _HD64570_H_ 35227825Stheraven#define _HD64570_H_ 36227825Stheraven 37227825Stheraventypedef struct msci_channel 38227825Stheraven { 39227825Stheraven union 40227825Stheraven { 41227825Stheraven unsigned short us_trb; /* rw */ 42227825Stheraven struct 43227825Stheraven { 44262801Sdim unsigned char uc_trbl; 45227825Stheraven unsigned char uc_trbh; 46227825Stheraven }uc_trb; 47227825Stheraven }u_trb; 48227825Stheraven unsigned char st0; /* ro */ 49227825Stheraven unsigned char st1; /* rw */ 50227825Stheraven unsigned char st2; /* rw */ 51227825Stheraven unsigned char st3; /* ro */ 52227825Stheraven unsigned char fst; /* rw */ 53227825Stheraven unsigned char unused0; 54227825Stheraven unsigned char ie0; /* rw */ 55227825Stheraven unsigned char ie1; /* rw */ 56227825Stheraven unsigned char ie2; /* rw */ 57227825Stheraven unsigned char fie; /* rw */ 58227825Stheraven unsigned char cmd; /* wo */ 59227825Stheraven unsigned char unused1; 60227825Stheraven unsigned char md0; /* rw */ 61227825Stheraven unsigned char md1; /* rw */ 62227825Stheraven unsigned char md2; /* rw */ 63227825Stheraven unsigned char ctl; /* rw */ 64227825Stheraven unsigned char sa0; /* rw */ 65227825Stheraven unsigned char sa1; /* rw */ 66227825Stheraven unsigned char idl; /* rw */ 67227825Stheraven unsigned char tmc; /* rw */ 68227825Stheraven unsigned char rxs; /* rw */ 69227825Stheraven unsigned char txs; /* rw */ 70227825Stheraven unsigned char trc0; /* rw */ 71227825Stheraven unsigned char trc1; /* rw */ 72227825Stheraven unsigned char rrc; /* rw */ 73227825Stheraven unsigned char unused2; 74227825Stheraven unsigned char cst0; /* rw */ 75227825Stheraven unsigned char cst1; /* rw */ 76227825Stheraven unsigned char unused3[2]; 77227825Stheraven }msci_channel; 78227825Stheraven 79227825Stheraven#define trb u_trb.us_trb 80227825Stheraven#define trbl u_trb.uc_trb.uc_trbl 81227825Stheraven#define trbh u_trb.uc_trb.uc_trbh 82227825Stheraven 83227825Stheraventypedef struct timer_channel 84227825Stheraven { 85227825Stheraven unsigned short tcnt; /* rw */ 86227825Stheraven unsigned short tconr; /* wo */ 87227825Stheraven unsigned char tcsr; /* rw */ 88227825Stheraven unsigned char tepr; /* rw */ 89227825Stheraven unsigned char unused[2]; 90227825Stheraven }timer_channel; 91227825Stheraven 92227825Stheraventypedef struct dmac_channel 93227825Stheraven { 94227825Stheraven unsigned short dar; /* rw */ 95227825Stheraven unsigned char darb; /* rw */ 96227825Stheraven unsigned char unused0; 97227825Stheraven unsigned short sar; /* rw On odd numbered dmacs (tx) only */ 98227825Stheraven unsigned char sarb; /* rw */ 99227825Stheraven#define cpb sarb 100227825Stheraven unsigned char unused1; 101227825Stheraven unsigned short cda; /* rw */ 102227825Stheraven unsigned short eda; /* rw */ 103227825Stheraven unsigned short bfl; /* rw On even numbered dmacs (rx) only */ 104227825Stheraven unsigned short bcr; /* rw */ 105227825Stheraven unsigned char dsr; /* rw */ 106227825Stheraven unsigned char dmr; /* rw */ 107227825Stheraven unsigned char unused2; 108227825Stheraven unsigned char fct; /* rw */ 109227825Stheraven unsigned char dir; /* rw */ 110227825Stheraven unsigned char dcr; /* rw */ 111227825Stheraven unsigned char unused3[10]; 112227825Stheraven }dmac_channel; 113227825Stheraven 114227825Stheraven/* x is the channel number. rx channels are even numbered and tx, odd. */ 115227825Stheraven#define DMAC_RXCH(x) ((x*2) + 0) 116227825Stheraven#define DMAC_TXCH(x) ((x*2) + 1) 117227825Stheraven 118227825Stheraventypedef struct sca_regs 119227825Stheraven { 120227825Stheraven unsigned char lpr; /* rw */ 121227825Stheraven unsigned char unused0; /* -- */ 122227825Stheraven /* Wait system */ 123227825Stheraven unsigned char pabr0; /* rw */ 124227825Stheraven unsigned char pabr1; /* rw */ 125227825Stheraven unsigned char wcrl; /* rw */ 126227825Stheraven unsigned char wcrm; /* rw */ 127227825Stheraven unsigned char wcrh; /* rw */ 128227825Stheraven unsigned char unused1; 129227825Stheraven /* DMAC */ 130227825Stheraven unsigned char pcr; /* rw */ 131227825Stheraven unsigned char dmer; /* rw */ 132227825Stheraven unsigned char unused2[6]; 133227825Stheraven /* Interrupt */ 134227825Stheraven unsigned char isr0; /* ro */ 135227825Stheraven unsigned char isr1; /* ro */ 136227825Stheraven unsigned char isr2; /* ro */ 137227825Stheraven unsigned char unused3; 138227825Stheraven unsigned char ier0; /* rw */ 139227825Stheraven unsigned char ier1; /* rw */ 140227825Stheraven unsigned char ier2; /* rw */ 141227825Stheraven unsigned char unused4; 142227825Stheraven unsigned char itcr; /* rw */ 143227825Stheraven unsigned char unused5; 144227825Stheraven unsigned char ivr; /* rw */ 145227825Stheraven unsigned char unused6; 146227825Stheraven unsigned char imvr; /* rw */ 147227825Stheraven unsigned char unused7[3]; 148227825Stheraven /* MSCI Channel 0 */ 149227825Stheraven msci_channel msci[2]; 150227825Stheraven timer_channel timer[4]; 151227825Stheraven dmac_channel dmac[4]; 152227825Stheraven }sca_regs; 153227825Stheraven 154227825Stheraven#define SCA_CMD_TXRESET 0x01 155227825Stheraven#define SCA_CMD_TXENABLE 0x02 156227825Stheraven#define SCA_CMD_TXDISABLE 0x03 157227825Stheraven#define SCA_CMD_TXCRCINIT 0x04 158227825Stheraven#define SCA_CMD_TXCRCEXCL 0x05 159227825Stheraven#define SCA_CMS_TXEOM 0x06 160227825Stheraven#define SCA_CMD_TXABORT 0x07 161227825Stheraven#define SCA_CMD_MPON 0x08 162227825Stheraven#define SCA_CMD_TXBCLEAR 0x09 163227825Stheraven 164227825Stheraven#define SCA_CMD_RXRESET 0x11 165227825Stheraven#define SCA_CMD_RXENABLE 0x12 166232950Stheraven#define SCA_CMD_RXDISABLE 0x13 167232950Stheraven#define SCA_CMD_RXCRCINIT 0x14 168227825Stheraven#define SCA_CMD_RXMSGREJ 0x15 169227825Stheraven#define SCA_CMD_MPSEARCH 0x16 170227825Stheraven#define SCA_CMD_RXCRCEXCL 0x17 171227825Stheraven#define SCA_CMD_RXCRCCALC 0x18 172227825Stheraven 173227825Stheraven#define SCA_CMD_NOP 0x00 174262801Sdim#define SCA_CMD_RESET 0x21 175227825Stheraven#define SCA_CMD_SEARCH 0x31 176227825Stheraven 177227825Stheraven#define SCA_MD0_CRC_1 0x01 178227825Stheraven#define SCA_MD0_CRC_CCITT 0x02 179227825Stheraven#define SCA_MD0_CRC_ENABLE 0x04 180227825Stheraven#define SCA_MD0_AUTO_ENABLE 0x10 181227825Stheraven#define SCA_MD0_MODE_ASYNC 0x00 182227825Stheraven#define SCA_MD0_MODE_BYTESYNC1 0x20 183227825Stheraven#define SCA_MD0_MODE_BISYNC 0x40 184227825Stheraven#define SCA_MD0_MODE_BYTESYNC2 0x60 185227825Stheraven#define SCA_MD0_MODE_HDLC 0x80 186227825Stheraven 187227825Stheraven#define SCA_MD1_NOADDRCHK 0x00 188227825Stheraven#define SCA_MD1_SNGLADDR1 0x40 189227825Stheraven#define SCA_MD1_SNGLADDR2 0x80 190227825Stheraven#define SCA_MD1_DUALADDR 0xC0 191227825Stheraven 192227825Stheraven#define SCA_MD2_DUPLEX 0x00 193227825Stheraven#define SCA_MD2_ECHO 0x01 194227825Stheraven#define SCA_MD2_LOOPBACK 0x03 195227825Stheraven#define SCA_MD2_ADPLLx8 0x00 196227825Stheraven#define SCA_MD2_ADPLLx16 0x08 197227825Stheraven#define SCA_MD2_ADPLLx32 0x10 198227825Stheraven#define SCA_MD2_NRZ 0x00 199227825Stheraven#define SCA_MD2_NRZI 0x20 200227825Stheraven#define SCA_MD2_MANCHESTER 0x80 201227825Stheraven#define SCA_MD2_FM0 0xC0 202227825Stheraven#define SCA_MD2_FM1 0xA0 203227825Stheraven 204227825Stheraven#define SCA_CTL_RTS 0x01 205227825Stheraven#define SCA_CTL_IDLPAT 0x10 206227825Stheraven#define SCA_CTL_UDRNC 0x20 207227825Stheraven 208227825Stheraven#define SCA_RXS_DIV_MASK 0x0F 209227825Stheraven#define SCA_RXS_DIV1 0x00 210227825Stheraven#define SCA_RXS_DIV2 0x01 211227825Stheraven#define SCA_RXS_DIV4 0x02 212227825Stheraven#define SCA_RXS_DIV8 0x03 213227825Stheraven#define SCA_RXS_DIV16 0x04 214227825Stheraven#define SCA_RXS_DIV32 0x05 215227825Stheraven#define SCA_RXS_DIV64 0x06 216227825Stheraven#define SCA_RXS_DIV128 0x07 217227825Stheraven#define SCA_RXS_DIV256 0x08 218227825Stheraven#define SCA_RXS_DIV512 0x09 219227825Stheraven#define SCA_RXS_CLK_RXC0 0x00 220227825Stheraven#define SCA_RXS_CLK_RXC1 0x20 221227825Stheraven#define SCA_RXS_CLK_INT 0x40 222227825Stheraven#define SCA_RXS_CLK_ADPLL_OUT 0x60 223227825Stheraven#define SCA_RXS_CLK_ADPLL_IN 0x70 224227825Stheraven 225227825Stheraven#define SCA_TXS_DIV_MASK 0x0F 226227825Stheraven#define SCA_TXS_DIV1 0x00 227227825Stheraven#define SCA_TXS_DIV2 0x01 228227825Stheraven#define SCA_TXS_DIV4 0x02 229227825Stheraven#define SCA_TXS_DIV8 0x03 230227825Stheraven#define SCA_TXS_DIV16 0x04 231227825Stheraven#define SCA_TXS_DIV32 0x05 232227825Stheraven#define SCA_TXS_DIV64 0x06 233227825Stheraven#define SCA_TXS_DIV128 0x07 234227825Stheraven#define SCA_TXS_DIV256 0x08 235227825Stheraven#define SCA_TXS_DIV512 0x09 236227825Stheraven#define SCA_TXS_CLK_TXC 0x00 237227825Stheraven#define SCA_TXS_CLK_INT 0x40 238227825Stheraven#define SCA_TXS_CLK_RX 0x60 239227825Stheraven 240227825Stheraven#define SCA_ST0_RXRDY 0x01 241227825Stheraven#define SCA_ST0_TXRDY 0x02 242227825Stheraven#define SCA_ST0_RXINT 0x40 243227825Stheraven#define SCA_ST0_TXINT 0x80 244227825Stheraven 245227825Stheraven#define SCA_ST1_IDLST 0x01 246227825Stheraven#define SCA_ST1_ABTST 0x02 247227825Stheraven#define SCA_ST1_DCDCHG 0x04 248227825Stheraven#define SCA_ST1_CTSCHG 0x08 249227825Stheraven#define SCA_ST1_FLAG 0x10 250227825Stheraven#define SCA_ST1_TXIDL 0x40 251227825Stheraven#define SCA_ST1_UDRN 0x80 252227825Stheraven 253227825Stheraven/* ST2 and FST look the same */ 254227825Stheraven#define SCA_FST_CRCERR 0x04 255227825Stheraven#define SCA_FST_OVRN 0x08 256227825Stheraven#define SCA_FST_RESFRM 0x10 257227825Stheraven#define SCA_FST_ABRT 0x20 258227825Stheraven#define SCA_FST_SHRT 0x40 259227825Stheraven#define SCA_FST_EOM 0x80 260227825Stheraven 261227825Stheraven#define SCA_ST3_RXENA 0x01 262227825Stheraven#define SCA_ST3_TXENA 0x02 263227825Stheraven#define SCA_ST3_DCD 0x04 264227825Stheraven#define SCA_ST3_CTS 0x08 265227825Stheraven#define SCA_ST3_ADPLLSRCH 0x10 266262801Sdim#define SCA_ST3_TXDATA 0x20 267227825Stheraven 268227825Stheraven#define SCA_FIE_EOMFE 0x80 269227825Stheraven 270227825Stheraven#define SCA_IE0_RXRDY 0x01 271227825Stheraven#define SCA_IE0_TXRDY 0x02 272227825Stheraven#define SCA_IE0_RXINT 0x40 273227825Stheraven#define SCA_IE0_TXINT 0x80 274227825Stheraven 275227825Stheraven#define SCA_IE1_IDLDE 0x01 276227825Stheraven#define SCA_IE1_ABTDE 0x02 277227825Stheraven#define SCA_IE1_DCD 0x04 278227825Stheraven#define SCA_IE1_CTS 0x08 279227825Stheraven#define SCA_IE1_FLAG 0x10 280227825Stheraven#define SCA_IE1_IDL 0x40 281227825Stheraven#define SCA_IE1_UDRN 0x80 282262801Sdim 283262801Sdim#define SCA_IE2_CRCERR 0x04 284262801Sdim#define SCA_IE2_OVRN 0x08 285262801Sdim#define SCA_IE2_RESFRM 0x10 286262801Sdim#define SCA_IE2_ABRT 0x20 287227825Stheraven#define SCA_IE2_SHRT 0x40 288232950Stheraven#define SCA_IE2_EOM 0x80 289227825Stheraven 290232950Stheraven/* This is for RRC, TRC0 and TRC1. */ 291232950Stheraven#define SCA_RCR_MASK 0x1F 292227825Stheraven 293227825Stheraven#define SCA_IE1_ 294227825Stheraven 295227825Stheraven#define SCA_IV_CHAN0 0x00 296227825Stheraven#define SCA_IV_CHAN1 0x20 297227825Stheraven 298227825Stheraven#define SCA_IV_RXRDY 0x04 299227825Stheraven#define SCA_IV_TXRDY 0x06 300227825Stheraven#define SCA_IV_RXINT 0x08 301227825Stheraven#define SCA_IV_TXINT 0x0A 302227825Stheraven 303227825Stheraven#define SCA_IV_DMACH0 0x00 304227825Stheraven#define SCA_IV_DMACH1 0x08 305227825Stheraven#define SCA_IV_DMACH2 0x20 306227825Stheraven#define SCA_IV_DMACH3 0x28 307227825Stheraven 308227825Stheraven#define SCA_IV_DMIA 0x14 309227825Stheraven#define SCA_IV_DMIB 0x16 310227825Stheraven 311227825Stheraven#define SCA_IV_TIMER0 0x1C 312227825Stheraven#define SCA_IV_TIMER1 0x1E 313227825Stheraven#define SCA_IV_TIMER2 0x3C 314227825Stheraven#define SCA_IV_TIMER3 0x3E 315227825Stheraven 316227825Stheraven/* 317227825Stheraven * DMA registers 318227825Stheraven */ 319227825Stheraven#define SCA_DSR_EOT 0x80 320227825Stheraven#define SCA_DSR_EOM 0x40 321227825Stheraven#define SCA_DSR_BOF 0x20 322227825Stheraven#define SCA_DSR_COF 0x10 323227825Stheraven#define SCA_DSR_DE 0x02 324227825Stheraven#define SCA_DSR_DWE 0x01 325227825Stheraven 326227825Stheraven#define SCA_DMR_TMOD 0x10 327227825Stheraven#define SCA_DMR_NF 0x04 328227825Stheraven#define SCA_DMR_CNTE 0x02 329227825Stheraven 330227825Stheraven#define SCA_DMER_EN 0x80 331227825Stheraven 332227825Stheraven#define SCA_DCR_ABRT 0x01 333227825Stheraven#define SCA_DCR_FCCLR 0x02 /* Clear frame end intr counter */ 334227825Stheraven 335227825Stheraven#define SCA_DIR_EOT 0x80 336227825Stheraven#define SCA_DIR_EOM 0x40 337227825Stheraven#define SCA_DIR_BOF 0x20 338227825Stheraven#define SCA_DIR_COF 0x10 339227825Stheraven 340227825Stheraven#define SCA_PCR_BRC 0x10 341227825Stheraven#define SCA_PCR_CCC 0x08 342227825Stheraven#define SCA_PCR_PR2 0x04 343227825Stheraven#define SCA_PCR_PR1 0x02 344227825Stheraven#define SCA_PCR_PR0 0x01 345227825Stheraven 346227825Stheraventypedef struct sca_descriptor 347227825Stheraven { 348227825Stheraven unsigned short cp; 349227825Stheraven unsigned short bp; 350227825Stheraven unsigned char bpb; 351227825Stheraven unsigned char unused0; 352227825Stheraven unsigned short len; 353227825Stheraven unsigned char stat; 354227825Stheraven unsigned char unused1; 355227825Stheraven }sca_descriptor; 356227825Stheraven 357227825Stheraven#define SCA_DESC_EOT 0x01 358227825Stheraven#define SCA_DESC_CRC 0x04 359227825Stheraven#define SCA_DESC_OVRN 0x08 360227825Stheraven#define SCA_DESC_RESD 0x10 361227825Stheraven#define SCA_DESC_ABORT 0x20 362227825Stheraven#define SCA_DESC_SHRTFRM 0x40 363227825Stheraven#define SCA_DESC_EOM 0x80 364227825Stheraven#define SCA_DESC_ERRORS 0x7C 365227825Stheraven 366227825Stheraven/* 367227825Stheraven*************************************************************************** 368227825Stheraven** END 369227825Stheraven*************************************************************************** 370227825Stheraven**/ 371227825Stheraven#endif /* _HD64570_H_ */ 372227825Stheraven 373227825Stheraven