initial commit
[freebsd-arm:freebsd-arm.git] / arm / econa / ece / 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 /*hardware interface flags*/
139
140 #define FAST_AGING              (0xf)
141 #define IVL_LEARNING            (0x1 << 22)
142 /*hardware NAT accelerator*/
143 #define HARDWARE_NAT            (0x1 << 23)
144 /*aging         time            setting*/
145
146 /*skip lookup*/
147 #define SKIP_L2_LOOKUP_PORT_1   (1 << 29)
148 #define SKIP_L2_LOOKUP_PORT_0   (1 << 28)
149
150 #define NIC_MODE                (1 << 30)
151
152 #define PORT_CONF_PORT_DIS      (1 << 18)
153 #define PORT_CONF_SA_LEARNING_DIS       (1 << 19)
154 #define PORT_CONF_SA_SECURED    (1 << 23)
155 #define PORT_CONF_UNICAST_DIS   (1 << 25)
156 #define PORT_CONF_MULTICAST_DIS (1 << 26)
157 #define PORT_CONF_BROADCAST_DIS (1 << 27)
158
159 /* CPU port config. */
160 #define CPU_PORT_CONF_DIS       (1 << 18)
161 #define CPU_PORT_CONF_SA_LEARNING_DIS   (1 << 19)
162 #define CPU_PORT_CONF_AGE_DIS   (1 << 22)
163 #define CPU_PORT_CONF_SA_SECURED        (1 << 23)
164 #define CPU_PORT_CONF_INGRESS_CHK       (1 << 24)
165 #define CPU_PORT_CONF_WORD_ALIGN        (1 << 31)
166
167 #endif