initial commit
[freebsd-arm:freebsd-arm.git] / arm / econa / if_ecereg.h
1 /*-
2  * Copyright (c) 2009, Yohanes Nugroho <yohanes@gmail.com>
3  * All rights reserved.
4  *
5  * Redistribution 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 NEGLIGENCE 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 #ifndef _IF_ECEREG_H
31 #define _IF_ECEREG_H
32
33 #define ETH_CFG         0x08
34 #define ETH_CFG_RMII            (1 << 15)
35 #define PHY_CONTROL             0x00
36 #define PHY_RW_OK               (1<<15)
37
38 #define PHY_TIMEOUT             2000
39
40 #define PHY_ADDRESS(x)          ((x) & 0x1)
41 #define PHY_REGISTER(r) (((r) & 0x1F) << 8)
42 #define PHY_WRITE_COMMAND       (1<<13)
43 #define PHY_READ_COMMAND        (1<<14)
44 #define PHY_GET_DATA(d) (((d) >> 16) & 0xFFFF)
45 #define PHY_DATA(d)             (((d) & 0xFFFF) << 16)
46
47 #define PORT_0_CONFIG           0x08
48
49 #define ARL_TABLE_ACCESS_CONTROL_0      0x050
50 #define ARL_TABLE_ACCESS_CONTROL_1      0x054
51 #define ARL_TABLE_ACCESS_CONTROL_2      0x058
52
53 #define ARL_WRITE_COMMAND       (1<<3)
54 #define ARL_LOOKUP_COMMAND      (1<<2)
55 #define ARL_COMMAND_COMPLETE    (1)
56
57
58 #define PORT0                   (1 << 0)
59 #define PORT1                   (1 << 1)
60 #define CPU_PORT                (1 << 2)
61
62
63 #define VLAN0_GROUP_ID          (0)
64 #define VLAN1_GROUP_ID          (1)
65 #define VLAN2_GROUP_ID          (2)
66 #define VLAN3_GROUP_ID          (3)
67 #define VLAN4_GROUP_ID          (4)
68 #define VLAN5_GROUP_ID          (5)
69 #define VLAN6_GROUP_ID          (6)
70 #define VLAN7_GROUP_ID          (7)
71
72 #define PORT0_PVID              (VLAN1_GROUP_ID)
73 #define PORT1_PVID              (VLAN2_GROUP_ID)
74 #define CPU_PORT_PVID           (VLAN0_GROUP_ID)
75
76 #define VLAN0_VID               (0x111)
77 #define VLAN1_VID               (0x222)
78 #define VLAN2_VID               (0x333)
79 #define VLAN3_VID               (0x444)
80 #define VLAN4_VID               (0x555)
81 #define VLAN5_VID               (0x666)
82 #define VLAN6_VID               (0x777)
83 #define VLAN7_VID               (0x888)
84
85 #define VLAN0_GROUP             (PORT0 | PORT1 | CPU_PORT)
86 #define VLAN1_GROUP             (PORT0 | CPU_PORT)
87 #define VLAN2_GROUP             (PORT1 | CPU_PORT)
88 #define VLAN3_GROUP             (0)
89 #define VLAN4_GROUP             (0)
90 #define VLAN5_GROUP             (0)
91 #define VLAN6_GROUP             (0)
92 #define VLAN7_GROUP             (0)
93
94 #define SWITCH_CONFIG           0x004
95 #define MAC_PORT_0_CONFIG       0x008
96 #define MAC_PORT_1_CONFIG       0x00C
97 #define CPU_PORT_CONFIG         0x010
98 #define BIST_RESULT_TEST_0      0x094
99
100 #define FS_DMA_CONTROL          0x104
101 #define TS_DMA_CONTROL          0x100
102
103 #define INTERRUPT_MASK          0x08C
104 #define INTERRUPT_STATUS        0x088
105
106 #define TS_DESCRIPTOR_POINTER   0x108
107 #define TS_DESCRIPTOR_BASE_ADDR 0x110
108 #define FS_DESCRIPTOR_POINTER   0x10C
109 #define FS_DESCRIPTOR_BASE_ADDR 0x114
110
111
112 #define VLAN_VID_0_1            0x060
113 #define VLAN_VID_2_3            0x064
114 #define VLAN_VID_4_5            0x068
115 #define VLAN_VID_6_7            0x06C
116
117 #define VLAN_PORT_PVID          0x05C
118 #define VLAN_MEMBER_PORT_MAP    0x070
119 #define VLAN_TAG_PORT_MAP       0x074
120
121
122 #define ASIX_GIGA_PHY           1
123 #define TWO_SINGLE_PHY          2
124 #define AGERE_GIGA_PHY          3
125 #define VSC8601_GIGA_PHY        4
126 #define IC_PLUS_PHY             5
127 #define NOT_FOUND_PHY           (-1)
128
129 #define MAX_PACKET_LEN          (1536)
130
131 #define INVALID_ENTRY           0
132 #define NEW_ENTRY               0x1
133 #define STATIC_ENTRY            0x7
134
135 /*mask status except for link change*/
136 #define ERROR_MASK              0xFFFFFF7F
137
138
139 /*aging time    setting*/
140 #define AGING_MASK      (0xF)
141 #define DEFAULT_AGING   (0x01)
142 #define FAST_AGING              (0xf)
143 #define MAX_PACKET_1518 (0x00 << 4)
144 #define MAX_PACKET_1522 (0x01 << 4)
145 #define MAX_PACKET_1536 (0x02 << 4)
146 #define MAX_PACKET_9K   (0x03 << 4)
147
148 #define HASH_ALG_DIRECT (0x00 << 6)
149 #define HASH_ALG_XOR48  (0x01 << 6)
150 #define HASH_ALG_XOR32  (0x02 << 6)
151
152 #define BACKOFF_TIMER_MASK      (0x7 << 8)
153 #define STANDARD_BACKOFF_TIMER  (0x7 << 8)
154
155 #define BACK_PRESSURE_JAM_NO_MASK       (0xF << 12)
156 #define DEFAULT_BP_JAM_NO       (0xA << 12)
157
158 #define BACK_PRESSURE_MODE_MASK (0x3 << 16)
159 #define DEFAULT_BACK_PRESSURE_MODE      (0x2 << 16)
160
161 #define COLLISION_MODE_MASK     (0x3 << 19)
162 #define COLLISION_MODE_NEVER_DROP       (0x00 << 19)
163 #define COLLISION_MODE_LIMIT_1  (0x01 << 19)
164 #define COLLISION_MODE_LIMIT_2  (0x02 << 19)
165 #define COLLISION_MODE_LIMIT_16 (0x03 << 19)
166
167 /* Keep original CRC when transmitting */
168 #define CRC_STRIPPING_KEEP      (0 << 21)
169 /* Strip CRC on RX, regenerate on TX */
170 #define CRC_STRIPPING_REGENERATE        (1 << 21)
171
172 #define FILTER_RESERVED_MULTICAST       (1 << 18)
173
174 /* Independent VLAN learning */
175 #define IVL_DISABLE     (0 << 22)
176 #define IVL_ENABLE      (1 << 22)
177
178 /*hardware NAT accelerator*/
179 #define HARDWARE_NAT            (0x1 << 23)
180
181 /*skip lookup*/
182 #define SKIP_L2_LOOKUP_PORT_0   (1 << 28)
183 #define SKIP_L2_LOOKUP_PORT_1   (1 << 29)
184
185 #define NIC_MODE                (1 << 30)
186
187 /* MAC Configuration */
188 #define LINK_STATUS     (0x1)
189 #define TX_STATUS_MASK  (0x1 << 2)
190
191 #define AUTO_NEGOTIATION_ENABLE (0x1 << 7)
192 #define FORCE_10_MBPS   (0x00 << 8)
193 #define FORCE_100_MBPS  (0x01 << 8)
194 #define FORCE_1000_MBPS (0x02 << 8)
195
196 #define FORCE_HALF_DUPLEX       (0x00 << 10)
197 #define FORCE_FULL_DUPLEX       (0x01 << 10)
198
199 #define FORCE_RX_FLOW_CONTROL_OFF       (0x00 << 11)
200 #define FORCE_RX_FLOW_CONTROL_ON        (0x01 << 11)
201
202 #define FORCE_TX_FLOW_CONTROL_OFF       (0x00 << 12)
203 #define FORCE_TX_FLOW_CONTROL_ON        (0x01 << 12)
204
205 #define TX_PERIOD_CHECKING_DISABLE      (0x00 << 13)
206 #define TX_PERIOD_CHECKING_ENABLE       (0x01 << 13)
207
208 #define BACK_PRESSURE_DISABLE   (0x00 << 17)
209 #define BACK_PRESSURE_ENABLE    (0x01 << 17)
210
211 #define AGING_DISABLE   (0x0 << 22)
212 #define AGING_ENABLE    (0x1 << 22)
213
214
215 /* CPU port config. */
216 #define CPU_PORT_CONF_DIS       (1 << 18)
217 #define CPU_PORT_CONF_SA_LEARNING_DIS   (1 << 19)
218 #define CPU_PORT_CONF_AGE_DIS   (1 << 22)
219 #define CPU_PORT_CONF_SA_SECURED        (1 << 23)
220 #define CPU_PORT_CONF_INGRESS_CHK       (1 << 24)
221 #define CPU_PORT_CONF_WORD_ALIGN        (1 << 31)
222 #define CPU_PORT_CONF_UNICAST_DIS       (1 << 25)
223 #define CPU_PORT_CONF_MULTICAST_DIS     (1 << 26)
224 #define CPU_PORT_CONF_BROADCAST_DIS     (1 << 27)
225
226
227
228 #endif