summaryrefslogtreecommitdiff
path: root/sys/arch/next68k/dev/mb8795reg.h
blob: 2bbd7d6c4bf30609dfc046ad68403c6a59abaa17 (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
/*	$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 */