Unleashed v1.4
[unleashed.git] / include / sys / nxge / nxge_espc.h
blobb54fec9d6d85f065400d637fa43b254514e1953e
1 /*
2 * CDDL HEADER START
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
19 * CDDL HEADER END
22 * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
23 * Use is subject to license terms.
26 #ifndef _SYS_NXGE_NXGE_ESPC_H
27 #define _SYS_NXGE_NXGE_ESPC_H
29 #pragma ident "%Z%%M% %I% %E% SMI"
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
35 #include <nxge_espc_hw.h>
37 #define ESPC_MAC_ADDR_0 ESPC_NCR_REGN(0)
38 #define ESPC_MAC_ADDR_1 ESPC_NCR_REGN(1)
39 #define ESPC_NUM_PORTS_MACS ESPC_NCR_REGN(2)
40 #define ESPC_MOD_STR_LEN ESPC_NCR_REGN(4)
41 #define ESPC_MOD_STR_1 ESPC_NCR_REGN(5)
42 #define ESPC_MOD_STR_2 ESPC_NCR_REGN(6)
43 #define ESPC_MOD_STR_3 ESPC_NCR_REGN(7)
44 #define ESPC_MOD_STR_4 ESPC_NCR_REGN(8)
45 #define ESPC_MOD_STR_5 ESPC_NCR_REGN(9)
46 #define ESPC_MOD_STR_6 ESPC_NCR_REGN(10)
47 #define ESPC_MOD_STR_7 ESPC_NCR_REGN(11)
48 #define ESPC_MOD_STR_8 ESPC_NCR_REGN(12)
49 #define ESPC_BD_MOD_STR_LEN ESPC_NCR_REGN(13)
50 #define ESPC_BD_MOD_STR_1 ESPC_NCR_REGN(14)
51 #define ESPC_BD_MOD_STR_2 ESPC_NCR_REGN(15)
52 #define ESPC_BD_MOD_STR_3 ESPC_NCR_REGN(16)
53 #define ESPC_BD_MOD_STR_4 ESPC_NCR_REGN(17)
54 #define ESPC_PHY_TYPE ESPC_NCR_REGN(18)
55 #define ESPC_MAX_FM_SZ ESPC_NCR_REGN(19)
56 #define ESPC_INTR_NUM ESPC_NCR_REGN(20)
57 #define ESPC_VER_IMGSZ ESPC_NCR_REGN(21)
58 #define ESPC_CHKSUM ESPC_NCR_REGN(22)
60 #define NUM_PORTS_MASK 0xff
61 #define NUM_MAC_ADDRS_MASK 0xff0000
62 #define NUM_MAC_ADDRS_SHIFT 16
63 #define MOD_STR_LEN_MASK 0xffff
64 #define BD_MOD_STR_LEN_MASK 0xffff
65 #define MAX_FM_SZ_MASK 0xffff
66 #define VER_NUM_MASK 0xffff
67 #define IMG_SZ_MASK 0xffff0000
68 #define IMG_SZ_SHIFT 16
69 #define CHKSUM_MASK 0xff
71 /* 0 <= n < 8 */
72 #define ESPC_MOD_STR(n) (ESPC_MOD_STR_1 + n*8)
73 #define MAX_MOD_STR_LEN 32
75 /* 0 <= n < 4 */
76 #define ESPC_BD_MOD_STR(n) (ESPC_BD_MOD_STR_1 + n*8)
77 #define MAX_BD_MOD_STR_LEN 16
79 #define ESC_PHY_10G_FIBER 0x0
80 #define ESC_PHY_10G_COPPER 0x1
81 #define ESC_PHY_1G_FIBER 0x2
82 #define ESC_PHY_1G_COPPER 0x3
83 #define ESC_PHY_NONE 0xf
85 #define ESC_IMG_CHKSUM_VAL 0xab
87 typedef union _mac_addr_0_t {
88 uint64_t value;
90 struct {
91 #if defined(_BIG_ENDIAN)
92 uint32_t msw; /* Most significant word */
93 uint32_t lsw; /* Least significant word */
94 #elif defined(_LITTLE_ENDIAN)
95 uint32_t lsw; /* Least significant word */
96 uint32_t msw; /* Most significant word */
97 #endif
98 } val;
99 struct {
100 #if defined(_BIG_ENDIAN)
101 uint32_t w1;
102 #endif
103 struct {
104 #if defined(_BIT_FIELDS_HTOL)
105 uint32_t byte3 : 8;
106 uint32_t byte2 : 8;
107 uint32_t byte1 : 8;
108 uint32_t byte0 : 8;
109 #elif defined(_BIT_FIELDS_LTOH)
110 uint32_t byte0 : 8;
111 uint32_t byte1 : 8;
112 uint32_t byte2 : 8;
113 uint32_t byte3 : 8;
114 #endif
115 } w0;
117 #if defined(_LITTLE_ENDIAN)
118 uint32_t w1;
119 #endif
120 } bits;
121 } mac_addr_0_t;
123 typedef union _mac_addr_1_t {
124 uint64_t value;
126 struct {
127 #if defined(_BIG_ENDIAN)
128 uint32_t msw; /* Most significant word */
129 uint32_t lsw; /* Least significant word */
130 #elif defined(_LITTLE_ENDIAN)
131 uint32_t lsw; /* Least significant word */
132 uint32_t msw; /* Most significant word */
133 #endif
134 } val;
135 struct {
136 #if defined(_BIG_ENDIAN)
137 uint32_t w1;
138 #endif
139 struct {
140 #if defined(_BIT_FIELDS_HTOL)
141 uint32_t res : 16;
142 uint32_t byte5 : 8;
143 uint32_t byte4 : 8;
144 #elif defined(_BIT_FIELDS_LTOH)
145 uint32_t byte4 : 8;
146 uint32_t byte5 : 8;
147 uint32_t res : 16;
148 #endif
149 } w0;
151 #if defined(_LITTLE_ENDIAN)
152 uint32_t w1;
153 #endif
154 } bits;
155 } mac_addr_1_t;
158 typedef union _phy_type_t {
159 uint64_t value;
161 struct {
162 #if defined(_BIG_ENDIAN)
163 uint32_t msw; /* Most significant word */
164 uint32_t lsw; /* Least significant word */
165 #elif defined(_LITTLE_ENDIAN)
166 uint32_t lsw; /* Least significant word */
167 uint32_t msw; /* Most significant word */
168 #endif
169 } val;
170 struct {
171 #if defined(_BIG_ENDIAN)
172 uint32_t w1;
173 #endif
174 struct {
175 #if defined(_BIT_FIELDS_HTOL)
176 uint32_t pt0_phy_type : 8;
177 uint32_t pt1_phy_type : 8;
178 uint32_t pt2_phy_type : 8;
179 uint32_t pt3_phy_type : 8;
180 #elif defined(_BIT_FIELDS_LTOH)
181 uint32_t pt3_phy_type : 8;
182 uint32_t pt2_phy_type : 8;
183 uint32_t pt1_phy_type : 8;
184 uint32_t pt0_phy_type : 8;
185 #endif
186 } w0;
188 #if defined(_LITTLE_ENDIAN)
189 uint32_t w1;
190 #endif
191 } bits;
192 } phy_type_t;
195 typedef union _intr_num_t {
196 uint64_t value;
198 struct {
199 #if defined(_BIG_ENDIAN)
200 uint32_t msw; /* Most significant word */
201 uint32_t lsw; /* Least significant word */
202 #elif defined(_LITTLE_ENDIAN)
203 uint32_t lsw; /* Least significant word */
204 uint32_t msw; /* Most significant word */
205 #endif
206 } val;
207 struct {
208 #if defined(_BIG_ENDIAN)
209 uint32_t w1;
210 #endif
211 struct {
212 #if defined(_BIT_FIELDS_HTOL)
213 uint32_t pt0_intr_num : 8;
214 uint32_t pt1_intr_num : 8;
215 uint32_t pt2_intr_num : 8;
216 uint32_t pt3_intr_num : 8;
217 #elif defined(_BIT_FIELDS_LTOH)
218 uint32_t pt3_intr_num : 8;
219 uint32_t pt2_intr_num : 8;
220 uint32_t pt1_intr_num : 8;
221 uint32_t pt0_intr_num : 8;
222 #endif
223 } w0;
225 #if defined(_LITTLE_ENDIAN)
226 uint32_t w1;
227 #endif
228 } bits;
229 } intr_num_t;
232 #ifdef __cplusplus
234 #endif
236 #endif /* _SYS_NXGE_NXGE_ESPC_H */