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
|
/* $NetBSD: mb8795reg.h,v 1.5 2023/06/10 17:14:57 dbj Exp $ */
/*
* Copyright (c) 1998 Darrin B. Jewell
* 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 ``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 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.
*/
/*
* Fujitsu Ethernet Data Link Controller (MB8795)
* and the Fujitsu Manchester Encoder/Decoder (MB502).
*/
#if 0
struct mb8795_regs {
unsigned char mb8795_txstat; /* tx status */
unsigned char mb8795_txmask; /* tx interrupt condition mask */
unsigned char mb8795_rxstat; /* rx status */
unsigned char mb8795_rxmask; /* rx interrupt condition mask */
unsigned char mb8795_txmode; /* tx control/mode register */
unsigned char mb8795_rxmode; /* rx control/mode register */
unsigned char mb8795_reset; /* reset mode */
unsigned char mb8795_tdc_lsb; /* transmit data count LSB */
unsigned char mb8795_addr[6]; /* physical address */
unsigned char mb8795_reserved;
unsigned char mb8795_tdc_msb; /* transmit data count MSB */
};
#endif
/* transmitter status (address 0) */
#define MB8795_TXSTAT 0
#define MB8795_TXSTAT_READY 0x80 /* ready for packet */
#define MB8795_TXSTAT_BUSY 0x40 /* receive carrier detect */
#define MB8795_TXSTAT_TXRECV 0x20 /* transmission received */
#define MB8795_TXSTAT_SHORTED 0x10 /* possible coax short */
#define MB8795_TXSTAT_UNDERFLOW 0x08 /* underflow on xmit */
#define MB8795_TXSTAT_COLLERR 0x04 /* collision detected */
#define MB8795_TXSTAT_COLLERR16 0x02 /* 16th collision error */
#define MB8795_TXSTAT_PARERR 0x01 /* parity error in tx data */
#define MB8795_TXSTAT_CLEAR 0xff /* clear all status bits */
#define MB8795_TXSTAT_BITS \
"\20\10READY\07BUSY\06TXRECV\05SHORTED\
\04UNDERFLOW\03COLLERR\02COLLERR16\01PARERR"
/* transmit masks (address 1) */
#define MB8795_TXMASK 1
#define MB8795_TXMASK_READYIE 0x80 /* tx int on packet ready */
#define MB8795_TXMASK_TXRXIE 0x20 /* tx int on transmit rec'd */
#define MB8795_TXMASK_UNDERFLOWIE 0x08 /* tx int on underflow */
#define MB8795_TXMASK_COLLIE 0x04 /* tx int on collision */
#define MB8795_TXMASK_COLL16IE 0x02 /* tx int on 16th collision */
#define MB8795_TXMASK_PARERRIE 0x01 /* tx int on parity error */
#define MB8795_TXMASK_BITS \
"\20\10READYIE\06TXRXIE\04UNDERFLOWIE\03COLLIE\02COLL16IE\01PARERRIE"
/* cumulative receiver status (address 2) */
#define MB8795_RXSTAT 2
#define MB8795_RXSTAT_OK 0x80 /* packet received is correct */
#define MB8795_RXSTAT_RESET 0x10 /* reset packet received */
#define MB8795_RXSTAT_SHORT 0x08 /* < minimum length */
#define MB8795_RXSTAT_ALIGNERR 0x04 /* alignment error */
#define MB8795_RXSTAT_CRCERR 0x02 /* CRC error */
#define MB8795_RXSTAT_OVERFLOW 0x01 /* receiver FIFO overflow */
#define MB8795_RXSTAT_CLEAR 0xff /* clear all status bits */
#define MB8795_RXSTAT_BITS \
"\20\10OK\05RESET\04SHORT\03ALIGNERR\02CRCERR\01OVERFLOW"
/* receiver masks (address 3) */
#define MB8795_RXMASK 3
#define MB8795_RXMASK_OKIE 0x80 /* rx int on packet ok */
#define MB8795_RXMASK_RESETIE 0x10 /* rx int on reset packet */
#define MB8795_RXMASK_SHORTIE 0x08 /* rx int on short packet */
#define MB8795_RXMASK_ALIGNERRIE 0x04 /* rx int on align error */
#define MB8795_RXMASK_CRCERRIE 0x02 /* rx int on CRC error */
#define MB8795_RXMASK_OVERFLOWIE 0x01 /* rx int on overflow error */
#define MB8795_RXMASK_BITS \
"\20\10OKIE\05RESETIE\04SHORTIE\03ALIGNERRIE\02CRCERRIE\01OVERFLOWIE"
/* transmitter mode (address 4) */
#define MB8795_TXMODE 4
#define MB8795_TXMODE_COLLMASK 0xF0 /* collision count */
#define MB8795_TXMODE_TURBOSTART 0x80
#define MB8795_TXMODE_PARIGNORE 0x08 /* ignore parity */
#define MB8795_TXMODE_TURBO1 0x04
#define MB8795_TXMODE_LB_DISABLE 0x02 /* loop back disabled */
#define MB8795_TXMODE_DISCONTENT 0x01 /* disable contention (rx carrier) */
/* Should probably figure out how to put in the COLLMASK value in here */
#define MB8795_TXMODE_BITS \
"\20\04PARIGNORE\02LB_DISABLE\01DISCONTENT"
/* receiver mode (address 5) */
#define MB8795_RXMODE 5
#define MB8795_RXMODE_TEST 0x80 /* Must be zero for normal op */
#define MB8795_RXMODE_ADDRSIZE 0x10 /* reduces NODE match to 5 chars */
#define MB8795_RXMODE_SHORTENABLE 0x08 /* rx packets >= 10 bytes */
#define MB8795_RXMODE_RESETENABLE 0x04 /* must be zero */
#define MB8795_RXMODE_PROMISCUOUS 0x03 /* accept all packets */
#define MB8795_RXMODE_MULTICAST 0x02 /* accept broad/multicasts */
#define MB8795_RXMODE_NORMAL 0x01 /* accept broad/limited multicasts */
#define MB8795_RXMODE_OFF 0x00 /* accept no packets */
/* this define is less useful for the promiscuous bits, bit I leave it here */
#define MB8795_RXMODE_BITS \
"\20\10TEST\05ADDRSIZE\04SHORTENABLE\03RESETENABLE\02MULTICAST\01NORMAL"
/* reset mode (address 6) */
#define MB8795_RESET_MODE 0x80 /* reset mode */
#define MB8795_RESET 6
#define MB8795_TDC_LSB 7
#define MB8795_ENADDR 8
#define MB8795_TDC_MSB 15
#define ENRX_EOP 0x80000000 /* end-of-packet flag */
#define ENRX_BOP 0x40000000 /* beginning-of-packet flag */
#define ENTX_EOP 0x80000000 /* end-of-packet flag */
|