summaryrefslogtreecommitdiffstats
path: root/sys/dev/se/sereg.h
blob: f826bd40cfabe1851f0924bf6846051b52042ba1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
/*-
 * Copyright (c) 2002 Jake Burkholder.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $FreeBSD$
 */

#ifndef _DEV_SE_SEREG_H_
#define	_DEV_SE_SEREG_H_

#define	SE_DIV(n, m)	(((m) << 6) | ((n) - 1))
#define	SE_DIV_9600	SE_DIV(48, 2)
#define	SE_DIV_19200	SE_DIV(48, 1)
#define	SE_DIV_38400	SE_DIV(24, 1)
#define	SE_DIV_115200	SE_DIV(8, 1)

#define	SE_CHA		0x0	/* channel a offset */
#define	SE_CHB		0x40	/* channel b offset */

#define	SE_RFIFO	0x0	/* receive fifo */
#define	SE_XFIFO	0x0	/* transmit fifo */

#define	SE_STAR		0x20	/* status register */
#define	STAR_CTS	0x2	/*  clear to send state */
#define	STAR_CEC	0x4	/*  command executing */
#define	STAR_TEC	0x8	/*  tic executing */
#define	STAR_FCS	0x10	/*  flow control status */
#define	STAR_RFNE	0x20	/*  receive fifo not empty */
#define	STAR_XFW	0x40	/*  transmit fifo write enable */
#define	STAR_XDOV	0x80	/*  transmit data overflow */

#define	SE_CMDR		0x20	/* command register */
#define	CMDR_XRES	0x1	/*  transmitter reset */
#define	CMDR_XF		0x8	/*  transmit frame */
#define	CMDR_STI	0x10	/*  start timer */
#define	CMDR_RFRD	0x20	/*  receive fifo read enable */
#define	CMDR_RRES	0x40	/*  reveiver reset */
#define	CMDR_RMC	0x80	/*  receive message complete */

#define	SE_MODE		0x22	/* mode register */
#define	MODE_TLP	0x1	/*  test loop */
#define	MODE_TRS	0x2	/*  timer resolution */
#define	MODE_RTS	0x4	/*  request to send */
#define	MODE_RAC	0x8	/*  receiver active */
#define	MODE_FLON	0x10	/*  flow control on */
#define	MODE_FCTS	0x20	/*  flow control using cts */
#define	MODE_FRTS	0x40	/*  flow control using rts */

#define	SE_TIMR		0x23	/* timer register */
#define	SE_XON		0x24	/* xon character */
#define	SE_XOFF		0x25	/* xoff character */
#define	SE_TCR		0x26	/* transmit character register */

#define	SE_DAFO		0x27	/* data format */
#define	DAFO_CHL	0x2	/*  character length */
#define	DAFO_CHL_8	0x0	/*   8 bits */
#define	DAFO_CHL_7	0x1	/*   7 bits */
#define	DAFO_CHL_6	0x2	/*   6 bits */
#define	DAFO_CHL_5	0x3	/*   5 bits */
#define	DAFO_PARE	0x4	/*  parity enable */
#define	DAFO_PAR	0x18	/*  parity format */
#define	DAFO_STOP	0x20	/*  stop bit */
#define	DAFO_XBRK	0x40	/*  transmit break */

#define	SE_RFC		0x28	/* rfifo control register */
#define	RFC_TCDE	0x1	/*  termination character detection enable */
#define	RFC_RFTH	0xc	/*  rfifo threshold level */
#define	RFC_RFTH_2	0x0	/*   2 bytes */
#define	RFC_RFTH_4	0x4	/*   4 bytes */
#define	RFC_RFTH_16	0x8	/*   16 bytes */
#define	RFC_RFTH_32	0xc	/*   32 bytes */
#define	RFC_RFDF	0x10	/*  rfifo data format */
#define	RFC_DXS		0x20	/*  disable storage of xon/xoff characters */
#define	RFC_DPS		0x40	/*  disable parity storage */

#define	SE_RBCL		0x2a	/* receive byte count low */
#define	SE_XBCL		0x2a	/* transmit byte count low */
#define	SE_RBCH		0x2b	/* receive byte count high */
#define	SE_XBCH		0x2b	/* transmit byte count high */

#define	SE_CCR0		0x2c	/* channel configuration register 0 */
#define	CCR0_SM		0x3	/*  serial mode */
#define	CCR0_SM_HDLC	0x0	/*   hdlc/sdlc mode */
#define	CCR0_SM_SDLC	0x1	/*   sdlc loop mode */
#define	CCR0_SM_BISYNC	0x2	/*   bisync mode */
#define	CCR0_SM_ASYNC	0x3	/*   async mode */
#define	CCR0_SC		0x1c	/*  serial configuration */
#define	CCR0_SC_NRZ	0x0	/*   nrz data encoding */
#define	CCR0_SC_NRZI	0x2	/*   nrzi data encoding */
#define	CCR0_SC_FM0	0x4	/*   fm0 data encoding */
#define	CCR0_SC_FM1	0x5	/*   fm1 data encoding */
#define	CCR0_SC_MCHSTR	0x6	/*   manchester data encoding */
#define	CCR0_MCE	0x40	/*  master clock enable */
#define	CCR0_PU		0x80	/*  power up */

