xref: /freebsd/sys/dev/sbni/if_sbnireg.h (revision 38f0b757fd84d17d0fc24739a7cda160c4516d81)
1 /*-
2  * Copyright (c) 1997-2001 Granch, Ltd. All rights reserved.
3  * Author: Denis I.Timofeev <timofeev@granch.ru>
4  *
5  * Redistributon and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice unmodified, this list of conditions, and the following
10  *    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  *
15  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23  * LIABILITY, OR TORT (INCLUDING NEIGENCE OR OTHERWISE) ARISING IN ANY WAY
24  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25  * SUCH DAMAGE.
26  *
27  * $FreeBSD$
28  */
29 
30 /*
31  * We don't have registered vendor id yet...
32  */
33 #define SBNI_PCI_VENDOR 	0x55
34 #define SBNI_PCI_DEVICE 	0x9f
35 
36 #define ISA_MODE 0x00
37 #define PCI_MODE 0x01
38 
39 #define	SBNI_PORTS	4
40 
41 enum sbni_reg {
42 	CSR0 = 0,
43 	CSR1 = 1,
44 	DAT  = 2
45 };
46 
47 /* CSR0 mapping */
48 enum {
49 	BU_EMP = 0x02,
50 	RC_CHK = 0x04,
51 	CT_ZER = 0x08,
52 	TR_REQ = 0x10,
53 	TR_RDY = 0x20,
54 	EN_INT = 0x40,
55 	RC_RDY = 0x80
56 };
57 
58 
59 /* CSR1 mapping */
60 #define PR_RES 0x80
61 
62 struct sbni_csr1 {
63 	unsigned rxl	: 5;
64 	unsigned rate	: 2;
65 	unsigned 	: 1;
66 };
67 
68 
69 
70 #define FRAME_ACK_MASK  (u_int16_t)0x7000
71 #define FRAME_LEN_MASK  (u_int16_t)0x03FF
72 #define FRAME_FIRST     (u_int16_t)0x8000
73 #define FRAME_RETRY     (u_int16_t)0x0800
74 
75 #define FRAME_SENT_BAD  (u_int16_t)0x4000
76 #define FRAME_SENT_OK   (u_int16_t)0x3000
77 
78 
79 enum {
80 	FL_WAIT_ACK    = 1,
81 	FL_NEED_RESEND = 2,
82 	FL_PREV_OK     = 4,
83 	FL_SLOW_MODE   = 8
84 };
85 
86 
87 enum {
88 	DEFAULT_IOBASEADDR = 0x210,
89 	DEFAULT_INTERRUPTNUMBER = 5,
90 	DEFAULT_RATE = 0,
91 	DEFAULT_FRAME_LEN = 1012
92 };
93 
94 #define DEF_RXL_DELTA	-1
95 #define DEF_RXL		0xf
96 
97 #define SBNI_SIG 0x5a
98 
99 #define	SBNI_MIN_LEN	(ETHER_MIN_LEN - 4)
100 #define SBNI_MAX_FRAME	1023
101 
102 #define SBNI_HZ 18 /* ticks to wait for pong or packet */
103 		/* sbni watchdog called SBNI_HZ times per sec. */
104 
105 #define TR_ERROR_COUNT 32
106 #define CHANGE_LEVEL_START_TICKS 4
107