1 /*        $NetBSD: mb86950reg.h,v 1.3 2005/12/11 12:21:27 christos Exp $        */
2 
3 /*
4  * Copyright (c) 1995 Mika Kortelainen
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  * 1. Redistributions of source code must retain the above copyright
11  *    notice, this list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  * 3. All advertising materials mentioning features or use of this software
16  *    must display the following acknowledgement:
17  *      This product includes software developed by  Mika Kortelainen
18  * 4. The name of the author may not be used to endorse or promote products
19  *    derived from this software without specific prior written permission
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
22  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
23  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
24  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
25  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
26  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
30  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 
33 /*
34  * Adapted from if_qnreg.h for the amiga port of NetBSD by Dave J. Barnes, 2004.
35  */
36 
37 /*
38  * The Fujitsu mb86950, "EtherStar", is the predecessor to the mb8696x
39  * NICE supported by the ate driver.  While similar in function and
40  * programming to the mb8696x, the register offset differences and
41  * quirks make it nearly impossible to have one driver for both the
42  * EtherStar and NICE chips.
43  *
44  *  Definitions from Fujitsu documentation.
45  */
46 
47 #define ESTAR_DLCR0           0 /* Transmit status */
48 #define DLCR_TX_STAT          ESTAR_DLCR0
49 
50 #define ESTAR_DLCR1           1 /* Transmit masks  */
51 #define DLCR_TX_INT_EN        ESTAR_DLCR1
52 
53 /* DLCR0/1 - Transmit Status & Masks */
54 #define TX_DONE                         0x80 /* Transmit okay         */
55 /* bit 6 - Net Busy, carrier sense ? */
56 /* bit 5 - Transmit packet received ? */
57 #define TX_CR_LOST            0x10 /* Carrier lost while attempting to transmit */
58 #define TX_UNDERFLO           0x08 /* fifo underflow */
59 #define TX_COL                          0x04 /* Collision             */
60 #define TX_16COL              0x02 /* 16 collision          */
61 #define TX_BUS_WR_ERR         0x01 /* Bus write error, fifo overflo */
62 #define CLEAR_TX_ERR          (TX_UNDERFLO | TX_COL | TX_16COL | TX_BUS_WR_ERR) /* Clear transmit errors */
63 #define TX_MASK         (TX_DONE | TX_16COL)
64 
65 #define ESTAR_DLCR2           2 /* Receive status  */
66 #define DLCR_RX_STAT          ESTAR_DLCR2
67 
68 #define ESTAR_DLCR3           3 /* Receive masks   */
69 #define DLCR_RX_INT_EN        ESTAR_DLCR3
70 
71 /* DLCR2/3 - Receive Status & Masks */
72 #define RX_PKT                          0x80 /* Packet ready          */
73 #define RX_BUS_RD_ERR   0x40 /* fifo underflow, harmless, normally masked off */
74 /* bit 5 - DMA end of process ? */
75 /* bit 4 - remote control packet rx ? */
76 #define RX_SHORT_ERR          0x08 /* Short packet          */
77 #define RX_ALIGN_ERR          0x04 /* Alignment error       */
78 #define RX_CRC_ERR            0x02 /* CRC error             */
79 #define RX_OVERFLO            0x01 /* Receive buf overflow  */
80 #define CLEAR_RX_ERR          RX_MASK /* Clear receive and errors  */
81 #define   RX_MASK                       (RX_PKT | RX_SHORT_ERR | RX_ALIGN_ERR | RX_CRC_ERR | RX_OVERFLO | RX_BUS_RD_ERR)
82 #define RX_ERR_MASK           (RX_SHORT_ERR | RX_ALIGN_ERR | RX_CRC_ERR | RX_OVERFLO | RX_BUS_RD_ERR)
83 
84 #define ESTAR_DLCR4           4 /* Transmit mode   */
85 #define DLCR_TX_MODE          ESTAR_DLCR4
86 
87 /* DLCR4 - Transmit Mode */
88 /* bits 7, 6, 5, 4 - collision count ? */
89 #define COL_MASK              0xf0
90 /* bit 3 - nc */
91 /* bit 2 - gen output ? */
92 #define LBC                                       0x02 /* Loopback control      */
93 /* bit 0 - defer ?, normally 0 */
94 
95 #define ESTAR_DLCR5           5 /* Receive mode    */
96 #define DLCR_RX_MODE          ESTAR_DLCR5
97 
98 /* DLCR5 - Receive Mode */
99 /* Normal mode: accept physical address, broadcast address.
100  */
101 /* bit 7 - Disable CRC test mode */
102 #define RX_BUF_EMTY           0x40 /* Buffer empty          */
103 /* bit 5 - accept packet with errors or nc ?, normally set to 0 */
104 /* bit 4 - 40 bit address ?, normally set to 0 */
105 /* bit 3 - accept runts ?, normally set to 0 */
106 /* bit 2 - remote reset ? normally set to 0 */
107 /* bit 1 & 0 - address filter mode */
108 
109 /*  00 = reject */
110 /*  01 = normal mode */
111 #define NORMAL_MODE           0x01
112 /*  10 = ? */
113 /*  11 = promiscuous mode */
114 #define PROMISCUOUS_MODE      0x03 /* Accept all packets    */
115 
116 #define ESTAR_DLCR6           6 /* Software reset  */
117 #define DLCR_CONFIG           ESTAR_DLCR6
118 
119 /* DLCR6 - Enable Data Link Controller */
120 #define DISABLE_DLC           0x80 /* Disable data link controller */
121 #define ENABLE_DLC            0x00 /* Enable data link controller  */
122 
123 #define ESTAR_DLCR7           7 /* TDR (LSB)       */
124 
125 #define ESTAR_DLCR8           8 /* Node ID0        */
126 #define DLCR_NODE_ID          ESTAR_DLCR8
127 
128 #define ESTAR_DLCR9           9 /* Node ID1        */
129 #define ESTAR_DLCR10          10 /* Node ID2        */
130 #define ESTAR_DLCR11          11 /* Node ID3        */
131 #define ESTAR_DLCR12          12 /* Node ID4        */
132 #define ESTAR_DLCR13          13 /* Node ID5        */
133 
134 #define ESTAR_DLCR15          15 /* TDR (MSB)       */
135 
136 /* The next three are usually accessed as words */
137 #define ESTAR_BMPR0           16 /* Buffer memory port (FIFO) */
138 #define BMPR_FIFO             ESTAR_BMPR0
139 
140 #define ESTAR_BMPR2           18 /* Packet length   */
141 #define BMPR_TX_LENGTH        ESTAR_BMPR2
142 /* BMPR2:BMPR3 - Packet Length Registers (Write-only) */
143 #define TRANSMIT_START        0x8000
144 
145 #define ESTAR_BMPR4           20 /* DMA enable      */
146 #define BMPR_DMA              ESTAR_BMPR4
147