xref: /netbsd-src/sys/dev/qbus/if_qtreg.h (revision 195be17bb9be8739c7243b1534008acecf80c433)
1 /*	$NetBSD: if_qtreg.h,v 1.6 2021/12/20 17:12:41 rhialto Exp $	*/
2 /*
3  * Copyright (c) 1992 Steven M. Schultz
4  * All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  *    notice, this list of conditions and the following disclaimer in the
13  *    documentation and/or other materials provided with the distribution.
14  * 3. The name of the author may not be used to endorse or promote products
15  *    derived from this software without specific prior written permission
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  *
28  *	@(#)if_qtreg.h  1.0 (GTE) 10/12/92
29  */
30 /*
31  * Modification History
32  *  26 Feb 93 -- sms
33  *	Add defines for number of receive and transmit ring descriptors.
34  *
35  *  12 Oct 92 -- Steven M. Schultz (sms)
36  *	Created from the DELQA-PLUS Addendum to the DELQA User's Guide.
37 */
38 
39 #define QT_MAX_RCV	32
40 #define QT_MAX_XMT	12
41 
42 /* Receive ring descriptor and bit/field definitions */
43 
44 	struct	qt_rring
45 		{
46 		short	rmd0;
47 		short	rmd1;
48 		short	rmd2;
49 		short	rmd3;
50 		short	rmd4;
51 		short	rmd5;
52 #ifdef pdp11
53 		struct	qt_uba	*rhost0;
54 		short	rhost1;
55 #else
56 		short	pad1, pad2;
57 #endif
58 		};
59 
60 #define	RMD0_ERR3	0x4000		/* Error summary. FRA|CRC|OFL|BUF */
61 #define	RMD0_FRA	0x2000		/* Framing error */
62 #define	RMD0_OFL	0x1000		/* Overflow error.  Oversized packet */
63 #define	RMD0_CRC	0x0800		/* CRC error */
64 #define	RMD0_BUF	0x0400		/* Internal device buffer error */
65 #define	RMD0_STP	0x0200		/* Start of packet */
66 #define	RMD0_ENP	0x0100		/* End of packet */
67 
68 #define	RMD1_MCNT	0x0fff		/* Message byte count */
69 
70 #define	RMD2_ERR4	0x8000		/* Error summary.  BBL|CER|MIS */
71 #define	RMD2_BBL	0x4000		/* Babble error on transmit */
72 #define	RMD2_CER	0x2000		/* Collision error on transmit */
73 #define	RMD2_MIS	0x1000		/* Packet lost on receive */
74 #define	RMD2_EOR	0x0800		/* End of receive ring */
75 #define	RMD2_RON	0x0020		/* Receiver on */
76 #define	RMD2_TON	0x0010		/* Transmitter on */
77 
78 #define	RMD3_OWN	0x8000		/* Ownership field. */
79 
80 #define	RMD4_LADR	0xfff8		/* Octabyte aligned low address bits */
81 
82 #define	RMD5_HADR	0x003f		/* High 6 bits of buffer address */
83 
84 #define	RMD0_BITS	"\010\016FRA\015OFL\014CRC\013BUF\012STP\011ENP"
85 #define	RMD2_BITS	"\010\017BBL\014CER\013MIS\012EOR\06RON\05TON"
86 
87 /* Transmit ring descriptor and bit/field definitions */
88 
89 	struct	qt_tring
90 		{
91 		short	tmd0;
92 		short	tmd1;
93 		short	tmd2;
94 		short	tmd3;
95 		short	tmd4;
96 		short	tmd5;
97 #ifdef pdp11
98 		struct	qt_uba	*thost0;
99 		short	thost1;
100 #else
101 		short	pad1, pad2;
102 #endif
103 		};
104 
105 #define	TMD0_ERR1	0x4000		/* Error summary.  LCO|LCA|RTR */
106 #define	TMD0_MOR	0x1000		/* More than one retry on transmit */
107 #define	TMD0_ONE	0x0800		/* One retry on transmit */
108 #define	TMD0_DEF	0x0400		/* Deferral during transmit */
109 
110 #define	TMD1_LCO	0x1000		/* Late collision on transmit */
111 #define	TMD1_LCA	0x0800		/* Loss of carrier on transmit */
112 #define	TMD1_RTR	0x0400		/* Retry error on transmit */
113 #define	TMD1_TDR	0x03ff		/* Time Domain Reflectometry value */
114 
115 #define	TMD2_ERR2	0x8000		/* Error summary.  BBL|CER|MIS */
116 #define	TMD2_BBL	0x4000		/* Babble error on transmit */
117 #define	TMD2_CER	0x2000		/* Collision error on transmit */
118 #define	TMD2_MIS	0x1000		/* Packet lost on receive */
119 #define	TMD2_EOR	0x0800		/* Endof Receive ring reached */
120 #define	TMD2_RON	0x0020		/* Receiver on */
121 #define	TMD2_TON	0x0010		/* Transmitter on */
122 
123 #define	TMD3_OWN	0x8000		/* Ownership field */
124 #define	TMD3_FOT	0x4000		/* First of two flag */
125 #define	TMD3_BCT	0x0fff		/* Byte count */
126 
127 #define	TMD4_LADR	0xfff8		/* Octabyte aligned low address bits */
128 
129 #define	TMD5_HADR	0x003f		/* High 6 bits of buffer address */
130 
131 #define	TMD1_BITS	"\010\015LCO\014LCA\013RTR"
132 #define	TMD2_BITS	"\010\017BBL\016CER\015MIS\014EOR\06RON\05TON"
133 
134 /* DELQA-YM CSR layout */
135 
136 #ifdef notdef
137 	struct	qtcsr0
138 		{
139 		short	Ibal;
140 		short	Ibah;
141 		short	Icr;
142 		short	pad0;
143 		short	Srqr;
144 		short	pad1;
145 		};
146 
147 	struct	qtdevice
148 		{
149 		union	{
150 			u_char	Sarom[12];
151 			struct	qtcsr0	csr0;
152 			} qt_un0;
153 		short	srr;
154 		short	arqr;
155 		};
156 
157 #define	ibal	qt_un0.csr0.Ibal
158 #define	ibah	qt_un0.csr0.Ibah
159 #define	srqr	qt_un0.csr0.Srqr
160 #define	icr	qt_un0.csr0.Icr
161 #define	sarom	qt_un0.Sarom
162 #endif
163 
164 #define	CSR_IBAL	0
165 #define	CSR_IBAH	2
166 #define	CSR_ICR		4
167 #define	CSR_SRQR	8
168 #define	CSR_SRR		12
169 #define	CSR_ARQR	14
170 
171 
172 /* SRR definitions */
173 
174 #define	SRR_FES		0x8000
175 #define	SRR_CHN		0x4000
176 #define	SRR_NXM		0x1000
177 #define	SRR_PER		0x0800
178 #define	SRR_IME		0x0400
179 #define	SRR_TBL		0x0200
180 #define	SRR_RESP	0x0003
181 #define	SRR_BITS	"\010\017CHN\015NXM\014PER\013IME\012TBL"
182 
183 /* SRQR definitions */
184 
185 #define	SRQR_REQ	0x0003
186 
187 /* ARQR definitions */
188 
189 #define	ARQR_TRQ	0x8000
190 #define	ARQR_RRQ	0x0080
191 #define	ARQR_SR		0x0002
192 
193 /* define ICR definitions */
194 
195 #define	ICR_CMD		0x0001
196 
197 /* DELQA registers used to shift into -T mode */
198 
199 #ifdef notdef
200 #define	xcr0	qt_un0.csr0.Ibal
201 #define	xcr1	qt_un0.csr0.Ibah
202 #endif
203 #define	CSR_XCR0	CSR_IBAL
204 #define	CSR_XCR1	CSR_IBAH
205 
206 /* INIT block structure and definitions */
207 
208 	struct	qt_init
209 		{
210 		int16_t		mode;
211 		u_char		paddr[6];	/* 48 bit physical address */
212 		uint16_t	laddr[4];	/* 64 bit logical address filter */
213 		uint16_t	rx_lo;		/* low 16 bits of receive ring addr */
214 		uint16_t	rx_hi;		/* high 6 bits of receive ring addr */
215 		uint16_t	tx_lo;		/* low 16 bits of transmit ring addr */
216 		uint16_t	tx_hi;		/* high 6 bits of transmit ring addr */
217 		uint16_t	options;
218 		uint16_t	vector;
219 		uint16_t	hit;
220 		char		passwd[6];
221 		char		pad[4];		/* even on 40 byte for alignment */
222 		};
223 
224 #define	INIT_MODE_PRO	0x8000		/* Promiscuous mode */
225 #define	INIT_MODE_INT	0x0040		/* Internal Loopback */
226 #define	INIT_MODE_DRT	0x0020		/* Disable Retry */
227 #define	INIT_MODE_DTC	0x0008		/* Disable Transmit CRC */
228 #define	INIT_MODE_LOP	0x0004		/* Loopback */
229 
230 #define	INIT_OPTIONS_HIT 0x0002		/* Host Inactivity Timeout Flag */
231 #define	INIT_OPTIONS_INT 0x0001		/* Interrupt Enable Flag */
232