if_sbnireg.h revision 86752
1221337Sdim/*
2221337Sdim * Copyright (c) 1997-2001 Granch, Ltd. All rights reserved.
3221337Sdim * Author: Denis I.Timofeev <timofeev@granch.ru>
4221337Sdim *
5221337Sdim * Redistributon and use in source and binary forms, with or without
6221337Sdim * modification, are permitted provided that the following conditions
7221337Sdim * are met:
8221337Sdim * 1. Redistributions of source code must retain the above copyright
9223017Sdim *    notice unmodified, this list of conditions, and the following
10221337Sdim *    disclaimer.
11221337Sdim * 2. Redistributions in binary form must reproduce the above copyright
12221337Sdim *    notice, this list of conditions and the following disclaimer in the
13221337Sdim *    documentation and/or other materials provided with the distribution.
14221337Sdim *
15221337Sdim * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16221337Sdim * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17221337Sdim * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18221337Sdim * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19221337Sdim * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20221337Sdim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21221337Sdim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22221337Sdim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23221337Sdim * LIABILITY, OR TORT (INCLUDING NEIGENCE OR OTHERWISE) ARISING IN ANY WAY
24221337Sdim * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25221337Sdim * SUCH DAMAGE.
26221337Sdim *
27221337Sdim * $FreeBSD: head/sys/dev/sbni/if_sbnireg.h 86752 2001-11-21 22:29:35Z fjoe $
28221337Sdim */
29221337Sdim
30221337Sdim/*
31223017Sdim * We don't have registered vendor id yet...
32221337Sdim */
33223017Sdim#define SBNI_PCI_VENDOR 	0x55
34223017Sdim#define SBNI_PCI_DEVICE 	0x9f
35221337Sdim
36221337Sdim#define ISA_MODE 0x00
37221337Sdim#define PCI_MODE 0x01
38221337Sdim
39221337Sdim#define	SBNI_PORTS	4
40221337Sdim
41221337Sdimenum sbni_reg {
42221337Sdim	CSR0 = 0,
43221337Sdim	CSR1 = 1,
44221337Sdim	DAT  = 2
45221337Sdim};
46221337Sdim
47221337Sdim/* CSR0 mapping */
48221337Sdimenum {
49221337Sdim	BU_EMP = 0x02,
50221337Sdim	RC_CHK = 0x04,
51221337Sdim	CT_ZER = 0x08,
52221337Sdim	TR_REQ = 0x10,
53221337Sdim	TR_RDY = 0x20,
54221337Sdim	EN_INT = 0x40,
55221337Sdim	RC_RDY = 0x80
56221337Sdim};
57221337Sdim
58221337Sdim
59221337Sdim/* CSR1 mapping */
60221337Sdim#define PR_RES 0x80
61221337Sdim
62221337Sdimstruct sbni_csr1 {
63221337Sdim	unsigned rxl	: 5;
64221337Sdim	unsigned rate	: 2;
65221337Sdim	unsigned 	: 1;
66221337Sdim};
67221337Sdim
68221337Sdim
69221337Sdim
70221337Sdim#define FRAME_ACK_MASK  (u_int16_t)0x7000
71221337Sdim#define FRAME_LEN_MASK  (u_int16_t)0x03FF
72221337Sdim#define FRAME_FIRST     (u_int16_t)0x8000
73221337Sdim#define FRAME_RETRY     (u_int16_t)0x0800
74221337Sdim
75221337Sdim#define FRAME_SENT_BAD  (u_int16_t)0x4000
76221337Sdim#define FRAME_SENT_OK   (u_int16_t)0x3000
77221337Sdim
78221337Sdim
79221337Sdimenum {
80221337Sdim	FL_WAIT_ACK    = 1,
81221337Sdim	FL_NEED_RESEND = 2,
82221337Sdim	FL_PREV_OK     = 4,
83221337Sdim	FL_SLOW_MODE   = 8
84221337Sdim};
85221337Sdim
86221337Sdim
87221337Sdimenum {
88221337Sdim	DEFAULT_IOBASEADDR = 0x210,
89221337Sdim	DEFAULT_INTERRUPTNUMBER = 5,
90221337Sdim	DEFAULT_RATE = 0,
91221337Sdim	DEFAULT_FRAME_LEN = 1012
92221337Sdim};
93221337Sdim
94221337Sdim#define DEF_RXL_DELTA	-1
95221337Sdim#define DEF_RXL		0xf
96221337Sdim
97221337Sdim#define SBNI_SIG 0x5a
98221337Sdim
99221337Sdim#define	SBNI_MIN_LEN	(ETHER_MIN_LEN - 4)
100221337Sdim#define SBNI_MAX_FRAME	1023
101221337Sdim
102221337Sdim#define SBNI_HZ 18 /* ticks to wait for pong or packet */
103221337Sdim		/* sbni watchdog called SBNI_HZ times per sec. */
104221337Sdim
105221337Sdim#define TR_ERROR_COUNT 32
106221337Sdim#define CHANGE_LEVEL_START_TICKS 4
107221337Sdim