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