#define	SE_CCR1		0x2d	/* channel configuration register 1 */
#define	CCR1_CM		0x7	/*  clock mode */
#define	CCR1_CM_7	0x7	/*   clock mode 7 */
#define	CCR1_BCR	0x8	/*  bit clock rate */
#define	CCR1_ODS	0x10	/*  output driver select */

#define	SE_CCR2		0x2e	/* channel configuration register 2 */
#define	CCR2_DIV	0x1	/*  data inversion */
#define	CCR2_RWX	0x4	/*  read/write exchange */
#define	CCR2_TOE	0x8	/*  txclk ouput enable */
#define	CCR2_SSEL	0x10	/*  clock source select */
#define	CCR2_BDF	0x20	/*  baud rate division factor */
#define	CCR2_BR8	0x40	/*  baud rate 8 */
#define	CCR2_BR9	0x80	/*  baud rate 9 */
#define	CCR2_RCS0	0x10	/*  receive clock shift 0 (5) */
#define	CCR2_XCS0	0x20	/*  transmit clock shift 0 (5) */
#define	CCR2_SOC0	0x40	/*  special output control 0 (0a, 1, 4, 5) */
#define	CCR2_SOC1	0x80	/*  special output control 1 (0a, 1, 4, 5) */

#define	SE_CCR3		0x2f	/* channel configuration register 3 */
#define	CCR3_PSD	0x1	/*  dpll phase shift disable */

#define	SE_TSAX		0x30	/* transmit timeslot assignment register */
#define	SE_TSAR		0x31	/* receive timeslot assignment register */
#define	SE_XCCR		0x32	/* transmit channel capacity register */
#define	SE_RCCR		0x33	/* receive channel capacity register */

#define	SE_VSTR		0x34	/* version status register */
#define	VSTR_VN		0xf	/*  version number 0 */
#define	VSTR_DPLA	0x40	/*  dpll asynchronous */
#define	VSTR_CD		0x80	/*  carrier detect */

#define	SE_BGR		0x34	/* baud rate generator register */
#define	SE_TIC		0x35	/* trasmit immediate character */
#define	SE_MXN		0x36	/* mask xon character */
#define	SE_MXF		0x37	/* mask xoff character */

#define	SE_GIS		0x38	/* global interrupt status */
#define	GIS_ISB0	0x1	/*  interrupt status channel B 0 */
#define	GIS_ISB1	0x2	/*  interrupt status channel B 1 */
#define	GIS_ISA0	0x4	/*  interrupt status channel A 0 */
#define	GIS_ISA1	0x8	/*  interrupt status channel A 1 */
#define	GIS_PI		0x80	/*  univerisal port interrupt */

#define	SE_IVA		0x38	/* interrupt vector address */

#define	SE_IPC		0x39	/* interrupt port configuration */
#define	IPC_IC0		0x1	/*  interrupt configuration 0 */
#define	IPC_IC1		0x2	/*  interrupt configuration 1 */
#define	IPC_CASM	0x4	/*  cascading mode */
#define	IPC_SLA0	0x8	/*  slave address 0 */
#define	IPC_SLA1	0x10	/*  slave address 1 */
#define	IPC_VIS		0x80	/*  masked interrupts visible */

#define	SE_ISR0		0x3a	/* interrupt status 0 */
#define	ISR0_RPF	0x1	/*  receive pool full */
#define	ISR0_RFO	0x2	/*  receive frame overflow */
#define	ISR0_CDSC	0x4	/*  carrier detect status change */
#define	ISR0_PLLA	0x8	/*  dpll asynchronous */
#define	ISR0_FERR	0x10	/*  framing error */
#define	ISR0_PERR	0x20	/*  parity error */
#define	ISR0_TIME	0x40	/*  time out */
#define	ISR0_TCD	0x80	/*  termination character detected */

#define	SE_IMR0		0x3a	/* interrupt mask 0 */

#define	SE_ISR1		0x3b	/* interrupt status 1 */
#define	ISR1_XPR	0x1	/*  transmit pool ready */
#define	ISR1_XON	0x2	/*  transmit message repeat */
#define	ISR1_CSC	0x4	/*  clear to send status change */
#define	ISR1_TIN	0x8	/*  timer interrupt */
#define	ISR1_XOFF	0x10	/*  xoff character detected */
#define	ISR1_ALLS	0x20	/*  all sent */
#define	ISR1_BRKT	0x40	/*  break terminated */
#define	ISR1_BRK	0x80	/*  break */

#define	SE_IMR1		0x3b	/* interrupt mask 1 */
#define	SE_PVR		0x3c	/* port value register */
#define	SE_PIS		0x3d	/* port interrupt status */
#define	SE_PIM		0x3d	/* port interrupt mask */
#define	SE_PCR		0x3e	/* port configuration register */

#define	SE_CCR4		0x3f	/* channel configuration register 4 */
#define	CCR4_ICD	0x10	/*  invert polarity of carrier detect signal */
#define	CCR4_TST1	0x20	/*  test pin */
#define	CCR4_EBRG	0x40	/*  enhanced baud rate generator mode */
#define	CCR4_MCK4	0x80	/*  master clock divide by 4 */

#endif
OpenPOWER on IntegriCloud