diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
commit | 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (patch) | |
tree | 0bba044c4ce775e45a88a51686b5d9f90697ea9d /drivers/net/sk98lin/h |
Linux-2.6.12-rc2v2.6.12-rc2
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.
Let it rip!
Diffstat (limited to 'drivers/net/sk98lin/h')
23 files changed, 8935 insertions, 0 deletions
diff --git a/drivers/net/sk98lin/h/lm80.h b/drivers/net/sk98lin/h/lm80.h new file mode 100644 index 000000000000..4e2dbbf78000 --- /dev/null +++ b/drivers/net/sk98lin/h/lm80.h | |||
@@ -0,0 +1,179 @@ | |||
1 | /****************************************************************************** | ||
2 | * | ||
3 | * Name: lm80.h | ||
4 | * Project: Gigabit Ethernet Adapters, Common Modules | ||
5 | * Version: $Revision: 1.6 $ | ||
6 | * Date: $Date: 2003/05/13 17:26:52 $ | ||
7 | * Purpose: Contains all defines for the LM80 Chip | ||
8 | * (National Semiconductor). | ||
9 | * | ||
10 | ******************************************************************************/ | ||
11 | |||
12 | /****************************************************************************** | ||
13 | * | ||
14 | * (C)Copyright 1998-2002 SysKonnect. | ||
15 | * (C)Copyright 2002-2003 Marvell. | ||
16 | * | ||
17 | * This program is free software; you can redistribute it and/or modify | ||
18 | * it under the terms of the GNU General Public License as published by | ||
19 | * the Free Software Foundation; either version 2 of the License, or | ||
20 | * (at your option) any later version. | ||
21 | * | ||
22 | * The information in this file is provided "AS IS" without warranty. | ||
23 | * | ||
24 | ******************************************************************************/ | ||
25 | |||
26 | #ifndef __INC_LM80_H | ||
27 | #define __INC_LM80_H | ||
28 | |||
29 | #ifdef __cplusplus | ||
30 | extern "C" { | ||
31 | #endif /* __cplusplus */ | ||
32 | |||
33 | /* defines ********************************************************************/ | ||
34 | |||
35 | /* | ||
36 | * LM80 register definition | ||
37 | * | ||
38 | * All registers are 8 bit wide | ||
39 | */ | ||
40 | #define LM80_CFG 0x00 /* Configuration Register */ | ||
41 | #define LM80_ISRC_1 0x01 /* Interrupt Status Register 1 */ | ||
42 | #define LM80_ISRC_2 0x02 /* Interrupt Status Register 2 */ | ||
43 | #define LM80_IMSK_1 0x03 /* Interrupt Mask Register 1 */ | ||
44 | #define LM80_IMSK_2 0x04 /* Interrupt Mask Register 2 */ | ||
45 | #define LM80_FAN_CTRL 0x05 /* Fan Devisor/RST#/OS# Register */ | ||
46 | #define LM80_TEMP_CTRL 0x06 /* OS# Config, Temp Res. Reg */ | ||
47 | /* 0x07 - 0x1f reserved */ | ||
48 | /* current values */ | ||
49 | #define LM80_VT0_IN 0x20 /* current Voltage 0 value */ | ||
50 | #define LM80_VT1_IN 0x21 /* current Voltage 1 value */ | ||
51 | #define LM80_VT2_IN 0x22 /* current Voltage 2 value */ | ||
52 | #define LM80_VT3_IN 0x23 /* current Voltage 3 value */ | ||
53 | #define LM80_VT4_IN 0x24 /* current Voltage 4 value */ | ||
54 | #define LM80_VT5_IN 0x25 /* current Voltage 5 value */ | ||
55 | #define LM80_VT6_IN 0x26 /* current Voltage 6 value */ | ||
56 | #define LM80_TEMP_IN 0x27 /* current Temperature value */ | ||
57 | #define LM80_FAN1_IN 0x28 /* current Fan 1 count */ | ||
58 | #define LM80_FAN2_IN 0x29 /* current Fan 2 count */ | ||
59 | /* limit values */ | ||
60 | #define LM80_VT0_HIGH_LIM 0x2a /* high limit val for Voltage 0 */ | ||
61 | #define LM80_VT0_LOW_LIM 0x2b /* low limit val for Voltage 0 */ | ||
62 | #define LM80_VT1_HIGH_LIM 0x2c /* high limit val for Voltage 1 */ | ||
63 | #define LM80_VT1_LOW_LIM 0x2d /* low limit val for Voltage 1 */ | ||
64 | #define LM80_VT2_HIGH_LIM 0x2e /* high limit val for Voltage 2 */ | ||
65 | #define LM80_VT2_LOW_LIM 0x2f /* low limit val for Voltage 2 */ | ||
66 | #define LM80_VT3_HIGH_LIM 0x30 /* high limit val for Voltage 3 */ | ||
67 | #define LM80_VT3_LOW_LIM 0x31 /* low limit val for Voltage 3 */ | ||
68 | #define LM80_VT4_HIGH_LIM 0x32 /* high limit val for Voltage 4 */ | ||
69 | #define LM80_VT4_LOW_LIM 0x33 /* low limit val for Voltage 4 */ | ||
70 | #define LM80_VT5_HIGH_LIM 0x34 /* high limit val for Voltage 5 */ | ||
71 | #define LM80_VT5_LOW_LIM 0x35 /* low limit val for Voltage 5 */ | ||
72 | #define LM80_VT6_HIGH_LIM 0x36 /* high limit val for Voltage 6 */ | ||
73 | #define LM80_VT6_LOW_LIM 0x37 /* low limit val for Voltage 6 */ | ||
74 | #define LM80_THOT_LIM_UP 0x38 /* hot temperature limit (high) */ | ||
75 | #define LM80_THOT_LIM_LO 0x39 /* hot temperature limit (low) */ | ||
76 | #define LM80_TOS_LIM_UP 0x3a /* OS temperature limit (high) */ | ||
77 | #define LM80_TOS_LIM_LO 0x3b /* OS temperature limit (low) */ | ||
78 | #define LM80_FAN1_COUNT_LIM 0x3c /* Fan 1 count limit (high) */ | ||
79 | #define LM80_FAN2_COUNT_LIM 0x3d /* Fan 2 count limit (low) */ | ||
80 | /* 0x3e - 0x3f reserved */ | ||
81 | |||
82 | /* | ||
83 | * LM80 bit definitions | ||
84 | */ | ||
85 | |||
86 | /* LM80_CFG Configuration Register */ | ||
87 | #define LM80_CFG_START (1<<0) /* start monitoring operation */ | ||
88 | #define LM80_CFG_INT_ENA (1<<1) /* enables the INT# Interrupt output */ | ||
89 | #define LM80_CFG_INT_POL (1<<2) /* INT# pol: 0 act low, 1 act high */ | ||
90 | #define LM80_CFG_INT_CLR (1<<3) /* disables INT#/RST_OUT#/OS# outputs */ | ||
91 | #define LM80_CFG_RESET (1<<4) /* signals a reset */ | ||
92 | #define LM80_CFG_CHASS_CLR (1<<5) /* clears Chassis Intrusion (CI) pin */ | ||
93 | #define LM80_CFG_GPO (1<<6) /* drives the GPO# pin */ | ||
94 | #define LM80_CFG_INIT (1<<7) /* restore power on defaults */ | ||
95 | |||
96 | /* LM80_ISRC_1 Interrupt Status Register 1 */ | ||
97 | /* LM80_IMSK_1 Interrupt Mask Register 1 */ | ||
98 | #define LM80_IS_VT0 (1<<0) /* limit exceeded for Voltage 0 */ | ||
99 | #define LM80_IS_VT1 (1<<1) /* limit exceeded for Voltage 1 */ | ||
100 | #define LM80_IS_VT2 (1<<2) /* limit exceeded for Voltage 2 */ | ||
101 | #define LM80_IS_VT3 (1<<3) /* limit exceeded for Voltage 3 */ | ||
102 | #define LM80_IS_VT4 (1<<4) /* limit exceeded for Voltage 4 */ | ||
103 | #define LM80_IS_VT5 (1<<5) /* limit exceeded for Voltage 5 */ | ||
104 | #define LM80_IS_VT6 (1<<6) /* limit exceeded for Voltage 6 */ | ||
105 | #define LM80_IS_INT_IN (1<<7) /* state of INT_IN# */ | ||
106 | |||
107 | /* LM80_ISRC_2 Interrupt Status Register 2 */ | ||
108 | /* LM80_IMSK_2 Interrupt Mask Register 2 */ | ||
109 | #define LM80_IS_TEMP (1<<0) /* HOT temperature limit exceeded */ | ||
110 | #define LM80_IS_BTI (1<<1) /* state of BTI# pin */ | ||
111 | #define LM80_IS_FAN1 (1<<2) /* count limit exceeded for Fan 1 */ | ||
112 | #define LM80_IS_FAN2 (1<<3) /* count limit exceeded for Fan 2 */ | ||
113 | #define LM80_IS_CI (1<<4) /* Chassis Intrusion occured */ | ||
114 | #define LM80_IS_OS (1<<5) /* OS temperature limit exceeded */ | ||
115 | /* bit 6 and 7 are reserved in LM80_ISRC_2 */ | ||
116 | #define LM80_IS_HT_IRQ_MD (1<<6) /* Hot temperature interrupt mode */ | ||
117 | #define LM80_IS_OT_IRQ_MD (1<<7) /* OS temperature interrupt mode */ | ||
118 | |||
119 | /* LM80_FAN_CTRL Fan Devisor/RST#/OS# Register */ | ||
120 | #define LM80_FAN1_MD_SEL (1<<0) /* Fan 1 mode select */ | ||
121 | #define LM80_FAN2_MD_SEL (1<<1) /* Fan 2 mode select */ | ||
122 | #define LM80_FAN1_PRM_CTL (3<<2) /* Fan 1 speed control */ | ||
123 | #define LM80_FAN2_PRM_CTL (3<<4) /* Fan 2 speed control */ | ||
124 | #define LM80_FAN_OS_ENA (1<<6) /* enable OS mode on RST_OUT#/OS# pins*/ | ||
125 | #define LM80_FAN_RST_ENA (1<<7) /* sets RST_OUT#/OS# pins in RST mode */ | ||
126 | |||
127 | /* LM80_TEMP_CTRL OS# Config, Temp Res. Reg */ | ||
128 | #define LM80_TEMP_OS_STAT (1<<0) /* mirrors the state of RST_OUT#/OS# */ | ||
129 | #define LM80_TEMP_OS_POL (1<<1) /* select OS# polarity */ | ||
130 | #define LM80_TEMP_OS_MODE (1<<2) /* selects Interrupt mode */ | ||
131 | #define LM80_TEMP_RES (1<<3) /* selects 9 or 11 bit temp resulution*/ | ||
132 | #define LM80_TEMP_LSB (0xf<<4)/* 4 LSBs of 11 bit temp data */ | ||
133 | #define LM80_TEMP_LSB_9 (1<<7) /* LSB of 9 bit temperature data */ | ||
134 | |||
135 | /* 0x07 - 0x1f reserved */ | ||
136 | /* LM80_VT0_IN current Voltage 0 value */ | ||
137 | /* LM80_VT1_IN current Voltage 1 value */ | ||
138 | /* LM80_VT2_IN current Voltage 2 value */ | ||
139 | /* LM80_VT3_IN current Voltage 3 value */ | ||
140 | /* LM80_VT4_IN current Voltage 4 value */ | ||
141 | /* LM80_VT5_IN current Voltage 5 value */ | ||
142 | /* LM80_VT6_IN current Voltage 6 value */ | ||
143 | /* LM80_TEMP_IN current temperature value */ | ||
144 | /* LM80_FAN1_IN current Fan 1 count */ | ||
145 | /* LM80_FAN2_IN current Fan 2 count */ | ||
146 | /* LM80_VT0_HIGH_LIM high limit val for Voltage 0 */ | ||
147 | /* LM80_VT0_LOW_LIM low limit val for Voltage 0 */ | ||
148 | /* LM80_VT1_HIGH_LIM high limit val for Voltage 1 */ | ||
149 | /* LM80_VT1_LOW_LIM low limit val for Voltage 1 */ | ||
150 | /* LM80_VT2_HIGH_LIM high limit val for Voltage 2 */ | ||
151 | /* LM80_VT2_LOW_LIM low limit val for Voltage 2 */ | ||
152 | /* LM80_VT3_HIGH_LIM high limit val for Voltage 3 */ | ||
153 | /* LM80_VT3_LOW_LIM low limit val for Voltage 3 */ | ||
154 | /* LM80_VT4_HIGH_LIM high limit val for Voltage 4 */ | ||
155 | /* LM80_VT4_LOW_LIM low limit val for Voltage 4 */ | ||
156 | /* LM80_VT5_HIGH_LIM high limit val for Voltage 5 */ | ||
157 | /* LM80_VT5_LOW_LIM low limit val for Voltage 5 */ | ||
158 | /* LM80_VT6_HIGH_LIM high limit val for Voltage 6 */ | ||
159 | /* LM80_VT6_LOW_LIM low limit val for Voltage 6 */ | ||
160 | /* LM80_THOT_LIM_UP hot temperature limit (high) */ | ||
161 | /* LM80_THOT_LIM_LO hot temperature limit (low) */ | ||
162 | /* LM80_TOS_LIM_UP OS temperature limit (high) */ | ||
163 | /* LM80_TOS_LIM_LO OS temperature limit (low) */ | ||
164 | /* LM80_FAN1_COUNT_LIM Fan 1 count limit (high) */ | ||
165 | /* LM80_FAN2_COUNT_LIM Fan 2 count limit (low) */ | ||
166 | /* 0x3e - 0x3f reserved */ | ||
167 | |||
168 | #define LM80_ADDR 0x28 /* LM80 default addr */ | ||
169 | |||
170 | /* typedefs *******************************************************************/ | ||
171 | |||
172 | |||
173 | /* function prototypes ********************************************************/ | ||
174 | |||
175 | #ifdef __cplusplus | ||
176 | } | ||
177 | #endif /* __cplusplus */ | ||
178 | |||
179 | #endif /* __INC_LM80_H */ | ||
diff --git a/drivers/net/sk98lin/h/skaddr.h b/drivers/net/sk98lin/h/skaddr.h new file mode 100644 index 000000000000..3a2ea4a4b539 --- /dev/null +++ b/drivers/net/sk98lin/h/skaddr.h | |||
@@ -0,0 +1,333 @@ | |||
1 | /****************************************************************************** | ||
2 | * | ||
3 | * Name: skaddr.h | ||
4 | * Project: Gigabit Ethernet Adapters, ADDR-Modul | ||
5 | * Version: $Revision: 1.29 $ | ||
6 | * Date: $Date: 2003/05/13 16:57:24 $ | ||
7 | * Purpose: Header file for Address Management (MC, UC, Prom). | ||
8 | * | ||
9 | ******************************************************************************/ | ||
10 | |||
11 | /****************************************************************************** | ||
12 | * | ||
13 | * (C)Copyright 1998-2002 SysKonnect GmbH. | ||
14 | * (C)Copyright 2002-2003 Marvell. | ||
15 | * | ||
16 | * This program is free software; you can redistribute it and/or modify | ||
17 | * it under the terms of the GNU General Public License as published by | ||
18 | * the Free Software Foundation; either version 2 of the License, or | ||
19 | * (at your option) any later version. | ||
20 | * | ||
21 | * The information in this file is provided "AS IS" without warranty. | ||
22 | * | ||
23 | ******************************************************************************/ | ||
24 | |||
25 | /****************************************************************************** | ||
26 | * | ||
27 | * Description: | ||
28 | * | ||
29 | * This module is intended to manage multicast addresses and promiscuous mode | ||
30 | * on GEnesis adapters. | ||
31 | * | ||
32 | * Include File Hierarchy: | ||
33 | * | ||
34 | * "skdrv1st.h" | ||
35 | * ... | ||
36 | * "sktypes.h" | ||
37 | * "skqueue.h" | ||
38 | * "skaddr.h" | ||
39 | * ... | ||
40 | * "skdrv2nd.h" | ||
41 | * | ||
42 | ******************************************************************************/ | ||
43 | |||
44 | #ifndef __INC_SKADDR_H | ||
45 | #define __INC_SKADDR_H | ||
46 | |||
47 | #ifdef __cplusplus | ||
48 | extern "C" { | ||
49 | #endif /* cplusplus */ | ||
50 | |||
51 | /* defines ********************************************************************/ | ||
52 | |||
53 | #define SK_MAC_ADDR_LEN 6 /* Length of MAC address. */ | ||
54 | #define SK_MAX_ADDRS 14 /* #Addrs for exact match. */ | ||
55 | |||
56 | /* ----- Common return values ----- */ | ||
57 | |||
58 | #define SK_ADDR_SUCCESS 0 /* Function returned successfully. */ | ||
59 | #define SK_ADDR_ILLEGAL_PORT 100 /* Port number too high. */ | ||
60 | #define SK_ADDR_TOO_EARLY 101 /* Function called too early. */ | ||
61 | |||
62 | /* ----- Clear/Add flag bits ----- */ | ||
63 | |||
64 | #define SK_ADDR_PERMANENT 1 /* RLMT Address */ | ||
65 | |||
66 | /* ----- Additional Clear flag bits ----- */ | ||
67 | |||
68 | #define SK_MC_SW_ONLY 2 /* Do not update HW when clearing. */ | ||
69 | |||
70 | /* ----- Override flag bits ----- */ | ||
71 | |||
72 | #define SK_ADDR_LOGICAL_ADDRESS 0 | ||
73 | #define SK_ADDR_VIRTUAL_ADDRESS (SK_ADDR_LOGICAL_ADDRESS) /* old */ | ||
74 | #define SK_ADDR_PHYSICAL_ADDRESS 1 | ||
75 | #define SK_ADDR_CLEAR_LOGICAL 2 | ||
76 | #define SK_ADDR_SET_LOGICAL 4 | ||
77 | |||
78 | /* ----- Override return values ----- */ | ||
79 | |||
80 | #define SK_ADDR_OVERRIDE_SUCCESS (SK_ADDR_SUCCESS) | ||
81 | #define SK_ADDR_DUPLICATE_ADDRESS 1 | ||
82 | #define SK_ADDR_MULTICAST_ADDRESS 2 | ||
83 | |||
84 | /* ----- Partitioning of excact match table ----- */ | ||
85 | |||
86 | #define SK_ADDR_EXACT_MATCHES 16 /* #Exact match entries. */ | ||
87 | |||
88 | #define SK_ADDR_FIRST_MATCH_RLMT 1 | ||
89 | #define SK_ADDR_LAST_MATCH_RLMT 2 | ||
90 | #define SK_ADDR_FIRST_MATCH_DRV 3 | ||
91 | #define SK_ADDR_LAST_MATCH_DRV (SK_ADDR_EXACT_MATCHES - 1) | ||
92 | |||
93 | /* ----- SkAddrMcAdd/SkAddrMcUpdate return values ----- */ | ||
94 | |||
95 | #define SK_MC_FILTERING_EXACT 0 /* Exact filtering. */ | ||
96 | #define SK_MC_FILTERING_INEXACT 1 /* Inexact filtering. */ | ||
97 | |||
98 | /* ----- Additional SkAddrMcAdd return values ----- */ | ||
99 | |||
100 | #define SK_MC_ILLEGAL_ADDRESS 2 /* Illegal address. */ | ||
101 | #define SK_MC_ILLEGAL_PORT 3 /* Illegal port (not the active one). */ | ||
102 | #define SK_MC_RLMT_OVERFLOW 4 /* Too many RLMT mc addresses. */ | ||
103 | |||
104 | /* Promiscuous mode bits ----- */ | ||
105 | |||
106 | #define SK_PROM_MODE_NONE 0 /* Normal receive. */ | ||
107 | #define SK_PROM_MODE_LLC 1 /* Receive all LLC frames. */ | ||
108 | #define SK_PROM_MODE_ALL_MC 2 /* Receive all multicast frames. */ | ||
109 | /* #define SK_PROM_MODE_NON_LLC 4 */ /* Receive all non-LLC frames. */ | ||
110 | |||
111 | /* Macros */ | ||
112 | |||
113 | #ifdef OLD_STUFF | ||
114 | #ifndef SK_ADDR_EQUAL | ||
115 | /* | ||
116 | * "&" instead of "&&" allows better optimization on IA-64. | ||
117 | * The replacement is safe here, as all bytes exist. | ||
118 | */ | ||
119 | #ifndef SK_ADDR_DWORD_COMPARE | ||
120 | #define SK_ADDR_EQUAL(A1,A2) ( \ | ||
121 | (((SK_U8 *)(A1))[5] == ((SK_U8 *)(A2))[5]) & \ | ||
122 | (((SK_U8 *)(A1))[4] == ((SK_U8 *)(A2))[4]) & \ | ||
123 | (((SK_U8 *)(A1))[3] == ((SK_U8 *)(A2))[3]) & \ | ||
124 | (((SK_U8 *)(A1))[2] == ((SK_U8 *)(A2))[2]) & \ | ||
125 | (((SK_U8 *)(A1))[1] == ((SK_U8 *)(A2))[1]) & \ | ||
126 | (((SK_U8 *)(A1))[0] == ((SK_U8 *)(A2))[0])) | ||
127 | #else /* SK_ADDR_DWORD_COMPARE */ | ||
128 | #define SK_ADDR_EQUAL(A1,A2) ( \ | ||
129 | (*(SK_U32 *)&(((SK_U8 *)(A1))[2]) == *(SK_U32 *)&(((SK_U8 *)(A2))[2])) & \ | ||
130 | (*(SK_U32 *)&(((SK_U8 *)(A1))[0]) == *(SK_U32 *)&(((SK_U8 *)(A2))[0]))) | ||
131 | #endif /* SK_ADDR_DWORD_COMPARE */ | ||
132 | #endif /* SK_ADDR_EQUAL */ | ||
133 | #endif /* 0 */ | ||
134 | |||
135 | #ifndef SK_ADDR_EQUAL | ||
136 | #ifndef SK_ADDR_DWORD_COMPARE | ||
137 | #define SK_ADDR_EQUAL(A1,A2) ( \ | ||
138 | (((SK_U8 SK_FAR *)(A1))[5] == ((SK_U8 SK_FAR *)(A2))[5]) & \ | ||
139 | (((SK_U8 SK_FAR *)(A1))[4] == ((SK_U8 SK_FAR *)(A2))[4]) & \ | ||
140 | (((SK_U8 SK_FAR *)(A1))[3] == ((SK_U8 SK_FAR *)(A2))[3]) & \ | ||
141 | (((SK_U8 SK_FAR *)(A1))[2] == ((SK_U8 SK_FAR *)(A2))[2]) & \ | ||
142 | (((SK_U8 SK_FAR *)(A1))[1] == ((SK_U8 SK_FAR *)(A2))[1]) & \ | ||
143 | (((SK_U8 SK_FAR *)(A1))[0] == ((SK_U8 SK_FAR *)(A2))[0])) | ||
144 | #else /* SK_ADDR_DWORD_COMPARE */ | ||
145 | #define SK_ADDR_EQUAL(A1,A2) ( \ | ||
146 | (*(SK_U16 SK_FAR *)&(((SK_U8 SK_FAR *)(A1))[4]) == \ | ||
147 | *(SK_U16 SK_FAR *)&(((SK_U8 SK_FAR *)(A2))[4])) && \ | ||
148 | (*(SK_U32 SK_FAR *)&(((SK_U8 SK_FAR *)(A1))[0]) == \ | ||
149 | *(SK_U32 SK_FAR *)&(((SK_U8 SK_FAR *)(A2))[0]))) | ||
150 | #endif /* SK_ADDR_DWORD_COMPARE */ | ||
151 | #endif /* SK_ADDR_EQUAL */ | ||
152 | |||
153 | /* typedefs *******************************************************************/ | ||
154 | |||
155 | typedef struct s_MacAddr { | ||
156 | SK_U8 a[SK_MAC_ADDR_LEN]; | ||
157 | } SK_MAC_ADDR; | ||
158 | |||
159 | |||
160 | /* SK_FILTER is used to ensure alignment of the filter. */ | ||
161 | typedef union s_InexactFilter { | ||
162 | SK_U8 Bytes[8]; | ||
163 | SK_U64 Val; /* Dummy entry for alignment only. */ | ||
164 | } SK_FILTER64; | ||
165 | |||
166 | |||
167 | typedef struct s_AddrNet SK_ADDR_NET; | ||
168 | |||
169 | |||
170 | typedef struct s_AddrPort { | ||
171 | |||
172 | /* ----- Public part (read-only) ----- */ | ||
173 | |||
174 | SK_MAC_ADDR CurrentMacAddress; /* Current physical MAC Address. */ | ||
175 | SK_MAC_ADDR PermanentMacAddress; /* Permanent physical MAC Address. */ | ||
176 | int PromMode; /* Promiscuous Mode. */ | ||
177 | |||
178 | /* ----- Private part ----- */ | ||
179 | |||
180 | SK_MAC_ADDR PreviousMacAddress; /* Prev. phys. MAC Address. */ | ||
181 | SK_BOOL CurrentMacAddressSet; /* CurrentMacAddress is set. */ | ||
182 | SK_U8 Align01; | ||
183 | |||
184 | SK_U32 FirstExactMatchRlmt; | ||
185 | SK_U32 NextExactMatchRlmt; | ||
186 | SK_U32 FirstExactMatchDrv; | ||
187 | SK_U32 NextExactMatchDrv; | ||
188 | SK_MAC_ADDR Exact[SK_ADDR_EXACT_MATCHES]; | ||
189 | SK_FILTER64 InexactFilter; /* For 64-bit hash register. */ | ||
190 | SK_FILTER64 InexactRlmtFilter; /* For 64-bit hash register. */ | ||
191 | SK_FILTER64 InexactDrvFilter; /* For 64-bit hash register. */ | ||
192 | } SK_ADDR_PORT; | ||
193 | |||
194 | |||
195 | struct s_AddrNet { | ||
196 | /* ----- Public part (read-only) ----- */ | ||
197 | |||
198 | SK_MAC_ADDR CurrentMacAddress; /* Logical MAC Address. */ | ||
199 | SK_MAC_ADDR PermanentMacAddress; /* Logical MAC Address. */ | ||
200 | |||
201 | /* ----- Private part ----- */ | ||
202 | |||
203 | SK_U32 ActivePort; /* View of module ADDR. */ | ||
204 | SK_BOOL CurrentMacAddressSet; /* CurrentMacAddress is set. */ | ||
205 | SK_U8 Align01; | ||
206 | SK_U16 Align02; | ||
207 | }; | ||
208 | |||
209 | |||
210 | typedef struct s_Addr { | ||
211 | |||
212 | /* ----- Public part (read-only) ----- */ | ||
213 | |||
214 | SK_ADDR_NET Net[SK_MAX_NETS]; | ||
215 | SK_ADDR_PORT Port[SK_MAX_MACS]; | ||
216 | |||
217 | /* ----- Private part ----- */ | ||
218 | } SK_ADDR; | ||
219 | |||
220 | /* function prototypes ********************************************************/ | ||
221 | |||
222 | #ifndef SK_KR_PROTO | ||
223 | |||
224 | /* Functions provided by SkAddr */ | ||
225 | |||
226 | /* ANSI/C++ compliant function prototypes */ | ||
227 | |||
228 | extern int SkAddrInit( | ||
229 | SK_AC *pAC, | ||
230 | SK_IOC IoC, | ||
231 | int Level); | ||
232 | |||
233 | extern int SkAddrMcClear( | ||
234 | SK_AC *pAC, | ||
235 | SK_IOC IoC, | ||
236 | SK_U32 PortNumber, | ||
237 | int Flags); | ||
238 | |||
239 | extern int SkAddrXmacMcClear( | ||
240 | SK_AC *pAC, | ||
241 | SK_IOC IoC, | ||
242 | SK_U32 PortNumber, | ||
243 | int Flags); | ||
244 | |||
245 | extern int SkAddrGmacMcClear( | ||
246 | SK_AC *pAC, | ||
247 | SK_IOC IoC, | ||
248 | SK_U32 PortNumber, | ||
249 | int Flags); | ||
250 | |||
251 | extern int SkAddrMcAdd( | ||
252 | SK_AC *pAC, | ||
253 | SK_IOC IoC, | ||
254 | SK_U32 PortNumber, | ||
255 | SK_MAC_ADDR *pMc, | ||
256 | int Flags); | ||
257 | |||
258 | extern int SkAddrXmacMcAdd( | ||
259 | SK_AC *pAC, | ||
260 | SK_IOC IoC, | ||
261 | SK_U32 PortNumber, | ||
262 | SK_MAC_ADDR *pMc, | ||
263 | int Flags); | ||
264 | |||
265 | extern int SkAddrGmacMcAdd( | ||
266 | SK_AC *pAC, | ||
267 | SK_IOC IoC, | ||
268 | SK_U32 PortNumber, | ||
269 | SK_MAC_ADDR *pMc, | ||
270 | int Flags); | ||
271 | |||
272 | extern int SkAddrMcUpdate( | ||
273 | SK_AC *pAC, | ||
274 | SK_IOC IoC, | ||
275 | SK_U32 PortNumber); | ||
276 | |||
277 | extern int SkAddrXmacMcUpdate( | ||
278 | SK_AC *pAC, | ||
279 | SK_IOC IoC, | ||
280 | SK_U32 PortNumber); | ||
281 | |||
282 | extern int SkAddrGmacMcUpdate( | ||
283 | SK_AC *pAC, | ||
284 | SK_IOC IoC, | ||
285 | SK_U32 PortNumber); | ||
286 | |||
287 | extern int SkAddrOverride( | ||
288 | SK_AC *pAC, | ||
289 | SK_IOC IoC, | ||
290 | SK_U32 PortNumber, | ||
291 | SK_MAC_ADDR SK_FAR *pNewAddr, | ||
292 | int Flags); | ||
293 | |||
294 | extern int SkAddrPromiscuousChange( | ||
295 | SK_AC *pAC, | ||
296 | SK_IOC IoC, | ||
297 | SK_U32 PortNumber, | ||
298 | int NewPromMode); | ||
299 | |||
300 | extern int SkAddrXmacPromiscuousChange( | ||
301 | SK_AC *pAC, | ||
302 | SK_IOC IoC, | ||
303 | SK_U32 PortNumber, | ||
304 | int NewPromMode); | ||
305 | |||
306 | extern int SkAddrGmacPromiscuousChange( | ||
307 | SK_AC *pAC, | ||
308 | SK_IOC IoC, | ||
309 | SK_U32 PortNumber, | ||
310 | int NewPromMode); | ||
311 | |||
312 | #ifndef SK_SLIM | ||
313 | extern int SkAddrSwap( | ||
314 | SK_AC *pAC, | ||
315 | SK_IOC IoC, | ||
316 | SK_U32 FromPortNumber, | ||
317 | SK_U32 ToPortNumber); | ||
318 | #endif | ||
319 | |||
320 | #else /* defined(SK_KR_PROTO)) */ | ||
321 | |||
322 | /* Non-ANSI/C++ compliant function prototypes */ | ||
323 | |||
324 | #error KR-style prototypes are not yet provided. | ||
325 | |||
326 | #endif /* defined(SK_KR_PROTO)) */ | ||
327 | |||
328 | |||
329 | #ifdef __cplusplus | ||
330 | } | ||
331 | #endif /* __cplusplus */ | ||
332 | |||
333 | #endif /* __INC_SKADDR_H */ | ||
diff --git a/drivers/net/sk98lin/h/skcsum.h b/drivers/net/sk98lin/h/skcsum.h new file mode 100644 index 000000000000..2b94adb93331 --- /dev/null +++ b/drivers/net/sk98lin/h/skcsum.h | |||
@@ -0,0 +1,219 @@ | |||
1 | /****************************************************************************** | ||
2 | * | ||
3 | * Name: skcsum.h | ||
4 | * Project: GEnesis - SysKonnect SK-NET Gigabit Ethernet (SK-98xx) | ||
5 | * Version: $Revision: 1.10 $ | ||
6 | * Date: $Date: 2003/08/20 13:59:57 $ | ||
7 | * Purpose: Store/verify Internet checksum in send/receive packets. | ||
8 | * | ||
9 | ******************************************************************************/ | ||
10 | |||
11 | /****************************************************************************** | ||
12 | * | ||
13 | * (C)Copyright 1998-2001 SysKonnect GmbH. | ||
14 | * | ||
15 | * This program is free software; you can redistribute it and/or modify | ||
16 | * it under the terms of the GNU General Public License as published by | ||
17 | * the Free Software Foundation; either version 2 of the License, or | ||
18 | * (at your option) any later version. | ||
19 | * | ||
20 | * The information in this file is provided "AS IS" without warranty. | ||
21 | * | ||
22 | ******************************************************************************/ | ||
23 | |||
24 | /****************************************************************************** | ||
25 | * | ||
26 | * Description: | ||
27 | * | ||
28 | * Public header file for the "GEnesis" common module "CSUM". | ||
29 | * | ||
30 | * "GEnesis" is an abbreviation of "Gigabit Ethernet Network System in Silicon" | ||
31 | * and is the code name of this SysKonnect project. | ||
32 | * | ||
33 | * Compilation Options: | ||
34 | * | ||
35 | * SK_USE_CSUM - Define if CSUM is to be used. Otherwise, CSUM will be an | ||
36 | * empty module. | ||
37 | * | ||
38 | * SKCS_OVERWRITE_PROTO - Define to overwrite the default protocol id | ||
39 | * definitions. In this case, all SKCS_PROTO_xxx definitions must be made | ||
40 | * external. | ||
41 | * | ||
42 | * SKCS_OVERWRITE_STATUS - Define to overwrite the default return status | ||
43 | * definitions. In this case, all SKCS_STATUS_xxx definitions must be made | ||
44 | * external. | ||
45 | * | ||
46 | * Include File Hierarchy: | ||
47 | * | ||
48 | * "h/skcsum.h" | ||
49 | * "h/sktypes.h" | ||
50 | * "h/skqueue.h" | ||
51 | * | ||
52 | ******************************************************************************/ | ||
53 | |||
54 | #ifndef __INC_SKCSUM_H | ||
55 | #define __INC_SKCSUM_H | ||
56 | |||
57 | #include "h/sktypes.h" | ||
58 | #include "h/skqueue.h" | ||
59 | |||
60 | /* defines ********************************************************************/ | ||
61 | |||
62 | /* | ||
63 | * Define the default bit flags for 'SKCS_PACKET_INFO.ProtocolFlags' if no user | ||
64 | * overwrite. | ||
65 | */ | ||
66 | #ifndef SKCS_OVERWRITE_PROTO /* User overwrite? */ | ||
67 | #define SKCS_PROTO_IP 0x1 /* IP (Internet Protocol version 4) */ | ||
68 | #define SKCS_PROTO_TCP 0x2 /* TCP (Transmission Control Protocol) */ | ||
69 | #define SKCS_PROTO_UDP 0x4 /* UDP (User Datagram Protocol) */ | ||
70 | |||
71 | /* Indices for protocol statistics. */ | ||
72 | #define SKCS_PROTO_STATS_IP 0 | ||
73 | #define SKCS_PROTO_STATS_UDP 1 | ||
74 | #define SKCS_PROTO_STATS_TCP 2 | ||
75 | #define SKCS_NUM_PROTOCOLS 3 /* Number of supported protocols. */ | ||
76 | #endif /* !SKCS_OVERWRITE_PROTO */ | ||
77 | |||
78 | /* | ||
79 | * Define the default SKCS_STATUS type and values if no user overwrite. | ||
80 | * | ||
81 | * SKCS_STATUS_UNKNOWN_IP_VERSION - Not an IP v4 frame. | ||
82 | * SKCS_STATUS_IP_CSUM_ERROR - IP checksum error. | ||
83 | * SKCS_STATUS_IP_CSUM_ERROR_TCP - IP checksum error in TCP frame. | ||
84 | * SKCS_STATUS_IP_CSUM_ERROR_UDP - IP checksum error in UDP frame | ||
85 | * SKCS_STATUS_IP_FRAGMENT - IP fragment (IP checksum ok). | ||
86 | * SKCS_STATUS_IP_CSUM_OK - IP checksum ok (not a TCP or UDP frame). | ||
87 | * SKCS_STATUS_TCP_CSUM_ERROR - TCP checksum error (IP checksum ok). | ||
88 | * SKCS_STATUS_UDP_CSUM_ERROR - UDP checksum error (IP checksum ok). | ||
89 | * SKCS_STATUS_TCP_CSUM_OK - IP and TCP checksum ok. | ||
90 | * SKCS_STATUS_UDP_CSUM_OK - IP and UDP checksum ok. | ||
91 | * SKCS_STATUS_IP_CSUM_OK_NO_UDP - IP checksum OK and no UDP checksum. | ||
92 | */ | ||
93 | #ifndef SKCS_OVERWRITE_STATUS /* User overwrite? */ | ||
94 | #define SKCS_STATUS int /* Define status type. */ | ||
95 | |||
96 | #define SKCS_STATUS_UNKNOWN_IP_VERSION 1 | ||
97 | #define SKCS_STATUS_IP_CSUM_ERROR 2 | ||
98 | #define SKCS_STATUS_IP_FRAGMENT 3 | ||
99 | #define SKCS_STATUS_IP_CSUM_OK 4 | ||
100 | #define SKCS_STATUS_TCP_CSUM_ERROR 5 | ||
101 | #define SKCS_STATUS_UDP_CSUM_ERROR 6 | ||
102 | #define SKCS_STATUS_TCP_CSUM_OK 7 | ||
103 | #define SKCS_STATUS_UDP_CSUM_OK 8 | ||
104 | /* needed for Microsoft */ | ||
105 | #define SKCS_STATUS_IP_CSUM_ERROR_UDP 9 | ||
106 | #define SKCS_STATUS_IP_CSUM_ERROR_TCP 10 | ||
107 | /* UDP checksum may be omitted */ | ||
108 | #define SKCS_STATUS_IP_CSUM_OK_NO_UDP 11 | ||
109 | #endif /* !SKCS_OVERWRITE_STATUS */ | ||
110 | |||
111 | /* Clear protocol statistics event. */ | ||
112 | #define SK_CSUM_EVENT_CLEAR_PROTO_STATS 1 | ||
113 | |||
114 | /* | ||
115 | * Add two values in one's complement. | ||
116 | * | ||
117 | * Note: One of the two input values may be "longer" than 16-bit, but then the | ||
118 | * resulting sum may be 17 bits long. In this case, add zero to the result using | ||
119 | * SKCS_OC_ADD() again. | ||
120 | * | ||
121 | * Result = Value1 + Value2 | ||
122 | */ | ||
123 | #define SKCS_OC_ADD(Result, Value1, Value2) { \ | ||
124 | unsigned long Sum; \ | ||
125 | \ | ||
126 | Sum = (unsigned long) (Value1) + (unsigned long) (Value2); \ | ||
127 | /* Add-in any carry. */ \ | ||
128 | (Result) = (Sum & 0xffff) + (Sum >> 16); \ | ||
129 | } | ||
130 | |||
131 | /* | ||
132 | * Subtract two values in one's complement. | ||
133 | * | ||
134 | * Result = Value1 - Value2 | ||
135 | */ | ||
136 | #define SKCS_OC_SUB(Result, Value1, Value2) \ | ||
137 | SKCS_OC_ADD((Result), (Value1), ~(Value2) & 0xffff) | ||
138 | |||
139 | /* typedefs *******************************************************************/ | ||
140 | |||
141 | /* | ||
142 | * SKCS_PROTO_STATS - The CSUM protocol statistics structure. | ||
143 | * | ||
144 | * There is one instance of this structure for each protocol supported. | ||
145 | */ | ||
146 | typedef struct s_CsProtocolStatistics { | ||
147 | SK_U64 RxOkCts; /* Receive checksum ok. */ | ||
148 | SK_U64 RxUnableCts; /* Unable to verify receive checksum. */ | ||
149 | SK_U64 RxErrCts; /* Receive checksum error. */ | ||
150 | SK_U64 TxOkCts; /* Transmit checksum ok. */ | ||
151 | SK_U64 TxUnableCts; /* Unable to calculate checksum in hw. */ | ||
152 | } SKCS_PROTO_STATS; | ||
153 | |||
154 | /* | ||
155 | * s_Csum - The CSUM module context structure. | ||
156 | */ | ||
157 | typedef struct s_Csum { | ||
158 | /* Enabled receive SK_PROTO_XXX bit flags. */ | ||
159 | unsigned ReceiveFlags[SK_MAX_NETS]; | ||
160 | #ifdef TX_CSUM | ||
161 | unsigned TransmitFlags[SK_MAX_NETS]; | ||
162 | #endif /* TX_CSUM */ | ||
163 | |||
164 | /* The protocol statistics structure; one per supported protocol. */ | ||
165 | SKCS_PROTO_STATS ProtoStats[SK_MAX_NETS][SKCS_NUM_PROTOCOLS]; | ||
166 | } SK_CSUM; | ||
167 | |||
168 | /* | ||
169 | * SKCS_PACKET_INFO - The packet information structure. | ||
170 | */ | ||
171 | typedef struct s_CsPacketInfo { | ||
172 | /* Bit field specifiying the desired/found protocols. */ | ||
173 | unsigned ProtocolFlags; | ||
174 | |||
175 | /* Length of complete IP header, including any option fields. */ | ||
176 | unsigned IpHeaderLength; | ||
177 | |||
178 | /* IP header checksum. */ | ||
179 | unsigned IpHeaderChecksum; | ||
180 | |||
181 | /* TCP/UDP pseudo header checksum. */ | ||
182 | unsigned PseudoHeaderChecksum; | ||
183 | } SKCS_PACKET_INFO; | ||
184 | |||
185 | /* function prototypes ********************************************************/ | ||
186 | |||
187 | #ifndef SK_CS_CALCULATE_CHECKSUM | ||
188 | extern unsigned SkCsCalculateChecksum( | ||
189 | void *pData, | ||
190 | unsigned Length); | ||
191 | #endif /* SK_CS_CALCULATE_CHECKSUM */ | ||
192 | |||
193 | extern int SkCsEvent( | ||
194 | SK_AC *pAc, | ||
195 | SK_IOC Ioc, | ||
196 | SK_U32 Event, | ||
197 | SK_EVPARA Param); | ||
198 | |||
199 | extern SKCS_STATUS SkCsGetReceiveInfo( | ||
200 | SK_AC *pAc, | ||
201 | void *pIpHeader, | ||
202 | unsigned Checksum1, | ||
203 | unsigned Checksum2, | ||
204 | int NetNumber); | ||
205 | |||
206 | extern void SkCsGetSendInfo( | ||
207 | SK_AC *pAc, | ||
208 | void *pIpHeader, | ||
209 | SKCS_PACKET_INFO *pPacketInfo, | ||
210 | int NetNumber); | ||
211 | |||
212 | extern void SkCsSetReceiveFlags( | ||
213 | SK_AC *pAc, | ||
214 | unsigned ReceiveFlags, | ||
215 | unsigned *pChecksum1Offset, | ||
216 | unsigned *pChecksum2Offset, | ||
217 | int NetNumber); | ||
218 | |||
219 | #endif /* __INC_SKCSUM_H */ | ||
diff --git a/drivers/net/sk98lin/h/skdebug.h b/drivers/net/sk98lin/h/skdebug.h new file mode 100644 index 000000000000..3cba171d74b2 --- /dev/null +++ b/drivers/net/sk98lin/h/skdebug.h | |||
@@ -0,0 +1,74 @@ | |||
1 | /****************************************************************************** | ||
2 | * | ||
3 | * Name: skdebug.h | ||
4 | * Project: Gigabit Ethernet Adapters, Common Modules | ||
5 | * Version: $Revision: 1.14 $ | ||
6 | * Date: $Date: 2003/05/13 17:26:00 $ | ||
7 | * Purpose: SK specific DEBUG support | ||
8 | * | ||
9 | ******************************************************************************/ | ||
10 | |||
11 | /****************************************************************************** | ||
12 | * | ||
13 | * (C)Copyright 1998-2002 SysKonnect. | ||
14 | * (C)Copyright 2002-2003 Marvell. | ||
15 | * | ||
16 | * This program is free software; you can redistribute it and/or modify | ||
17 | * it under the terms of the GNU General Public License as published by | ||
18 | * the Free Software Foundation; either version 2 of the License, or | ||
19 | * (at your option) any later version. | ||
20 | * | ||
21 | * The information in this file is provided "AS IS" without warranty. | ||
22 | * | ||
23 | ******************************************************************************/ | ||
24 | |||
25 | #ifndef __INC_SKDEBUG_H | ||
26 | #define __INC_SKDEBUG_H | ||
27 | |||
28 | #ifdef DEBUG | ||
29 | #ifndef SK_DBG_MSG | ||
30 | #define SK_DBG_MSG(pAC,comp,cat,arg) \ | ||
31 | if ( ((comp) & SK_DBG_CHKMOD(pAC)) && \ | ||
32 | ((cat) & SK_DBG_CHKCAT(pAC)) ) { \ | ||
33 | SK_DBG_PRINTF arg ; \ | ||
34 | } | ||
35 | #endif | ||
36 | #else | ||
37 | #define SK_DBG_MSG(pAC,comp,lev,arg) | ||
38 | #endif | ||
39 | |||
40 | /* PLS NOTE: | ||
41 | * ========= | ||
42 | * Due to any restrictions of kernel printf routines do not use other | ||
43 | * format identifiers as: %x %d %c %s . | ||
44 | * Never use any combined format identifiers such as: %lx %ld in your | ||
45 | * printf - argument (arg) because some OS specific kernel printfs may | ||
46 | * only support some basic identifiers. | ||
47 | */ | ||
48 | |||
49 | /* Debug modules */ | ||
50 | |||
51 | #define SK_DBGMOD_MERR 0x00000001L /* general module error indication */ | ||
52 | #define SK_DBGMOD_HWM 0x00000002L /* Hardware init module */ | ||
53 | #define SK_DBGMOD_RLMT 0x00000004L /* RLMT module */ | ||
54 | #define SK_DBGMOD_VPD 0x00000008L /* VPD module */ | ||
55 | #define SK_DBGMOD_I2C 0x00000010L /* I2C module */ | ||
56 | #define SK_DBGMOD_PNMI 0x00000020L /* PNMI module */ | ||
57 | #define SK_DBGMOD_CSUM 0x00000040L /* CSUM module */ | ||
58 | #define SK_DBGMOD_ADDR 0x00000080L /* ADDR module */ | ||
59 | #define SK_DBGMOD_PECP 0x00000100L /* PECP module */ | ||
60 | #define SK_DBGMOD_POWM 0x00000200L /* Power Management module */ | ||
61 | |||
62 | /* Debug events */ | ||
63 | |||
64 | #define SK_DBGCAT_INIT 0x00000001L /* module/driver initialization */ | ||
65 | #define SK_DBGCAT_CTRL 0x00000002L /* controlling devices */ | ||
66 | #define SK_DBGCAT_ERR 0x00000004L /* error handling paths */ | ||
67 | #define SK_DBGCAT_TX 0x00000008L /* transmit path */ | ||
68 | #define SK_DBGCAT_RX 0x00000010L /* receive path */ | ||
69 | #define SK_DBGCAT_IRQ 0x00000020L /* general IRQ handling */ | ||
70 | #define SK_DBGCAT_QUEUE 0x00000040L /* any queue management */ | ||
71 | #define SK_DBGCAT_DUMP 0x00000080L /* large data output e.g. hex dump */ | ||
72 | #define SK_DBGCAT_FATAL 0x00000100L /* fatal error */ | ||
73 | |||
74 | #endif /* __INC_SKDEBUG_H */ | ||
diff --git a/drivers/net/sk98lin/h/skdrv1st.h b/drivers/net/sk98lin/h/skdrv1st.h new file mode 100644 index 000000000000..308440bd0e12 --- /dev/null +++ b/drivers/net/sk98lin/h/skdrv1st.h | |||
@@ -0,0 +1,191 @@ | |||
1 | /****************************************************************************** | ||
2 | * | ||
3 | * Name: skdrv1st.h | ||
4 | * Project: GEnesis, PCI Gigabit Ethernet Adapter | ||
5 | * Version: $Revision: 1.4 $ | ||
6 | * Date: $Date: 2003/11/12 14:28:14 $ | ||
7 | * Purpose: First header file for driver and all other modules | ||
8 | * | ||
9 | ******************************************************************************/ | ||
10 | |||
11 | /****************************************************************************** | ||
12 | * | ||
13 | * (C)Copyright 1998-2002 SysKonnect GmbH. | ||
14 | * (C)Copyright 2002-2003 Marvell. | ||
15 | * | ||
16 | * This program is free software; you can redistribute it and/or modify | ||
17 | * it under the terms of the GNU General Public License as published by | ||
18 | * the Free Software Foundation; either version 2 of the License, or | ||
19 | * (at your option) any later version. | ||
20 | * | ||
21 | * The information in this file is provided "AS IS" without warranty. | ||
22 | * | ||
23 | ******************************************************************************/ | ||
24 | |||
25 | /****************************************************************************** | ||
26 | * | ||
27 | * Description: | ||
28 | * | ||
29 | * This is the first include file of the driver, which includes all | ||
30 | * neccessary system header files and some of the GEnesis header files. | ||
31 | * It also defines some basic items. | ||
32 | * | ||
33 | * Include File Hierarchy: | ||
34 | * | ||
35 | * see skge.c | ||
36 | * | ||
37 | ******************************************************************************/ | ||
38 | |||
39 | #ifndef __INC_SKDRV1ST_H | ||
40 | #define __INC_SKDRV1ST_H | ||
41 | |||
42 | /* Check kernel version */ | ||
43 | #include <linux/version.h> | ||
44 | |||
45 | typedef struct s_AC SK_AC; | ||
46 | |||
47 | /* Set card versions */ | ||
48 | #define SK_FAR | ||
49 | |||
50 | /* override some default functions with optimized linux functions */ | ||
51 | |||
52 | #define SK_PNMI_STORE_U16(p,v) memcpy((char*)(p),(char*)&(v),2) | ||
53 | #define SK_PNMI_STORE_U32(p,v) memcpy((char*)(p),(char*)&(v),4) | ||
54 | #define SK_PNMI_STORE_U64(p,v) memcpy((char*)(p),(char*)&(v),8) | ||
55 | #define SK_PNMI_READ_U16(p,v) memcpy((char*)&(v),(char*)(p),2) | ||
56 | #define SK_PNMI_READ_U32(p,v) memcpy((char*)&(v),(char*)(p),4) | ||
57 | #define SK_PNMI_READ_U64(p,v) memcpy((char*)&(v),(char*)(p),8) | ||
58 | |||
59 | #define SK_ADDR_EQUAL(a1,a2) (!memcmp(a1,a2,6)) | ||
60 | |||
61 | #include <linux/types.h> | ||
62 | #include <linux/kernel.h> | ||
63 | #include <linux/string.h> | ||
64 | #include <linux/errno.h> | ||
65 | #include <linux/ioport.h> | ||
66 | #include <linux/slab.h> | ||
67 | #include <linux/interrupt.h> | ||
68 | #include <linux/pci.h> | ||
69 | #include <linux/bitops.h> | ||
70 | #include <asm/byteorder.h> | ||
71 | #include <asm/io.h> | ||
72 | #include <asm/irq.h> | ||
73 | #include <linux/netdevice.h> | ||
74 | #include <linux/etherdevice.h> | ||
75 | #include <linux/skbuff.h> | ||
76 | |||
77 | #include <linux/init.h> | ||
78 | #include <asm/uaccess.h> | ||
79 | #include <net/checksum.h> | ||
80 | |||
81 | #define SK_CS_CALCULATE_CHECKSUM | ||
82 | #ifndef CONFIG_X86_64 | ||
83 | #define SkCsCalculateChecksum(p,l) ((~ip_compute_csum(p, l)) & 0xffff) | ||
84 | #else | ||
85 | #define SkCsCalculateChecksum(p,l) ((~ip_fast_csum(p, l)) & 0xffff) | ||
86 | #endif | ||
87 | |||
88 | #include "h/sktypes.h" | ||
89 | #include "h/skerror.h" | ||
90 | #include "h/skdebug.h" | ||
91 | #include "h/lm80.h" | ||
92 | #include "h/xmac_ii.h" | ||
93 | |||
94 | #ifdef __LITTLE_ENDIAN | ||
95 | #define SK_LITTLE_ENDIAN | ||
96 | #else | ||
97 | #define SK_BIG_ENDIAN | ||
98 | #endif | ||
99 | |||
100 | #define SK_NET_DEVICE net_device | ||
101 | |||
102 | |||
103 | /* we use gethrtime(), return unit: nanoseconds */ | ||
104 | #define SK_TICKS_PER_SEC 100 | ||
105 | |||
106 | #define SK_MEM_MAPPED_IO | ||
107 | |||
108 | // #define SK_RLMT_SLOW_LOOKAHEAD | ||
109 | |||
110 | #define SK_MAX_MACS 2 | ||
111 | #define SK_MAX_NETS 2 | ||
112 | |||
113 | #define SK_IOC char __iomem * | ||
114 | |||
115 | typedef struct s_DrvRlmtMbuf SK_MBUF; | ||
116 | |||
117 | #define SK_CONST64 INT64_C | ||
118 | #define SK_CONSTU64 UINT64_C | ||
119 | |||
120 | #define SK_MEMCPY(dest,src,size) memcpy(dest,src,size) | ||
121 | #define SK_MEMCMP(s1,s2,size) memcmp(s1,s2,size) | ||
122 | #define SK_MEMSET(dest,val,size) memset(dest,val,size) | ||
123 | #define SK_STRLEN(pStr) strlen((char*)(pStr)) | ||
124 | #define SK_STRNCPY(pDest,pSrc,size) strncpy((char*)(pDest),(char*)(pSrc),size) | ||
125 | #define SK_STRCMP(pStr1,pStr2) strcmp((char*)(pStr1),(char*)(pStr2)) | ||
126 | |||
127 | /* macros to access the adapter */ | ||
128 | #define SK_OUT8(b,a,v) writeb((v), ((b)+(a))) | ||
129 | #define SK_OUT16(b,a,v) writew((v), ((b)+(a))) | ||
130 | #define SK_OUT32(b,a,v) writel((v), ((b)+(a))) | ||
131 | #define SK_IN8(b,a,pv) (*(pv) = readb((b)+(a))) | ||
132 | #define SK_IN16(b,a,pv) (*(pv) = readw((b)+(a))) | ||
133 | #define SK_IN32(b,a,pv) (*(pv) = readl((b)+(a))) | ||
134 | |||
135 | #define int8_t char | ||
136 | #define int16_t short | ||
137 | #define int32_t long | ||
138 | #define int64_t long long | ||
139 | #define uint8_t u_char | ||
140 | #define uint16_t u_short | ||
141 | #define uint32_t u_long | ||
142 | #define uint64_t unsigned long long | ||
143 | #define t_scalar_t int | ||
144 | #define t_uscalar_t unsigned int | ||
145 | #define uintptr_t unsigned long | ||
146 | |||
147 | #define __CONCAT__(A,B) A##B | ||
148 | |||
149 | #define INT32_C(a) __CONCAT__(a,L) | ||
150 | #define INT64_C(a) __CONCAT__(a,LL) | ||
151 | #define UINT32_C(a) __CONCAT__(a,UL) | ||
152 | #define UINT64_C(a) __CONCAT__(a,ULL) | ||
153 | |||
154 | #ifdef DEBUG | ||
155 | #define SK_DBG_PRINTF printk | ||
156 | #ifndef SK_DEBUG_CHKMOD | ||
157 | #define SK_DEBUG_CHKMOD 0 | ||
158 | #endif | ||
159 | #ifndef SK_DEBUG_CHKCAT | ||
160 | #define SK_DEBUG_CHKCAT 0 | ||
161 | #endif | ||
162 | /* those come from the makefile */ | ||
163 | #define SK_DBG_CHKMOD(pAC) (SK_DEBUG_CHKMOD) | ||
164 | #define SK_DBG_CHKCAT(pAC) (SK_DEBUG_CHKCAT) | ||
165 | |||
166 | extern void SkDbgPrintf(const char *format,...); | ||
167 | |||
168 | #define SK_DBGMOD_DRV 0x00010000 | ||
169 | |||
170 | /**** possible driver debug categories ********************************/ | ||
171 | #define SK_DBGCAT_DRV_ENTRY 0x00010000 | ||
172 | #define SK_DBGCAT_DRV_SAP 0x00020000 | ||
173 | #define SK_DBGCAT_DRV_MCA 0x00040000 | ||
174 | #define SK_DBGCAT_DRV_TX_PROGRESS 0x00080000 | ||
175 | #define SK_DBGCAT_DRV_RX_PROGRESS 0x00100000 | ||
176 | #define SK_DBGCAT_DRV_PROGRESS 0x00200000 | ||
177 | #define SK_DBGCAT_DRV_MSG 0x00400000 | ||
178 | #define SK_DBGCAT_DRV_PROM 0x00800000 | ||
179 | #define SK_DBGCAT_DRV_TX_FRAME 0x01000000 | ||
180 | #define SK_DBGCAT_DRV_ERROR 0x02000000 | ||
181 | #define SK_DBGCAT_DRV_INT_SRC 0x04000000 | ||
182 | #define SK_DBGCAT_DRV_EVENT 0x08000000 | ||
183 | |||
184 | #endif | ||
185 | |||
186 | #define SK_ERR_LOG SkErrorLog | ||
187 | |||
188 | extern void SkErrorLog(SK_AC*, int, int, char*); | ||
189 | |||
190 | #endif | ||
191 | |||
diff --git a/drivers/net/sk98lin/h/skdrv2nd.h b/drivers/net/sk98lin/h/skdrv2nd.h new file mode 100644 index 000000000000..542cec57f86a --- /dev/null +++ b/drivers/net/sk98lin/h/skdrv2nd.h | |||
@@ -0,0 +1,456 @@ | |||
1 | /****************************************************************************** | ||
2 | * | ||
3 | * Name: skdrv2nd.h | ||
4 | * Project: GEnesis, PCI Gigabit Ethernet Adapter | ||
5 | * Version: $Revision: 1.10 $ | ||
6 | * Date: $Date: 2003/12/11 16:04:45 $ | ||
7 | * Purpose: Second header file for driver and all other modules | ||
8 | * | ||
9 | ******************************************************************************/ | ||
10 | |||
11 | /****************************************************************************** | ||
12 | * | ||
13 | * (C)Copyright 1998-2002 SysKonnect GmbH. | ||
14 | * (C)Copyright 2002-2003 Marvell. | ||
15 | * | ||
16 | * This program is free software; you can redistribute it and/or modify | ||
17 | * it under the terms of the GNU General Public License as published by | ||
18 | * the Free Software Foundation; either version 2 of the License, or | ||
19 | * (at your option) any later version. | ||
20 | * | ||
21 | * The information in this file is provided "AS IS" without warranty. | ||
22 | * | ||
23 | ******************************************************************************/ | ||
24 | |||
25 | /****************************************************************************** | ||
26 | * | ||
27 | * Description: | ||
28 | * | ||
29 | * This is the second include file of the driver, which includes all other | ||
30 | * neccessary files and defines all structures and constants used by the | ||
31 | * driver and the common modules. | ||
32 | * | ||
33 | * Include File Hierarchy: | ||
34 | * | ||
35 | * see skge.c | ||
36 | * | ||
37 | ******************************************************************************/ | ||
38 | |||
39 | #ifndef __INC_SKDRV2ND_H | ||
40 | #define __INC_SKDRV2ND_H | ||
41 | |||
42 | #include "h/skqueue.h" | ||
43 | #include "h/skgehwt.h" | ||
44 | #include "h/sktimer.h" | ||
45 | #include "h/ski2c.h" | ||
46 | #include "h/skgepnmi.h" | ||
47 | #include "h/skvpd.h" | ||
48 | #include "h/skgehw.h" | ||
49 | #include "h/skgeinit.h" | ||
50 | #include "h/skaddr.h" | ||
51 | #include "h/skgesirq.h" | ||
52 | #include "h/skcsum.h" | ||
53 | #include "h/skrlmt.h" | ||
54 | #include "h/skgedrv.h" | ||
55 | |||
56 | |||
57 | extern SK_MBUF *SkDrvAllocRlmtMbuf(SK_AC*, SK_IOC, unsigned); | ||
58 | extern void SkDrvFreeRlmtMbuf(SK_AC*, SK_IOC, SK_MBUF*); | ||
59 | extern SK_U64 SkOsGetTime(SK_AC*); | ||
60 | extern int SkPciReadCfgDWord(SK_AC*, int, SK_U32*); | ||
61 | extern int SkPciReadCfgWord(SK_AC*, int, SK_U16*); | ||
62 | extern int SkPciReadCfgByte(SK_AC*, int, SK_U8*); | ||
63 | extern int SkPciWriteCfgDWord(SK_AC*, int, SK_U32); | ||
64 | extern int SkPciWriteCfgWord(SK_AC*, int, SK_U16); | ||
65 | extern int SkPciWriteCfgByte(SK_AC*, int, SK_U8); | ||
66 | extern int SkDrvEvent(SK_AC*, SK_IOC IoC, SK_U32, SK_EVPARA); | ||
67 | |||
68 | #ifdef SK_DIAG_SUPPORT | ||
69 | extern int SkDrvEnterDiagMode(SK_AC *pAc); | ||
70 | extern int SkDrvLeaveDiagMode(SK_AC *pAc); | ||
71 | #endif | ||
72 | |||
73 | struct s_DrvRlmtMbuf { | ||
74 | SK_MBUF *pNext; /* Pointer to next RLMT Mbuf. */ | ||
75 | SK_U8 *pData; /* Data buffer (virtually contig.). */ | ||
76 | unsigned Size; /* Data buffer size. */ | ||
77 | unsigned Length; /* Length of packet (<= Size). */ | ||
78 | SK_U32 PortIdx; /* Receiving/transmitting port. */ | ||
79 | #ifdef SK_RLMT_MBUF_PRIVATE | ||
80 | SK_RLMT_MBUF Rlmt; /* Private part for RLMT. */ | ||
81 | #endif /* SK_RLMT_MBUF_PRIVATE */ | ||
82 | struct sk_buff *pOs; /* Pointer to message block */ | ||
83 | }; | ||
84 | |||
85 | |||
86 | /* | ||
87 | * Time macros | ||
88 | */ | ||
89 | #if SK_TICKS_PER_SEC == 100 | ||
90 | #define SK_PNMI_HUNDREDS_SEC(t) (t) | ||
91 | #else | ||
92 | #define SK_PNMI_HUNDREDS_SEC(t) ((((unsigned long)t) * 100) / \ | ||
93 | (SK_TICKS_PER_SEC)) | ||
94 | #endif | ||
95 | |||
96 | /* | ||
97 | * New SkOsGetTime | ||
98 | */ | ||
99 | #define SkOsGetTimeCurrent(pAC, pUsec) {\ | ||
100 | struct timeval t;\ | ||
101 | do_gettimeofday(&t);\ | ||
102 | *pUsec = ((((t.tv_sec) * 1000000L)+t.tv_usec)/10000);\ | ||
103 | } | ||
104 | |||
105 | |||
106 | /* | ||
107 | * ioctl definitions | ||
108 | */ | ||
109 | #define SK_IOCTL_BASE (SIOCDEVPRIVATE) | ||
110 | #define SK_IOCTL_GETMIB (SK_IOCTL_BASE + 0) | ||
111 | #define SK_IOCTL_SETMIB (SK_IOCTL_BASE + 1) | ||
112 | #define SK_IOCTL_PRESETMIB (SK_IOCTL_BASE + 2) | ||
113 | #define SK_IOCTL_GEN (SK_IOCTL_BASE + 3) | ||
114 | #define SK_IOCTL_DIAG (SK_IOCTL_BASE + 4) | ||
115 | |||
116 | typedef struct s_IOCTL SK_GE_IOCTL; | ||
117 | |||
118 | struct s_IOCTL { | ||
119 | char __user * pData; | ||
120 | unsigned int Len; | ||
121 | }; | ||
122 | |||
123 | |||
124 | /* | ||
125 | * define sizes of descriptor rings in bytes | ||
126 | */ | ||
127 | |||
128 | #define TX_RING_SIZE (8*1024) | ||
129 | #define RX_RING_SIZE (24*1024) | ||
130 | |||
131 | /* | ||
132 | * Buffer size for ethernet packets | ||
133 | */ | ||
134 | #define ETH_BUF_SIZE 1540 | ||
135 | #define ETH_MAX_MTU 1514 | ||
136 | #define ETH_MIN_MTU 60 | ||
137 | #define ETH_MULTICAST_BIT 0x01 | ||
138 | #define SK_JUMBO_MTU 9000 | ||
139 | |||
140 | /* | ||
141 | * transmit priority selects the queue: LOW=asynchron, HIGH=synchron | ||
142 | */ | ||
143 | #define TX_PRIO_LOW 0 | ||
144 | #define TX_PRIO_HIGH 1 | ||
145 | |||
146 | /* | ||
147 | * alignment of rx/tx descriptors | ||
148 | */ | ||
149 | #define DESCR_ALIGN 64 | ||
150 | |||
151 | /* | ||
152 | * definitions for pnmi. TODO | ||
153 | */ | ||
154 | #define SK_DRIVER_RESET(pAC, IoC) 0 | ||
155 | #define SK_DRIVER_SENDEVENT(pAC, IoC) 0 | ||
156 | #define SK_DRIVER_SELFTEST(pAC, IoC) 0 | ||
157 | /* For get mtu you must add an own function */ | ||
158 | #define SK_DRIVER_GET_MTU(pAc,IoC,i) 0 | ||
159 | #define SK_DRIVER_SET_MTU(pAc,IoC,i,v) 0 | ||
160 | #define SK_DRIVER_PRESET_MTU(pAc,IoC,i,v) 0 | ||
161 | |||
162 | /* | ||
163 | ** Interim definition of SK_DRV_TIMER placed in this file until | ||
164 | ** common modules have boon finallized | ||
165 | */ | ||
166 | #define SK_DRV_TIMER 11 | ||
167 | #define SK_DRV_MODERATION_TIMER 1 | ||
168 | #define SK_DRV_MODERATION_TIMER_LENGTH 1000000 /* 1 second */ | ||
169 | #define SK_DRV_RX_CLEANUP_TIMER 2 | ||
170 | #define SK_DRV_RX_CLEANUP_TIMER_LENGTH 1000000 /* 100 millisecs */ | ||
171 | |||
172 | /* | ||
173 | ** Definitions regarding transmitting frames | ||
174 | ** any calculating any checksum. | ||
175 | */ | ||
176 | #define C_LEN_ETHERMAC_HEADER_DEST_ADDR 6 | ||
177 | #define C_LEN_ETHERMAC_HEADER_SRC_ADDR 6 | ||
178 | #define C_LEN_ETHERMAC_HEADER_LENTYPE 2 | ||
179 | #define C_LEN_ETHERMAC_HEADER ( (C_LEN_ETHERMAC_HEADER_DEST_ADDR) + \ | ||
180 | (C_LEN_ETHERMAC_HEADER_SRC_ADDR) + \ | ||
181 | (C_LEN_ETHERMAC_HEADER_LENTYPE) ) | ||
182 | |||
183 | #define C_LEN_ETHERMTU_MINSIZE 46 | ||
184 | #define C_LEN_ETHERMTU_MAXSIZE_STD 1500 | ||
185 | #define C_LEN_ETHERMTU_MAXSIZE_JUMBO 9000 | ||
186 | |||
187 | #define C_LEN_ETHERNET_MINSIZE ( (C_LEN_ETHERMAC_HEADER) + \ | ||
188 | (C_LEN_ETHERMTU_MINSIZE) ) | ||
189 | |||
190 | #define C_OFFSET_IPHEADER C_LEN_ETHERMAC_HEADER | ||
191 | #define C_OFFSET_IPHEADER_IPPROTO 9 | ||
192 | #define C_OFFSET_TCPHEADER_TCPCS 16 | ||
193 | #define C_OFFSET_UDPHEADER_UDPCS 6 | ||
194 | |||
195 | #define C_OFFSET_IPPROTO ( (C_LEN_ETHERMAC_HEADER) + \ | ||
196 | (C_OFFSET_IPHEADER_IPPROTO) ) | ||
197 | |||
198 | #define C_PROTO_ID_UDP 17 /* refer to RFC 790 or Stevens' */ | ||
199 | #define C_PROTO_ID_TCP 6 /* TCP/IP illustrated for details */ | ||
200 | |||
201 | /* TX and RX descriptors *****************************************************/ | ||
202 | |||
203 | typedef struct s_RxD RXD; /* the receive descriptor */ | ||
204 | |||
205 | struct s_RxD { | ||
206 | volatile SK_U32 RBControl; /* Receive Buffer Control */ | ||
207 | SK_U32 VNextRxd; /* Next receive descriptor,low dword */ | ||
208 | SK_U32 VDataLow; /* Receive buffer Addr, low dword */ | ||
209 | SK_U32 VDataHigh; /* Receive buffer Addr, high dword */ | ||
210 | SK_U32 FrameStat; /* Receive Frame Status word */ | ||
211 | SK_U32 TimeStamp; /* Time stamp from XMAC */ | ||
212 | SK_U32 TcpSums; /* TCP Sum 2 / TCP Sum 1 */ | ||
213 | SK_U32 TcpSumStarts; /* TCP Sum Start 2 / TCP Sum Start 1 */ | ||
214 | RXD *pNextRxd; /* Pointer to next Rxd */ | ||
215 | struct sk_buff *pMBuf; /* Pointer to Linux' socket buffer */ | ||
216 | }; | ||
217 | |||
218 | typedef struct s_TxD TXD; /* the transmit descriptor */ | ||
219 | |||
220 | struct s_TxD { | ||
221 | volatile SK_U32 TBControl; /* Transmit Buffer Control */ | ||
222 | SK_U32 VNextTxd; /* Next transmit descriptor,low dword */ | ||
223 | SK_U32 VDataLow; /* Transmit Buffer Addr, low dword */ | ||
224 | SK_U32 VDataHigh; /* Transmit Buffer Addr, high dword */ | ||
225 | SK_U32 FrameStat; /* Transmit Frame Status Word */ | ||
226 | SK_U32 TcpSumOfs; /* Reserved / TCP Sum Offset */ | ||
227 | SK_U16 TcpSumSt; /* TCP Sum Start */ | ||
228 | SK_U16 TcpSumWr; /* TCP Sum Write */ | ||
229 | SK_U32 TcpReserved; /* not used */ | ||
230 | TXD *pNextTxd; /* Pointer to next Txd */ | ||
231 | struct sk_buff *pMBuf; /* Pointer to Linux' socket buffer */ | ||
232 | }; | ||
233 | |||
234 | /* Used interrupt bits in the interrupts source register *********************/ | ||
235 | |||
236 | #define DRIVER_IRQS ((IS_IRQ_SW) | \ | ||
237 | (IS_R1_F) |(IS_R2_F) | \ | ||
238 | (IS_XS1_F) |(IS_XA1_F) | \ | ||
239 | (IS_XS2_F) |(IS_XA2_F)) | ||
240 | |||
241 | #define SPECIAL_IRQS ((IS_HW_ERR) |(IS_I2C_READY) | \ | ||
242 | (IS_EXT_REG) |(IS_TIMINT) | \ | ||
243 | (IS_PA_TO_RX1) |(IS_PA_TO_RX2) | \ | ||
244 | (IS_PA_TO_TX1) |(IS_PA_TO_TX2) | \ | ||
245 | (IS_MAC1) |(IS_LNK_SYNC_M1)| \ | ||
246 | (IS_MAC2) |(IS_LNK_SYNC_M2)| \ | ||
247 | (IS_R1_C) |(IS_R2_C) | \ | ||
248 | (IS_XS1_C) |(IS_XA1_C) | \ | ||
249 | (IS_XS2_C) |(IS_XA2_C)) | ||
250 | |||
251 | #define IRQ_MASK ((IS_IRQ_SW) | \ | ||
252 | (IS_R1_B) |(IS_R1_F) |(IS_R2_B) |(IS_R2_F) | \ | ||
253 | (IS_XS1_B) |(IS_XS1_F) |(IS_XA1_B)|(IS_XA1_F)| \ | ||
254 | (IS_XS2_B) |(IS_XS2_F) |(IS_XA2_B)|(IS_XA2_F)| \ | ||
255 | (IS_HW_ERR) |(IS_I2C_READY)| \ | ||
256 | (IS_EXT_REG) |(IS_TIMINT) | \ | ||
257 | (IS_PA_TO_RX1) |(IS_PA_TO_RX2)| \ | ||
258 | (IS_PA_TO_TX1) |(IS_PA_TO_TX2)| \ | ||
259 | (IS_MAC1) |(IS_MAC2) | \ | ||
260 | (IS_R1_C) |(IS_R2_C) | \ | ||
261 | (IS_XS1_C) |(IS_XA1_C) | \ | ||
262 | (IS_XS2_C) |(IS_XA2_C)) | ||
263 | |||
264 | #define IRQ_HWE_MASK (IS_ERR_MSK) /* enable all HW irqs */ | ||
265 | |||
266 | typedef struct s_DevNet DEV_NET; | ||
267 | |||
268 | struct s_DevNet { | ||
269 | int PortNr; | ||
270 | int NetNr; | ||
271 | int Mtu; | ||
272 | int Up; | ||
273 | SK_AC *pAC; | ||
274 | }; | ||
275 | |||
276 | typedef struct s_TxPort TX_PORT; | ||
277 | |||
278 | struct s_TxPort { | ||
279 | /* the transmit descriptor rings */ | ||
280 | caddr_t pTxDescrRing; /* descriptor area memory */ | ||
281 | SK_U64 VTxDescrRing; /* descr. area bus virt. addr. */ | ||
282 | TXD *pTxdRingHead; /* Head of Tx rings */ | ||
283 | TXD *pTxdRingTail; /* Tail of Tx rings */ | ||
284 | TXD *pTxdRingPrev; /* descriptor sent previously */ | ||
285 | int TxdRingFree; /* # of free entrys */ | ||
286 | spinlock_t TxDesRingLock; /* serialize descriptor accesses */ | ||
287 | SK_IOC HwAddr; /* bmu registers address */ | ||
288 | int PortIndex; /* index number of port (0 or 1) */ | ||
289 | }; | ||
290 | |||
291 | typedef struct s_RxPort RX_PORT; | ||
292 | |||
293 | struct s_RxPort { | ||
294 | /* the receive descriptor rings */ | ||
295 | caddr_t pRxDescrRing; /* descriptor area memory */ | ||
296 | SK_U64 VRxDescrRing; /* descr. area bus virt. addr. */ | ||
297 | RXD *pRxdRingHead; /* Head of Rx rings */ | ||
298 | RXD *pRxdRingTail; /* Tail of Rx rings */ | ||
299 | RXD *pRxdRingPrev; /* descriptor given to BMU previously */ | ||
300 | int RxdRingFree; /* # of free entrys */ | ||
301 | spinlock_t RxDesRingLock; /* serialize descriptor accesses */ | ||
302 | int RxFillLimit; /* limit for buffers in ring */ | ||
303 | SK_IOC HwAddr; /* bmu registers address */ | ||
304 | int PortIndex; /* index number of port (0 or 1) */ | ||
305 | }; | ||
306 | |||
307 | /* Definitions needed for interrupt moderation *******************************/ | ||
308 | |||
309 | #define IRQ_EOF_AS_TX ((IS_XA1_F) | (IS_XA2_F)) | ||
310 | #define IRQ_EOF_SY_TX ((IS_XS1_F) | (IS_XS2_F)) | ||
311 | #define IRQ_MASK_TX_ONLY ((IRQ_EOF_AS_TX)| (IRQ_EOF_SY_TX)) | ||
312 | #define IRQ_MASK_RX_ONLY ((IS_R1_F) | (IS_R2_F)) | ||
313 | #define IRQ_MASK_SP_ONLY (SPECIAL_IRQS) | ||
314 | #define IRQ_MASK_TX_RX ((IRQ_MASK_TX_ONLY)| (IRQ_MASK_RX_ONLY)) | ||
315 | #define IRQ_MASK_SP_RX ((SPECIAL_IRQS) | (IRQ_MASK_RX_ONLY)) | ||
316 | #define IRQ_MASK_SP_TX ((SPECIAL_IRQS) | (IRQ_MASK_TX_ONLY)) | ||
317 | #define IRQ_MASK_RX_TX_SP ((SPECIAL_IRQS) | (IRQ_MASK_TX_RX)) | ||
318 | |||
319 | #define C_INT_MOD_NONE 1 | ||
320 | #define C_INT_MOD_STATIC 2 | ||
321 | #define C_INT_MOD_DYNAMIC 4 | ||
322 | |||
323 | #define C_CLK_FREQ_GENESIS 53215000 /* shorter: 53.125 MHz */ | ||
324 | #define C_CLK_FREQ_YUKON 78215000 /* shorter: 78.125 MHz */ | ||
325 | |||
326 | #define C_INTS_PER_SEC_DEFAULT 2000 | ||
327 | #define C_INT_MOD_ENABLE_PERCENTAGE 50 /* if higher 50% enable */ | ||
328 | #define C_INT_MOD_DISABLE_PERCENTAGE 50 /* if lower 50% disable */ | ||
329 | #define C_INT_MOD_IPS_LOWER_RANGE 30 | ||
330 | #define C_INT_MOD_IPS_UPPER_RANGE 40000 | ||
331 | |||
332 | |||
333 | typedef struct s_DynIrqModInfo DIM_INFO; | ||
334 | struct s_DynIrqModInfo { | ||
335 | unsigned long PrevTimeVal; | ||
336 | unsigned int PrevSysLoad; | ||
337 | unsigned int PrevUsedTime; | ||
338 | unsigned int PrevTotalTime; | ||
339 | int PrevUsedDescrRatio; | ||
340 | int NbrProcessedDescr; | ||
341 | SK_U64 PrevPort0RxIntrCts; | ||
342 | SK_U64 PrevPort1RxIntrCts; | ||
343 | SK_U64 PrevPort0TxIntrCts; | ||
344 | SK_U64 PrevPort1TxIntrCts; | ||
345 | SK_BOOL ModJustEnabled; /* Moderation just enabled yes/no */ | ||
346 | |||
347 | int MaxModIntsPerSec; /* Moderation Threshold */ | ||
348 | int MaxModIntsPerSecUpperLimit; /* Upper limit for DIM */ | ||
349 | int MaxModIntsPerSecLowerLimit; /* Lower limit for DIM */ | ||
350 | |||
351 | long MaskIrqModeration; /* ModIrqType (eg. 'TxRx') */ | ||
352 | SK_BOOL DisplayStats; /* Stats yes/no */ | ||
353 | SK_BOOL AutoSizing; /* Resize DIM-timer on/off */ | ||
354 | int IntModTypeSelect; /* EnableIntMod (eg. 'dynamic') */ | ||
355 | |||
356 | SK_TIMER ModTimer; /* just some timer */ | ||
357 | }; | ||
358 | |||
359 | typedef struct s_PerStrm PER_STRM; | ||
360 | |||
361 | #define SK_ALLOC_IRQ 0x00000001 | ||
362 | |||
363 | #ifdef SK_DIAG_SUPPORT | ||
364 | #define DIAG_ACTIVE 1 | ||
365 | #define DIAG_NOTACTIVE 0 | ||
366 | #endif | ||
367 | |||
368 | /**************************************************************************** | ||
369 | * Per board structure / Adapter Context structure: | ||
370 | * Allocated within attach(9e) and freed within detach(9e). | ||
371 | * Contains all 'per device' necessary handles, flags, locks etc.: | ||
372 | */ | ||
373 | struct s_AC { | ||
374 | SK_GEINIT GIni; /* GE init struct */ | ||
375 | SK_PNMI Pnmi; /* PNMI data struct */ | ||
376 | SK_VPD vpd; /* vpd data struct */ | ||
377 | SK_QUEUE Event; /* Event queue */ | ||
378 | SK_HWT Hwt; /* Hardware Timer control struct */ | ||
379 | SK_TIMCTRL Tim; /* Software Timer control struct */ | ||
380 | SK_I2C I2c; /* I2C relevant data structure */ | ||
381 | SK_ADDR Addr; /* for Address module */ | ||
382 | SK_CSUM Csum; /* for checksum module */ | ||
383 | SK_RLMT Rlmt; /* for rlmt module */ | ||
384 | spinlock_t SlowPathLock; /* Normal IRQ lock */ | ||
385 | struct timer_list BlinkTimer; /* for LED blinking */ | ||
386 | int LedsOn; | ||
387 | SK_PNMI_STRUCT_DATA PnmiStruct; /* structure to get all Pnmi-Data */ | ||
388 | int RlmtMode; /* link check mode to set */ | ||
389 | int RlmtNets; /* Number of nets */ | ||
390 | |||
391 | SK_IOC IoBase; /* register set of adapter */ | ||
392 | int BoardLevel; /* level of active hw init (0-2) */ | ||
393 | char DeviceStr[80]; /* adapter string from vpd */ | ||
394 | SK_U32 AllocFlag; /* flag allocation of resources */ | ||
395 | struct pci_dev *PciDev; /* for access to pci config space */ | ||
396 | SK_U32 PciDevId; /* pci device id */ | ||
397 | struct SK_NET_DEVICE *dev[2]; /* pointer to device struct */ | ||
398 | char Name[30]; /* driver name */ | ||
399 | |||
400 | int RxBufSize; /* length of receive buffers */ | ||
401 | struct net_device_stats stats; /* linux 'netstat -i' statistics */ | ||
402 | int Index; /* internal board index number */ | ||
403 | |||
404 | /* adapter RAM sizes for queues of active port */ | ||
405 | int RxQueueSize; /* memory used for receive queue */ | ||
406 | int TxSQueueSize; /* memory used for sync. tx queue */ | ||
407 | int TxAQueueSize; /* memory used for async. tx queue */ | ||
408 | |||
409 | int PromiscCount; /* promiscuous mode counter */ | ||
410 | int AllMultiCount; /* allmulticast mode counter */ | ||
411 | int MulticCount; /* number of different MC */ | ||
412 | /* addresses for this board */ | ||
413 | /* (may be more than HW can)*/ | ||
414 | |||
415 | int HWRevision; /* Hardware revision */ | ||
416 | int ActivePort; /* the active XMAC port */ | ||
417 | int MaxPorts; /* number of activated ports */ | ||
418 | int TxDescrPerRing; /* # of descriptors per tx ring */ | ||
419 | int RxDescrPerRing; /* # of descriptors per rx ring */ | ||
420 | |||
421 | caddr_t pDescrMem; /* Pointer to the descriptor area */ | ||
422 | dma_addr_t pDescrMemDMA; /* PCI DMA address of area */ | ||
423 | |||
424 | /* the port structures with descriptor rings */ | ||
425 | TX_PORT TxPort[SK_MAX_MACS][2]; | ||
426 | RX_PORT RxPort[SK_MAX_MACS]; | ||
427 | |||
428 | unsigned int CsOfs1; /* for checksum calculation */ | ||
429 | unsigned int CsOfs2; /* for checksum calculation */ | ||
430 | SK_U32 CsOfs; /* for checksum calculation */ | ||
431 | |||
432 | SK_BOOL CheckQueue; /* check event queue soon */ | ||
433 | SK_TIMER DrvCleanupTimer;/* to check for pending descriptors */ | ||
434 | DIM_INFO DynIrqModInfo; /* all data related to DIM */ | ||
435 | |||
436 | /* Only for tests */ | ||
437 | int PortUp; | ||
438 | int PortDown; | ||
439 | int ChipsetType; /* Chipset family type | ||
440 | * 0 == Genesis family support | ||
441 | * 1 == Yukon family support | ||
442 | */ | ||
443 | #ifdef SK_DIAG_SUPPORT | ||
444 | SK_U32 DiagModeActive; /* is diag active? */ | ||
445 | SK_BOOL DiagFlowCtrl; /* for control purposes */ | ||
446 | SK_PNMI_STRUCT_DATA PnmiBackup; /* backup structure for all Pnmi-Data */ | ||
447 | SK_BOOL WasIfUp[SK_MAX_MACS]; /* for OpenClose while | ||
448 | * DIAG is busy with NIC | ||
449 | */ | ||
450 | #endif | ||
451 | |||
452 | }; | ||
453 | |||
454 | |||
455 | #endif /* __INC_SKDRV2ND_H */ | ||
456 | |||
diff --git a/drivers/net/sk98lin/h/skerror.h b/drivers/net/sk98lin/h/skerror.h new file mode 100644 index 000000000000..da062f766238 --- /dev/null +++ b/drivers/net/sk98lin/h/skerror.h | |||
@@ -0,0 +1,55 @@ | |||
1 | /****************************************************************************** | ||
2 | * | ||
3 | * Name: skerror.h | ||
4 | * Project: Gigabit Ethernet Adapters, Common Modules | ||
5 | * Version: $Revision: 1.7 $ | ||
6 | * Date: $Date: 2003/05/13 17:25:13 $ | ||
7 | * Purpose: SK specific Error log support | ||
8 | * | ||
9 | ******************************************************************************/ | ||
10 | |||
11 | /****************************************************************************** | ||
12 | * | ||
13 | * (C)Copyright 1998-2002 SysKonnect. | ||
14 | * (C)Copyright 2002-2003 Marvell. | ||
15 | * | ||
16 | * This program is free software; you can redistribute it and/or modify | ||
17 | * it under the terms of the GNU General Public License as published by | ||
18 | * the Free Software Foundation; either version 2 of the License, or | ||
19 | * (at your option) any later version. | ||
20 | * | ||
21 | * The information in this file is provided "AS IS" without warranty. | ||
22 | * | ||
23 | ******************************************************************************/ | ||
24 | |||
25 | #ifndef _INC_SKERROR_H_ | ||
26 | #define _INC_SKERROR_H_ | ||
27 | |||
28 | /* | ||
29 | * Define Error Classes | ||
30 | */ | ||
31 | #define SK_ERRCL_OTHER (0) /* Other error */ | ||
32 | #define SK_ERRCL_CONFIG (1L<<0) /* Configuration error */ | ||
33 | #define SK_ERRCL_INIT (1L<<1) /* Initialization error */ | ||
34 | #define SK_ERRCL_NORES (1L<<2) /* Out of Resources error */ | ||
35 | #define SK_ERRCL_SW (1L<<3) /* Internal Software error */ | ||
36 | #define SK_ERRCL_HW (1L<<4) /* Hardware Failure */ | ||
37 | #define SK_ERRCL_COMM (1L<<5) /* Communication error */ | ||
38 | |||
39 | |||
40 | /* | ||
41 | * Define Error Code Bases | ||
42 | */ | ||
43 | #define SK_ERRBASE_RLMT 100 /* Base Error number for RLMT */ | ||
44 | #define SK_ERRBASE_HWINIT 200 /* Base Error number for HWInit */ | ||
45 | #define SK_ERRBASE_VPD 300 /* Base Error number for VPD */ | ||
46 | #define SK_ERRBASE_PNMI 400 /* Base Error number for PNMI */ | ||
47 | #define SK_ERRBASE_CSUM 500 /* Base Error number for Checksum */ | ||
48 | #define SK_ERRBASE_SIRQ 600 /* Base Error number for Special IRQ */ | ||
49 | #define SK_ERRBASE_I2C 700 /* Base Error number for I2C module */ | ||
50 | #define SK_ERRBASE_QUEUE 800 /* Base Error number for Scheduler */ | ||
51 | #define SK_ERRBASE_ADDR 900 /* Base Error number for Address module */ | ||
52 | #define SK_ERRBASE_PECP 1000 /* Base Error number for PECP */ | ||
53 | #define SK_ERRBASE_DRV 1100 /* Base Error number for Driver */ | ||
54 | |||
55 | #endif /* _INC_SKERROR_H_ */ | ||
diff --git a/drivers/net/sk98lin/h/skgedrv.h b/drivers/net/sk98lin/h/skgedrv.h new file mode 100644 index 000000000000..44fd4c3de818 --- /dev/null +++ b/drivers/net/sk98lin/h/skgedrv.h | |||
@@ -0,0 +1,51 @@ | |||
1 | /****************************************************************************** | ||
2 | * | ||
3 | * Name: skgedrv.h | ||
4 | * Project: Gigabit Ethernet Adapters, Common Modules | ||
5 | * Version: $Revision: 1.10 $ | ||
6 | * Date: $Date: 2003/07/04 12:25:01 $ | ||
7 | * Purpose: Interface with the driver | ||
8 | * | ||
9 | ******************************************************************************/ | ||
10 | |||
11 | /****************************************************************************** | ||
12 | * | ||
13 | * (C)Copyright 1998-2002 SysKonnect. | ||
14 | * (C)Copyright 2002-2003 Marvell. | ||
15 | * | ||
16 | * This program is free software; you can redistribute it and/or modify | ||
17 | * it under the terms of the GNU General Public License as published by | ||
18 | * the Free Software Foundation; either version 2 of the License, or | ||
19 | * (at your option) any later version. | ||
20 | * | ||
21 | * The information in this file is provided "AS IS" without warranty. | ||
22 | * | ||
23 | ******************************************************************************/ | ||
24 | |||
25 | #ifndef __INC_SKGEDRV_H_ | ||
26 | #define __INC_SKGEDRV_H_ | ||
27 | |||
28 | /* defines ********************************************************************/ | ||
29 | |||
30 | /* | ||
31 | * Define the driver events. | ||
32 | * Usually the events are defined by the destination module. | ||
33 | * In case of the driver we put the definition of the events here. | ||
34 | */ | ||
35 | #define SK_DRV_PORT_RESET 1 /* The port needs to be reset */ | ||
36 | #define SK_DRV_NET_UP 2 /* The net is operational */ | ||
37 | #define SK_DRV_NET_DOWN 3 /* The net is down */ | ||
38 | #define SK_DRV_SWITCH_SOFT 4 /* Ports switch with both links connected */ | ||
39 | #define SK_DRV_SWITCH_HARD 5 /* Port switch due to link failure */ | ||
40 | #define SK_DRV_RLMT_SEND 6 /* Send a RLMT packet */ | ||
41 | #define SK_DRV_ADAP_FAIL 7 /* The whole adapter fails */ | ||
42 | #define SK_DRV_PORT_FAIL 8 /* One port fails */ | ||
43 | #define SK_DRV_SWITCH_INTERN 9 /* Port switch by the driver itself */ | ||
44 | #define SK_DRV_POWER_DOWN 10 /* Power down mode */ | ||
45 | #define SK_DRV_TIMER 11 /* Timer for free use */ | ||
46 | #ifdef SK_NO_RLMT | ||
47 | #define SK_DRV_LINK_UP 12 /* Link Up event for driver */ | ||
48 | #define SK_DRV_LINK_DOWN 13 /* Link Down event for driver */ | ||
49 | #endif | ||
50 | #define SK_DRV_DOWNSHIFT_DET 14 /* Downshift 4-Pair / 2-Pair (YUKON only) */ | ||
51 | #endif /* __INC_SKGEDRV_H_ */ | ||
diff --git a/drivers/net/sk98lin/h/skgehw.h b/drivers/net/sk98lin/h/skgehw.h new file mode 100644 index 000000000000..f6282b7956db --- /dev/null +++ b/drivers/net/sk98lin/h/skgehw.h | |||
@@ -0,0 +1,2126 @@ | |||
1 | /****************************************************************************** | ||
2 | * | ||
3 | * Name: skgehw.h | ||
4 | * Project: Gigabit Ethernet Adapters, Common Modules | ||
5 | * Version: $Revision: 1.56 $ | ||
6 | * Date: $Date: 2003/09/23 09:01:00 $ | ||
7 | * Purpose: Defines and Macros for the Gigabit Ethernet Adapter Product Family | ||
8 | * | ||
9 | ******************************************************************************/ | ||
10 | |||
11 | /****************************************************************************** | ||
12 | * | ||
13 | * (C)Copyright 1998-2002 SysKonnect. | ||
14 | * (C)Copyright 2002-2003 Marvell. | ||
15 | * | ||
16 | * This program is free software; you can redistribute it and/or modify | ||
17 | * it under the terms of the GNU General Public License as published by | ||
18 | * the Free Software Foundation; either version 2 of the License, or | ||
19 | * (at your option) any later version. | ||
20 | * | ||
21 | * The information in this file is provided "AS IS" without warranty. | ||
22 | * | ||
23 | ******************************************************************************/ | ||
24 | |||
25 | #ifndef __INC_SKGEHW_H | ||
26 | #define __INC_SKGEHW_H | ||
27 | |||
28 | #ifdef __cplusplus | ||
29 | extern "C" { | ||
30 | #endif /* __cplusplus */ | ||
31 | |||
32 | /* defines ********************************************************************/ | ||
33 | |||
34 | #define BIT_31 (1UL << 31) | ||
35 | #define BIT_30 (1L << 30) | ||
36 | #define BIT_29 (1L << 29) | ||
37 | #define BIT_28 (1L << 28) | ||
38 | #define BIT_27 (1L << 27) | ||
39 | #define BIT_26 (1L << 26) | ||
40 | #define BIT_25 (1L << 25) | ||
41 | #define BIT_24 (1L << 24) | ||
42 | #define BIT_23 (1L << 23) | ||
43 | #define BIT_22 (1L << 22) | ||
44 | #define BIT_21 (1L << 21) | ||
45 | #define BIT_20 (1L << 20) | ||
46 | #define BIT_19 (1L << 19) | ||
47 | #define BIT_18 (1L << 18) | ||
48 | #define BIT_17 (1L << 17) | ||
49 | #define BIT_16 (1L << 16) | ||
50 | #define BIT_15 (1L << 15) | ||
51 | #define BIT_14 (1L << 14) | ||
52 | #define BIT_13 (1L << 13) | ||
53 | #define BIT_12 (1L << 12) | ||
54 | #define BIT_11 (1L << 11) | ||
55 | #define BIT_10 (1L << 10) | ||
56 | #define BIT_9 (1L << 9) | ||
57 | #define BIT_8 (1L << 8) | ||
58 | #define BIT_7 (1L << 7) | ||
59 | #define BIT_6 (1L << 6) | ||
60 | #define BIT_5 (1L << 5) | ||
61 | #define BIT_4 (1L << 4) | ||
62 | #define BIT_3 (1L << 3) | ||
63 | #define BIT_2 (1L << 2) | ||
64 | #define BIT_1 (1L << 1) | ||
65 | #define BIT_0 1L | ||
66 | |||
67 | #define BIT_15S (1U << 15) | ||
68 | #define BIT_14S (1 << 14) | ||
69 | #define BIT_13S (1 << 13) | ||
70 | #define BIT_12S (1 << 12) | ||
71 | #define BIT_11S (1 << 11) | ||
72 | #define BIT_10S (1 << 10) | ||
73 | #define BIT_9S (1 << 9) | ||
74 | #define BIT_8S (1 << 8) | ||
75 | #define BIT_7S (1 << 7) | ||
76 | #define BIT_6S (1 << 6) | ||
77 | #define BIT_5S (1 << 5) | ||
78 | #define BIT_4S (1 << 4) | ||
79 | #define BIT_3S (1 << 3) | ||
80 | #define BIT_2S (1 << 2) | ||
81 | #define BIT_1S (1 << 1) | ||
82 | #define BIT_0S 1 | ||
83 | |||
84 | #define SHIFT31(x) ((x) << 31) | ||
85 | #define SHIFT30(x) ((x) << 30) | ||
86 | #define SHIFT29(x) ((x) << 29) | ||
87 | #define SHIFT28(x) ((x) << 28) | ||
88 | #define SHIFT27(x) ((x) << 27) | ||
89 | #define SHIFT26(x) ((x) << 26) | ||
90 | #define SHIFT25(x) ((x) << 25) | ||
91 | #define SHIFT24(x) ((x) << 24) | ||
92 | #define SHIFT23(x) ((x) << 23) | ||
93 | #define SHIFT22(x) ((x) << 22) | ||
94 | #define SHIFT21(x) ((x) << 21) | ||
95 | #define SHIFT20(x) ((x) << 20) | ||
96 | #define SHIFT19(x) ((x) << 19) | ||
97 | #define SHIFT18(x) ((x) << 18) | ||
98 | #define SHIFT17(x) ((x) << 17) | ||
99 | #define SHIFT16(x) ((x) << 16) | ||
100 | #define SHIFT15(x) ((x) << 15) | ||
101 | #define SHIFT14(x) ((x) << 14) | ||
102 | #define SHIFT13(x) ((x) << 13) | ||
103 | #define SHIFT12(x) ((x) << 12) | ||
104 | #define SHIFT11(x) ((x) << 11) | ||
105 | #define SHIFT10(x) ((x) << 10) | ||
106 | #define SHIFT9(x) ((x) << 9) | ||
107 | #define SHIFT8(x) ((x) << 8) | ||
108 | #define SHIFT7(x) ((x) << 7) | ||
109 | #define SHIFT6(x) ((x) << 6) | ||
110 | #define SHIFT5(x) ((x) << 5) | ||
111 | #define SHIFT4(x) ((x) << 4) | ||
112 | #define SHIFT3(x) ((x) << 3) | ||
113 | #define SHIFT2(x) ((x) << 2) | ||
114 | #define SHIFT1(x) ((x) << 1) | ||
115 | #define SHIFT0(x) ((x) << 0) | ||
116 | |||
117 | /* | ||
118 | * Configuration Space header | ||
119 | * Since this module is used for different OS', those may be | ||
120 | * duplicate on some of them (e.g. Linux). But to keep the | ||
121 | * common source, we have to live with this... | ||
122 | */ | ||
123 | #define PCI_VENDOR_ID 0x00 /* 16 bit Vendor ID */ | ||
124 | #define PCI_DEVICE_ID 0x02 /* 16 bit Device ID */ | ||
125 | #define PCI_COMMAND 0x04 /* 16 bit Command */ | ||
126 | #define PCI_STATUS 0x06 /* 16 bit Status */ | ||
127 | #define PCI_REV_ID 0x08 /* 8 bit Revision ID */ | ||
128 | #define PCI_CLASS_CODE 0x09 /* 24 bit Class Code */ | ||
129 | #define PCI_CACHE_LSZ 0x0c /* 8 bit Cache Line Size */ | ||
130 | #define PCI_LAT_TIM 0x0d /* 8 bit Latency Timer */ | ||
131 | #define PCI_HEADER_T 0x0e /* 8 bit Header Type */ | ||
132 | #define PCI_BIST 0x0f /* 8 bit Built-in selftest */ | ||
133 | #define PCI_BASE_1ST 0x10 /* 32 bit 1st Base address */ | ||
134 | #define PCI_BASE_2ND 0x14 /* 32 bit 2nd Base address */ | ||
135 | /* Byte 0x18..0x2b: reserved */ | ||
136 | #define PCI_SUB_VID 0x2c /* 16 bit Subsystem Vendor ID */ | ||
137 | #define PCI_SUB_ID 0x2e /* 16 bit Subsystem ID */ | ||
138 | #define PCI_BASE_ROM 0x30 /* 32 bit Expansion ROM Base Address */ | ||
139 | #define PCI_CAP_PTR 0x34 /* 8 bit Capabilities Ptr */ | ||
140 | /* Byte 0x35..0x3b: reserved */ | ||
141 | #define PCI_IRQ_LINE 0x3c /* 8 bit Interrupt Line */ | ||
142 | #define PCI_IRQ_PIN 0x3d /* 8 bit Interrupt Pin */ | ||
143 | #define PCI_MIN_GNT 0x3e /* 8 bit Min_Gnt */ | ||
144 | #define PCI_MAX_LAT 0x3f /* 8 bit Max_Lat */ | ||
145 | /* Device Dependent Region */ | ||
146 | #define PCI_OUR_REG_1 0x40 /* 32 bit Our Register 1 */ | ||
147 | #define PCI_OUR_REG_2 0x44 /* 32 bit Our Register 2 */ | ||
148 | /* Power Management Region */ | ||
149 | #define PCI_PM_CAP_ID 0x48 /* 8 bit Power Management Cap. ID */ | ||
150 | #define PCI_PM_NITEM 0x49 /* 8 bit Next Item Ptr */ | ||
151 | #define PCI_PM_CAP_REG 0x4a /* 16 bit Power Management Capabilities */ | ||
152 | #define PCI_PM_CTL_STS 0x4c /* 16 bit Power Manag. Control/Status */ | ||
153 | /* Byte 0x4e: reserved */ | ||
154 | #define PCI_PM_DAT_REG 0x4f /* 8 bit Power Manag. Data Register */ | ||
155 | /* VPD Region */ | ||
156 | #define PCI_VPD_CAP_ID 0x50 /* 8 bit VPD Cap. ID */ | ||
157 | #define PCI_VPD_NITEM 0x51 /* 8 bit Next Item Ptr */ | ||
158 | #define PCI_VPD_ADR_REG 0x52 /* 16 bit VPD Address Register */ | ||
159 | #define PCI_VPD_DAT_REG 0x54 /* 32 bit VPD Data Register */ | ||
160 | /* Byte 0x58..0x59: reserved */ | ||
161 | #define PCI_SER_LD_CTRL 0x5a /* 16 bit SEEPROM Loader Ctrl (YUKON only) */ | ||
162 | /* Byte 0x5c..0xff: reserved */ | ||
163 | |||
164 | /* | ||
165 | * I2C Address (PCI Config) | ||
166 | * | ||
167 | * Note: The temperature and voltage sensors are relocated on a different | ||
168 | * I2C bus. | ||
169 | */ | ||
170 | #define I2C_ADDR_VPD 0xa0 /* I2C address for the VPD EEPROM */ | ||
171 | |||
172 | /* | ||
173 | * Define Bits and Values of the registers | ||
174 | */ | ||
175 | /* PCI_COMMAND 16 bit Command */ | ||
176 | /* Bit 15..11: reserved */ | ||
177 | #define PCI_INT_DIS BIT_10S /* Interrupt INTx# disable (PCI 2.3) */ | ||
178 | #define PCI_FBTEN BIT_9S /* Fast Back-To-Back enable */ | ||
179 | #define PCI_SERREN BIT_8S /* SERR enable */ | ||
180 | #define PCI_ADSTEP BIT_7S /* Address Stepping */ | ||
181 | #define PCI_PERREN BIT_6S /* Parity Report Response enable */ | ||
182 | #define PCI_VGA_SNOOP BIT_5S /* VGA palette snoop */ | ||
183 | #define PCI_MWIEN BIT_4S /* Memory write an inv cycl ena */ | ||
184 | #define PCI_SCYCEN BIT_3S /* Special Cycle enable */ | ||
185 | #define PCI_BMEN BIT_2S /* Bus Master enable */ | ||
186 | #define PCI_MEMEN BIT_1S /* Memory Space Access enable */ | ||
187 | #define PCI_IOEN BIT_0S /* I/O Space Access enable */ | ||
188 | |||
189 | #define PCI_COMMAND_VAL (PCI_FBTEN | PCI_SERREN | PCI_PERREN | PCI_MWIEN |\ | ||
190 | PCI_BMEN | PCI_MEMEN | PCI_IOEN) | ||
191 | |||
192 | /* PCI_STATUS 16 bit Status */ | ||
193 | #define PCI_PERR BIT_15S /* Parity Error */ | ||
194 | #define PCI_SERR BIT_14S /* Signaled SERR */ | ||
195 | #define PCI_RMABORT BIT_13S /* Received Master Abort */ | ||
196 | #define PCI_RTABORT BIT_12S /* Received Target Abort */ | ||
197 | /* Bit 11: reserved */ | ||
198 | #define PCI_DEVSEL (3<<9) /* Bit 10.. 9: DEVSEL Timing */ | ||
199 | #define PCI_DEV_FAST (0<<9) /* fast */ | ||
200 | #define PCI_DEV_MEDIUM (1<<9) /* medium */ | ||
201 | #define PCI_DEV_SLOW (2<<9) /* slow */ | ||
202 | #define PCI_DATAPERR BIT_8S /* DATA Parity error detected */ | ||
203 | #define PCI_FB2BCAP BIT_7S /* Fast Back-to-Back Capability */ | ||
204 | #define PCI_UDF BIT_6S /* User Defined Features */ | ||
205 | #define PCI_66MHZCAP BIT_5S /* 66 MHz PCI bus clock capable */ | ||
206 | #define PCI_NEWCAP BIT_4S /* New cap. list implemented */ | ||
207 | #define PCI_INT_STAT BIT_3S /* Interrupt INTx# Status (PCI 2.3) */ | ||
208 | /* Bit 2.. 0: reserved */ | ||
209 | |||
210 | #define PCI_ERRBITS (PCI_PERR | PCI_SERR | PCI_RMABORT | PCI_RTABORT |\ | ||
211 | PCI_DATAPERR) | ||
212 | |||
213 | /* PCI_CLASS_CODE 24 bit Class Code */ | ||
214 | /* Byte 2: Base Class (02) */ | ||
215 | /* Byte 1: SubClass (00) */ | ||
216 | /* Byte 0: Programming Interface (00) */ | ||
217 | |||
218 | /* PCI_CACHE_LSZ 8 bit Cache Line Size */ | ||
219 | /* Possible values: 0,2,4,8,16,32,64,128 */ | ||
220 | |||
221 | /* PCI_HEADER_T 8 bit Header Type */ | ||
222 | #define PCI_HD_MF_DEV BIT_7S /* 0= single, 1= multi-func dev */ | ||
223 | #define PCI_HD_TYPE 0x7f /* Bit 6..0: Header Layout 0= normal */ | ||
224 | |||
225 | /* PCI_BIST 8 bit Built-in selftest */ | ||
226 | /* Built-in Self test not supported (optional) */ | ||
227 | |||
228 | /* PCI_BASE_1ST 32 bit 1st Base address */ | ||
229 | #define PCI_MEMSIZE 0x4000L /* use 16 kB Memory Base */ | ||
230 | #define PCI_MEMBASE_MSK 0xffffc000L /* Bit 31..14: Memory Base Address */ | ||
231 | #define PCI_MEMSIZE_MSK 0x00003ff0L /* Bit 13.. 4: Memory Size Req. */ | ||
232 | #define PCI_PREFEN BIT_3 /* Prefetchable */ | ||
233 | #define PCI_MEM_TYP (3L<<2) /* Bit 2.. 1: Memory Type */ | ||
234 | #define PCI_MEM32BIT (0L<<1) /* Base addr anywhere in 32 Bit range */ | ||
235 | #define PCI_MEM1M (1L<<1) /* Base addr below 1 MegaByte */ | ||
236 | #define PCI_MEM64BIT (2L<<1) /* Base addr anywhere in 64 Bit range */ | ||
237 | #define PCI_MEMSPACE BIT_0 /* Memory Space Indicator */ | ||
238 | |||
239 | /* PCI_BASE_2ND 32 bit 2nd Base address */ | ||
240 | #define PCI_IOBASE 0xffffff00L /* Bit 31.. 8: I/O Base address */ | ||
241 | #define PCI_IOSIZE 0x000000fcL /* Bit 7.. 2: I/O Size Requirements */ | ||
242 | /* Bit 1: reserved */ | ||
243 | #define PCI_IOSPACE BIT_0 /* I/O Space Indicator */ | ||
244 | |||
245 | /* PCI_BASE_ROM 32 bit Expansion ROM Base Address */ | ||
246 | #define PCI_ROMBASE_MSK 0xfffe0000L /* Bit 31..17: ROM Base address */ | ||
247 | #define PCI_ROMBASE_SIZ (0x1cL<<14) /* Bit 16..14: Treat as Base or Size */ | ||
248 | #define PCI_ROMSIZE (0x38L<<11) /* Bit 13..11: ROM Size Requirements */ | ||
249 | /* Bit 10.. 1: reserved */ | ||
250 | #define PCI_ROMEN BIT_0 /* Address Decode enable */ | ||
251 | |||
252 | /* Device Dependent Region */ | ||
253 | /* PCI_OUR_REG_1 32 bit Our Register 1 */ | ||
254 | /* Bit 31..29: reserved */ | ||
255 | #define PCI_PHY_COMA BIT_28 /* Set PHY to Coma Mode (YUKON only) */ | ||
256 | #define PCI_TEST_CAL BIT_27 /* Test PCI buffer calib. (YUKON only) */ | ||
257 | #define PCI_EN_CAL BIT_26 /* Enable PCI buffer calib. (YUKON only) */ | ||
258 | #define PCI_VIO BIT_25 /* PCI I/O Voltage, 0 = 3.3V, 1 = 5V */ | ||
259 | #define PCI_DIS_BOOT BIT_24 /* Disable BOOT via ROM */ | ||
260 | #define PCI_EN_IO BIT_23 /* Mapping to I/O space */ | ||
261 | #define PCI_EN_FPROM BIT_22 /* Enable FLASH mapping to memory */ | ||
262 | /* 1 = Map Flash to memory */ | ||
263 | /* 0 = Disable addr. dec */ | ||
264 | #define PCI_PAGESIZE (3L<<20) /* Bit 21..20: FLASH Page Size */ | ||
265 | #define PCI_PAGE_16 (0L<<20) /* 16 k pages */ | ||
266 | #define PCI_PAGE_32K (1L<<20) /* 32 k pages */ | ||
267 | #define PCI_PAGE_64K (2L<<20) /* 64 k pages */ | ||
268 | #define PCI_PAGE_128K (3L<<20) /* 128 k pages */ | ||
269 | /* Bit 19: reserved */ | ||
270 | #define PCI_PAGEREG (7L<<16) /* Bit 18..16: Page Register */ | ||
271 | #define PCI_NOTAR BIT_15 /* No turnaround cycle */ | ||
272 | #define PCI_FORCE_BE BIT_14 /* Assert all BEs on MR */ | ||
273 | #define PCI_DIS_MRL BIT_13 /* Disable Mem Read Line */ | ||
274 | #define PCI_DIS_MRM BIT_12 /* Disable Mem Read Multiple */ | ||
275 | #define PCI_DIS_MWI BIT_11 /* Disable Mem Write & Invalidate */ | ||
276 | #define PCI_DISC_CLS BIT_10 /* Disc: cacheLsz bound */ | ||
277 | #define PCI_BURST_DIS BIT_9 /* Burst Disable */ | ||
278 | #define PCI_DIS_PCI_CLK BIT_8 /* Disable PCI clock driving */ | ||
279 | #define PCI_SKEW_DAS (0xfL<<4) /* Bit 7.. 4: Skew Ctrl, DAS Ext */ | ||
280 | #define PCI_SKEW_BASE 0xfL /* Bit 3.. 0: Skew Ctrl, Base */ | ||
281 | |||
282 | |||
283 | /* PCI_OUR_REG_2 32 bit Our Register 2 */ | ||
284 | #define PCI_VPD_WR_THR (0xffL<<24) /* Bit 31..24: VPD Write Threshold */ | ||
285 | #define PCI_DEV_SEL (0x7fL<<17) /* Bit 23..17: EEPROM Device Select */ | ||
286 | #define PCI_VPD_ROM_SZ (7L<<14) /* Bit 16..14: VPD ROM Size */ | ||
287 | /* Bit 13..12: reserved */ | ||
288 | #define PCI_PATCH_DIR (0xfL<<8) /* Bit 11.. 8: Ext Patches dir 3..0 */ | ||
289 | #define PCI_PATCH_DIR_3 BIT_11 | ||
290 | #define PCI_PATCH_DIR_2 BIT_10 | ||
291 | #define PCI_PATCH_DIR_1 BIT_9 | ||
292 | #define PCI_PATCH_DIR_0 BIT_8 | ||
293 | #define PCI_EXT_PATCHS (0xfL<<4) /* Bit 7.. 4: Extended Patches 3..0 */ | ||
294 | #define PCI_EXT_PATCH_3 BIT_7 | ||
295 | #define PCI_EXT_PATCH_2 BIT_6 | ||
296 | #define PCI_EXT_PATCH_1 BIT_5 | ||
297 | #define PCI_EXT_PATCH_0 BIT_4 | ||
298 | #define PCI_EN_DUMMY_RD BIT_3 /* Enable Dummy Read */ | ||
299 | #define PCI_REV_DESC BIT_2 /* Reverse Desc. Bytes */ | ||
300 | /* Bit 1: reserved */ | ||
301 | #define PCI_USEDATA64 BIT_0 /* Use 64Bit Data bus ext */ | ||
302 | |||
303 | |||
304 | /* Power Management Region */ | ||
305 | /* PCI_PM_CAP_REG 16 bit Power Management Capabilities */ | ||
306 | #define PCI_PME_SUP_MSK (0x1f<<11) /* Bit 15..11: PM Event Support Mask */ | ||
307 | #define PCI_PME_D3C_SUP BIT_15S /* PME from D3cold Support (if Vaux) */ | ||
308 | #define PCI_PME_D3H_SUP BIT_14S /* PME from D3hot Support */ | ||
309 | #define PCI_PME_D2_SUP BIT_13S /* PME from D2 Support */ | ||
310 | #define PCI_PME_D1_SUP BIT_12S /* PME from D1 Support */ | ||
311 | #define PCI_PME_D0_SUP BIT_11S /* PME from D0 Support */ | ||
312 | #define PCI_PM_D2_SUP BIT_10S /* D2 Support in 33 MHz mode */ | ||
313 | #define PCI_PM_D1_SUP BIT_9S /* D1 Support */ | ||
314 | /* Bit 8.. 6: reserved */ | ||
315 | #define PCI_PM_DSI BIT_5S /* Device Specific Initialization */ | ||
316 | #define PCI_PM_APS BIT_4S /* Auxialiary Power Source */ | ||
317 | #define PCI_PME_CLOCK BIT_3S /* PM Event Clock */ | ||
318 | #define PCI_PM_VER_MSK 7 /* Bit 2.. 0: PM PCI Spec. version */ | ||
319 | |||
320 | /* PCI_PM_CTL_STS 16 bit Power Management Control/Status */ | ||
321 | #define PCI_PME_STATUS BIT_15S /* PME Status (YUKON only) */ | ||
322 | #define PCI_PM_DAT_SCL (3<<13) /* Bit 14..13: Data Reg. scaling factor */ | ||
323 | #define PCI_PM_DAT_SEL (0xf<<9) /* Bit 12.. 9: PM data selector field */ | ||
324 | #define PCI_PME_EN BIT_8S /* Enable PME# generation (YUKON only) */ | ||
325 | /* Bit 7.. 2: reserved */ | ||
326 | #define PCI_PM_STATE_MSK 3 /* Bit 1.. 0: Power Management State */ | ||
327 | |||
328 | #define PCI_PM_STATE_D0 0 /* D0: Operational (default) */ | ||
329 | #define PCI_PM_STATE_D1 1 /* D1: (YUKON only) */ | ||
330 | #define PCI_PM_STATE_D2 2 /* D2: (YUKON only) */ | ||
331 | #define PCI_PM_STATE_D3 3 /* D3: HOT, Power Down and Reset */ | ||
332 | |||
333 | /* VPD Region */ | ||
334 | /* PCI_VPD_ADR_REG 16 bit VPD Address Register */ | ||
335 | #define PCI_VPD_FLAG BIT_15S /* starts VPD rd/wr cycle */ | ||
336 | #define PCI_VPD_ADR_MSK 0x7fffL /* Bit 14.. 0: VPD address mask */ | ||
337 | |||
338 | /* Control Register File (Address Map) */ | ||
339 | |||
340 | /* | ||
341 | * Bank 0 | ||
342 | */ | ||
343 | #define B0_RAP 0x0000 /* 8 bit Register Address Port */ | ||
344 | /* 0x0001 - 0x0003: reserved */ | ||
345 | #define B0_CTST 0x0004 /* 16 bit Control/Status register */ | ||
346 | #define B0_LED 0x0006 /* 8 Bit LED register */ | ||
347 | #define B0_POWER_CTRL 0x0007 /* 8 Bit Power Control reg (YUKON only) */ | ||
348 | #define B0_ISRC 0x0008 /* 32 bit Interrupt Source Register */ | ||
349 | #define B0_IMSK 0x000c /* 32 bit Interrupt Mask Register */ | ||
350 | #define B0_HWE_ISRC 0x0010 /* 32 bit HW Error Interrupt Src Reg */ | ||
351 | #define B0_HWE_IMSK 0x0014 /* 32 bit HW Error Interrupt Mask Reg */ | ||
352 | #define B0_SP_ISRC 0x0018 /* 32 bit Special Interrupt Source Reg */ | ||
353 | /* 0x001c: reserved */ | ||
354 | |||
355 | /* B0 XMAC 1 registers (GENESIS only) */ | ||
356 | #define B0_XM1_IMSK 0x0020 /* 16 bit r/w XMAC 1 Interrupt Mask Register*/ | ||
357 | /* 0x0022 - 0x0027: reserved */ | ||
358 | #define B0_XM1_ISRC 0x0028 /* 16 bit ro XMAC 1 Interrupt Status Reg */ | ||
359 | /* 0x002a - 0x002f: reserved */ | ||
360 | #define B0_XM1_PHY_ADDR 0x0030 /* 16 bit r/w XMAC 1 PHY Address Register */ | ||
361 | /* 0x0032 - 0x0033: reserved */ | ||
362 | #define B0_XM1_PHY_DATA 0x0034 /* 16 bit r/w XMAC 1 PHY Data Register */ | ||
363 | /* 0x0036 - 0x003f: reserved */ | ||
364 | |||
365 | /* B0 XMAC 2 registers (GENESIS only) */ | ||
366 | #define B0_XM2_IMSK 0x0040 /* 16 bit r/w XMAC 2 Interrupt Mask Register*/ | ||
367 | /* 0x0042 - 0x0047: reserved */ | ||
368 | #define B0_XM2_ISRC 0x0048 /* 16 bit ro XMAC 2 Interrupt Status Reg */ | ||
369 | /* 0x004a - 0x004f: reserved */ | ||
370 | #define B0_XM2_PHY_ADDR 0x0050 /* 16 bit r/w XMAC 2 PHY Address Register */ | ||
371 | /* 0x0052 - 0x0053: reserved */ | ||
372 | #define B0_XM2_PHY_DATA 0x0054 /* 16 bit r/w XMAC 2 PHY Data Register */ | ||
373 | /* 0x0056 - 0x005f: reserved */ | ||
374 | |||
375 | /* BMU Control Status Registers */ | ||
376 | #define B0_R1_CSR 0x0060 /* 32 bit BMU Ctrl/Stat Rx Queue 1 */ | ||
377 | #define B0_R2_CSR 0x0064 /* 32 bit BMU Ctrl/Stat Rx Queue 2 */ | ||
378 | #define B0_XS1_CSR 0x0068 /* 32 bit BMU Ctrl/Stat Sync Tx Queue 1 */ | ||
379 | #define B0_XA1_CSR 0x006c /* 32 bit BMU Ctrl/Stat Async Tx Queue 1*/ | ||
380 | #define B0_XS2_CSR 0x0070 /* 32 bit BMU Ctrl/Stat Sync Tx Queue 2 */ | ||
381 | #define B0_XA2_CSR 0x0074 /* 32 bit BMU Ctrl/Stat Async Tx Queue 2*/ | ||
382 | /* 0x0078 - 0x007f: reserved */ | ||
383 | |||
384 | /* | ||
385 | * Bank 1 | ||
386 | * - completely empty (this is the RAP Block window) | ||
387 | * Note: if RAP = 1 this page is reserved | ||
388 | */ | ||
389 | |||
390 | /* | ||
391 | * Bank 2 | ||
392 | */ | ||
393 | /* NA reg = 48 bit Network Address Register, 3x16 or 8x8 bit readable */ | ||
394 | #define B2_MAC_1 0x0100 /* NA reg MAC Address 1 */ | ||
395 | /* 0x0106 - 0x0107: reserved */ | ||
396 | #define B2_MAC_2 0x0108 /* NA reg MAC Address 2 */ | ||
397 | /* 0x010e - 0x010f: reserved */ | ||
398 | #define B2_MAC_3 0x0110 /* NA reg MAC Address 3 */ | ||
399 | /* 0x0116 - 0x0117: reserved */ | ||
400 | #define B2_CONN_TYP 0x0118 /* 8 bit Connector type */ | ||
401 | #define B2_PMD_TYP 0x0119 /* 8 bit PMD type */ | ||
402 | #define B2_MAC_CFG 0x011a /* 8 bit MAC Configuration / Chip Revision */ | ||
403 | #define B2_CHIP_ID 0x011b /* 8 bit Chip Identification Number */ | ||
404 | /* Eprom registers are currently of no use */ | ||
405 | #define B2_E_0 0x011c /* 8 bit EPROM Byte 0 (ext. SRAM size */ | ||
406 | #define B2_E_1 0x011d /* 8 bit EPROM Byte 1 (PHY type) */ | ||
407 | #define B2_E_2 0x011e /* 8 bit EPROM Byte 2 */ | ||
408 | #define B2_E_3 0x011f /* 8 bit EPROM Byte 3 */ | ||
409 | #define B2_FAR 0x0120 /* 32 bit Flash-Prom Addr Reg/Cnt */ | ||
410 | #define B2_FDP 0x0124 /* 8 bit Flash-Prom Data Port */ | ||
411 | /* 0x0125 - 0x0127: reserved */ | ||
412 | #define B2_LD_CTRL 0x0128 /* 8 bit EPROM loader control register */ | ||
413 | #define B2_LD_TEST 0x0129 /* 8 bit EPROM loader test register */ | ||
414 | /* 0x012a - 0x012f: reserved */ | ||
415 | #define B2_TI_INI 0x0130 /* 32 bit Timer Init Value */ | ||
416 | #define B2_TI_VAL 0x0134 /* 32 bit Timer Value */ | ||
417 | #define B2_TI_CTRL 0x0138 /* 8 bit Timer Control */ | ||
418 | #define B2_TI_TEST 0x0139 /* 8 Bit Timer Test */ | ||
419 | /* 0x013a - 0x013f: reserved */ | ||
420 | #define B2_IRQM_INI 0x0140 /* 32 bit IRQ Moderation Timer Init Reg.*/ | ||
421 | #define B2_IRQM_VAL 0x0144 /* 32 bit IRQ Moderation Timer Value */ | ||
422 | #define B2_IRQM_CTRL 0x0148 /* 8 bit IRQ Moderation Timer Control */ | ||
423 | #define B2_IRQM_TEST 0x0149 /* 8 bit IRQ Moderation Timer Test */ | ||
424 | #define B2_IRQM_MSK 0x014c /* 32 bit IRQ Moderation Mask */ | ||
425 | #define B2_IRQM_HWE_MSK 0x0150 /* 32 bit IRQ Moderation HW Error Mask */ | ||
426 | /* 0x0154 - 0x0157: reserved */ | ||
427 | #define B2_TST_CTRL1 0x0158 /* 8 bit Test Control Register 1 */ | ||
428 | #define B2_TST_CTRL2 0x0159 /* 8 bit Test Control Register 2 */ | ||
429 | /* 0x015a - 0x015b: reserved */ | ||
430 | #define B2_GP_IO 0x015c /* 32 bit General Purpose I/O Register */ | ||
431 | #define B2_I2C_CTRL 0x0160 /* 32 bit I2C HW Control Register */ | ||
432 | #define B2_I2C_DATA 0x0164 /* 32 bit I2C HW Data Register */ | ||
433 | #define B2_I2C_IRQ 0x0168 /* 32 bit I2C HW IRQ Register */ | ||
434 | #define B2_I2C_SW 0x016c /* 32 bit I2C SW Port Register */ | ||
435 | |||
436 | /* Blink Source Counter (GENESIS only) */ | ||
437 | #define B2_BSC_INI 0x0170 /* 32 bit Blink Source Counter Init Val */ | ||
438 | #define B2_BSC_VAL 0x0174 /* 32 bit Blink Source Counter Value */ | ||
439 | #define B2_BSC_CTRL 0x0178 /* 8 bit Blink Source Counter Control */ | ||
440 | #define B2_BSC_STAT 0x0179 /* 8 bit Blink Source Counter Status */ | ||
441 | #define B2_BSC_TST 0x017a /* 16 bit Blink Source Counter Test Reg */ | ||
442 | /* 0x017c - 0x017f: reserved */ | ||
443 | |||
444 | /* | ||
445 | * Bank 3 | ||
446 | */ | ||
447 | /* RAM Random Registers */ | ||
448 | #define B3_RAM_ADDR 0x0180 /* 32 bit RAM Address, to read or write */ | ||
449 | #define B3_RAM_DATA_LO 0x0184 /* 32 bit RAM Data Word (low dWord) */ | ||
450 | #define B3_RAM_DATA_HI 0x0188 /* 32 bit RAM Data Word (high dWord) */ | ||
451 | /* 0x018c - 0x018f: reserved */ | ||
452 | |||
453 | /* RAM Interface Registers */ | ||
454 | /* | ||
455 | * The HW-Spec. calls this registers Timeout Value 0..11. But this names are | ||
456 | * not usable in SW. Please notice these are NOT real timeouts, these are | ||
457 | * the number of qWords transferred continuously. | ||
458 | */ | ||
459 | #define B3_RI_WTO_R1 0x0190 /* 8 bit WR Timeout Queue R1 (TO0) */ | ||
460 | #define B3_RI_WTO_XA1 0x0191 /* 8 bit WR Timeout Queue XA1 (TO1) */ | ||
461 | #define B3_RI_WTO_XS1 0x0192 /* 8 bit WR Timeout Queue XS1 (TO2) */ | ||
462 | #define B3_RI_RTO_R1 0x0193 /* 8 bit RD Timeout Queue R1 (TO3) */ | ||
463 | #define B3_RI_RTO_XA1 0x0194 /* 8 bit RD Timeout Queue XA1 (TO4) */ | ||
464 | #define B3_RI_RTO_XS1 0x0195 /* 8 bit RD Timeout Queue XS1 (TO5) */ | ||
465 | #define B3_RI_WTO_R2 0x0196 /* 8 bit WR Timeout Queue R2 (TO6) */ | ||
466 | #define B3_RI_WTO_XA2 0x0197 /* 8 bit WR Timeout Queue XA2 (TO7) */ | ||
467 | #define B3_RI_WTO_XS2 0x0198 /* 8 bit WR Timeout Queue XS2 (TO8) */ | ||
468 | #define B3_RI_RTO_R2 0x0199 /* 8 bit RD Timeout Queue R2 (TO9) */ | ||
469 | #define B3_RI_RTO_XA2 0x019a /* 8 bit RD Timeout Queue XA2 (TO10)*/ | ||
470 | #define B3_RI_RTO_XS2 0x019b /* 8 bit RD Timeout Queue XS2 (TO11)*/ | ||
471 | #define B3_RI_TO_VAL 0x019c /* 8 bit Current Timeout Count Val */ | ||
472 | /* 0x019d - 0x019f: reserved */ | ||
473 | #define B3_RI_CTRL 0x01a0 /* 16 bit RAM Interface Control Register */ | ||
474 | #define B3_RI_TEST 0x01a2 /* 8 bit RAM Interface Test Register */ | ||
475 | /* 0x01a3 - 0x01af: reserved */ | ||
476 | |||
477 | /* MAC Arbiter Registers (GENESIS only) */ | ||
478 | /* these are the no. of qWord transferred continuously and NOT real timeouts */ | ||
479 | #define B3_MA_TOINI_RX1 0x01b0 /* 8 bit Timeout Init Val Rx Path MAC 1 */ | ||
480 | #define B3_MA_TOINI_RX2 0x01b1 /* 8 bit Timeout Init Val Rx Path MAC 2 */ | ||
481 | #define B3_MA_TOINI_TX1 0x01b2 /* 8 bit Timeout Init Val Tx Path MAC 1 */ | ||
482 | #define B3_MA_TOINI_TX2 0x01b3 /* 8 bit Timeout Init Val Tx Path MAC 2 */ | ||
483 | #define B3_MA_TOVAL_RX1 0x01b4 /* 8 bit Timeout Value Rx Path MAC 1 */ | ||
484 | #define B3_MA_TOVAL_RX2 0x01b5 /* 8 bit Timeout Value Rx Path MAC 1 */ | ||
485 | #define B3_MA_TOVAL_TX1 0x01b6 /* 8 bit Timeout Value Tx Path MAC 2 */ | ||
486 | #define B3_MA_TOVAL_TX2 0x01b7 /* 8 bit Timeout Value Tx Path MAC 2 */ | ||
487 | #define B3_MA_TO_CTRL 0x01b8 /* 16 bit MAC Arbiter Timeout Ctrl Reg */ | ||
488 | #define B3_MA_TO_TEST 0x01ba /* 16 bit MAC Arbiter Timeout Test Reg */ | ||
489 | /* 0x01bc - 0x01bf: reserved */ | ||
490 | #define B3_MA_RCINI_RX1 0x01c0 /* 8 bit Recovery Init Val Rx Path MAC 1 */ | ||
491 | #define B3_MA_RCINI_RX2 0x01c1 /* 8 bit Recovery Init Val Rx Path MAC 2 */ | ||
492 | #define B3_MA_RCINI_TX1 0x01c2 /* 8 bit Recovery Init Val Tx Path MAC 1 */ | ||
493 | #define B3_MA_RCINI_TX2 0x01c3 /* 8 bit Recovery Init Val Tx Path MAC 2 */ | ||
494 | #define B3_MA_RCVAL_RX1 0x01c4 /* 8 bit Recovery Value Rx Path MAC 1 */ | ||
495 | #define B3_MA_RCVAL_RX2 0x01c5 /* 8 bit Recovery Value Rx Path MAC 1 */ | ||
496 | #define B3_MA_RCVAL_TX1 0x01c6 /* 8 bit Recovery Value Tx Path MAC 2 */ | ||
497 | #define B3_MA_RCVAL_TX2 0x01c7 /* 8 bit Recovery Value Tx Path MAC 2 */ | ||
498 | #define B3_MA_RC_CTRL 0x01c8 /* 16 bit MAC Arbiter Recovery Ctrl Reg */ | ||
499 | #define B3_MA_RC_TEST 0x01ca /* 16 bit MAC Arbiter Recovery Test Reg */ | ||
500 | /* 0x01cc - 0x01cf: reserved */ | ||
501 | |||
502 | /* Packet Arbiter Registers (GENESIS only) */ | ||
503 | /* these are real timeouts */ | ||
504 | #define B3_PA_TOINI_RX1 0x01d0 /* 16 bit Timeout Init Val Rx Path MAC 1 */ | ||
505 | /* 0x01d2 - 0x01d3: reserved */ | ||
506 | #define B3_PA_TOINI_RX2 0x01d4 /* 16 bit Timeout Init Val Rx Path MAC 2 */ | ||
507 | /* 0x01d6 - 0x01d7: reserved */ | ||
508 | #define B3_PA_TOINI_TX1 0x01d8 /* 16 bit Timeout Init Val Tx Path MAC 1 */ | ||
509 | /* 0x01da - 0x01db: reserved */ | ||
510 | #define B3_PA_TOINI_TX2 0x01dc /* 16 bit Timeout Init Val Tx Path MAC 2 */ | ||
511 | /* 0x01de - 0x01df: reserved */ | ||
512 | #define B3_PA_TOVAL_RX1 0x01e0 /* 16 bit Timeout Val Rx Path MAC 1 */ | ||
513 | /* 0x01e2 - 0x01e3: reserved */ | ||
514 | #define B3_PA_TOVAL_RX2 0x01e4 /* 16 bit Timeout Val Rx Path MAC 2 */ | ||
515 | /* 0x01e6 - 0x01e7: reserved */ | ||
516 | #define B3_PA_TOVAL_TX1 0x01e8 /* 16 bit Timeout Val Tx Path MAC 1 */ | ||
517 | /* 0x01ea - 0x01eb: reserved */ | ||
518 | #define B3_PA_TOVAL_TX2 0x01ec /* 16 bit Timeout Val Tx Path MAC 2 */ | ||
519 | /* 0x01ee - 0x01ef: reserved */ | ||
520 | #define B3_PA_CTRL 0x01f0 /* 16 bit Packet Arbiter Ctrl Register */ | ||
521 | #define B3_PA_TEST 0x01f2 /* 16 bit Packet Arbiter Test Register */ | ||
522 | /* 0x01f4 - 0x01ff: reserved */ | ||
523 | |||
524 | /* | ||
525 | * Bank 4 - 5 | ||
526 | */ | ||
527 | /* Transmit Arbiter Registers MAC 1 and 2, use MR_ADDR() to access */ | ||
528 | #define TXA_ITI_INI 0x0200 /* 32 bit Tx Arb Interval Timer Init Val*/ | ||
529 | #define TXA_ITI_VAL 0x0204 /* 32 bit Tx Arb Interval Timer Value */ | ||
530 | #define TXA_LIM_INI 0x0208 /* 32 bit Tx Arb Limit Counter Init Val */ | ||
531 | #define TXA_LIM_VAL 0x020c /* 32 bit Tx Arb Limit Counter Value */ | ||
532 | #define TXA_CTRL 0x0210 /* 8 bit Tx Arbiter Control Register */ | ||
533 | #define TXA_TEST 0x0211 /* 8 bit Tx Arbiter Test Register */ | ||
534 | #define TXA_STAT 0x0212 /* 8 bit Tx Arbiter Status Register */ | ||
535 | /* 0x0213 - 0x027f: reserved */ | ||
536 | /* 0x0280 - 0x0292: MAC 2 */ | ||
537 | /* 0x0213 - 0x027f: reserved */ | ||
538 | |||
539 | /* | ||
540 | * Bank 6 | ||
541 | */ | ||
542 | /* External registers (GENESIS only) */ | ||
543 | #define B6_EXT_REG 0x0300 | ||
544 | |||
545 | /* | ||
546 | * Bank 7 | ||
547 | */ | ||
548 | /* This is a copy of the Configuration register file (lower half) */ | ||
549 | #define B7_CFG_SPC 0x0380 | ||
550 | |||
551 | /* | ||
552 | * Bank 8 - 15 | ||
553 | */ | ||
554 | /* Receive and Transmit Queue Registers, use Q_ADDR() to access */ | ||
555 | #define B8_Q_REGS 0x0400 | ||
556 | |||
557 | /* Queue Register Offsets, use Q_ADDR() to access */ | ||
558 | #define Q_D 0x00 /* 8*32 bit Current Descriptor */ | ||
559 | #define Q_DA_L 0x20 /* 32 bit Current Descriptor Address Low dWord */ | ||
560 | #define Q_DA_H 0x24 /* 32 bit Current Descriptor Address High dWord */ | ||
561 | #define Q_AC_L 0x28 /* 32 bit Current Address Counter Low dWord */ | ||
562 | #define Q_AC_H 0x2c /* 32 bit Current Address Counter High dWord */ | ||
563 | #define Q_BC 0x30 /* 32 bit Current Byte Counter */ | ||
564 | #define Q_CSR 0x34 /* 32 bit BMU Control/Status Register */ | ||
565 | #define Q_F 0x38 /* 32 bit Flag Register */ | ||
566 | #define Q_T1 0x3c /* 32 bit Test Register 1 */ | ||
567 | #define Q_T1_TR 0x3c /* 8 bit Test Register 1 Transfer SM */ | ||
568 | #define Q_T1_WR 0x3d /* 8 bit Test Register 1 Write Descriptor SM */ | ||
569 | #define Q_T1_RD 0x3e /* 8 bit Test Register 1 Read Descriptor SM */ | ||
570 | #define Q_T1_SV 0x3f /* 8 bit Test Register 1 Supervisor SM */ | ||
571 | #define Q_T2 0x40 /* 32 bit Test Register 2 */ | ||
572 | #define Q_T3 0x44 /* 32 bit Test Register 3 */ | ||
573 | /* 0x48 - 0x7f: reserved */ | ||
574 | |||
575 | /* | ||
576 | * Bank 16 - 23 | ||
577 | */ | ||
578 | /* RAM Buffer Registers */ | ||
579 | #define B16_RAM_REGS 0x0800 | ||
580 | |||
581 | /* RAM Buffer Register Offsets, use RB_ADDR() to access */ | ||
582 | #define RB_START 0x00 /* 32 bit RAM Buffer Start Address */ | ||
583 | #define RB_END 0x04 /* 32 bit RAM Buffer End Address */ | ||
584 | #define RB_WP 0x08 /* 32 bit RAM Buffer Write Pointer */ | ||
585 | #define RB_RP 0x0c /* 32 bit RAM Buffer Read Pointer */ | ||
586 | #define RB_RX_UTPP 0x10 /* 32 bit Rx Upper Threshold, Pause Pack */ | ||
587 | #define RB_RX_LTPP 0x14 /* 32 bit Rx Lower Threshold, Pause Pack */ | ||
588 | #define RB_RX_UTHP 0x18 /* 32 bit Rx Upper Threshold, High Prio */ | ||
589 | #define RB_RX_LTHP 0x1c /* 32 bit Rx Lower Threshold, High Prio */ | ||
590 | /* 0x10 - 0x1f: reserved at Tx RAM Buffer Registers */ | ||
591 | #define RB_PC 0x20 /* 32 bit RAM Buffer Packet Counter */ | ||
592 | #define RB_LEV 0x24 /* 32 bit RAM Buffer Level Register */ | ||
593 | #define RB_CTRL 0x28 /* 8 bit RAM Buffer Control Register */ | ||
594 | #define RB_TST1 0x29 /* 8 bit RAM Buffer Test Register 1 */ | ||
595 | #define RB_TST2 0x2A /* 8 bit RAM Buffer Test Register 2 */ | ||
596 | /* 0x2c - 0x7f: reserved */ | ||
597 | |||
598 | /* | ||
599 | * Bank 24 | ||
600 | */ | ||
601 | /* | ||
602 | * Receive MAC FIFO, Receive LED, and Link_Sync regs (GENESIS only) | ||
603 | * use MR_ADDR() to access | ||
604 | */ | ||
605 | #define RX_MFF_EA 0x0c00 /* 32 bit Receive MAC FIFO End Address */ | ||
606 | #define RX_MFF_WP 0x0c04 /* 32 bit Receive MAC FIFO Write Pointer */ | ||
607 | /* 0x0c08 - 0x0c0b: reserved */ | ||
608 | #define RX_MFF_RP 0x0c0c /* 32 bit Receive MAC FIFO Read Pointer */ | ||
609 | #define RX_MFF_PC 0x0c10 /* 32 bit Receive MAC FIFO Packet Cnt */ | ||
610 | #define RX_MFF_LEV 0x0c14 /* 32 bit Receive MAC FIFO Level */ | ||
611 | #define RX_MFF_CTRL1 0x0c18 /* 16 bit Receive MAC FIFO Control Reg 1*/ | ||
612 | #define RX_MFF_STAT_TO 0x0c1a /* 8 bit Receive MAC Status Timeout */ | ||
613 | #define RX_MFF_TIST_TO 0x0c1b /* 8 bit Receive MAC Time Stamp Timeout */ | ||
614 | #define RX_MFF_CTRL2 0x0c1c /* 8 bit Receive MAC FIFO Control Reg 2*/ | ||
615 | #define RX_MFF_TST1 0x0c1d /* 8 bit Receive MAC FIFO Test Reg 1 */ | ||
616 | #define RX_MFF_TST2 0x0c1e /* 8 bit Receive MAC FIFO Test Reg 2 */ | ||
617 | /* 0x0c1f: reserved */ | ||
618 | #define RX_LED_INI 0x0c20 /* 32 bit Receive LED Cnt Init Value */ | ||
619 | #define RX_LED_VAL 0x0c24 /* 32 bit Receive LED Cnt Current Value */ | ||
620 | #define RX_LED_CTRL 0x0c28 /* 8 bit Receive LED Cnt Control Reg */ | ||
621 | #define RX_LED_TST 0x0c29 /* 8 bit Receive LED Cnt Test Register */ | ||
622 | /* 0x0c2a - 0x0c2f: reserved */ | ||
623 | #define LNK_SYNC_INI 0x0c30 /* 32 bit Link Sync Cnt Init Value */ | ||
624 | #define LNK_SYNC_VAL 0x0c34 /* 32 bit Link Sync Cnt Current Value */ | ||
625 | #define LNK_SYNC_CTRL 0x0c38 /* 8 bit Link Sync Cnt Control Register */ | ||
626 | #define LNK_SYNC_TST 0x0c39 /* 8 bit Link Sync Cnt Test Register */ | ||
627 | /* 0x0c3a - 0x0c3b: reserved */ | ||
628 | #define LNK_LED_REG 0x0c3c /* 8 bit Link LED Register */ | ||
629 | /* 0x0c3d - 0x0c3f: reserved */ | ||
630 | |||
631 | /* Receive GMAC FIFO (YUKON only), use MR_ADDR() to access */ | ||
632 | #define RX_GMF_EA 0x0c40 /* 32 bit Rx GMAC FIFO End Address */ | ||
633 | #define RX_GMF_AF_THR 0x0c44 /* 32 bit Rx GMAC FIFO Almost Full Thresh. */ | ||
634 | #define RX_GMF_CTRL_T 0x0c48 /* 32 bit Rx GMAC FIFO Control/Test */ | ||
635 | #define RX_GMF_FL_MSK 0x0c4c /* 32 bit Rx GMAC FIFO Flush Mask */ | ||
636 | #define RX_GMF_FL_THR 0x0c50 /* 32 bit Rx GMAC FIFO Flush Threshold */ | ||
637 | /* 0x0c54 - 0x0c5f: reserved */ | ||
638 | #define RX_GMF_WP 0x0c60 /* 32 bit Rx GMAC FIFO Write Pointer */ | ||
639 | /* 0x0c64 - 0x0c67: reserved */ | ||
640 | #define RX_GMF_WLEV 0x0c68 /* 32 bit Rx GMAC FIFO Write Level */ | ||
641 | /* 0x0c6c - 0x0c6f: reserved */ | ||
642 | #define RX_GMF_RP 0x0c70 /* 32 bit Rx GMAC FIFO Read Pointer */ | ||
643 | /* 0x0c74 - 0x0c77: reserved */ | ||
644 | #define RX_GMF_RLEV 0x0c78 /* 32 bit Rx GMAC FIFO Read Level */ | ||
645 | /* 0x0c7c - 0x0c7f: reserved */ | ||
646 | |||
647 | /* | ||
648 | * Bank 25 | ||
649 | */ | ||
650 | /* 0x0c80 - 0x0cbf: MAC 2 */ | ||
651 | /* 0x0cc0 - 0x0cff: reserved */ | ||
652 | |||
653 | /* | ||
654 | * Bank 26 | ||
655 | */ | ||
656 | /* | ||
657 | * Transmit MAC FIFO and Transmit LED Registers (GENESIS only), | ||
658 | * use MR_ADDR() to access | ||
659 | */ | ||
660 | #define TX_MFF_EA 0x0d00 /* 32 bit Transmit MAC FIFO End Address */ | ||
661 | #define TX_MFF_WP 0x0d04 /* 32 bit Transmit MAC FIFO WR Pointer */ | ||
662 | #define TX_MFF_WSP 0x0d08 /* 32 bit Transmit MAC FIFO WR Shadow Ptr */ | ||
663 | #define TX_MFF_RP 0x0d0c /* 32 bit Transmit MAC FIFO RD Pointer */ | ||
664 | #define TX_MFF_PC 0x0d10 /* 32 bit Transmit MAC FIFO Packet Cnt */ | ||
665 | #define TX_MFF_LEV 0x0d14 /* 32 bit Transmit MAC FIFO Level */ | ||
666 | #define TX_MFF_CTRL1 0x0d18 /* 16 bit Transmit MAC FIFO Ctrl Reg 1 */ | ||
667 | #define TX_MFF_WAF 0x0d1a /* 8 bit Transmit MAC Wait after flush */ | ||
668 | /* 0x0c1b: reserved */ | ||
669 | #define TX_MFF_CTRL2 0x0d1c /* 8 bit Transmit MAC FIFO Ctrl Reg 2 */ | ||
670 | #define TX_MFF_TST1 0x0d1d /* 8 bit Transmit MAC FIFO Test Reg 1 */ | ||
671 | #define TX_MFF_TST2 0x0d1e /* 8 bit Transmit MAC FIFO Test Reg 2 */ | ||
672 | /* 0x0d1f: reserved */ | ||
673 | #define TX_LED_INI 0x0d20 /* 32 bit Transmit LED Cnt Init Value */ | ||
674 | #define TX_LED_VAL 0x0d24 /* 32 bit Transmit LED Cnt Current Val */ | ||
675 | #define TX_LED_CTRL 0x0d28 /* 8 bit Transmit LED Cnt Control Reg */ | ||
676 | #define TX_LED_TST 0x0d29 /* 8 bit Transmit LED Cnt Test Reg */ | ||
677 | /* 0x0d2a - 0x0d3f: reserved */ | ||
678 | |||
679 | /* Transmit GMAC FIFO (YUKON only), use MR_ADDR() to access */ | ||
680 | #define TX_GMF_EA 0x0d40 /* 32 bit Tx GMAC FIFO End Address */ | ||
681 | #define TX_GMF_AE_THR 0x0d44 /* 32 bit Tx GMAC FIFO Almost Empty Thresh.*/ | ||
682 | #define TX_GMF_CTRL_T 0x0d48 /* 32 bit Tx GMAC FIFO Control/Test */ | ||
683 | /* 0x0d4c - 0x0d5f: reserved */ | ||
684 | #define TX_GMF_WP 0x0d60 /* 32 bit Tx GMAC FIFO Write Pointer */ | ||
685 | #define TX_GMF_WSP 0x0d64 /* 32 bit Tx GMAC FIFO Write Shadow Ptr. */ | ||
686 | #define TX_GMF_WLEV 0x0d68 /* 32 bit Tx GMAC FIFO Write Level */ | ||
687 | /* 0x0d6c - 0x0d6f: reserved */ | ||
688 | #define TX_GMF_RP 0x0d70 /* 32 bit Tx GMAC FIFO Read Pointer */ | ||
689 | #define TX_GMF_RSTP 0x0d74 /* 32 bit Tx GMAC FIFO Restart Pointer */ | ||
690 | #define TX_GMF_RLEV 0x0d78 /* 32 bit Tx GMAC FIFO Read Level */ | ||
691 | /* 0x0d7c - 0x0d7f: reserved */ | ||
692 | |||
693 | /* | ||
694 | * Bank 27 | ||
695 | */ | ||
696 | /* 0x0d80 - 0x0dbf: MAC 2 */ | ||
697 | /* 0x0daa - 0x0dff: reserved */ | ||
698 | |||
699 | /* | ||
700 | * Bank 28 | ||
701 | */ | ||
702 | /* Descriptor Poll Timer Registers */ | ||
703 | #define B28_DPT_INI 0x0e00 /* 24 bit Descriptor Poll Timer Init Val */ | ||
704 | #define B28_DPT_VAL 0x0e04 /* 24 bit Descriptor Poll Timer Curr Val */ | ||
705 | #define B28_DPT_CTRL 0x0e08 /* 8 bit Descriptor Poll Timer Ctrl Reg */ | ||
706 | /* 0x0e09: reserved */ | ||
707 | #define B28_DPT_TST 0x0e0a /* 8 bit Descriptor Poll Timer Test Reg */ | ||
708 | /* 0x0e0b: reserved */ | ||
709 | |||
710 | /* Time Stamp Timer Registers (YUKON only) */ | ||
711 | /* 0x0e10: reserved */ | ||
712 | #define GMAC_TI_ST_VAL 0x0e14 /* 32 bit Time Stamp Timer Curr Val */ | ||
713 | #define GMAC_TI_ST_CTRL 0x0e18 /* 8 bit Time Stamp Timer Ctrl Reg */ | ||
714 | /* 0x0e19: reserved */ | ||
715 | #define GMAC_TI_ST_TST 0x0e1a /* 8 bit Time Stamp Timer Test Reg */ | ||
716 | /* 0x0e1b - 0x0e7f: reserved */ | ||
717 | |||
718 | /* | ||
719 | * Bank 29 | ||
720 | */ | ||
721 | /* 0x0e80 - 0x0efc: reserved */ | ||
722 | |||
723 | /* | ||
724 | * Bank 30 | ||
725 | */ | ||
726 | /* GMAC and GPHY Control Registers (YUKON only) */ | ||
727 | #define GMAC_CTRL 0x0f00 /* 32 bit GMAC Control Reg */ | ||
728 | #define GPHY_CTRL 0x0f04 /* 32 bit GPHY Control Reg */ | ||
729 | #define GMAC_IRQ_SRC 0x0f08 /* 8 bit GMAC Interrupt Source Reg */ | ||
730 | /* 0x0f09 - 0x0f0b: reserved */ | ||
731 | #define GMAC_IRQ_MSK 0x0f0c /* 8 bit GMAC Interrupt Mask Reg */ | ||
732 | /* 0x0f0d - 0x0f0f: reserved */ | ||
733 | #define GMAC_LINK_CTRL 0x0f10 /* 16 bit Link Control Reg */ | ||
734 | /* 0x0f14 - 0x0f1f: reserved */ | ||
735 | |||
736 | /* Wake-up Frame Pattern Match Control Registers (YUKON only) */ | ||
737 | |||
738 | #define WOL_REG_OFFS 0x20 /* HW-Bug: Address is + 0x20 against spec. */ | ||
739 | |||
740 | #define WOL_CTRL_STAT 0x0f20 /* 16 bit WOL Control/Status Reg */ | ||
741 | #define WOL_MATCH_CTL 0x0f22 /* 8 bit WOL Match Control Reg */ | ||
742 | #define WOL_MATCH_RES 0x0f23 /* 8 bit WOL Match Result Reg */ | ||
743 | #define WOL_MAC_ADDR_LO 0x0f24 /* 32 bit WOL MAC Address Low */ | ||
744 | #define WOL_MAC_ADDR_HI 0x0f28 /* 16 bit WOL MAC Address High */ | ||
745 | #define WOL_PATT_RPTR 0x0f2c /* 8 bit WOL Pattern Read Ptr */ | ||
746 | |||
747 | /* use this macro to access above registers */ | ||
748 | #define WOL_REG(Reg) ((Reg) + (pAC->GIni.GIWolOffs)) | ||
749 | |||
750 | |||
751 | /* WOL Pattern Length Registers (YUKON only) */ | ||
752 | |||
753 | #define WOL_PATT_LEN_LO 0x0f30 /* 32 bit WOL Pattern Length 3..0 */ | ||
754 | #define WOL_PATT_LEN_HI 0x0f34 /* 24 bit WOL Pattern Length 6..4 */ | ||
755 | |||
756 | /* WOL Pattern Counter Registers (YUKON only) */ | ||
757 | |||
758 | #define WOL_PATT_CNT_0 0x0f38 /* 32 bit WOL Pattern Counter 3..0 */ | ||
759 | #define WOL_PATT_CNT_4 0x0f3c /* 24 bit WOL Pattern Counter 6..4 */ | ||
760 | /* 0x0f40 - 0x0f7f: reserved */ | ||
761 | |||
762 | /* | ||
763 | * Bank 31 | ||
764 | */ | ||
765 | /* 0x0f80 - 0x0fff: reserved */ | ||
766 | |||
767 | /* | ||
768 | * Bank 32 - 33 | ||
769 | */ | ||
770 | #define WOL_PATT_RAM_1 0x1000 /* WOL Pattern RAM Link 1 */ | ||
771 | |||
772 | /* | ||
773 | * Bank 0x22 - 0x3f | ||
774 | */ | ||
775 | /* 0x1100 - 0x1fff: reserved */ | ||
776 | |||
777 | /* | ||
778 | * Bank 0x40 - 0x4f | ||
779 | */ | ||
780 | #define BASE_XMAC_1 0x2000 /* XMAC 1 registers */ | ||
781 | |||
782 | /* | ||
783 | * Bank 0x50 - 0x5f | ||
784 | */ | ||
785 | |||
786 | #define BASE_GMAC_1 0x2800 /* GMAC 1 registers */ | ||
787 | |||
788 | /* | ||
789 | * Bank 0x60 - 0x6f | ||
790 | */ | ||
791 | #define BASE_XMAC_2 0x3000 /* XMAC 2 registers */ | ||
792 | |||
793 | /* | ||
794 | * Bank 0x70 - 0x7f | ||
795 | */ | ||
796 | #define BASE_GMAC_2 0x3800 /* GMAC 2 registers */ | ||
797 | |||
798 | /* | ||
799 | * Control Register Bit Definitions: | ||
800 | */ | ||
801 | /* B0_RAP 8 bit Register Address Port */ | ||
802 | /* Bit 7: reserved */ | ||
803 | #define RAP_RAP 0x3f /* Bit 6..0: 0 = block 0,..,6f = block 6f */ | ||
804 | |||
805 | /* B0_CTST 16 bit Control/Status register */ | ||
806 | /* Bit 15..14: reserved */ | ||
807 | #define CS_CLK_RUN_HOT BIT_13S /* CLK_RUN hot m. (YUKON-Lite only) */ | ||
808 | #define CS_CLK_RUN_RST BIT_12S /* CLK_RUN reset (YUKON-Lite only) */ | ||
809 | #define CS_CLK_RUN_ENA BIT_11S /* CLK_RUN enable (YUKON-Lite only) */ | ||
810 | #define CS_VAUX_AVAIL BIT_10S /* VAUX available (YUKON only) */ | ||
811 | #define CS_BUS_CLOCK BIT_9S /* Bus Clock 0/1 = 33/66 MHz */ | ||
812 | #define CS_BUS_SLOT_SZ BIT_8S /* Slot Size 0/1 = 32/64 bit slot */ | ||
813 | #define CS_ST_SW_IRQ BIT_7S /* Set IRQ SW Request */ | ||
814 | #define CS_CL_SW_IRQ BIT_6S /* Clear IRQ SW Request */ | ||
815 | #define CS_STOP_DONE BIT_5S /* Stop Master is finished */ | ||
816 | #define CS_STOP_MAST BIT_4S /* Command Bit to stop the master */ | ||
817 | #define CS_MRST_CLR BIT_3S /* Clear Master reset */ | ||
818 | #define CS_MRST_SET BIT_2S /* Set Master reset */ | ||
819 | #define CS_RST_CLR BIT_1S /* Clear Software reset */ | ||
820 | #define CS_RST_SET BIT_0S /* Set Software reset */ | ||
821 | |||
822 | /* B0_LED 8 Bit LED register */ | ||
823 | /* Bit 7.. 2: reserved */ | ||
824 | #define LED_STAT_ON BIT_1S /* Status LED on */ | ||
825 | #define LED_STAT_OFF BIT_0S /* Status LED off */ | ||
826 | |||
827 | /* B0_POWER_CTRL 8 Bit Power Control reg (YUKON only) */ | ||
828 | #define PC_VAUX_ENA BIT_7 /* Switch VAUX Enable */ | ||
829 | #define PC_VAUX_DIS BIT_6 /* Switch VAUX Disable */ | ||
830 | #define PC_VCC_ENA BIT_5 /* Switch VCC Enable */ | ||
831 | #define PC_VCC_DIS BIT_4 /* Switch VCC Disable */ | ||
832 | #define PC_VAUX_ON BIT_3 /* Switch VAUX On */ | ||
833 | #define PC_VAUX_OFF BIT_2 /* Switch VAUX Off */ | ||
834 | #define PC_VCC_ON BIT_1 /* Switch VCC On */ | ||
835 | #define PC_VCC_OFF BIT_0 /* Switch VCC Off */ | ||
836 | |||
837 | /* B0_ISRC 32 bit Interrupt Source Register */ | ||
838 | /* B0_IMSK 32 bit Interrupt Mask Register */ | ||
839 | /* B0_SP_ISRC 32 bit Special Interrupt Source Reg */ | ||
840 | /* B2_IRQM_MSK 32 bit IRQ Moderation Mask */ | ||
841 | #define IS_ALL_MSK 0xbfffffffUL /* All Interrupt bits */ | ||
842 | #define IS_HW_ERR BIT_31 /* Interrupt HW Error */ | ||
843 | /* Bit 30: reserved */ | ||
844 | #define IS_PA_TO_RX1 BIT_29 /* Packet Arb Timeout Rx1 */ | ||
845 | #define IS_PA_TO_RX2 BIT_28 /* Packet Arb Timeout Rx2 */ | ||
846 | #define IS_PA_TO_TX1 BIT_27 /* Packet Arb Timeout Tx1 */ | ||
847 | #define IS_PA_TO_TX2 BIT_26 /* Packet Arb Timeout Tx2 */ | ||
848 | #define IS_I2C_READY BIT_25 /* IRQ on end of I2C Tx */ | ||
849 | #define IS_IRQ_SW BIT_24 /* SW forced IRQ */ | ||
850 | #define IS_EXT_REG BIT_23 /* IRQ from LM80 or PHY (GENESIS only) */ | ||
851 | /* IRQ from PHY (YUKON only) */ | ||
852 | #define IS_TIMINT BIT_22 /* IRQ from Timer */ | ||
853 | #define IS_MAC1 BIT_21 /* IRQ from MAC 1 */ | ||
854 | #define IS_LNK_SYNC_M1 BIT_20 /* Link Sync Cnt wrap MAC 1 */ | ||
855 | #define IS_MAC2 BIT_19 /* IRQ from MAC 2 */ | ||
856 | #define IS_LNK_SYNC_M2 BIT_18 /* Link Sync Cnt wrap MAC 2 */ | ||
857 | /* Receive Queue 1 */ | ||
858 | #define IS_R1_B BIT_17 /* Q_R1 End of Buffer */ | ||
859 | #define IS_R1_F BIT_16 /* Q_R1 End of Frame */ | ||
860 | #define IS_R1_C BIT_15 /* Q_R1 Encoding Error */ | ||
861 | /* Receive Queue 2 */ | ||
862 | #define IS_R2_B BIT_14 /* Q_R2 End of Buffer */ | ||
863 | #define IS_R2_F BIT_13 /* Q_R2 End of Frame */ | ||
864 | #define IS_R2_C BIT_12 /* Q_R2 Encoding Error */ | ||
865 | /* Synchronous Transmit Queue 1 */ | ||
866 | #define IS_XS1_B BIT_11 /* Q_XS1 End of Buffer */ | ||
867 | #define IS_XS1_F BIT_10 /* Q_XS1 End of Frame */ | ||
868 | #define IS_XS1_C BIT_9 /* Q_XS1 Encoding Error */ | ||
869 | /* Asynchronous Transmit Queue 1 */ | ||
870 | #define IS_XA1_B BIT_8 /* Q_XA1 End of Buffer */ | ||
871 | #define IS_XA1_F BIT_7 /* Q_XA1 End of Frame */ | ||
872 | #define IS_XA1_C BIT_6 /* Q_XA1 Encoding Error */ | ||
873 | /* Synchronous Transmit Queue 2 */ | ||
874 | #define IS_XS2_B BIT_5 /* Q_XS2 End of Buffer */ | ||
875 | #define IS_XS2_F BIT_4 /* Q_XS2 End of Frame */ | ||
876 | #define IS_XS2_C BIT_3 /* Q_XS2 Encoding Error */ | ||
877 | /* Asynchronous Transmit Queue 2 */ | ||
878 | #define IS_XA2_B BIT_2 /* Q_XA2 End of Buffer */ | ||
879 | #define IS_XA2_F BIT_1 /* Q_XA2 End of Frame */ | ||
880 | #define IS_XA2_C BIT_0 /* Q_XA2 Encoding Error */ | ||
881 | |||
882 | |||
883 | /* B0_HWE_ISRC 32 bit HW Error Interrupt Src Reg */ | ||
884 | /* B0_HWE_IMSK 32 bit HW Error Interrupt Mask Reg */ | ||
885 | /* B2_IRQM_HWE_MSK 32 bit IRQ Moderation HW Error Mask */ | ||
886 | #define IS_ERR_MSK 0x00000fffL /* All Error bits */ | ||
887 | /* Bit 31..14: reserved */ | ||
888 | #define IS_IRQ_TIST_OV BIT_13 /* Time Stamp Timer Overflow (YUKON only) */ | ||
889 | #define IS_IRQ_SENSOR BIT_12 /* IRQ from Sensor (YUKON only) */ | ||
890 | #define IS_IRQ_MST_ERR BIT_11 /* IRQ master error detected */ | ||
891 | #define IS_IRQ_STAT BIT_10 /* IRQ status exception */ | ||
892 | #define IS_NO_STAT_M1 BIT_9 /* No Rx Status from MAC 1 */ | ||
893 | #define IS_NO_STAT_M2 BIT_8 /* No Rx Status from MAC 2 */ | ||
894 | #define IS_NO_TIST_M1 BIT_7 /* No Time Stamp from MAC 1 */ | ||
895 | #define IS_NO_TIST_M2 BIT_6 /* No Time Stamp from MAC 2 */ | ||
896 | #define IS_RAM_RD_PAR BIT_5 /* RAM Read Parity Error */ | ||
897 | #define IS_RAM_WR_PAR BIT_4 /* RAM Write Parity Error */ | ||
898 | #define IS_M1_PAR_ERR BIT_3 /* MAC 1 Parity Error */ | ||
899 | #define IS_M2_PAR_ERR BIT_2 /* MAC 2 Parity Error */ | ||
900 | #define IS_R1_PAR_ERR BIT_1 /* Queue R1 Parity Error */ | ||
901 | #define IS_R2_PAR_ERR BIT_0 /* Queue R2 Parity Error */ | ||
902 | |||
903 | /* B2_CONN_TYP 8 bit Connector type */ | ||
904 | /* B2_PMD_TYP 8 bit PMD type */ | ||
905 | /* Values of connector and PMD type comply to SysKonnect internal std */ | ||
906 | |||
907 | /* B2_MAC_CFG 8 bit MAC Configuration / Chip Revision */ | ||
908 | #define CFG_CHIP_R_MSK (0xf<<4) /* Bit 7.. 4: Chip Revision */ | ||
909 | /* Bit 3.. 2: reserved */ | ||
910 | #define CFG_DIS_M2_CLK BIT_1S /* Disable Clock for 2nd MAC */ | ||
911 | #define CFG_SNG_MAC BIT_0S /* MAC Config: 0=2 MACs / 1=1 MAC*/ | ||
912 | |||
913 | /* B2_CHIP_ID 8 bit Chip Identification Number */ | ||
914 | #define CHIP_ID_GENESIS 0x0a /* Chip ID for GENESIS */ | ||
915 | #define CHIP_ID_YUKON 0xb0 /* Chip ID for YUKON */ | ||
916 | #define CHIP_ID_YUKON_LITE 0xb1 /* Chip ID for YUKON-Lite (Rev. A1-A3) */ | ||
917 | #define CHIP_ID_YUKON_LP 0xb2 /* Chip ID for YUKON-LP */ | ||
918 | |||
919 | #define CHIP_REV_YU_LITE_A1 3 /* Chip Rev. for YUKON-Lite A1,A2 */ | ||
920 | #define CHIP_REV_YU_LITE_A3 7 /* Chip Rev. for YUKON-Lite A3 */ | ||
921 | |||
922 | /* B2_FAR 32 bit Flash-Prom Addr Reg/Cnt */ | ||
923 | #define FAR_ADDR 0x1ffffL /* Bit 16.. 0: FPROM Address mask */ | ||
924 | |||
925 | /* B2_LD_CTRL 8 bit EPROM loader control register */ | ||
926 | /* Bits are currently reserved */ | ||
927 | |||
928 | /* B2_LD_TEST 8 bit EPROM loader test register */ | ||
929 | /* Bit 7.. 4: reserved */ | ||
930 | #define LD_T_ON BIT_3S /* Loader Test mode on */ | ||
931 | #define LD_T_OFF BIT_2S /* Loader Test mode off */ | ||
932 | #define LD_T_STEP BIT_1S /* Decrement FPROM addr. Counter */ | ||
933 | #define LD_START BIT_0S /* Start loading FPROM */ | ||
934 | |||
935 | /* | ||
936 | * Timer Section | ||
937 | */ | ||
938 | /* B2_TI_CTRL 8 bit Timer control */ | ||
939 | /* B2_IRQM_CTRL 8 bit IRQ Moderation Timer Control */ | ||
940 | /* Bit 7.. 3: reserved */ | ||
941 | #define TIM_START BIT_2S /* Start Timer */ | ||
942 | #define TIM_STOP BIT_1S /* Stop Timer */ | ||
943 | #define TIM_CLR_IRQ BIT_0S /* Clear Timer IRQ (!IRQM) */ | ||
944 | |||
945 | /* B2_TI_TEST 8 Bit Timer Test */ | ||
946 | /* B2_IRQM_TEST 8 bit IRQ Moderation Timer Test */ | ||
947 | /* B28_DPT_TST 8 bit Descriptor Poll Timer Test Reg */ | ||
948 | /* Bit 7.. 3: reserved */ | ||
949 | #define TIM_T_ON BIT_2S /* Test mode on */ | ||
950 | #define TIM_T_OFF BIT_1S /* Test mode off */ | ||
951 | #define TIM_T_STEP BIT_0S /* Test step */ | ||
952 | |||
953 | /* B28_DPT_INI 32 bit Descriptor Poll Timer Init Val */ | ||
954 | /* B28_DPT_VAL 32 bit Descriptor Poll Timer Curr Val */ | ||
955 | /* Bit 31..24: reserved */ | ||
956 | #define DPT_MSK 0x00ffffffL /* Bit 23.. 0: Desc Poll Timer Bits */ | ||
957 | |||
958 | /* B28_DPT_CTRL 8 bit Descriptor Poll Timer Ctrl Reg */ | ||
959 | /* Bit 7.. 2: reserved */ | ||
960 | #define DPT_START BIT_1S /* Start Descriptor Poll Timer */ | ||
961 | #define DPT_STOP BIT_0S /* Stop Descriptor Poll Timer */ | ||
962 | |||
963 | /* B2_E_3 8 bit lower 4 bits used for HW self test result */ | ||
964 | #define B2_E3_RES_MASK 0x0f | ||
965 | |||
966 | /* B2_TST_CTRL1 8 bit Test Control Register 1 */ | ||
967 | #define TST_FRC_DPERR_MR BIT_7S /* force DATAPERR on MST RD */ | ||
968 | #define TST_FRC_DPERR_MW BIT_6S /* force DATAPERR on MST WR */ | ||
969 | #define TST_FRC_DPERR_TR BIT_5S /* force DATAPERR on TRG RD */ | ||
970 | #define TST_FRC_DPERR_TW BIT_4S /* force DATAPERR on TRG WR */ | ||
971 | #define TST_FRC_APERR_M BIT_3S /* force ADDRPERR on MST */ | ||
972 | #define TST_FRC_APERR_T BIT_2S /* force ADDRPERR on TRG */ | ||
973 | #define TST_CFG_WRITE_ON BIT_1S /* Enable Config Reg WR */ | ||
974 | #define TST_CFG_WRITE_OFF BIT_0S /* Disable Config Reg WR */ | ||
975 | |||
976 | /* B2_TST_CTRL2 8 bit Test Control Register 2 */ | ||
977 | /* Bit 7.. 4: reserved */ | ||
978 | /* force the following error on the next master read/write */ | ||
979 | #define TST_FRC_DPERR_MR64 BIT_3S /* DataPERR RD 64 */ | ||
980 | #define TST_FRC_DPERR_MW64 BIT_2S /* DataPERR WR 64 */ | ||
981 | #define TST_FRC_APERR_1M64 BIT_1S /* AddrPERR on 1. phase */ | ||
982 | #define TST_FRC_APERR_2M64 BIT_0S /* AddrPERR on 2. phase */ | ||
983 | |||
984 | /* B2_GP_IO 32 bit General Purpose I/O Register */ | ||
985 | /* Bit 31..26: reserved */ | ||
986 | #define GP_DIR_9 BIT_25 /* IO_9 direct, 0=In/1=Out */ | ||
987 | #define GP_DIR_8 BIT_24 /* IO_8 direct, 0=In/1=Out */ | ||
988 | #define GP_DIR_7 BIT_23 /* IO_7 direct, 0=In/1=Out */ | ||
989 | #define GP_DIR_6 BIT_22 /* IO_6 direct, 0=In/1=Out */ | ||
990 | #define GP_DIR_5 BIT_21 /* IO_5 direct, 0=In/1=Out */ | ||
991 | #define GP_DIR_4 BIT_20 /* IO_4 direct, 0=In/1=Out */ | ||
992 | #define GP_DIR_3 BIT_19 /* IO_3 direct, 0=In/1=Out */ | ||
993 | #define GP_DIR_2 BIT_18 /* IO_2 direct, 0=In/1=Out */ | ||
994 | #define GP_DIR_1 BIT_17 /* IO_1 direct, 0=In/1=Out */ | ||
995 | #define GP_DIR_0 BIT_16 /* IO_0 direct, 0=In/1=Out */ | ||
996 | /* Bit 15..10: reserved */ | ||
997 | #define GP_IO_9 BIT_9 /* IO_9 pin */ | ||
998 | #define GP_IO_8 BIT_8 /* IO_8 pin */ | ||
999 | #define GP_IO_7 BIT_7 /* IO_7 pin */ | ||
1000 | #define GP_IO_6 BIT_6 /* IO_6 pin */ | ||
1001 | #define GP_IO_5 BIT_5 /* IO_5 pin */ | ||
1002 | #define GP_IO_4 BIT_4 /* IO_4 pin */ | ||
1003 | #define GP_IO_3 BIT_3 /* IO_3 pin */ | ||
1004 | #define GP_IO_2 BIT_2 /* IO_2 pin */ | ||
1005 | #define GP_IO_1 BIT_1 /* IO_1 pin */ | ||
1006 | #define GP_IO_0 BIT_0 /* IO_0 pin */ | ||
1007 | |||
1008 | /* B2_I2C_CTRL 32 bit I2C HW Control Register */ | ||
1009 | #define I2C_FLAG BIT_31 /* Start read/write if WR */ | ||
1010 | #define I2C_ADDR (0x7fffL<<16) /* Bit 30..16: Addr to be RD/WR */ | ||
1011 | #define I2C_DEV_SEL (0x7fL<<9) /* Bit 15.. 9: I2C Device Select */ | ||
1012 | /* Bit 8.. 5: reserved */ | ||
1013 | #define I2C_BURST_LEN BIT_4 /* Burst Len, 1/4 bytes */ | ||
1014 | #define I2C_DEV_SIZE (7<<1) /* Bit 3.. 1: I2C Device Size */ | ||
1015 | #define I2C_025K_DEV (0<<1) /* 0: 256 Bytes or smal. */ | ||
1016 | #define I2C_05K_DEV (1<<1) /* 1: 512 Bytes */ | ||
1017 | #define I2C_1K_DEV (2<<1) /* 2: 1024 Bytes */ | ||
1018 | #define I2C_2K_DEV (3<<1) /* 3: 2048 Bytes */ | ||
1019 | #define I2C_4K_DEV (4<<1) /* 4: 4096 Bytes */ | ||
1020 | #define I2C_8K_DEV (5<<1) /* 5: 8192 Bytes */ | ||
1021 | #define I2C_16K_DEV (6<<1) /* 6: 16384 Bytes */ | ||
1022 | #define I2C_32K_DEV (7<<1) /* 7: 32768 Bytes */ | ||
1023 | #define I2C_STOP BIT_0 /* Interrupt I2C transfer */ | ||
1024 | |||
1025 | /* B2_I2C_IRQ 32 bit I2C HW IRQ Register */ | ||
1026 | /* Bit 31.. 1 reserved */ | ||
1027 | #define I2C_CLR_IRQ BIT_0 /* Clear I2C IRQ */ | ||
1028 | |||
1029 | /* B2_I2C_SW 32 bit (8 bit access) I2C HW SW Port Register */ | ||
1030 | /* Bit 7.. 3: reserved */ | ||
1031 | #define I2C_DATA_DIR BIT_2S /* direction of I2C_DATA */ | ||
1032 | #define I2C_DATA BIT_1S /* I2C Data Port */ | ||
1033 | #define I2C_CLK BIT_0S /* I2C Clock Port */ | ||
1034 | |||
1035 | /* | ||
1036 | * I2C Address | ||
1037 | */ | ||
1038 | #define I2C_SENS_ADDR LM80_ADDR /* I2C Sensor Address, (Volt and Temp)*/ | ||
1039 | |||
1040 | |||
1041 | /* B2_BSC_CTRL 8 bit Blink Source Counter Control */ | ||
1042 | /* Bit 7.. 2: reserved */ | ||
1043 | #define BSC_START BIT_1S /* Start Blink Source Counter */ | ||
1044 | #define BSC_STOP BIT_0S /* Stop Blink Source Counter */ | ||
1045 | |||
1046 | /* B2_BSC_STAT 8 bit Blink Source Counter Status */ | ||
1047 | /* Bit 7.. 1: reserved */ | ||
1048 | #define BSC_SRC BIT_0S /* Blink Source, 0=Off / 1=On */ | ||
1049 | |||
1050 | /* B2_BSC_TST 16 bit Blink Source Counter Test Reg */ | ||
1051 | #define BSC_T_ON BIT_2S /* Test mode on */ | ||
1052 | #define BSC_T_OFF BIT_1S /* Test mode off */ | ||
1053 | #define BSC_T_STEP BIT_0S /* Test step */ | ||
1054 | |||
1055 | |||
1056 | /* B3_RAM_ADDR 32 bit RAM Address, to read or write */ | ||
1057 | /* Bit 31..19: reserved */ | ||
1058 | #define RAM_ADR_RAN 0x0007ffffL /* Bit 18.. 0: RAM Address Range */ | ||
1059 | |||
1060 | /* RAM Interface Registers */ | ||
1061 | /* B3_RI_CTRL 16 bit RAM Iface Control Register */ | ||
1062 | /* Bit 15..10: reserved */ | ||
1063 | #define RI_CLR_RD_PERR BIT_9S /* Clear IRQ RAM Read Parity Err */ | ||
1064 | #define RI_CLR_WR_PERR BIT_8S /* Clear IRQ RAM Write Parity Err*/ | ||
1065 | /* Bit 7.. 2: reserved */ | ||
1066 | #define RI_RST_CLR BIT_1S /* Clear RAM Interface Reset */ | ||
1067 | #define RI_RST_SET BIT_0S /* Set RAM Interface Reset */ | ||
1068 | |||
1069 | /* B3_RI_TEST 8 bit RAM Iface Test Register */ | ||
1070 | /* Bit 15.. 4: reserved */ | ||
1071 | #define RI_T_EV BIT_3S /* Timeout Event occured */ | ||
1072 | #define RI_T_ON BIT_2S /* Timeout Timer Test On */ | ||
1073 | #define RI_T_OFF BIT_1S /* Timeout Timer Test Off */ | ||
1074 | #define RI_T_STEP BIT_0S /* Timeout Timer Step */ | ||
1075 | |||
1076 | /* MAC Arbiter Registers */ | ||
1077 | /* B3_MA_TO_CTRL 16 bit MAC Arbiter Timeout Ctrl Reg */ | ||
1078 | /* Bit 15.. 4: reserved */ | ||
1079 | #define MA_FOE_ON BIT_3S /* XMAC Fast Output Enable ON */ | ||
1080 | #define MA_FOE_OFF BIT_2S /* XMAC Fast Output Enable OFF */ | ||
1081 | #define MA_RST_CLR BIT_1S /* Clear MAC Arbiter Reset */ | ||
1082 | #define MA_RST_SET BIT_0S /* Set MAC Arbiter Reset */ | ||
1083 | |||
1084 | /* B3_MA_RC_CTRL 16 bit MAC Arbiter Recovery Ctrl Reg */ | ||
1085 | /* Bit 15.. 8: reserved */ | ||
1086 | #define MA_ENA_REC_TX2 BIT_7S /* Enable Recovery Timer TX2 */ | ||
1087 | #define MA_DIS_REC_TX2 BIT_6S /* Disable Recovery Timer TX2 */ | ||
1088 | #define MA_ENA_REC_TX1 BIT_5S /* Enable Recovery Timer TX1 */ | ||
1089 | #define MA_DIS_REC_TX1 BIT_4S /* Disable Recovery Timer TX1 */ | ||
1090 | #define MA_ENA_REC_RX2 BIT_3S /* Enable Recovery Timer RX2 */ | ||
1091 | #define MA_DIS_REC_RX2 BIT_2S /* Disable Recovery Timer RX2 */ | ||
1092 | #define MA_ENA_REC_RX1 BIT_1S /* Enable Recovery Timer RX1 */ | ||
1093 | #define MA_DIS_REC_RX1 BIT_0S /* Disable Recovery Timer RX1 */ | ||
1094 | |||
1095 | /* Packet Arbiter Registers */ | ||
1096 | /* B3_PA_CTRL 16 bit Packet Arbiter Ctrl Register */ | ||
1097 | /* Bit 15..14: reserved */ | ||
1098 | #define PA_CLR_TO_TX2 BIT_13S /* Clear IRQ Packet Timeout TX2 */ | ||
1099 | #define PA_CLR_TO_TX1 BIT_12S /* Clear IRQ Packet Timeout TX1 */ | ||
1100 | #define PA_CLR_TO_RX2 BIT_11S /* Clear IRQ Packet Timeout RX2 */ | ||
1101 | #define PA_CLR_TO_RX1 BIT_10S /* Clear IRQ Packet Timeout RX1 */ | ||
1102 | #define PA_ENA_TO_TX2 BIT_9S /* Enable Timeout Timer TX2 */ | ||
1103 | #define PA_DIS_TO_TX2 BIT_8S /* Disable Timeout Timer TX2 */ | ||
1104 | #define PA_ENA_TO_TX1 BIT_7S /* Enable Timeout Timer TX1 */ | ||
1105 | #define PA_DIS_TO_TX1 BIT_6S /* Disable Timeout Timer TX1 */ | ||
1106 | #define PA_ENA_TO_RX2 BIT_5S /* Enable Timeout Timer RX2 */ | ||
1107 | #define PA_DIS_TO_RX2 BIT_4S /* Disable Timeout Timer RX2 */ | ||
1108 | #define PA_ENA_TO_RX1 BIT_3S /* Enable Timeout Timer RX1 */ | ||
1109 | #define PA_DIS_TO_RX1 BIT_2S /* Disable Timeout Timer RX1 */ | ||
1110 | #define PA_RST_CLR BIT_1S /* Clear MAC Arbiter Reset */ | ||
1111 | #define PA_RST_SET BIT_0S /* Set MAC Arbiter Reset */ | ||
1112 | |||
1113 | #define PA_ENA_TO_ALL (PA_ENA_TO_RX1 | PA_ENA_TO_RX2 |\ | ||
1114 | PA_ENA_TO_TX1 | PA_ENA_TO_TX2) | ||
1115 | |||
1116 | /* Rx/Tx Path related Arbiter Test Registers */ | ||
1117 | /* B3_MA_TO_TEST 16 bit MAC Arbiter Timeout Test Reg */ | ||
1118 | /* B3_MA_RC_TEST 16 bit MAC Arbiter Recovery Test Reg */ | ||
1119 | /* B3_PA_TEST 16 bit Packet Arbiter Test Register */ | ||
1120 | /* Bit 15, 11, 7, and 3 are reserved in B3_PA_TEST */ | ||
1121 | #define TX2_T_EV BIT_15S /* TX2 Timeout/Recv Event occured */ | ||
1122 | #define TX2_T_ON BIT_14S /* TX2 Timeout/Recv Timer Test On */ | ||
1123 | #define TX2_T_OFF BIT_13S /* TX2 Timeout/Recv Timer Tst Off */ | ||
1124 | #define TX2_T_STEP BIT_12S /* TX2 Timeout/Recv Timer Step */ | ||
1125 | #define TX1_T_EV BIT_11S /* TX1 Timeout/Recv Event occured */ | ||
1126 | #define TX1_T_ON BIT_10S /* TX1 Timeout/Recv Timer Test On */ | ||
1127 | #define TX1_T_OFF BIT_9S /* TX1 Timeout/Recv Timer Tst Off */ | ||
1128 | #define TX1_T_STEP BIT_8S /* TX1 Timeout/Recv Timer Step */ | ||
1129 | #define RX2_T_EV BIT_7S /* RX2 Timeout/Recv Event occured */ | ||
1130 | #define RX2_T_ON BIT_6S /* RX2 Timeout/Recv Timer Test On */ | ||
1131 | #define RX2_T_OFF BIT_5S /* RX2 Timeout/Recv Timer Tst Off */ | ||
1132 | #define RX2_T_STEP BIT_4S /* RX2 Timeout/Recv Timer Step */ | ||
1133 | #define RX1_T_EV BIT_3S /* RX1 Timeout/Recv Event occured */ | ||
1134 | #define RX1_T_ON BIT_2S /* RX1 Timeout/Recv Timer Test On */ | ||
1135 | #define RX1_T_OFF BIT_1S /* RX1 Timeout/Recv Timer Tst Off */ | ||
1136 | #define RX1_T_STEP BIT_0S /* RX1 Timeout/Recv Timer Step */ | ||
1137 | |||
1138 | |||
1139 | /* Transmit Arbiter Registers MAC 1 and 2, use MR_ADDR() to access */ | ||
1140 | /* TXA_ITI_INI 32 bit Tx Arb Interval Timer Init Val */ | ||
1141 | /* TXA_ITI_VAL 32 bit Tx Arb Interval Timer Value */ | ||
1142 | /* TXA_LIM_INI 32 bit Tx Arb Limit Counter Init Val */ | ||
1143 | /* TXA_LIM_VAL 32 bit Tx Arb Limit Counter Value */ | ||
1144 | /* Bit 31..24: reserved */ | ||
1145 | #define TXA_MAX_VAL 0x00ffffffUL/* Bit 23.. 0: Max TXA Timer/Cnt Val */ | ||
1146 | |||
1147 | /* TXA_CTRL 8 bit Tx Arbiter Control Register */ | ||
1148 | #define TXA_ENA_FSYNC BIT_7S /* Enable force of sync Tx queue */ | ||
1149 | #define TXA_DIS_FSYNC BIT_6S /* Disable force of sync Tx queue */ | ||
1150 | #define TXA_ENA_ALLOC BIT_5S /* Enable alloc of free bandwidth */ | ||
1151 | #define TXA_DIS_ALLOC BIT_4S /* Disable alloc of free bandwidth */ | ||
1152 | #define TXA_START_RC BIT_3S /* Start sync Rate Control */ | ||
1153 | #define TXA_STOP_RC BIT_2S /* Stop sync Rate Control */ | ||
1154 | #define TXA_ENA_ARB BIT_1S /* Enable Tx Arbiter */ | ||
1155 | #define TXA_DIS_ARB BIT_0S /* Disable Tx Arbiter */ | ||
1156 | |||
1157 | /* TXA_TEST 8 bit Tx Arbiter Test Register */ | ||
1158 | /* Bit 7.. 6: reserved */ | ||
1159 | #define TXA_INT_T_ON BIT_5S /* Tx Arb Interval Timer Test On */ | ||
1160 | #define TXA_INT_T_OFF BIT_4S /* Tx Arb Interval Timer Test Off */ | ||
1161 | #define TXA_INT_T_STEP BIT_3S /* Tx Arb Interval Timer Step */ | ||
1162 | #define TXA_LIM_T_ON BIT_2S /* Tx Arb Limit Timer Test On */ | ||
1163 | #define TXA_LIM_T_OFF BIT_1S /* Tx Arb Limit Timer Test Off */ | ||
1164 | #define TXA_LIM_T_STEP BIT_0S /* Tx Arb Limit Timer Step */ | ||
1165 | |||
1166 | /* TXA_STAT 8 bit Tx Arbiter Status Register */ | ||
1167 | /* Bit 7.. 1: reserved */ | ||
1168 | #define TXA_PRIO_XS BIT_0S /* sync queue has prio to send */ | ||
1169 | |||
1170 | /* Q_BC 32 bit Current Byte Counter */ | ||
1171 | /* Bit 31..16: reserved */ | ||
1172 | #define BC_MAX 0xffff /* Bit 15.. 0: Byte counter */ | ||
1173 | |||
1174 | /* BMU Control Status Registers */ | ||
1175 | /* B0_R1_CSR 32 bit BMU Ctrl/Stat Rx Queue 1 */ | ||
1176 | /* B0_R2_CSR 32 bit BMU Ctrl/Stat Rx Queue 2 */ | ||
1177 | /* B0_XA1_CSR 32 bit BMU Ctrl/Stat Sync Tx Queue 1 */ | ||
1178 | /* B0_XS1_CSR 32 bit BMU Ctrl/Stat Async Tx Queue 1 */ | ||
1179 | /* B0_XA2_CSR 32 bit BMU Ctrl/Stat Sync Tx Queue 2 */ | ||
1180 | /* B0_XS2_CSR 32 bit BMU Ctrl/Stat Async Tx Queue 2 */ | ||
1181 | /* Q_CSR 32 bit BMU Control/Status Register */ | ||
1182 | /* Bit 31..25: reserved */ | ||
1183 | #define CSR_SV_IDLE BIT_24 /* BMU SM Idle */ | ||
1184 | /* Bit 23..22: reserved */ | ||
1185 | #define CSR_DESC_CLR BIT_21 /* Clear Reset for Descr */ | ||
1186 | #define CSR_DESC_SET BIT_20 /* Set Reset for Descr */ | ||
1187 | #define CSR_FIFO_CLR BIT_19 /* Clear Reset for FIFO */ | ||
1188 | #define CSR_FIFO_SET BIT_18 /* Set Reset for FIFO */ | ||
1189 | #define CSR_HPI_RUN BIT_17 /* Release HPI SM */ | ||
1190 | #define CSR_HPI_RST BIT_16 /* Reset HPI SM to Idle */ | ||
1191 | #define CSR_SV_RUN BIT_15 /* Release Supervisor SM */ | ||
1192 | #define CSR_SV_RST BIT_14 /* Reset Supervisor SM */ | ||
1193 | #define CSR_DREAD_RUN BIT_13 /* Release Descr Read SM */ | ||
1194 | #define CSR_DREAD_RST BIT_12 /* Reset Descr Read SM */ | ||
1195 | #define CSR_DWRITE_RUN BIT_11 /* Release Descr Write SM */ | ||
1196 | #define CSR_DWRITE_RST BIT_10 /* Reset Descr Write SM */ | ||
1197 | #define CSR_TRANS_RUN BIT_9 /* Release Transfer SM */ | ||
1198 | #define CSR_TRANS_RST BIT_8 /* Reset Transfer SM */ | ||
1199 | #define CSR_ENA_POL BIT_7 /* Enable Descr Polling */ | ||
1200 | #define CSR_DIS_POL BIT_6 /* Disable Descr Polling */ | ||
1201 | #define CSR_STOP BIT_5 /* Stop Rx/Tx Queue */ | ||
1202 | #define CSR_START BIT_4 /* Start Rx/Tx Queue */ | ||
1203 | #define CSR_IRQ_CL_P BIT_3 /* (Rx) Clear Parity IRQ */ | ||
1204 | #define CSR_IRQ_CL_B BIT_2 /* Clear EOB IRQ */ | ||
1205 | #define CSR_IRQ_CL_F BIT_1 /* Clear EOF IRQ */ | ||
1206 | #define CSR_IRQ_CL_C BIT_0 /* Clear ERR IRQ */ | ||
1207 | |||
1208 | #define CSR_SET_RESET (CSR_DESC_SET | CSR_FIFO_SET | CSR_HPI_RST |\ | ||
1209 | CSR_SV_RST | CSR_DREAD_RST | CSR_DWRITE_RST |\ | ||
1210 | CSR_TRANS_RST) | ||
1211 | #define CSR_CLR_RESET (CSR_DESC_CLR | CSR_FIFO_CLR | CSR_HPI_RUN |\ | ||
1212 | CSR_SV_RUN | CSR_DREAD_RUN | CSR_DWRITE_RUN |\ | ||
1213 | CSR_TRANS_RUN) | ||
1214 | |||
1215 | /* Q_F 32 bit Flag Register */ | ||
1216 | /* Bit 31..28: reserved */ | ||
1217 | #define F_ALM_FULL BIT_27 /* Rx FIFO: almost full */ | ||
1218 | #define F_EMPTY BIT_27 /* Tx FIFO: empty flag */ | ||
1219 | #define F_FIFO_EOF BIT_26 /* Tag (EOF Flag) bit in FIFO */ | ||
1220 | #define F_WM_REACHED BIT_25 /* Watermark reached */ | ||
1221 | /* reserved */ | ||
1222 | #define F_FIFO_LEVEL (0x1fL<<16) /* Bit 23..16: # of Qwords in FIFO */ | ||
1223 | /* Bit 15..11: reserved */ | ||
1224 | #define F_WATER_MARK 0x0007ffL /* Bit 10.. 0: Watermark */ | ||
1225 | |||
1226 | /* Q_T1 32 bit Test Register 1 */ | ||
1227 | /* Holds four State Machine control Bytes */ | ||
1228 | #define SM_CTRL_SV_MSK (0xffL<<24) /* Bit 31..24: Control Supervisor SM */ | ||
1229 | #define SM_CTRL_RD_MSK (0xffL<<16) /* Bit 23..16: Control Read Desc SM */ | ||
1230 | #define SM_CTRL_WR_MSK (0xffL<<8) /* Bit 15.. 8: Control Write Desc SM */ | ||
1231 | #define SM_CTRL_TR_MSK 0xffL /* Bit 7.. 0: Control Transfer SM */ | ||
1232 | |||
1233 | /* Q_T1_TR 8 bit Test Register 1 Transfer SM */ | ||
1234 | /* Q_T1_WR 8 bit Test Register 1 Write Descriptor SM */ | ||
1235 | /* Q_T1_RD 8 bit Test Register 1 Read Descriptor SM */ | ||
1236 | /* Q_T1_SV 8 bit Test Register 1 Supervisor SM */ | ||
1237 | |||
1238 | /* The control status byte of each machine looks like ... */ | ||
1239 | #define SM_STATE 0xf0 /* Bit 7.. 4: State which shall be loaded */ | ||
1240 | #define SM_LOAD BIT_3S /* Load the SM with SM_STATE */ | ||
1241 | #define SM_TEST_ON BIT_2S /* Switch on SM Test Mode */ | ||
1242 | #define SM_TEST_OFF BIT_1S /* Go off the Test Mode */ | ||
1243 | #define SM_STEP BIT_0S /* Step the State Machine */ | ||
1244 | /* The encoding of the states is not supported by the Diagnostics Tool */ | ||
1245 | |||
1246 | /* Q_T2 32 bit Test Register 2 */ | ||
1247 | /* Bit 31.. 8: reserved */ | ||
1248 | #define T2_AC_T_ON BIT_7 /* Address Counter Test Mode on */ | ||
1249 | #define T2_AC_T_OFF BIT_6 /* Address Counter Test Mode off */ | ||
1250 | #define T2_BC_T_ON BIT_5 /* Byte Counter Test Mode on */ | ||
1251 | #define T2_BC_T_OFF BIT_4 /* Byte Counter Test Mode off */ | ||
1252 | #define T2_STEP04 BIT_3 /* Inc AC/Dec BC by 4 */ | ||
1253 | #define T2_STEP03 BIT_2 /* Inc AC/Dec BC by 3 */ | ||
1254 | #define T2_STEP02 BIT_1 /* Inc AC/Dec BC by 2 */ | ||
1255 | #define T2_STEP01 BIT_0 /* Inc AC/Dec BC by 1 */ | ||
1256 | |||
1257 | /* Q_T3 32 bit Test Register 3 */ | ||
1258 | /* Bit 31.. 7: reserved */ | ||
1259 | #define T3_MUX_MSK (7<<4) /* Bit 6.. 4: Mux Position */ | ||
1260 | /* Bit 3: reserved */ | ||
1261 | #define T3_VRAM_MSK 7 /* Bit 2.. 0: Virtual RAM Buffer Address */ | ||
1262 | |||
1263 | /* RAM Buffer Register Offsets, use RB_ADDR(Queue, Offs) to access */ | ||
1264 | /* RB_START 32 bit RAM Buffer Start Address */ | ||
1265 | /* RB_END 32 bit RAM Buffer End Address */ | ||
1266 | /* RB_WP 32 bit RAM Buffer Write Pointer */ | ||
1267 | /* RB_RP 32 bit RAM Buffer Read Pointer */ | ||
1268 | /* RB_RX_UTPP 32 bit Rx Upper Threshold, Pause Pack */ | ||
1269 | /* RB_RX_LTPP 32 bit Rx Lower Threshold, Pause Pack */ | ||
1270 | /* RB_RX_UTHP 32 bit Rx Upper Threshold, High Prio */ | ||
1271 | /* RB_RX_LTHP 32 bit Rx Lower Threshold, High Prio */ | ||
1272 | /* RB_PC 32 bit RAM Buffer Packet Counter */ | ||
1273 | /* RB_LEV 32 bit RAM Buffer Level Register */ | ||
1274 | /* Bit 31..19: reserved */ | ||
1275 | #define RB_MSK 0x0007ffff /* Bit 18.. 0: RAM Buffer Pointer Bits */ | ||
1276 | |||
1277 | /* RB_TST2 8 bit RAM Buffer Test Register 2 */ | ||
1278 | /* Bit 7.. 4: reserved */ | ||
1279 | #define RB_PC_DEC BIT_3S /* Packet Counter Decrem */ | ||
1280 | #define RB_PC_T_ON BIT_2S /* Packet Counter Test On */ | ||
1281 | #define RB_PC_T_OFF BIT_1S /* Packet Counter Tst Off */ | ||
1282 | #define RB_PC_INC BIT_0S /* Packet Counter Increm */ | ||
1283 | |||
1284 | /* RB_TST1 8 bit RAM Buffer Test Register 1 */ | ||
1285 | /* Bit 7: reserved */ | ||
1286 | #define RB_WP_T_ON BIT_6S /* Write Pointer Test On */ | ||
1287 | #define RB_WP_T_OFF BIT_5S /* Write Pointer Test Off */ | ||
1288 | #define RB_WP_INC BIT_4S /* Write Pointer Increm */ | ||
1289 | /* Bit 3: reserved */ | ||
1290 | #define RB_RP_T_ON BIT_2S /* Read Pointer Test On */ | ||
1291 | #define RB_RP_T_OFF BIT_1S /* Read Pointer Test Off */ | ||
1292 | #define RB_RP_DEC BIT_0S /* Read Pointer Decrement */ | ||
1293 | |||
1294 | /* RB_CTRL 8 bit RAM Buffer Control Register */ | ||
1295 | /* Bit 7.. 6: reserved */ | ||
1296 | #define RB_ENA_STFWD BIT_5S /* Enable Store & Forward */ | ||
1297 | #define RB_DIS_STFWD BIT_4S /* Disable Store & Forward */ | ||
1298 | #define RB_ENA_OP_MD BIT_3S /* Enable Operation Mode */ | ||
1299 | #define RB_DIS_OP_MD BIT_2S /* Disable Operation Mode */ | ||
1300 | #define RB_RST_CLR BIT_1S /* Clear RAM Buf STM Reset */ | ||
1301 | #define RB_RST_SET BIT_0S /* Set RAM Buf STM Reset */ | ||
1302 | |||
1303 | |||
1304 | /* Receive and Transmit MAC FIFO Registers (GENESIS only) */ | ||
1305 | |||
1306 | /* RX_MFF_EA 32 bit Receive MAC FIFO End Address */ | ||
1307 | /* RX_MFF_WP 32 bit Receive MAC FIFO Write Pointer */ | ||
1308 | /* RX_MFF_RP 32 bit Receive MAC FIFO Read Pointer */ | ||
1309 | /* RX_MFF_PC 32 bit Receive MAC FIFO Packet Counter */ | ||
1310 | /* RX_MFF_LEV 32 bit Receive MAC FIFO Level */ | ||
1311 | /* TX_MFF_EA 32 bit Transmit MAC FIFO End Address */ | ||
1312 | /* TX_MFF_WP 32 bit Transmit MAC FIFO Write Pointer */ | ||
1313 | /* TX_MFF_WSP 32 bit Transmit MAC FIFO WR Shadow Pointer */ | ||
1314 | /* TX_MFF_RP 32 bit Transmit MAC FIFO Read Pointer */ | ||
1315 | /* TX_MFF_PC 32 bit Transmit MAC FIFO Packet Cnt */ | ||
1316 | /* TX_MFF_LEV 32 bit Transmit MAC FIFO Level */ | ||
1317 | /* Bit 31.. 6: reserved */ | ||
1318 | #define MFF_MSK 0x007fL /* Bit 5.. 0: MAC FIFO Address/Ptr Bits */ | ||
1319 | |||
1320 | /* RX_MFF_CTRL1 16 bit Receive MAC FIFO Control Reg 1 */ | ||
1321 | /* Bit 15..14: reserved */ | ||
1322 | #define MFF_ENA_RDY_PAT BIT_13S /* Enable Ready Patch */ | ||
1323 | #define MFF_DIS_RDY_PAT BIT_12S /* Disable Ready Patch */ | ||
1324 | #define MFF_ENA_TIM_PAT BIT_11S /* Enable Timing Patch */ | ||
1325 | #define MFF_DIS_TIM_PAT BIT_10S /* Disable Timing Patch */ | ||
1326 | #define MFF_ENA_ALM_FUL BIT_9S /* Enable AlmostFull Sign */ | ||
1327 | #define MFF_DIS_ALM_FUL BIT_8S /* Disable AlmostFull Sign */ | ||
1328 | #define MFF_ENA_PAUSE BIT_7S /* Enable Pause Signaling */ | ||
1329 | #define MFF_DIS_PAUSE BIT_6S /* Disable Pause Signaling */ | ||
1330 | #define MFF_ENA_FLUSH BIT_5S /* Enable Frame Flushing */ | ||
1331 | #define MFF_DIS_FLUSH BIT_4S /* Disable Frame Flushing */ | ||
1332 | #define MFF_ENA_TIST BIT_3S /* Enable Time Stamp Gener */ | ||
1333 | #define MFF_DIS_TIST BIT_2S /* Disable Time Stamp Gener */ | ||
1334 | #define MFF_CLR_INTIST BIT_1S /* Clear IRQ No Time Stamp */ | ||
1335 | #define MFF_CLR_INSTAT BIT_0S /* Clear IRQ No Status */ | ||
1336 | |||
1337 | #define MFF_RX_CTRL_DEF MFF_ENA_TIM_PAT | ||
1338 | |||
1339 | /* TX_MFF_CTRL1 16 bit Transmit MAC FIFO Control Reg 1 */ | ||
1340 | #define MFF_CLR_PERR BIT_15S /* Clear Parity Error IRQ */ | ||
1341 | /* Bit 14: reserved */ | ||
1342 | #define MFF_ENA_PKT_REC BIT_13S /* Enable Packet Recovery */ | ||
1343 | #define MFF_DIS_PKT_REC BIT_12S /* Disable Packet Recovery */ | ||
1344 | /* MFF_ENA_TIM_PAT (see RX_MFF_CTRL1) Bit 11: Enable Timing Patch */ | ||
1345 | /* MFF_DIS_TIM_PAT (see RX_MFF_CTRL1) Bit 10: Disable Timing Patch */ | ||
1346 | /* MFF_ENA_ALM_FUL (see RX_MFF_CTRL1) Bit 9: Enable Almost Full Sign */ | ||
1347 | /* MFF_DIS_ALM_FUL (see RX_MFF_CTRL1) Bit 8: Disable Almost Full Sign */ | ||
1348 | #define MFF_ENA_W4E BIT_7S /* Enable Wait for Empty */ | ||
1349 | #define MFF_DIS_W4E BIT_6S /* Disable Wait for Empty */ | ||
1350 | /* MFF_ENA_FLUSH (see RX_MFF_CTRL1) Bit 5: Enable Frame Flushing */ | ||
1351 | /* MFF_DIS_FLUSH (see RX_MFF_CTRL1) Bit 4: Disable Frame Flushing */ | ||
1352 | #define MFF_ENA_LOOPB BIT_3S /* Enable Loopback */ | ||
1353 | #define MFF_DIS_LOOPB BIT_2S /* Disable Loopback */ | ||
1354 | #define MFF_CLR_MAC_RST BIT_1S /* Clear XMAC Reset */ | ||
1355 | #define MFF_SET_MAC_RST BIT_0S /* Set XMAC Reset */ | ||
1356 | |||
1357 | #define MFF_TX_CTRL_DEF (MFF_ENA_PKT_REC | MFF_ENA_TIM_PAT | MFF_ENA_FLUSH) | ||
1358 | |||
1359 | /* RX_MFF_TST2 8 bit Receive MAC FIFO Test Register 2 */ | ||
1360 | /* TX_MFF_TST2 8 bit Transmit MAC FIFO Test Register 2 */ | ||
1361 | /* Bit 7: reserved */ | ||
1362 | #define MFF_WSP_T_ON BIT_6S /* Tx: Write Shadow Ptr TestOn */ | ||
1363 | #define MFF_WSP_T_OFF BIT_5S /* Tx: Write Shadow Ptr TstOff */ | ||
1364 | #define MFF_WSP_INC BIT_4S /* Tx: Write Shadow Ptr Increment */ | ||
1365 | #define MFF_PC_DEC BIT_3S /* Packet Counter Decrement */ | ||
1366 | #define MFF_PC_T_ON BIT_2S /* Packet Counter Test On */ | ||
1367 | #define MFF_PC_T_OFF BIT_1S /* Packet Counter Test Off */ | ||
1368 | #define MFF_PC_INC BIT_0S /* Packet Counter Increment */ | ||
1369 | |||
1370 | /* RX_MFF_TST1 8 bit Receive MAC FIFO Test Register 1 */ | ||
1371 | /* TX_MFF_TST1 8 bit Transmit MAC FIFO Test Register 1 */ | ||
1372 | /* Bit 7: reserved */ | ||
1373 | #define MFF_WP_T_ON BIT_6S /* Write Pointer Test On */ | ||
1374 | #define MFF_WP_T_OFF BIT_5S /* Write Pointer Test Off */ | ||
1375 | #define MFF_WP_INC BIT_4S /* Write Pointer Increm */ | ||
1376 | /* Bit 3: reserved */ | ||
1377 | #define MFF_RP_T_ON BIT_2S /* Read Pointer Test On */ | ||
1378 | #define MFF_RP_T_OFF BIT_1S /* Read Pointer Test Off */ | ||
1379 | #define MFF_RP_DEC BIT_0S /* Read Pointer Decrement */ | ||
1380 | |||
1381 | /* RX_MFF_CTRL2 8 bit Receive MAC FIFO Control Reg 2 */ | ||
1382 | /* TX_MFF_CTRL2 8 bit Transmit MAC FIFO Control Reg 2 */ | ||
1383 | /* Bit 7..4: reserved */ | ||
1384 | #define MFF_ENA_OP_MD BIT_3S /* Enable Operation Mode */ | ||
1385 | #define MFF_DIS_OP_MD BIT_2S /* Disable Operation Mode */ | ||
1386 | #define MFF_RST_CLR BIT_1S /* Clear MAC FIFO Reset */ | ||
1387 | #define MFF_RST_SET BIT_0S /* Set MAC FIFO Reset */ | ||
1388 | |||
1389 | |||
1390 | /* Link LED Counter Registers (GENESIS only) */ | ||
1391 | |||
1392 | /* RX_LED_CTRL 8 bit Receive LED Cnt Control Reg */ | ||
1393 | /* TX_LED_CTRL 8 bit Transmit LED Cnt Control Reg */ | ||
1394 | /* LNK_SYNC_CTRL 8 bit Link Sync Cnt Control Register */ | ||
1395 | /* Bit 7.. 3: reserved */ | ||
1396 | #define LED_START BIT_2S /* Start Timer */ | ||
1397 | #define LED_STOP BIT_1S /* Stop Timer */ | ||
1398 | #define LED_STATE BIT_0S /* Rx/Tx: LED State, 1=LED on */ | ||
1399 | #define LED_CLR_IRQ BIT_0S /* Lnk: Clear Link IRQ */ | ||
1400 | |||
1401 | /* RX_LED_TST 8 bit Receive LED Cnt Test Register */ | ||
1402 | /* TX_LED_TST 8 bit Transmit LED Cnt Test Register */ | ||
1403 | /* LNK_SYNC_TST 8 bit Link Sync Cnt Test Register */ | ||
1404 | /* Bit 7.. 3: reserved */ | ||
1405 | #define LED_T_ON BIT_2S /* LED Counter Test mode On */ | ||
1406 | #define LED_T_OFF BIT_1S /* LED Counter Test mode Off */ | ||
1407 | #define LED_T_STEP BIT_0S /* LED Counter Step */ | ||
1408 | |||
1409 | /* LNK_LED_REG 8 bit Link LED Register */ | ||
1410 | /* Bit 7.. 6: reserved */ | ||
1411 | #define LED_BLK_ON BIT_5S /* Link LED Blinking On */ | ||
1412 | #define LED_BLK_OFF BIT_4S /* Link LED Blinking Off */ | ||
1413 | #define LED_SYNC_ON BIT_3S /* Use Sync Wire to switch LED */ | ||
1414 | #define LED_SYNC_OFF BIT_2S /* Disable Sync Wire Input */ | ||
1415 | #define LED_ON BIT_1S /* switch LED on */ | ||
1416 | #define LED_OFF BIT_0S /* switch LED off */ | ||
1417 | |||
1418 | /* Receive and Transmit GMAC FIFO Registers (YUKON only) */ | ||
1419 | |||
1420 | /* RX_GMF_EA 32 bit Rx GMAC FIFO End Address */ | ||
1421 | /* RX_GMF_AF_THR 32 bit Rx GMAC FIFO Almost Full Thresh. */ | ||
1422 | /* RX_GMF_WP 32 bit Rx GMAC FIFO Write Pointer */ | ||
1423 | /* RX_GMF_WLEV 32 bit Rx GMAC FIFO Write Level */ | ||
1424 | /* RX_GMF_RP 32 bit Rx GMAC FIFO Read Pointer */ | ||
1425 | /* RX_GMF_RLEV 32 bit Rx GMAC FIFO Read Level */ | ||
1426 | /* TX_GMF_EA 32 bit Tx GMAC FIFO End Address */ | ||
1427 | /* TX_GMF_AE_THR 32 bit Tx GMAC FIFO Almost Empty Thresh.*/ | ||
1428 | /* TX_GMF_WP 32 bit Tx GMAC FIFO Write Pointer */ | ||
1429 | /* TX_GMF_WSP 32 bit Tx GMAC FIFO Write Shadow Ptr. */ | ||
1430 | /* TX_GMF_WLEV 32 bit Tx GMAC FIFO Write Level */ | ||
1431 | /* TX_GMF_RP 32 bit Tx GMAC FIFO Read Pointer */ | ||
1432 | /* TX_GMF_RSTP 32 bit Tx GMAC FIFO Restart Pointer */ | ||
1433 | /* TX_GMF_RLEV 32 bit Tx GMAC FIFO Read Level */ | ||
1434 | |||
1435 | /* RX_GMF_CTRL_T 32 bit Rx GMAC FIFO Control/Test */ | ||
1436 | /* Bits 31..15: reserved */ | ||
1437 | #define GMF_WP_TST_ON BIT_14 /* Write Pointer Test On */ | ||
1438 | #define GMF_WP_TST_OFF BIT_13 /* Write Pointer Test Off */ | ||
1439 | #define GMF_WP_STEP BIT_12 /* Write Pointer Step/Increment */ | ||
1440 | /* Bit 11: reserved */ | ||
1441 | #define GMF_RP_TST_ON BIT_10 /* Read Pointer Test On */ | ||
1442 | #define GMF_RP_TST_OFF BIT_9 /* Read Pointer Test Off */ | ||
1443 | #define GMF_RP_STEP BIT_8 /* Read Pointer Step/Increment */ | ||
1444 | #define GMF_RX_F_FL_ON BIT_7 /* Rx FIFO Flush Mode On */ | ||
1445 | #define GMF_RX_F_FL_OFF BIT_6 /* Rx FIFO Flush Mode Off */ | ||
1446 | #define GMF_CLI_RX_FO BIT_5 /* Clear IRQ Rx FIFO Overrun */ | ||
1447 | #define GMF_CLI_RX_FC BIT_4 /* Clear IRQ Rx Frame Complete */ | ||
1448 | #define GMF_OPER_ON BIT_3 /* Operational Mode On */ | ||
1449 | #define GMF_OPER_OFF BIT_2 /* Operational Mode Off */ | ||
1450 | #define GMF_RST_CLR BIT_1 /* Clear GMAC FIFO Reset */ | ||
1451 | #define GMF_RST_SET BIT_0 /* Set GMAC FIFO Reset */ | ||
1452 | |||
1453 | /* TX_GMF_CTRL_T 32 bit Tx GMAC FIFO Control/Test */ | ||
1454 | /* Bits 31..19: reserved */ | ||
1455 | #define GMF_WSP_TST_ON BIT_18 /* Write Shadow Pointer Test On */ | ||
1456 | #define GMF_WSP_TST_OFF BIT_17 /* Write Shadow Pointer Test Off */ | ||
1457 | #define GMF_WSP_STEP BIT_16 /* Write Shadow Pointer Step/Increment */ | ||
1458 | /* Bits 15..7: same as for RX_GMF_CTRL_T */ | ||
1459 | #define GMF_CLI_TX_FU BIT_6 /* Clear IRQ Tx FIFO Underrun */ | ||
1460 | #define GMF_CLI_TX_FC BIT_5 /* Clear IRQ Tx Frame Complete */ | ||
1461 | #define GMF_CLI_TX_PE BIT_4 /* Clear IRQ Tx Parity Error */ | ||
1462 | /* Bits 3..0: same as for RX_GMF_CTRL_T */ | ||
1463 | |||
1464 | #define GMF_RX_CTRL_DEF (GMF_OPER_ON | GMF_RX_F_FL_ON) | ||
1465 | #define GMF_TX_CTRL_DEF GMF_OPER_ON | ||
1466 | |||
1467 | #define RX_GMF_FL_THR_DEF 0x0a /* Rx GMAC FIFO Flush Threshold default */ | ||
1468 | |||
1469 | /* GMAC_TI_ST_CTRL 8 bit Time Stamp Timer Ctrl Reg (YUKON only) */ | ||
1470 | /* Bit 7.. 3: reserved */ | ||
1471 | #define GMT_ST_START BIT_2S /* Start Time Stamp Timer */ | ||
1472 | #define GMT_ST_STOP BIT_1S /* Stop Time Stamp Timer */ | ||
1473 | #define GMT_ST_CLR_IRQ BIT_0S /* Clear Time Stamp Timer IRQ */ | ||
1474 | |||
1475 | /* GMAC_CTRL 32 bit GMAC Control Reg (YUKON only) */ | ||
1476 | /* Bits 31.. 8: reserved */ | ||
1477 | #define GMC_H_BURST_ON BIT_7 /* Half Duplex Burst Mode On */ | ||
1478 | #define GMC_H_BURST_OFF BIT_6 /* Half Duplex Burst Mode Off */ | ||
1479 | #define GMC_F_LOOPB_ON BIT_5 /* FIFO Loopback On */ | ||
1480 | #define GMC_F_LOOPB_OFF BIT_4 /* FIFO Loopback Off */ | ||
1481 | #define GMC_PAUSE_ON BIT_3 /* Pause On */ | ||
1482 | #define GMC_PAUSE_OFF BIT_2 /* Pause Off */ | ||
1483 | #define GMC_RST_CLR BIT_1 /* Clear GMAC Reset */ | ||
1484 | #define GMC_RST_SET BIT_0 /* Set GMAC Reset */ | ||
1485 | |||
1486 | /* GPHY_CTRL 32 bit GPHY Control Reg (YUKON only) */ | ||
1487 | /* Bits 31..29: reserved */ | ||
1488 | #define GPC_SEL_BDT BIT_28 /* Select Bi-Dir. Transfer for MDC/MDIO */ | ||
1489 | #define GPC_INT_POL_HI BIT_27 /* IRQ Polarity is Active HIGH */ | ||
1490 | #define GPC_75_OHM BIT_26 /* Use 75 Ohm Termination instead of 50 */ | ||
1491 | #define GPC_DIS_FC BIT_25 /* Disable Automatic Fiber/Copper Detection */ | ||
1492 | #define GPC_DIS_SLEEP BIT_24 /* Disable Energy Detect */ | ||
1493 | #define GPC_HWCFG_M_3 BIT_23 /* HWCFG_MODE[3] */ | ||
1494 | #define GPC_HWCFG_M_2 BIT_22 /* HWCFG_MODE[2] */ | ||
1495 | #define GPC_HWCFG_M_1 BIT_21 /* HWCFG_MODE[1] */ | ||
1496 | #define GPC_HWCFG_M_0 BIT_20 /* HWCFG_MODE[0] */ | ||
1497 | #define GPC_ANEG_0 BIT_19 /* ANEG[0] */ | ||
1498 | #define GPC_ENA_XC BIT_18 /* Enable MDI crossover */ | ||
1499 | #define GPC_DIS_125 BIT_17 /* Disable 125 MHz clock */ | ||
1500 | #define GPC_ANEG_3 BIT_16 /* ANEG[3] */ | ||
1501 | #define GPC_ANEG_2 BIT_15 /* ANEG[2] */ | ||
1502 | #define GPC_ANEG_1 BIT_14 /* ANEG[1] */ | ||
1503 | #define GPC_ENA_PAUSE BIT_13 /* Enable Pause (SYM_OR_REM) */ | ||
1504 | #define GPC_PHYADDR_4 BIT_12 /* Bit 4 of Phy Addr */ | ||
1505 | #define GPC_PHYADDR_3 BIT_11 /* Bit 3 of Phy Addr */ | ||
1506 | #define GPC_PHYADDR_2 BIT_10 /* Bit 2 of Phy Addr */ | ||
1507 | #define GPC_PHYADDR_1 BIT_9 /* Bit 1 of Phy Addr */ | ||
1508 | #define GPC_PHYADDR_0 BIT_8 /* Bit 0 of Phy Addr */ | ||
1509 | /* Bits 7..2: reserved */ | ||
1510 | #define GPC_RST_CLR BIT_1 /* Clear GPHY Reset */ | ||
1511 | #define GPC_RST_SET BIT_0 /* Set GPHY Reset */ | ||
1512 | |||
1513 | #define GPC_HWCFG_GMII_COP (GPC_HWCFG_M_3 | GPC_HWCFG_M_2 | \ | ||
1514 | GPC_HWCFG_M_1 | GPC_HWCFG_M_0) | ||
1515 | |||
1516 | #define GPC_HWCFG_GMII_FIB ( GPC_HWCFG_M_2 | \ | ||
1517 | GPC_HWCFG_M_1 | GPC_HWCFG_M_0) | ||
1518 | |||
1519 | #define GPC_ANEG_ADV_ALL_M (GPC_ANEG_3 | GPC_ANEG_2 | \ | ||
1520 | GPC_ANEG_1 | GPC_ANEG_0) | ||
1521 | |||
1522 | /* forced speed and duplex mode (don't mix with other ANEG bits) */ | ||
1523 | #define GPC_FRC10MBIT_HALF 0 | ||
1524 | #define GPC_FRC10MBIT_FULL GPC_ANEG_0 | ||
1525 | #define GPC_FRC100MBIT_HALF GPC_ANEG_1 | ||
1526 | #define GPC_FRC100MBIT_FULL (GPC_ANEG_0 | GPC_ANEG_1) | ||
1527 | |||
1528 | /* auto-negotiation with limited advertised speeds */ | ||
1529 | /* mix only with master/slave settings (for copper) */ | ||
1530 | #define GPC_ADV_1000_HALF GPC_ANEG_2 | ||
1531 | #define GPC_ADV_1000_FULL GPC_ANEG_3 | ||
1532 | #define GPC_ADV_ALL (GPC_ANEG_2 | GPC_ANEG_3) | ||
1533 | |||
1534 | /* master/slave settings */ | ||
1535 | /* only for copper with 1000 Mbps */ | ||
1536 | #define GPC_FORCE_MASTER 0 | ||
1537 | #define GPC_FORCE_SLAVE GPC_ANEG_0 | ||
1538 | #define GPC_PREF_MASTER GPC_ANEG_1 | ||
1539 | #define GPC_PREF_SLAVE (GPC_ANEG_1 | GPC_ANEG_0) | ||
1540 | |||
1541 | /* GMAC_IRQ_SRC 8 bit GMAC Interrupt Source Reg (YUKON only) */ | ||
1542 | /* GMAC_IRQ_MSK 8 bit GMAC Interrupt Mask Reg (YUKON only) */ | ||
1543 | #define GM_IS_TX_CO_OV BIT_5 /* Transmit Counter Overflow IRQ */ | ||
1544 | #define GM_IS_RX_CO_OV BIT_4 /* Receive Counter Overflow IRQ */ | ||
1545 | #define GM_IS_TX_FF_UR BIT_3 /* Transmit FIFO Underrun */ | ||
1546 | #define GM_IS_TX_COMPL BIT_2 /* Frame Transmission Complete */ | ||
1547 | #define GM_IS_RX_FF_OR BIT_1 /* Receive FIFO Overrun */ | ||
1548 | #define GM_IS_RX_COMPL BIT_0 /* Frame Reception Complete */ | ||
1549 | |||
1550 | #define GMAC_DEF_MSK (GM_IS_TX_CO_OV | GM_IS_RX_CO_OV | \ | ||
1551 | GM_IS_TX_FF_UR) | ||
1552 | |||
1553 | /* GMAC_LINK_CTRL 16 bit GMAC Link Control Reg (YUKON only) */ | ||
1554 | /* Bits 15.. 2: reserved */ | ||
1555 | #define GMLC_RST_CLR BIT_1S /* Clear GMAC Link Reset */ | ||
1556 | #define GMLC_RST_SET BIT_0S /* Set GMAC Link Reset */ | ||
1557 | |||
1558 | |||
1559 | /* WOL_CTRL_STAT 16 bit WOL Control/Status Reg */ | ||
1560 | #define WOL_CTL_LINK_CHG_OCC BIT_15S | ||
1561 | #define WOL_CTL_MAGIC_PKT_OCC BIT_14S | ||
1562 | #define WOL_CTL_PATTERN_OCC BIT_13S | ||
1563 | |||
1564 | #define WOL_CTL_CLEAR_RESULT BIT_12S | ||
1565 | |||
1566 | #define WOL_CTL_ENA_PME_ON_LINK_CHG BIT_11S | ||
1567 | #define WOL_CTL_DIS_PME_ON_LINK_CHG BIT_10S | ||
1568 | #define WOL_CTL_ENA_PME_ON_MAGIC_PKT BIT_9S | ||
1569 | #define WOL_CTL_DIS_PME_ON_MAGIC_PKT BIT_8S | ||
1570 | #define WOL_CTL_ENA_PME_ON_PATTERN BIT_7S | ||
1571 | #define WOL_CTL_DIS_PME_ON_PATTERN BIT_6S | ||
1572 | |||
1573 | #define WOL_CTL_ENA_LINK_CHG_UNIT BIT_5S | ||
1574 | #define WOL_CTL_DIS_LINK_CHG_UNIT BIT_4S | ||
1575 | #define WOL_CTL_ENA_MAGIC_PKT_UNIT BIT_3S | ||
1576 | #define WOL_CTL_DIS_MAGIC_PKT_UNIT BIT_2S | ||
1577 | #define WOL_CTL_ENA_PATTERN_UNIT BIT_1S | ||
1578 | #define WOL_CTL_DIS_PATTERN_UNIT BIT_0S | ||
1579 | |||
1580 | #define WOL_CTL_DEFAULT \ | ||
1581 | (WOL_CTL_DIS_PME_ON_LINK_CHG | \ | ||
1582 | WOL_CTL_DIS_PME_ON_PATTERN | \ | ||
1583 | WOL_CTL_DIS_PME_ON_MAGIC_PKT | \ | ||
1584 | WOL_CTL_DIS_LINK_CHG_UNIT | \ | ||
1585 | WOL_CTL_DIS_PATTERN_UNIT | \ | ||
1586 | WOL_CTL_DIS_MAGIC_PKT_UNIT) | ||
1587 | |||
1588 | /* WOL_MATCH_CTL 8 bit WOL Match Control Reg */ | ||
1589 | #define WOL_CTL_PATT_ENA(x) (BIT_0 << (x)) | ||
1590 | |||
1591 | #define SK_NUM_WOL_PATTERN 7 | ||
1592 | #define SK_PATTERN_PER_WORD 4 | ||
1593 | #define SK_BITMASK_PATTERN 7 | ||
1594 | #define SK_POW_PATTERN_LENGTH 128 | ||
1595 | |||
1596 | #define WOL_LENGTH_MSK 0x7f | ||
1597 | #define WOL_LENGTH_SHIFT 8 | ||
1598 | |||
1599 | |||
1600 | /* Receive and Transmit Descriptors ******************************************/ | ||
1601 | |||
1602 | /* Transmit Descriptor struct */ | ||
1603 | typedef struct s_HwTxd { | ||
1604 | SK_U32 volatile TxCtrl; /* Transmit Buffer Control Field */ | ||
1605 | SK_U32 TxNext; /* Physical Address Pointer to the next TxD */ | ||
1606 | SK_U32 TxAdrLo; /* Physical Tx Buffer Address lower dword */ | ||
1607 | SK_U32 TxAdrHi; /* Physical Tx Buffer Address upper dword */ | ||
1608 | SK_U32 TxStat; /* Transmit Frame Status Word */ | ||
1609 | #ifndef SK_USE_REV_DESC | ||
1610 | SK_U16 TxTcpOffs; /* TCP Checksum Calculation Start Value */ | ||
1611 | SK_U16 TxRes1; /* 16 bit reserved field */ | ||
1612 | SK_U16 TxTcpWp; /* TCP Checksum Write Position */ | ||
1613 | SK_U16 TxTcpSp; /* TCP Checksum Calculation Start Position */ | ||
1614 | #else /* SK_USE_REV_DESC */ | ||
1615 | SK_U16 TxRes1; /* 16 bit reserved field */ | ||
1616 | SK_U16 TxTcpOffs; /* TCP Checksum Calculation Start Value */ | ||
1617 | SK_U16 TxTcpSp; /* TCP Checksum Calculation Start Position */ | ||
1618 | SK_U16 TxTcpWp; /* TCP Checksum Write Position */ | ||
1619 | #endif /* SK_USE_REV_DESC */ | ||
1620 | SK_U32 TxRes2; /* 32 bit reserved field */ | ||
1621 | } SK_HWTXD; | ||
1622 | |||
1623 | /* Receive Descriptor struct */ | ||
1624 | typedef struct s_HwRxd { | ||
1625 | SK_U32 volatile RxCtrl; /* Receive Buffer Control Field */ | ||
1626 | SK_U32 RxNext; /* Physical Address Pointer to the next RxD */ | ||
1627 | SK_U32 RxAdrLo; /* Physical Rx Buffer Address lower dword */ | ||
1628 | SK_U32 RxAdrHi; /* Physical Rx Buffer Address upper dword */ | ||
1629 | SK_U32 RxStat; /* Receive Frame Status Word */ | ||
1630 | SK_U32 RxTiSt; /* Receive Time Stamp (from XMAC on GENESIS) */ | ||
1631 | #ifndef SK_USE_REV_DESC | ||
1632 | SK_U16 RxTcpSum1; /* TCP Checksum 1 */ | ||
1633 | SK_U16 RxTcpSum2; /* TCP Checksum 2 */ | ||
1634 | SK_U16 RxTcpSp1; /* TCP Checksum Calculation Start Position 1 */ | ||
1635 | SK_U16 RxTcpSp2; /* TCP Checksum Calculation Start Position 2 */ | ||
1636 | #else /* SK_USE_REV_DESC */ | ||
1637 | SK_U16 RxTcpSum2; /* TCP Checksum 2 */ | ||
1638 | SK_U16 RxTcpSum1; /* TCP Checksum 1 */ | ||
1639 | SK_U16 RxTcpSp2; /* TCP Checksum Calculation Start Position 2 */ | ||
1640 | SK_U16 RxTcpSp1; /* TCP Checksum Calculation Start Position 1 */ | ||
1641 | #endif /* SK_USE_REV_DESC */ | ||
1642 | } SK_HWRXD; | ||
1643 | |||
1644 | /* | ||
1645 | * Drivers which use the reverse descriptor feature (PCI_OUR_REG_2) | ||
1646 | * should set the define SK_USE_REV_DESC. | ||
1647 | * Structures are 'normaly' not endianess dependent. But in | ||
1648 | * this case the SK_U16 fields are bound to bit positions inside the | ||
1649 | * descriptor. RxTcpSum1 e.g. must start at bit 0 within the 6.th DWord. | ||
1650 | * The bit positions inside a DWord are of course endianess dependent and | ||
1651 | * swaps if the DWord is swapped by the hardware. | ||
1652 | */ | ||
1653 | |||
1654 | |||
1655 | /* Descriptor Bit Definition */ | ||
1656 | /* TxCtrl Transmit Buffer Control Field */ | ||
1657 | /* RxCtrl Receive Buffer Control Field */ | ||
1658 | #define BMU_OWN BIT_31 /* OWN bit: 0=host/1=BMU */ | ||
1659 | #define BMU_STF BIT_30 /* Start of Frame */ | ||
1660 | #define BMU_EOF BIT_29 /* End of Frame */ | ||
1661 | #define BMU_IRQ_EOB BIT_28 /* Req "End of Buffer" IRQ */ | ||
1662 | #define BMU_IRQ_EOF BIT_27 /* Req "End of Frame" IRQ */ | ||
1663 | /* TxCtrl specific bits */ | ||
1664 | #define BMU_STFWD BIT_26 /* (Tx) Store & Forward Frame */ | ||
1665 | #define BMU_NO_FCS BIT_25 /* (Tx) Disable MAC FCS (CRC) generation */ | ||
1666 | #define BMU_SW BIT_24 /* (Tx) 1 bit res. for SW use */ | ||
1667 | /* RxCtrl specific bits */ | ||
1668 | #define BMU_DEV_0 BIT_26 /* (Rx) Transfer data to Dev0 */ | ||
1669 | #define BMU_STAT_VAL BIT_25 /* (Rx) Rx Status Valid */ | ||
1670 | #define BMU_TIST_VAL BIT_24 /* (Rx) Rx TimeStamp Valid */ | ||
1671 | /* Bit 23..16: BMU Check Opcodes */ | ||
1672 | #define BMU_CHECK (0x55L<<16) /* Default BMU check */ | ||
1673 | #define BMU_TCP_CHECK (0x56L<<16) /* Descr with TCP ext */ | ||
1674 | #define BMU_UDP_CHECK (0x57L<<16) /* Descr with UDP ext (YUKON only) */ | ||
1675 | #define BMU_BBC 0xffffL /* Bit 15.. 0: Buffer Byte Counter */ | ||
1676 | |||
1677 | /* TxStat Transmit Frame Status Word */ | ||
1678 | /* RxStat Receive Frame Status Word */ | ||
1679 | /* | ||
1680 | *Note: TxStat is reserved for ASIC loopback mode only | ||
1681 | * | ||
1682 | * The Bits of the Status words are defined in xmac_ii.h | ||
1683 | * (see XMR_FS bits) | ||
1684 | */ | ||
1685 | |||
1686 | /* macros ********************************************************************/ | ||
1687 | |||
1688 | /* Receive and Transmit Queues */ | ||
1689 | #define Q_R1 0x0000 /* Receive Queue 1 */ | ||
1690 | #define Q_R2 0x0080 /* Receive Queue 2 */ | ||
1691 | #define Q_XS1 0x0200 /* Synchronous Transmit Queue 1 */ | ||
1692 | #define Q_XA1 0x0280 /* Asynchronous Transmit Queue 1 */ | ||
1693 | #define Q_XS2 0x0300 /* Synchronous Transmit Queue 2 */ | ||
1694 | #define Q_XA2 0x0380 /* Asynchronous Transmit Queue 2 */ | ||
1695 | |||
1696 | /* | ||
1697 | * Macro Q_ADDR() | ||
1698 | * | ||
1699 | * Use this macro to access the Receive and Transmit Queue Registers. | ||
1700 | * | ||
1701 | * para: | ||
1702 | * Queue Queue to access. | ||
1703 | * Values: Q_R1, Q_R2, Q_XS1, Q_XA1, Q_XS2, and Q_XA2 | ||
1704 | * Offs Queue register offset. | ||
1705 | * Values: Q_D, Q_DA_L ... Q_T2, Q_T3 | ||
1706 | * | ||
1707 | * usage SK_IN32(pAC, Q_ADDR(Q_R2, Q_BC), pVal) | ||
1708 | */ | ||
1709 | #define Q_ADDR(Queue, Offs) (B8_Q_REGS + (Queue) + (Offs)) | ||
1710 | |||
1711 | /* | ||
1712 | * Macro RB_ADDR() | ||
1713 | * | ||
1714 | * Use this macro to access the RAM Buffer Registers. | ||
1715 | * | ||
1716 | * para: | ||
1717 | * Queue Queue to access. | ||
1718 | * Values: Q_R1, Q_R2, Q_XS1, Q_XA1, Q_XS2, and Q_XA2 | ||
1719 | * Offs Queue register offset. | ||
1720 | * Values: RB_START, RB_END ... RB_LEV, RB_CTRL | ||
1721 | * | ||
1722 | * usage SK_IN32(pAC, RB_ADDR(Q_R2, RB_RP), pVal) | ||
1723 | */ | ||
1724 | #define RB_ADDR(Queue, Offs) (B16_RAM_REGS + (Queue) + (Offs)) | ||
1725 | |||
1726 | |||
1727 | /* MAC Related Registers */ | ||
1728 | #define MAC_1 0 /* belongs to the port near the slot */ | ||
1729 | #define MAC_2 1 /* belongs to the port far away from the slot */ | ||
1730 | |||
1731 | /* | ||
1732 | * Macro MR_ADDR() | ||
1733 | * | ||
1734 | * Use this macro to access a MAC Related Registers inside the ASIC. | ||
1735 | * | ||
1736 | * para: | ||
1737 | * Mac MAC to access. | ||
1738 | * Values: MAC_1, MAC_2 | ||
1739 | * Offs MAC register offset. | ||
1740 | * Values: RX_MFF_EA, RX_MFF_WP ... LNK_LED_REG, | ||
1741 | * TX_MFF_EA, TX_MFF_WP ... TX_LED_TST | ||
1742 | * | ||
1743 | * usage SK_IN32(pAC, MR_ADDR(MAC_1, TX_MFF_EA), pVal) | ||
1744 | */ | ||
1745 | #define MR_ADDR(Mac, Offs) (((Mac) << 7) + (Offs)) | ||
1746 | |||
1747 | #ifdef SK_LITTLE_ENDIAN | ||
1748 | #define XM_WORD_LO 0 | ||
1749 | #define XM_WORD_HI 1 | ||
1750 | #else /* !SK_LITTLE_ENDIAN */ | ||
1751 | #define XM_WORD_LO 1 | ||
1752 | #define XM_WORD_HI 0 | ||
1753 | #endif /* !SK_LITTLE_ENDIAN */ | ||
1754 | |||
1755 | |||
1756 | /* | ||
1757 | * macros to access the XMAC (GENESIS only) | ||
1758 | * | ||
1759 | * XM_IN16(), to read a 16 bit register (e.g. XM_MMU_CMD) | ||
1760 | * XM_OUT16(), to write a 16 bit register (e.g. XM_MMU_CMD) | ||
1761 | * XM_IN32(), to read a 32 bit register (e.g. XM_TX_EV_CNT) | ||
1762 | * XM_OUT32(), to write a 32 bit register (e.g. XM_TX_EV_CNT) | ||
1763 | * XM_INADDR(), to read a network address register (e.g. XM_SRC_CHK) | ||
1764 | * XM_OUTADDR(), to write a network address register (e.g. XM_SRC_CHK) | ||
1765 | * XM_INHASH(), to read the XM_HSM_CHK register | ||
1766 | * XM_OUTHASH() to write the XM_HSM_CHK register | ||
1767 | * | ||
1768 | * para: | ||
1769 | * Mac XMAC to access values: MAC_1 or MAC_2 | ||
1770 | * IoC I/O context needed for SK I/O macros | ||
1771 | * Reg XMAC Register to read or write | ||
1772 | * (p)Val Value or pointer to the value which should be read or written | ||
1773 | * | ||
1774 | * usage: XM_OUT16(IoC, MAC_1, XM_MMU_CMD, Value); | ||
1775 | */ | ||
1776 | |||
1777 | #define XMA(Mac, Reg) \ | ||
1778 | ((BASE_XMAC_1 + (Mac) * (BASE_XMAC_2 - BASE_XMAC_1)) | ((Reg) << 1)) | ||
1779 | |||
1780 | #define XM_IN16(IoC, Mac, Reg, pVal) \ | ||
1781 | SK_IN16((IoC), XMA((Mac), (Reg)), (pVal)) | ||
1782 | |||
1783 | #define XM_OUT16(IoC, Mac, Reg, Val) \ | ||
1784 | SK_OUT16((IoC), XMA((Mac), (Reg)), (Val)) | ||
1785 | |||
1786 | #define XM_IN32(IoC, Mac, Reg, pVal) { \ | ||
1787 | SK_IN16((IoC), XMA((Mac), (Reg)), \ | ||
1788 | (SK_U16 SK_FAR*)&((SK_U16 SK_FAR*)(pVal))[XM_WORD_LO]); \ | ||
1789 | SK_IN16((IoC), XMA((Mac), (Reg+2)), \ | ||
1790 | (SK_U16 SK_FAR*)&((SK_U16 SK_FAR*)(pVal))[XM_WORD_HI]); \ | ||
1791 | } | ||
1792 | |||
1793 | #define XM_OUT32(IoC, Mac, Reg, Val) { \ | ||
1794 | SK_OUT16((IoC), XMA((Mac), (Reg)), (SK_U16)((Val) & 0xffffL)); \ | ||
1795 | SK_OUT16((IoC), XMA((Mac), (Reg+2)), (SK_U16)(((Val) >> 16) & 0xffffL));\ | ||
1796 | } | ||
1797 | |||
1798 | /* Remember: we are always writing to / reading from LITTLE ENDIAN memory */ | ||
1799 | |||
1800 | #define XM_INADDR(IoC, Mac, Reg, pVal) { \ | ||
1801 | SK_U16 Word; \ | ||
1802 | SK_U8 *pByte; \ | ||
1803 | pByte = (SK_U8 *)&((SK_U8 *)(pVal))[0]; \ | ||
1804 | SK_IN16((IoC), XMA((Mac), (Reg)), &Word); \ | ||
1805 | pByte[0] = (SK_U8)(Word & 0x00ff); \ | ||
1806 | pByte[1] = (SK_U8)((Word >> 8) & 0x00ff); \ | ||
1807 | SK_IN16((IoC), XMA((Mac), (Reg+2)), &Word); \ | ||
1808 | pByte[2] = (SK_U8)(Word & 0x00ff); \ | ||
1809 | pByte[3] = (SK_U8)((Word >> 8) & 0x00ff); \ | ||
1810 | SK_IN16((IoC), XMA((Mac), (Reg+4)), &Word); \ | ||
1811 | pByte[4] = (SK_U8)(Word & 0x00ff); \ | ||
1812 | pByte[5] = (SK_U8)((Word >> 8) & 0x00ff); \ | ||
1813 | } | ||
1814 | |||
1815 | #define XM_OUTADDR(IoC, Mac, Reg, pVal) { \ | ||
1816 | SK_U8 SK_FAR *pByte; \ | ||
1817 | pByte = (SK_U8 SK_FAR *)&((SK_U8 SK_FAR *)(pVal))[0]; \ | ||
1818 | SK_OUT16((IoC), XMA((Mac), (Reg)), (SK_U16) \ | ||
1819 | (((SK_U16)(pByte[0]) & 0x00ff) | \ | ||
1820 | (((SK_U16)(pByte[1]) << 8) & 0xff00))); \ | ||
1821 | SK_OUT16((IoC), XMA((Mac), (Reg+2)), (SK_U16) \ | ||
1822 | (((SK_U16)(pByte[2]) & 0x00ff) | \ | ||
1823 | (((SK_U16)(pByte[3]) << 8) & 0xff00))); \ | ||
1824 | SK_OUT16((IoC), XMA((Mac), (Reg+4)), (SK_U16) \ | ||
1825 | (((SK_U16)(pByte[4]) & 0x00ff) | \ | ||
1826 | (((SK_U16)(pByte[5]) << 8) & 0xff00))); \ | ||
1827 | } | ||
1828 | |||
1829 | #define XM_INHASH(IoC, Mac, Reg, pVal) { \ | ||
1830 | SK_U16 Word; \ | ||
1831 | SK_U8 SK_FAR *pByte; \ | ||
1832 | pByte = (SK_U8 SK_FAR *)&((SK_U8 SK_FAR *)(pVal))[0]; \ | ||
1833 | SK_IN16((IoC), XMA((Mac), (Reg)), &Word); \ | ||
1834 | pByte[0] = (SK_U8)(Word & 0x00ff); \ | ||
1835 | pByte[1] = (SK_U8)((Word >> 8) & 0x00ff); \ | ||
1836 | SK_IN16((IoC), XMA((Mac), (Reg+2)), &Word); \ | ||
1837 | pByte[2] = (SK_U8)(Word & 0x00ff); \ | ||
1838 | pByte[3] = (SK_U8)((Word >> 8) & 0x00ff); \ | ||
1839 | SK_IN16((IoC), XMA((Mac), (Reg+4)), &Word); \ | ||
1840 | pByte[4] = (SK_U8)(Word & 0x00ff); \ | ||
1841 | pByte[5] = (SK_U8)((Word >> 8) & 0x00ff); \ | ||
1842 | SK_IN16((IoC), XMA((Mac), (Reg+6)), &Word); \ | ||
1843 | pByte[6] = (SK_U8)(Word & 0x00ff); \ | ||
1844 | pByte[7] = (SK_U8)((Word >> 8) & 0x00ff); \ | ||
1845 | } | ||
1846 | |||
1847 | #define XM_OUTHASH(IoC, Mac, Reg, pVal) { \ | ||
1848 | SK_U8 SK_FAR *pByte; \ | ||
1849 | pByte = (SK_U8 SK_FAR *)&((SK_U8 SK_FAR *)(pVal))[0]; \ | ||
1850 | SK_OUT16((IoC), XMA((Mac), (Reg)), (SK_U16) \ | ||
1851 | (((SK_U16)(pByte[0]) & 0x00ff)| \ | ||
1852 | (((SK_U16)(pByte[1]) << 8) & 0xff00))); \ | ||
1853 | SK_OUT16((IoC), XMA((Mac), (Reg+2)), (SK_U16) \ | ||
1854 | (((SK_U16)(pByte[2]) & 0x00ff)| \ | ||
1855 | (((SK_U16)(pByte[3]) << 8) & 0xff00))); \ | ||
1856 | SK_OUT16((IoC), XMA((Mac), (Reg+4)), (SK_U16) \ | ||
1857 | (((SK_U16)(pByte[4]) & 0x00ff)| \ | ||
1858 | (((SK_U16)(pByte[5]) << 8) & 0xff00))); \ | ||
1859 | SK_OUT16((IoC), XMA((Mac), (Reg+6)), (SK_U16) \ | ||
1860 | (((SK_U16)(pByte[6]) & 0x00ff)| \ | ||
1861 | (((SK_U16)(pByte[7]) << 8) & 0xff00))); \ | ||
1862 | } | ||
1863 | |||
1864 | /* | ||
1865 | * macros to access the GMAC (YUKON only) | ||
1866 | * | ||
1867 | * GM_IN16(), to read a 16 bit register (e.g. GM_GP_STAT) | ||
1868 | * GM_OUT16(), to write a 16 bit register (e.g. GM_GP_CTRL) | ||
1869 | * GM_IN32(), to read a 32 bit register (e.g. GM_) | ||
1870 | * GM_OUT32(), to write a 32 bit register (e.g. GM_) | ||
1871 | * GM_INADDR(), to read a network address register (e.g. GM_SRC_ADDR_1L) | ||
1872 | * GM_OUTADDR(), to write a network address register (e.g. GM_SRC_ADDR_2L) | ||
1873 | * GM_INHASH(), to read the GM_MC_ADDR_H1 register | ||
1874 | * GM_OUTHASH() to write the GM_MC_ADDR_H1 register | ||
1875 | * | ||
1876 | * para: | ||
1877 | * Mac GMAC to access values: MAC_1 or MAC_2 | ||
1878 | * IoC I/O context needed for SK I/O macros | ||
1879 | * Reg GMAC Register to read or write | ||
1880 | * (p)Val Value or pointer to the value which should be read or written | ||
1881 | * | ||
1882 | * usage: GM_OUT16(IoC, MAC_1, GM_GP_CTRL, Value); | ||
1883 | */ | ||
1884 | |||
1885 | #define GMA(Mac, Reg) \ | ||
1886 | ((BASE_GMAC_1 + (Mac) * (BASE_GMAC_2 - BASE_GMAC_1)) | (Reg)) | ||
1887 | |||
1888 | #define GM_IN16(IoC, Mac, Reg, pVal) \ | ||
1889 | SK_IN16((IoC), GMA((Mac), (Reg)), (pVal)) | ||
1890 | |||
1891 | #define GM_OUT16(IoC, Mac, Reg, Val) \ | ||
1892 | SK_OUT16((IoC), GMA((Mac), (Reg)), (Val)) | ||
1893 | |||
1894 | #define GM_IN32(IoC, Mac, Reg, pVal) { \ | ||
1895 | SK_IN16((IoC), GMA((Mac), (Reg)), \ | ||
1896 | (SK_U16 SK_FAR*)&((SK_U16 SK_FAR*)(pVal))[XM_WORD_LO]); \ | ||
1897 | SK_IN16((IoC), GMA((Mac), (Reg+4)), \ | ||
1898 | (SK_U16 SK_FAR*)&((SK_U16 SK_FAR*)(pVal))[XM_WORD_HI]); \ | ||
1899 | } | ||
1900 | |||
1901 | #define GM_OUT32(IoC, Mac, Reg, Val) { \ | ||
1902 | SK_OUT16((IoC), GMA((Mac), (Reg)), (SK_U16)((Val) & 0xffffL)); \ | ||
1903 | SK_OUT16((IoC), GMA((Mac), (Reg+4)), (SK_U16)(((Val) >> 16) & 0xffffL));\ | ||
1904 | } | ||
1905 | |||
1906 | #define GM_INADDR(IoC, Mac, Reg, pVal) { \ | ||
1907 | SK_U16 Word; \ | ||
1908 | SK_U8 *pByte; \ | ||
1909 | pByte = (SK_U8 *)&((SK_U8 *)(pVal))[0]; \ | ||
1910 | SK_IN16((IoC), GMA((Mac), (Reg)), &Word); \ | ||
1911 | pByte[0] = (SK_U8)(Word & 0x00ff); \ | ||
1912 | pByte[1] = (SK_U8)((Word >> 8) & 0x00ff); \ | ||
1913 | SK_IN16((IoC), GMA((Mac), (Reg+4)), &Word); \ | ||
1914 | pByte[2] = (SK_U8)(Word & 0x00ff); \ | ||
1915 | pByte[3] = (SK_U8)((Word >> 8) & 0x00ff); \ | ||
1916 | SK_IN16((IoC), GMA((Mac), (Reg+8)), &Word); \ | ||
1917 | pByte[4] = (SK_U8)(Word & 0x00ff); \ | ||
1918 | pByte[5] = (SK_U8)((Word >> 8) & 0x00ff); \ | ||
1919 | } | ||
1920 | |||
1921 | #define GM_OUTADDR(IoC, Mac, Reg, pVal) { \ | ||
1922 | SK_U8 SK_FAR *pByte; \ | ||
1923 | pByte = (SK_U8 SK_FAR *)&((SK_U8 SK_FAR *)(pVal))[0]; \ | ||
1924 | SK_OUT16((IoC), GMA((Mac), (Reg)), (SK_U16) \ | ||
1925 | (((SK_U16)(pByte[0]) & 0x00ff) | \ | ||
1926 | (((SK_U16)(pByte[1]) << 8) & 0xff00))); \ | ||
1927 | SK_OUT16((IoC), GMA((Mac), (Reg+4)), (SK_U16) \ | ||
1928 | (((SK_U16)(pByte[2]) & 0x00ff) | \ | ||
1929 | (((SK_U16)(pByte[3]) << 8) & 0xff00))); \ | ||
1930 | SK_OUT16((IoC), GMA((Mac), (Reg+8)), (SK_U16) \ | ||
1931 | (((SK_U16)(pByte[4]) & 0x00ff) | \ | ||
1932 | (((SK_U16)(pByte[5]) << 8) & 0xff00))); \ | ||
1933 | } | ||
1934 | |||
1935 | #define GM_INHASH(IoC, Mac, Reg, pVal) { \ | ||
1936 | SK_U16 Word; \ | ||
1937 | SK_U8 *pByte; \ | ||
1938 | pByte = (SK_U8 *)&((SK_U8 *)(pVal))[0]; \ | ||
1939 | SK_IN16((IoC), GMA((Mac), (Reg)), &Word); \ | ||
1940 | pByte[0] = (SK_U8)(Word & 0x00ff); \ | ||
1941 | pByte[1] = (SK_U8)((Word >> 8) & 0x00ff); \ | ||
1942 | SK_IN16((IoC), GMA((Mac), (Reg+4)), &Word); \ | ||
1943 | pByte[2] = (SK_U8)(Word & 0x00ff); \ | ||
1944 | pByte[3] = (SK_U8)((Word >> 8) & 0x00ff); \ | ||
1945 | SK_IN16((IoC), GMA((Mac), (Reg+8)), &Word); \ | ||
1946 | pByte[4] = (SK_U8)(Word & 0x00ff); \ | ||
1947 | pByte[5] = (SK_U8)((Word >> 8) & 0x00ff); \ | ||
1948 | SK_IN16((IoC), GMA((Mac), (Reg+12)), &Word); \ | ||
1949 | pByte[6] = (SK_U8)(Word & 0x00ff); \ | ||
1950 | pByte[7] = (SK_U8)((Word >> 8) & 0x00ff); \ | ||
1951 | } | ||
1952 | |||
1953 | #define GM_OUTHASH(IoC, Mac, Reg, pVal) { \ | ||
1954 | SK_U8 *pByte; \ | ||
1955 | pByte = (SK_U8 *)&((SK_U8 *)(pVal))[0]; \ | ||
1956 | SK_OUT16((IoC), GMA((Mac), (Reg)), (SK_U16) \ | ||
1957 | (((SK_U16)(pByte[0]) & 0x00ff)| \ | ||
1958 | (((SK_U16)(pByte[1]) << 8) & 0xff00))); \ | ||
1959 | SK_OUT16((IoC), GMA((Mac), (Reg+4)), (SK_U16) \ | ||
1960 | (((SK_U16)(pByte[2]) & 0x00ff)| \ | ||
1961 | (((SK_U16)(pByte[3]) << 8) & 0xff00))); \ | ||
1962 | SK_OUT16((IoC), GMA((Mac), (Reg+8)), (SK_U16) \ | ||
1963 | (((SK_U16)(pByte[4]) & 0x00ff)| \ | ||
1964 | (((SK_U16)(pByte[5]) << 8) & 0xff00))); \ | ||
1965 | SK_OUT16((IoC), GMA((Mac), (Reg+12)), (SK_U16) \ | ||
1966 | (((SK_U16)(pByte[6]) & 0x00ff)| \ | ||
1967 | (((SK_U16)(pByte[7]) << 8) & 0xff00))); \ | ||
1968 | } | ||
1969 | |||
1970 | /* | ||
1971 | * Different MAC Types | ||
1972 | */ | ||
1973 | #define SK_MAC_XMAC 0 /* Xaqti XMAC II */ | ||
1974 | #define SK_MAC_GMAC 1 /* Marvell GMAC */ | ||
1975 | |||
1976 | /* | ||
1977 | * Different PHY Types | ||
1978 | */ | ||
1979 | #define SK_PHY_XMAC 0 /* integrated in XMAC II */ | ||
1980 | #define SK_PHY_BCOM 1 /* Broadcom BCM5400 */ | ||
1981 | #define SK_PHY_LONE 2 /* Level One LXT1000 */ | ||
1982 | #define SK_PHY_NAT 3 /* National DP83891 */ | ||
1983 | #define SK_PHY_MARV_COPPER 4 /* Marvell 88E1011S */ | ||
1984 | #define SK_PHY_MARV_FIBER 5 /* Marvell 88E1011S working on fiber */ | ||
1985 | |||
1986 | /* | ||
1987 | * PHY addresses (bits 12..8 of PHY address reg) | ||
1988 | */ | ||
1989 | #define PHY_ADDR_XMAC (0<<8) | ||
1990 | #define PHY_ADDR_BCOM (1<<8) | ||
1991 | #define PHY_ADDR_LONE (3<<8) | ||
1992 | #define PHY_ADDR_NAT (0<<8) | ||
1993 | |||
1994 | /* GPHY address (bits 15..11 of SMI control reg) */ | ||
1995 | #define PHY_ADDR_MARV 0 | ||
1996 | |||
1997 | /* | ||
1998 | * macros to access the PHY | ||
1999 | * | ||
2000 | * PHY_READ() read a 16 bit value from the PHY | ||
2001 | * PHY_WRITE() write a 16 bit value to the PHY | ||
2002 | * | ||
2003 | * para: | ||
2004 | * IoC I/O context needed for SK I/O macros | ||
2005 | * pPort Pointer to port struct for PhyAddr | ||
2006 | * Mac XMAC to access values: MAC_1 or MAC_2 | ||
2007 | * PhyReg PHY Register to read or write | ||
2008 | * (p)Val Value or pointer to the value which should be read or | ||
2009 | * written. | ||
2010 | * | ||
2011 | * usage: PHY_READ(IoC, pPort, MAC_1, PHY_CTRL, Value); | ||
2012 | * Warning: a PHY_READ on an uninitialized PHY (PHY still in reset) never | ||
2013 | * comes back. This is checked in DEBUG mode. | ||
2014 | */ | ||
2015 | #ifndef DEBUG | ||
2016 | #define PHY_READ(IoC, pPort, Mac, PhyReg, pVal) { \ | ||
2017 | SK_U16 Mmu; \ | ||
2018 | \ | ||
2019 | XM_OUT16((IoC), (Mac), XM_PHY_ADDR, (PhyReg) | (pPort)->PhyAddr); \ | ||
2020 | XM_IN16((IoC), (Mac), XM_PHY_DATA, (pVal)); \ | ||
2021 | if ((pPort)->PhyType != SK_PHY_XMAC) { \ | ||
2022 | do { \ | ||
2023 | XM_IN16((IoC), (Mac), XM_MMU_CMD, &Mmu); \ | ||
2024 | } while ((Mmu & XM_MMU_PHY_RDY) == 0); \ | ||
2025 | XM_IN16((IoC), (Mac), XM_PHY_DATA, (pVal)); \ | ||
2026 | } \ | ||
2027 | } | ||
2028 | #else | ||
2029 | #define PHY_READ(IoC, pPort, Mac, PhyReg, pVal) { \ | ||
2030 | SK_U16 Mmu; \ | ||
2031 | int __i = 0; \ | ||
2032 | \ | ||
2033 | XM_OUT16((IoC), (Mac), XM_PHY_ADDR, (PhyReg) | (pPort)->PhyAddr); \ | ||
2034 | XM_IN16((IoC), (Mac), XM_PHY_DATA, (pVal)); \ | ||
2035 | if ((pPort)->PhyType != SK_PHY_XMAC) { \ | ||
2036 | do { \ | ||
2037 | XM_IN16((IoC), (Mac), XM_MMU_CMD, &Mmu); \ | ||
2038 | __i++; \ | ||
2039 | if (__i > 100000) { \ | ||
2040 | SK_DBG_PRINTF("*****************************\n"); \ | ||
2041 | SK_DBG_PRINTF("PHY_READ on uninitialized PHY\n"); \ | ||
2042 | SK_DBG_PRINTF("*****************************\n"); \ | ||
2043 | break; \ | ||
2044 | } \ | ||
2045 | } while ((Mmu & XM_MMU_PHY_RDY) == 0); \ | ||
2046 | XM_IN16((IoC), (Mac), XM_PHY_DATA, (pVal)); \ | ||
2047 | } \ | ||
2048 | } | ||
2049 | #endif /* DEBUG */ | ||
2050 | |||
2051 | #define PHY_WRITE(IoC, pPort, Mac, PhyReg, Val) { \ | ||
2052 | SK_U16 Mmu; \ | ||
2053 | \ | ||
2054 | if ((pPort)->PhyType != SK_PHY_XMAC) { \ | ||
2055 | do { \ | ||
2056 | XM_IN16((IoC), (Mac), XM_MMU_CMD, &Mmu); \ | ||
2057 | } while ((Mmu & XM_MMU_PHY_BUSY) != 0); \ | ||
2058 | } \ | ||
2059 | XM_OUT16((IoC), (Mac), XM_PHY_ADDR, (PhyReg) | (pPort)->PhyAddr); \ | ||
2060 | XM_OUT16((IoC), (Mac), XM_PHY_DATA, (Val)); \ | ||
2061 | if ((pPort)->PhyType != SK_PHY_XMAC) { \ | ||
2062 | do { \ | ||
2063 | XM_IN16((IoC), (Mac), XM_MMU_CMD, &Mmu); \ | ||
2064 | } while ((Mmu & XM_MMU_PHY_BUSY) != 0); \ | ||
2065 | } \ | ||
2066 | } | ||
2067 | |||
2068 | /* | ||
2069 | * Macro PCI_C() | ||
2070 | * | ||
2071 | * Use this macro to access PCI config register from the I/O space. | ||
2072 | * | ||
2073 | * para: | ||
2074 | * Addr PCI configuration register to access. | ||
2075 | * Values: PCI_VENDOR_ID ... PCI_VPD_ADR_REG, | ||
2076 | * | ||
2077 | * usage SK_IN16(pAC, PCI_C(PCI_VENDOR_ID), pVal); | ||
2078 | */ | ||
2079 | #define PCI_C(Addr) (B7_CFG_SPC + (Addr)) /* PCI Config Space */ | ||
2080 | |||
2081 | /* | ||
2082 | * Macro SK_HW_ADDR(Base, Addr) | ||
2083 | * | ||
2084 | * Calculates the effective HW address | ||
2085 | * | ||
2086 | * para: | ||
2087 | * Base I/O or memory base address | ||
2088 | * Addr Address offset | ||
2089 | * | ||
2090 | * usage: May be used in SK_INxx and SK_OUTxx macros | ||
2091 | * #define SK_IN8(pAC, Addr, pVal) ...\ | ||
2092 | * *pVal = (SK_U8)inp(SK_HW_ADDR(pAC->Hw.Iop, Addr))) | ||
2093 | */ | ||
2094 | #ifdef SK_MEM_MAPPED_IO | ||
2095 | #define SK_HW_ADDR(Base, Addr) ((Base) + (Addr)) | ||
2096 | #else /* SK_MEM_MAPPED_IO */ | ||
2097 | #define SK_HW_ADDR(Base, Addr) \ | ||
2098 | ((Base) + (((Addr) & 0x7f) | (((Addr) >> 7 > 0) ? 0x80 : 0))) | ||
2099 | #endif /* SK_MEM_MAPPED_IO */ | ||
2100 | |||
2101 | #define SZ_LONG (sizeof(SK_U32)) | ||
2102 | |||
2103 | /* | ||
2104 | * Macro SK_HWAC_LINK_LED() | ||
2105 | * | ||
2106 | * Use this macro to set the link LED mode. | ||
2107 | * para: | ||
2108 | * pAC Pointer to adapter context struct | ||
2109 | * IoC I/O context needed for SK I/O macros | ||
2110 | * Port Port number | ||
2111 | * Mode Mode to set for this LED | ||
2112 | */ | ||
2113 | #define SK_HWAC_LINK_LED(pAC, IoC, Port, Mode) \ | ||
2114 | SK_OUT8(IoC, MR_ADDR(Port, LNK_LED_REG), Mode); | ||
2115 | |||
2116 | |||
2117 | /* typedefs *******************************************************************/ | ||
2118 | |||
2119 | |||
2120 | /* function prototypes ********************************************************/ | ||
2121 | |||
2122 | #ifdef __cplusplus | ||
2123 | } | ||
2124 | #endif /* __cplusplus */ | ||
2125 | |||
2126 | #endif /* __INC_SKGEHW_H */ | ||
diff --git a/drivers/net/sk98lin/h/skgehwt.h b/drivers/net/sk98lin/h/skgehwt.h new file mode 100644 index 000000000000..e6b0016a695c --- /dev/null +++ b/drivers/net/sk98lin/h/skgehwt.h | |||
@@ -0,0 +1,48 @@ | |||
1 | /****************************************************************************** | ||
2 | * | ||
3 | * Name: skhwt.h | ||
4 | * Project: Gigabit Ethernet Adapters, Event Scheduler Module | ||
5 | * Version: $Revision: 1.7 $ | ||
6 | * Date: $Date: 2003/09/16 12:55:08 $ | ||
7 | * Purpose: Defines for the hardware timer functions | ||
8 | * | ||
9 | ******************************************************************************/ | ||
10 | |||
11 | /****************************************************************************** | ||
12 | * | ||
13 | * (C)Copyright 1998-2002 SysKonnect GmbH. | ||
14 | * (C)Copyright 2002-2003 Marvell. | ||
15 | * | ||
16 | * This program is free software; you can redistribute it and/or modify | ||
17 | * it under the terms of the GNU General Public License as published by | ||
18 | * the Free Software Foundation; either version 2 of the License, or | ||
19 | * (at your option) any later version. | ||
20 | * | ||
21 | * The information in this file is provided "AS IS" without warranty. | ||
22 | * | ||
23 | ******************************************************************************/ | ||
24 | |||
25 | /* | ||
26 | * SKGEHWT.H contains all defines and types for the timer functions | ||
27 | */ | ||
28 | |||
29 | #ifndef _SKGEHWT_H_ | ||
30 | #define _SKGEHWT_H_ | ||
31 | |||
32 | /* | ||
33 | * SK Hardware Timer | ||
34 | * - needed wherever the HWT module is used | ||
35 | * - use in Adapters context name pAC->Hwt | ||
36 | */ | ||
37 | typedef struct s_Hwt { | ||
38 | SK_U32 TStart; /* HWT start */ | ||
39 | SK_U32 TStop; /* HWT stop */ | ||
40 | int TActive; /* HWT: flag : active/inactive */ | ||
41 | } SK_HWT; | ||
42 | |||
43 | extern void SkHwtInit(SK_AC *pAC, SK_IOC Ioc); | ||
44 | extern void SkHwtStart(SK_AC *pAC, SK_IOC Ioc, SK_U32 Time); | ||
45 | extern void SkHwtStop(SK_AC *pAC, SK_IOC Ioc); | ||
46 | extern SK_U32 SkHwtRead(SK_AC *pAC, SK_IOC Ioc); | ||
47 | extern void SkHwtIsr(SK_AC *pAC, SK_IOC Ioc); | ||
48 | #endif /* _SKGEHWT_H_ */ | ||
diff --git a/drivers/net/sk98lin/h/skgei2c.h b/drivers/net/sk98lin/h/skgei2c.h new file mode 100644 index 000000000000..d9b6f6d8dfe2 --- /dev/null +++ b/drivers/net/sk98lin/h/skgei2c.h | |||
@@ -0,0 +1,210 @@ | |||
1 | /****************************************************************************** | ||
2 | * | ||
3 | * Name: skgei2c.h | ||
4 | * Project: Gigabit Ethernet Adapters, TWSI-Module | ||
5 | * Version: $Revision: 1.25 $ | ||
6 | * Date: $Date: 2003/10/20 09:06:05 $ | ||
7 | * Purpose: Special defines for TWSI | ||
8 | * | ||
9 | ******************************************************************************/ | ||
10 | |||
11 | /****************************************************************************** | ||
12 | * | ||
13 | * (C)Copyright 1998-2002 SysKonnect. | ||
14 | * (C)Copyright 2002-2003 Marvell. | ||
15 | * | ||
16 | * This program is free software; you can redistribute it and/or modify | ||
17 | * it under the terms of the GNU General Public License as published by | ||
18 | * the Free Software Foundation; either version 2 of the License, or | ||
19 | * (at your option) any later version. | ||
20 | * | ||
21 | * The information in this file is provided "AS IS" without warranty. | ||
22 | * | ||
23 | ******************************************************************************/ | ||
24 | |||
25 | /* | ||
26 | * SKGEI2C.H contains all SK-98xx specific defines for the TWSI handling | ||
27 | */ | ||
28 | |||
29 | #ifndef _INC_SKGEI2C_H_ | ||
30 | #define _INC_SKGEI2C_H_ | ||
31 | |||
32 | /* | ||
33 | * Macros to access the B2_I2C_CTRL | ||
34 | */ | ||
35 | #define SK_I2C_CTL(IoC, flag, dev, dev_size, reg, burst) \ | ||
36 | SK_OUT32(IoC, B2_I2C_CTRL,\ | ||
37 | (flag ? 0x80000000UL : 0x0L) | \ | ||
38 | (((SK_U32)reg << 16) & I2C_ADDR) | \ | ||
39 | (((SK_U32)dev << 9) & I2C_DEV_SEL) | \ | ||
40 | (dev_size & I2C_DEV_SIZE) | \ | ||
41 | ((burst << 4) & I2C_BURST_LEN)) | ||
42 | |||
43 | #define SK_I2C_STOP(IoC) { \ | ||
44 | SK_U32 I2cCtrl; \ | ||
45 | SK_IN32(IoC, B2_I2C_CTRL, &I2cCtrl); \ | ||
46 | SK_OUT32(IoC, B2_I2C_CTRL, I2cCtrl | I2C_STOP); \ | ||
47 | } | ||
48 | |||
49 | #define SK_I2C_GET_CTL(IoC, pI2cCtrl) SK_IN32(IoC, B2_I2C_CTRL, pI2cCtrl) | ||
50 | |||
51 | /* | ||
52 | * Macros to access the TWSI SW Registers | ||
53 | */ | ||
54 | #define SK_I2C_SET_BIT(IoC, SetBits) { \ | ||
55 | SK_U8 OrgBits; \ | ||
56 | SK_IN8(IoC, B2_I2C_SW, &OrgBits); \ | ||
57 | SK_OUT8(IoC, B2_I2C_SW, OrgBits | (SK_U8)(SetBits)); \ | ||
58 | } | ||
59 | |||
60 | #define SK_I2C_CLR_BIT(IoC, ClrBits) { \ | ||
61 | SK_U8 OrgBits; \ | ||
62 | SK_IN8(IoC, B2_I2C_SW, &OrgBits); \ | ||
63 | SK_OUT8(IoC, B2_I2C_SW, OrgBits & ~((SK_U8)(ClrBits))); \ | ||
64 | } | ||
65 | |||
66 | #define SK_I2C_GET_SW(IoC, pI2cSw) SK_IN8(IoC, B2_I2C_SW, pI2cSw) | ||
67 | |||
68 | /* | ||
69 | * define the possible sensor states | ||
70 | */ | ||
71 | #define SK_SEN_IDLE 0 /* Idle: sensor not read */ | ||
72 | #define SK_SEN_VALUE 1 /* Value Read cycle */ | ||
73 | #define SK_SEN_VALEXT 2 /* Extended Value Read cycle */ | ||
74 | |||
75 | /* | ||
76 | * Conversion factor to convert read Voltage sensor to milli Volt | ||
77 | * Conversion factor to convert read Temperature sensor to 10th degree Celsius | ||
78 | */ | ||
79 | #define SK_LM80_VT_LSB 22 /* 22mV LSB resolution */ | ||
80 | #define SK_LM80_TEMP_LSB 10 /* 1 degree LSB resolution */ | ||
81 | #define SK_LM80_TEMPEXT_LSB 5 /* 0.5 degree LSB resolution for ext. val. */ | ||
82 | |||
83 | /* | ||
84 | * formula: counter = (22500*60)/(rpm * divisor * pulses/2) | ||
85 | * assuming: 6500rpm, 4 pulses, divisor 1 | ||
86 | */ | ||
87 | #define SK_LM80_FAN_FAKTOR ((22500L*60)/(1*2)) | ||
88 | |||
89 | /* | ||
90 | * Define sensor management data | ||
91 | * Maximum is reached on Genesis copper dual port and Yukon-64 | ||
92 | * Board specific maximum is in pAC->I2c.MaxSens | ||
93 | */ | ||
94 | #define SK_MAX_SENSORS 8 /* maximal no. of installed sensors */ | ||
95 | #define SK_MIN_SENSORS 5 /* minimal no. of installed sensors */ | ||
96 | |||
97 | /* | ||
98 | * To watch the state machine (SM) use the timer in two ways | ||
99 | * instead of one as hitherto | ||
100 | */ | ||
101 | #define SK_TIMER_WATCH_SM 0 /* Watch the SM to finish in a spec. time */ | ||
102 | #define SK_TIMER_NEW_GAUGING 1 /* Start a new gauging when timer expires */ | ||
103 | |||
104 | /* | ||
105 | * Defines for the individual thresholds | ||
106 | */ | ||
107 | |||
108 | /* Temperature sensor */ | ||
109 | #define SK_SEN_TEMP_HIGH_ERR 800 /* Temperature High Err Threshold */ | ||
110 | #define SK_SEN_TEMP_HIGH_WARN 700 /* Temperature High Warn Threshold */ | ||
111 | #define SK_SEN_TEMP_LOW_WARN 100 /* Temperature Low Warn Threshold */ | ||
112 | #define SK_SEN_TEMP_LOW_ERR 0 /* Temperature Low Err Threshold */ | ||
113 | |||
114 | /* VCC which should be 5 V */ | ||
115 | #define SK_SEN_PCI_5V_HIGH_ERR 5588 /* Voltage PCI High Err Threshold */ | ||
116 | #define SK_SEN_PCI_5V_HIGH_WARN 5346 /* Voltage PCI High Warn Threshold */ | ||
117 | #define SK_SEN_PCI_5V_LOW_WARN 4664 /* Voltage PCI Low Warn Threshold */ | ||
118 | #define SK_SEN_PCI_5V_LOW_ERR 4422 /* Voltage PCI Low Err Threshold */ | ||
119 | |||
120 | /* | ||
121 | * VIO may be 5 V or 3.3 V. Initialization takes two parts: | ||
122 | * 1. Initialize lowest lower limit and highest higher limit. | ||
123 | * 2. After the first value is read correct the upper or the lower limit to | ||
124 | * the appropriate C constant. | ||
125 | * | ||
126 | * Warning limits are +-5% of the exepected voltage. | ||
127 | * Error limits are +-10% of the expected voltage. | ||
128 | */ | ||
129 | |||
130 | /* Bug fix AF: 16.Aug.2001: Correct the init base of LM80 sensor */ | ||
131 | |||
132 | #define SK_SEN_PCI_IO_5V_HIGH_ERR 5566 /* + 10% V PCI-IO High Err Threshold */ | ||
133 | #define SK_SEN_PCI_IO_5V_HIGH_WARN 5324 /* + 5% V PCI-IO High Warn Threshold */ | ||
134 | /* 5000 mVolt */ | ||
135 | #define SK_SEN_PCI_IO_5V_LOW_WARN 4686 /* - 5% V PCI-IO Low Warn Threshold */ | ||
136 | #define SK_SEN_PCI_IO_5V_LOW_ERR 4444 /* - 10% V PCI-IO Low Err Threshold */ | ||
137 | |||
138 | #define SK_SEN_PCI_IO_RANGE_LIMITER 4000 /* 4000 mV range delimiter */ | ||
139 | |||
140 | /* correction values for the second pass */ | ||
141 | #define SK_SEN_PCI_IO_3V3_HIGH_ERR 3850 /* + 15% V PCI-IO High Err Threshold */ | ||
142 | #define SK_SEN_PCI_IO_3V3_HIGH_WARN 3674 /* + 10% V PCI-IO High Warn Threshold */ | ||
143 | /* 3300 mVolt */ | ||
144 | #define SK_SEN_PCI_IO_3V3_LOW_WARN 2926 /* - 10% V PCI-IO Low Warn Threshold */ | ||
145 | #define SK_SEN_PCI_IO_3V3_LOW_ERR 2772 /* - 15% V PCI-IO Low Err Threshold */ | ||
146 | |||
147 | /* | ||
148 | * VDD voltage | ||
149 | */ | ||
150 | #define SK_SEN_VDD_HIGH_ERR 3630 /* Voltage ASIC High Err Threshold */ | ||
151 | #define SK_SEN_VDD_HIGH_WARN 3476 /* Voltage ASIC High Warn Threshold */ | ||
152 | #define SK_SEN_VDD_LOW_WARN 3146 /* Voltage ASIC Low Warn Threshold */ | ||
153 | #define SK_SEN_VDD_LOW_ERR 2970 /* Voltage ASIC Low Err Threshold */ | ||
154 | |||
155 | /* | ||
156 | * PHY PLL 3V3 voltage | ||
157 | */ | ||
158 | #define SK_SEN_PLL_3V3_HIGH_ERR 3630 /* Voltage PMA High Err Threshold */ | ||
159 | #define SK_SEN_PLL_3V3_HIGH_WARN 3476 /* Voltage PMA High Warn Threshold */ | ||
160 | #define SK_SEN_PLL_3V3_LOW_WARN 3146 /* Voltage PMA Low Warn Threshold */ | ||
161 | #define SK_SEN_PLL_3V3_LOW_ERR 2970 /* Voltage PMA Low Err Threshold */ | ||
162 | |||
163 | /* | ||
164 | * VAUX (YUKON only) | ||
165 | */ | ||
166 | #define SK_SEN_VAUX_3V3_HIGH_ERR 3630 /* Voltage VAUX High Err Threshold */ | ||
167 | #define SK_SEN_VAUX_3V3_HIGH_WARN 3476 /* Voltage VAUX High Warn Threshold */ | ||
168 | #define SK_SEN_VAUX_3V3_LOW_WARN 3146 /* Voltage VAUX Low Warn Threshold */ | ||
169 | #define SK_SEN_VAUX_3V3_LOW_ERR 2970 /* Voltage VAUX Low Err Threshold */ | ||
170 | #define SK_SEN_VAUX_0V_WARN_ERR 0 /* if VAUX not present */ | ||
171 | #define SK_SEN_VAUX_RANGE_LIMITER 1000 /* 1000 mV range delimiter */ | ||
172 | |||
173 | /* | ||
174 | * PHY 2V5 voltage | ||
175 | */ | ||
176 | #define SK_SEN_PHY_2V5_HIGH_ERR 2750 /* Voltage PHY High Err Threshold */ | ||
177 | #define SK_SEN_PHY_2V5_HIGH_WARN 2640 /* Voltage PHY High Warn Threshold */ | ||
178 | #define SK_SEN_PHY_2V5_LOW_WARN 2376 /* Voltage PHY Low Warn Threshold */ | ||
179 | #define SK_SEN_PHY_2V5_LOW_ERR 2222 /* Voltage PHY Low Err Threshold */ | ||
180 | |||
181 | /* | ||
182 | * ASIC Core 1V5 voltage (YUKON only) | ||
183 | */ | ||
184 | #define SK_SEN_CORE_1V5_HIGH_ERR 1650 /* Voltage ASIC Core High Err Threshold */ | ||
185 | #define SK_SEN_CORE_1V5_HIGH_WARN 1575 /* Voltage ASIC Core High Warn Threshold */ | ||
186 | #define SK_SEN_CORE_1V5_LOW_WARN 1425 /* Voltage ASIC Core Low Warn Threshold */ | ||
187 | #define SK_SEN_CORE_1V5_LOW_ERR 1350 /* Voltage ASIC Core Low Err Threshold */ | ||
188 | |||
189 | /* | ||
190 | * FAN 1 speed | ||
191 | */ | ||
192 | /* assuming: 6500rpm +-15%, 4 pulses, | ||
193 | * warning at: 80 % | ||
194 | * error at: 70 % | ||
195 | * no upper limit | ||
196 | */ | ||
197 | #define SK_SEN_FAN_HIGH_ERR 20000 /* FAN Speed High Err Threshold */ | ||
198 | #define SK_SEN_FAN_HIGH_WARN 20000 /* FAN Speed High Warn Threshold */ | ||
199 | #define SK_SEN_FAN_LOW_WARN 5200 /* FAN Speed Low Warn Threshold */ | ||
200 | #define SK_SEN_FAN_LOW_ERR 4550 /* FAN Speed Low Err Threshold */ | ||
201 | |||
202 | /* | ||
203 | * Some Voltages need dynamic thresholds | ||
204 | */ | ||
205 | #define SK_SEN_DYN_INIT_NONE 0 /* No dynamic init of thresholds */ | ||
206 | #define SK_SEN_DYN_INIT_PCI_IO 10 /* Init PCI-IO with new thresholds */ | ||
207 | #define SK_SEN_DYN_INIT_VAUX 11 /* Init VAUX with new thresholds */ | ||
208 | |||
209 | extern int SkLm80ReadSensor(SK_AC *pAC, SK_IOC IoC, SK_SENSOR *pSen); | ||
210 | #endif /* n_INC_SKGEI2C_H */ | ||
diff --git a/drivers/net/sk98lin/h/skgeinit.h b/drivers/net/sk98lin/h/skgeinit.h new file mode 100644 index 000000000000..184f47c5a60f --- /dev/null +++ b/drivers/net/sk98lin/h/skgeinit.h | |||
@@ -0,0 +1,853 @@ | |||
1 | /****************************************************************************** | ||
2 | * | ||
3 | * Name: skgeinit.h | ||
4 | * Project: Gigabit Ethernet Adapters, Common Modules | ||
5 | * Version: $Revision: 1.83 $ | ||
6 | * Date: $Date: 2003/09/16 14:07:37 $ | ||
7 | * Purpose: Structures and prototypes for the GE Init Module | ||
8 | * | ||
9 | ******************************************************************************/ | ||
10 | |||
11 | /****************************************************************************** | ||
12 | * | ||
13 | * (C)Copyright 1998-2002 SysKonnect. | ||
14 | * (C)Copyright 2002-2003 Marvell. | ||
15 | * | ||
16 | * This program is free software; you can redistribute it and/or modify | ||
17 | * it under the terms of the GNU General Public License as published by | ||
18 | * the Free Software Foundation; either version 2 of the License, or | ||
19 | * (at your option) any later version. | ||
20 | * | ||
21 | * The information in this file is provided "AS IS" without warranty. | ||
22 | * | ||
23 | ******************************************************************************/ | ||
24 | |||
25 | #ifndef __INC_SKGEINIT_H_ | ||
26 | #define __INC_SKGEINIT_H_ | ||
27 | |||
28 | #ifdef __cplusplus | ||
29 | extern "C" { | ||
30 | #endif /* __cplusplus */ | ||
31 | |||
32 | /* defines ********************************************************************/ | ||
33 | |||
34 | #define SK_TEST_VAL 0x11335577UL | ||
35 | |||
36 | /* modifying Link LED behaviour (used with SkGeLinkLED()) */ | ||
37 | #define SK_LNK_OFF LED_OFF | ||
38 | #define SK_LNK_ON (LED_ON | LED_BLK_OFF | LED_SYNC_OFF) | ||
39 | #define SK_LNK_BLINK (LED_ON | LED_BLK_ON | LED_SYNC_ON) | ||
40 | #define SK_LNK_PERM (LED_ON | LED_BLK_OFF | LED_SYNC_ON) | ||
41 | #define SK_LNK_TST (LED_ON | LED_BLK_ON | LED_SYNC_OFF) | ||
42 | |||
43 | /* parameter 'Mode' when calling SK_HWAC_LINK_LED() */ | ||
44 | #define SK_LED_OFF LED_OFF | ||
45 | #define SK_LED_ACTIVE (LED_ON | LED_BLK_OFF | LED_SYNC_OFF) | ||
46 | #define SK_LED_STANDBY (LED_ON | LED_BLK_ON | LED_SYNC_OFF) | ||
47 | |||
48 | /* addressing LED Registers in SkGeXmitLED() */ | ||
49 | #define XMIT_LED_INI 0 | ||
50 | #define XMIT_LED_CNT (RX_LED_VAL - RX_LED_INI) | ||
51 | #define XMIT_LED_CTRL (RX_LED_CTRL- RX_LED_INI) | ||
52 | #define XMIT_LED_TST (RX_LED_TST - RX_LED_INI) | ||
53 | |||
54 | /* parameter 'Mode' when calling SkGeXmitLED() */ | ||
55 | #define SK_LED_DIS 0 | ||
56 | #define SK_LED_ENA 1 | ||
57 | #define SK_LED_TST 2 | ||
58 | |||
59 | /* Counter and Timer constants, for a host clock of 62.5 MHz */ | ||
60 | #define SK_XMIT_DUR 0x002faf08UL /* 50 ms */ | ||
61 | #define SK_BLK_DUR 0x01dcd650UL /* 500 ms */ | ||
62 | |||
63 | #define SK_DPOLL_DEF 0x00ee6b28UL /* 250 ms at 62.5 MHz */ | ||
64 | |||
65 | #define SK_DPOLL_MAX 0x00ffffffUL /* 268 ms at 62.5 MHz */ | ||
66 | /* 215 ms at 78.12 MHz */ | ||
67 | |||
68 | #define SK_FACT_62 100 /* is given in percent */ | ||
69 | #define SK_FACT_53 85 /* on GENESIS: 53.12 MHz */ | ||
70 | #define SK_FACT_78 125 /* on YUKON: 78.12 MHz */ | ||
71 | |||
72 | /* Timeout values */ | ||
73 | #define SK_MAC_TO_53 72 /* MAC arbiter timeout */ | ||
74 | #define SK_PKT_TO_53 0x2000 /* Packet arbiter timeout */ | ||
75 | #define SK_PKT_TO_MAX 0xffff /* Maximum value */ | ||
76 | #define SK_RI_TO_53 36 /* RAM interface timeout */ | ||
77 | |||
78 | #define SK_PHY_ACC_TO 600000 /* PHY access timeout */ | ||
79 | |||
80 | /* RAM Buffer High Pause Threshold values */ | ||
81 | #define SK_RB_ULPP ( 8 * 1024) /* Upper Level in kB/8 */ | ||
82 | #define SK_RB_LLPP_S (10 * 1024) /* Lower Level for small Queues */ | ||
83 | #define SK_RB_LLPP_B (16 * 1024) /* Lower Level for big Queues */ | ||
84 | |||
85 | #ifndef SK_BMU_RX_WM | ||
86 | #define SK_BMU_RX_WM 0x600 /* BMU Rx Watermark */ | ||
87 | #endif | ||
88 | #ifndef SK_BMU_TX_WM | ||
89 | #define SK_BMU_TX_WM 0x600 /* BMU Tx Watermark */ | ||
90 | #endif | ||
91 | |||
92 | /* XMAC II Rx High Watermark */ | ||
93 | #define SK_XM_RX_HI_WM 0x05aa /* 1450 */ | ||
94 | |||
95 | /* XMAC II Tx Threshold */ | ||
96 | #define SK_XM_THR_REDL 0x01fb /* .. for redundant link usage */ | ||
97 | #define SK_XM_THR_SL 0x01fb /* .. for single link adapters */ | ||
98 | #define SK_XM_THR_MULL 0x01fb /* .. for multiple link usage */ | ||
99 | #define SK_XM_THR_JUMBO 0x03fc /* .. for jumbo frame usage */ | ||
100 | |||
101 | /* values for GIPortUsage */ | ||
102 | #define SK_RED_LINK 1 /* redundant link usage */ | ||
103 | #define SK_MUL_LINK 2 /* multiple link usage */ | ||
104 | #define SK_JUMBO_LINK 3 /* driver uses jumbo frames */ | ||
105 | |||
106 | /* Minimum RAM Buffer Rx Queue Size */ | ||
107 | #define SK_MIN_RXQ_SIZE 16 /* 16 kB */ | ||
108 | |||
109 | /* Minimum RAM Buffer Tx Queue Size */ | ||
110 | #define SK_MIN_TXQ_SIZE 16 /* 16 kB */ | ||
111 | |||
112 | /* Queue Size units */ | ||
113 | #define QZ_UNITS 0x7 | ||
114 | #define QZ_STEP 8 | ||
115 | |||
116 | /* Percentage of queue size from whole memory */ | ||
117 | /* 80 % for receive */ | ||
118 | #define RAM_QUOTA_RX 80L | ||
119 | /* 0% for sync transfer */ | ||
120 | #define RAM_QUOTA_SYNC 0L | ||
121 | /* the rest (20%) is taken for async transfer */ | ||
122 | |||
123 | /* Get the rounded queue size in Bytes in 8k steps */ | ||
124 | #define ROUND_QUEUE_SIZE(SizeInBytes) \ | ||
125 | ((((unsigned long) (SizeInBytes) + (QZ_STEP*1024L)-1) / 1024) & \ | ||
126 | ~(QZ_STEP-1)) | ||
127 | |||
128 | /* Get the rounded queue size in KBytes in 8k steps */ | ||
129 | #define ROUND_QUEUE_SIZE_KB(Kilobytes) \ | ||
130 | ROUND_QUEUE_SIZE((Kilobytes) * 1024L) | ||
131 | |||
132 | /* Types of RAM Buffer Queues */ | ||
133 | #define SK_RX_SRAM_Q 1 /* small receive queue */ | ||
134 | #define SK_RX_BRAM_Q 2 /* big receive queue */ | ||
135 | #define SK_TX_RAM_Q 3 /* small or big transmit queue */ | ||
136 | |||
137 | /* parameter 'Dir' when calling SkGeStopPort() */ | ||
138 | #define SK_STOP_TX 1 /* Stops the transmit path, resets the XMAC */ | ||
139 | #define SK_STOP_RX 2 /* Stops the receive path */ | ||
140 | #define SK_STOP_ALL 3 /* Stops Rx and Tx path, resets the XMAC */ | ||
141 | |||
142 | /* parameter 'RstMode' when calling SkGeStopPort() */ | ||
143 | #define SK_SOFT_RST 1 /* perform a software reset */ | ||
144 | #define SK_HARD_RST 2 /* perform a hardware reset */ | ||
145 | |||
146 | /* Init Levels */ | ||
147 | #define SK_INIT_DATA 0 /* Init level 0: init data structures */ | ||
148 | #define SK_INIT_IO 1 /* Init level 1: init with IOs */ | ||
149 | #define SK_INIT_RUN 2 /* Init level 2: init for run time */ | ||
150 | |||
151 | /* Link Mode Parameter */ | ||
152 | #define SK_LMODE_HALF 1 /* Half Duplex Mode */ | ||
153 | #define SK_LMODE_FULL 2 /* Full Duplex Mode */ | ||
154 | #define SK_LMODE_AUTOHALF 3 /* AutoHalf Duplex Mode */ | ||
155 | #define SK_LMODE_AUTOFULL 4 /* AutoFull Duplex Mode */ | ||
156 | #define SK_LMODE_AUTOBOTH 5 /* AutoBoth Duplex Mode */ | ||
157 | #define SK_LMODE_AUTOSENSE 6 /* configured mode auto sensing */ | ||
158 | #define SK_LMODE_INDETERMINATED 7 /* indeterminated */ | ||
159 | |||
160 | /* Auto-negotiation timeout in 100ms granularity */ | ||
161 | #define SK_AND_MAX_TO 6 /* Wait 600 msec before link comes up */ | ||
162 | |||
163 | /* Auto-negotiation error codes */ | ||
164 | #define SK_AND_OK 0 /* no error */ | ||
165 | #define SK_AND_OTHER 1 /* other error than below */ | ||
166 | #define SK_AND_DUP_CAP 2 /* Duplex capabilities error */ | ||
167 | |||
168 | |||
169 | /* Link Speed Capabilities */ | ||
170 | #define SK_LSPEED_CAP_AUTO (1<<0) /* Automatic resolution */ | ||
171 | #define SK_LSPEED_CAP_10MBPS (1<<1) /* 10 Mbps */ | ||
172 | #define SK_LSPEED_CAP_100MBPS (1<<2) /* 100 Mbps */ | ||
173 | #define SK_LSPEED_CAP_1000MBPS (1<<3) /* 1000 Mbps */ | ||
174 | #define SK_LSPEED_CAP_INDETERMINATED (1<<4) /* indeterminated */ | ||
175 | |||
176 | /* Link Speed Parameter */ | ||
177 | #define SK_LSPEED_AUTO 1 /* Automatic resolution */ | ||
178 | #define SK_LSPEED_10MBPS 2 /* 10 Mbps */ | ||
179 | #define SK_LSPEED_100MBPS 3 /* 100 Mbps */ | ||
180 | #define SK_LSPEED_1000MBPS 4 /* 1000 Mbps */ | ||
181 | #define SK_LSPEED_INDETERMINATED 5 /* indeterminated */ | ||
182 | |||
183 | /* Link Speed Current State */ | ||
184 | #define SK_LSPEED_STAT_UNKNOWN 1 | ||
185 | #define SK_LSPEED_STAT_10MBPS 2 | ||
186 | #define SK_LSPEED_STAT_100MBPS 3 | ||
187 | #define SK_LSPEED_STAT_1000MBPS 4 | ||
188 | #define SK_LSPEED_STAT_INDETERMINATED 5 | ||
189 | |||
190 | |||
191 | /* Link Capability Parameter */ | ||
192 | #define SK_LMODE_CAP_HALF (1<<0) /* Half Duplex Mode */ | ||
193 | #define SK_LMODE_CAP_FULL (1<<1) /* Full Duplex Mode */ | ||
194 | #define SK_LMODE_CAP_AUTOHALF (1<<2) /* AutoHalf Duplex Mode */ | ||
195 | #define SK_LMODE_CAP_AUTOFULL (1<<3) /* AutoFull Duplex Mode */ | ||
196 | #define SK_LMODE_CAP_INDETERMINATED (1<<4) /* indeterminated */ | ||
197 | |||
198 | /* Link Mode Current State */ | ||
199 | #define SK_LMODE_STAT_UNKNOWN 1 /* Unknown Duplex Mode */ | ||
200 | #define SK_LMODE_STAT_HALF 2 /* Half Duplex Mode */ | ||
201 | #define SK_LMODE_STAT_FULL 3 /* Full Duplex Mode */ | ||
202 | #define SK_LMODE_STAT_AUTOHALF 4 /* Half Duplex Mode obtained by Auto-Neg */ | ||
203 | #define SK_LMODE_STAT_AUTOFULL 5 /* Full Duplex Mode obtained by Auto-Neg */ | ||
204 | #define SK_LMODE_STAT_INDETERMINATED 6 /* indeterminated */ | ||
205 | |||
206 | /* Flow Control Mode Parameter (and capabilities) */ | ||
207 | #define SK_FLOW_MODE_NONE 1 /* No Flow-Control */ | ||
208 | #define SK_FLOW_MODE_LOC_SEND 2 /* Local station sends PAUSE */ | ||
209 | #define SK_FLOW_MODE_SYMMETRIC 3 /* Both stations may send PAUSE */ | ||
210 | #define SK_FLOW_MODE_SYM_OR_REM 4 /* Both stations may send PAUSE or | ||
211 | * just the remote station may send PAUSE | ||
212 | */ | ||
213 | #define SK_FLOW_MODE_INDETERMINATED 5 /* indeterminated */ | ||
214 | |||
215 | /* Flow Control Status Parameter */ | ||
216 | #define SK_FLOW_STAT_NONE 1 /* No Flow Control */ | ||
217 | #define SK_FLOW_STAT_REM_SEND 2 /* Remote Station sends PAUSE */ | ||
218 | #define SK_FLOW_STAT_LOC_SEND 3 /* Local station sends PAUSE */ | ||
219 | #define SK_FLOW_STAT_SYMMETRIC 4 /* Both station may send PAUSE */ | ||
220 | #define SK_FLOW_STAT_INDETERMINATED 5 /* indeterminated */ | ||
221 | |||
222 | /* Master/Slave Mode Capabilities */ | ||
223 | #define SK_MS_CAP_AUTO (1<<0) /* Automatic resolution */ | ||
224 | #define SK_MS_CAP_MASTER (1<<1) /* This station is master */ | ||
225 | #define SK_MS_CAP_SLAVE (1<<2) /* This station is slave */ | ||
226 | #define SK_MS_CAP_INDETERMINATED (1<<3) /* indeterminated */ | ||
227 | |||
228 | /* Set Master/Slave Mode Parameter (and capabilities) */ | ||
229 | #define SK_MS_MODE_AUTO 1 /* Automatic resolution */ | ||
230 | #define SK_MS_MODE_MASTER 2 /* This station is master */ | ||
231 | #define SK_MS_MODE_SLAVE 3 /* This station is slave */ | ||
232 | #define SK_MS_MODE_INDETERMINATED 4 /* indeterminated */ | ||
233 | |||
234 | /* Master/Slave Status Parameter */ | ||
235 | #define SK_MS_STAT_UNSET 1 /* The M/S status is not set */ | ||
236 | #define SK_MS_STAT_MASTER 2 /* This station is master */ | ||
237 | #define SK_MS_STAT_SLAVE 3 /* This station is slave */ | ||
238 | #define SK_MS_STAT_FAULT 4 /* M/S resolution failed */ | ||
239 | #define SK_MS_STAT_INDETERMINATED 5 /* indeterminated */ | ||
240 | |||
241 | /* parameter 'Mode' when calling SkXmSetRxCmd() */ | ||
242 | #define SK_STRIP_FCS_ON (1<<0) /* Enable FCS stripping of Rx frames */ | ||
243 | #define SK_STRIP_FCS_OFF (1<<1) /* Disable FCS stripping of Rx frames */ | ||
244 | #define SK_STRIP_PAD_ON (1<<2) /* Enable pad byte stripping of Rx fr */ | ||
245 | #define SK_STRIP_PAD_OFF (1<<3) /* Disable pad byte stripping of Rx fr */ | ||
246 | #define SK_LENERR_OK_ON (1<<4) /* Don't chk fr for in range len error */ | ||
247 | #define SK_LENERR_OK_OFF (1<<5) /* Check frames for in range len error */ | ||
248 | #define SK_BIG_PK_OK_ON (1<<6) /* Don't set Rx Error bit for big frames */ | ||
249 | #define SK_BIG_PK_OK_OFF (1<<7) /* Set Rx Error bit for big frames */ | ||
250 | #define SK_SELF_RX_ON (1<<8) /* Enable Rx of own packets */ | ||
251 | #define SK_SELF_RX_OFF (1<<9) /* Disable Rx of own packets */ | ||
252 | |||
253 | /* parameter 'Para' when calling SkMacSetRxTxEn() */ | ||
254 | #define SK_MAC_LOOPB_ON (1<<0) /* Enable MAC Loopback Mode */ | ||
255 | #define SK_MAC_LOOPB_OFF (1<<1) /* Disable MAC Loopback Mode */ | ||
256 | #define SK_PHY_LOOPB_ON (1<<2) /* Enable PHY Loopback Mode */ | ||
257 | #define SK_PHY_LOOPB_OFF (1<<3) /* Disable PHY Loopback Mode */ | ||
258 | #define SK_PHY_FULLD_ON (1<<4) /* Enable GMII Full Duplex */ | ||
259 | #define SK_PHY_FULLD_OFF (1<<5) /* Disable GMII Full Duplex */ | ||
260 | |||
261 | /* States of PState */ | ||
262 | #define SK_PRT_RESET 0 /* the port is reset */ | ||
263 | #define SK_PRT_STOP 1 /* the port is stopped (similar to SW reset) */ | ||
264 | #define SK_PRT_INIT 2 /* the port is initialized */ | ||
265 | #define SK_PRT_RUN 3 /* the port has an active link */ | ||
266 | |||
267 | /* PHY power down modes */ | ||
268 | #define PHY_PM_OPERATIONAL_MODE 0 /* PHY operational mode */ | ||
269 | #define PHY_PM_DEEP_SLEEP 1 /* coma mode --> minimal power */ | ||
270 | #define PHY_PM_IEEE_POWER_DOWN 2 /* IEEE 22.2.4.1.5 compl. power down */ | ||
271 | #define PHY_PM_ENERGY_DETECT 3 /* energy detect */ | ||
272 | #define PHY_PM_ENERGY_DETECT_PLUS 4 /* energy detect plus */ | ||
273 | |||
274 | /* Default receive frame limit for Workaround of XMAC Errata */ | ||
275 | #define SK_DEF_RX_WA_LIM SK_CONSTU64(100) | ||
276 | |||
277 | /* values for GILedBlinkCtrl (LED Blink Control) */ | ||
278 | #define SK_ACT_LED_BLINK (1<<0) /* Active LED blinking */ | ||
279 | #define SK_DUP_LED_NORMAL (1<<1) /* Duplex LED normal */ | ||
280 | #define SK_LED_LINK100_ON (1<<2) /* Link 100M LED on */ | ||
281 | |||
282 | /* Link Partner Status */ | ||
283 | #define SK_LIPA_UNKNOWN 0 /* Link partner is in unknown state */ | ||
284 | #define SK_LIPA_MANUAL 1 /* Link partner is in detected manual state */ | ||
285 | #define SK_LIPA_AUTO 2 /* Link partner is in auto-negotiation state */ | ||
286 | |||
287 | /* Maximum Restarts before restart is ignored (3Com WA) */ | ||
288 | #define SK_MAX_LRESTART 3 /* Max. 3 times the link is restarted */ | ||
289 | |||
290 | /* Max. Auto-neg. timeouts before link detection in sense mode is reset */ | ||
291 | #define SK_MAX_ANEG_TO 10 /* Max. 10 times the sense mode is reset */ | ||
292 | |||
293 | /* structures *****************************************************************/ | ||
294 | |||
295 | /* | ||
296 | * MAC specific functions | ||
297 | */ | ||
298 | typedef struct s_GeMacFunc { | ||
299 | int (*pFnMacUpdateStats)(SK_AC *pAC, SK_IOC IoC, unsigned int Port); | ||
300 | int (*pFnMacStatistic)(SK_AC *pAC, SK_IOC IoC, unsigned int Port, | ||
301 | SK_U16 StatAddr, SK_U32 SK_FAR *pVal); | ||
302 | int (*pFnMacResetCounter)(SK_AC *pAC, SK_IOC IoC, unsigned int Port); | ||
303 | int (*pFnMacOverflow)(SK_AC *pAC, SK_IOC IoC, unsigned int Port, | ||
304 | SK_U16 IStatus, SK_U64 SK_FAR *pVal); | ||
305 | } SK_GEMACFUNC; | ||
306 | |||
307 | /* | ||
308 | * Port Structure | ||
309 | */ | ||
310 | typedef struct s_GePort { | ||
311 | #ifndef SK_DIAG | ||
312 | SK_TIMER PWaTimer; /* Workaround Timer */ | ||
313 | SK_TIMER HalfDupChkTimer; | ||
314 | #endif /* SK_DIAG */ | ||
315 | SK_U32 PPrevShorts; /* Previous Short Counter checking */ | ||
316 | SK_U32 PPrevFcs; /* Previous FCS Error Counter checking */ | ||
317 | SK_U64 PPrevRx; /* Previous RxOk Counter checking */ | ||
318 | SK_U64 PRxLim; /* Previous RxOk Counter checking */ | ||
319 | SK_U64 LastOctets; /* For half duplex hang check */ | ||
320 | int PLinkResCt; /* Link Restart Counter */ | ||
321 | int PAutoNegTimeOut;/* Auto-negotiation timeout current value */ | ||
322 | int PAutoNegTOCt; /* Auto-negotiation Timeout Counter */ | ||
323 | int PRxQSize; /* Port Rx Queue Size in kB */ | ||
324 | int PXSQSize; /* Port Synchronous Transmit Queue Size in kB */ | ||
325 | int PXAQSize; /* Port Asynchronous Transmit Queue Size in kB */ | ||
326 | SK_U32 PRxQRamStart; /* Receive Queue RAM Buffer Start Address */ | ||
327 | SK_U32 PRxQRamEnd; /* Receive Queue RAM Buffer End Address */ | ||
328 | SK_U32 PXsQRamStart; /* Sync Tx Queue RAM Buffer Start Address */ | ||
329 | SK_U32 PXsQRamEnd; /* Sync Tx Queue RAM Buffer End Address */ | ||
330 | SK_U32 PXaQRamStart; /* Async Tx Queue RAM Buffer Start Address */ | ||
331 | SK_U32 PXaQRamEnd; /* Async Tx Queue RAM Buffer End Address */ | ||
332 | SK_U32 PRxOverCnt; /* Receive Overflow Counter */ | ||
333 | int PRxQOff; /* Rx Queue Address Offset */ | ||
334 | int PXsQOff; /* Synchronous Tx Queue Address Offset */ | ||
335 | int PXaQOff; /* Asynchronous Tx Queue Address Offset */ | ||
336 | int PhyType; /* PHY used on this port */ | ||
337 | int PState; /* Port status (reset, stop, init, run) */ | ||
338 | SK_U16 PhyId1; /* PHY Id1 on this port */ | ||
339 | SK_U16 PhyAddr; /* MDIO/MDC PHY address */ | ||
340 | SK_U16 PIsave; /* Saved Interrupt status word */ | ||
341 | SK_U16 PSsave; /* Saved PHY status word */ | ||
342 | SK_U16 PGmANegAdv; /* Saved GPhy AutoNegAdvertisment register */ | ||
343 | SK_BOOL PHWLinkUp; /* The hardware Link is up (wiring) */ | ||
344 | SK_BOOL PLinkBroken; /* Is Link broken ? */ | ||
345 | SK_BOOL PCheckPar; /* Do we check for parity errors ? */ | ||
346 | SK_BOOL HalfDupTimerActive; | ||
347 | SK_U8 PLinkCap; /* Link Capabilities */ | ||
348 | SK_U8 PLinkModeConf; /* Link Mode configured */ | ||
349 | SK_U8 PLinkMode; /* Link Mode currently used */ | ||
350 | SK_U8 PLinkModeStatus;/* Link Mode Status */ | ||
351 | SK_U8 PLinkSpeedCap; /* Link Speed Capabilities(10/100/1000 Mbps) */ | ||
352 | SK_U8 PLinkSpeed; /* configured Link Speed (10/100/1000 Mbps) */ | ||
353 | SK_U8 PLinkSpeedUsed; /* current Link Speed (10/100/1000 Mbps) */ | ||
354 | SK_U8 PFlowCtrlCap; /* Flow Control Capabilities */ | ||
355 | SK_U8 PFlowCtrlMode; /* Flow Control Mode */ | ||
356 | SK_U8 PFlowCtrlStatus;/* Flow Control Status */ | ||
357 | SK_U8 PMSCap; /* Master/Slave Capabilities */ | ||
358 | SK_U8 PMSMode; /* Master/Slave Mode */ | ||
359 | SK_U8 PMSStatus; /* Master/Slave Status */ | ||
360 | SK_BOOL PAutoNegFail; /* Auto-negotiation fail flag */ | ||
361 | SK_U8 PLipaAutoNeg; /* Auto-negotiation possible with Link Partner */ | ||
362 | SK_U8 PCableLen; /* Cable Length */ | ||
363 | SK_U8 PMdiPairLen[4]; /* MDI[0..3] Pair Length */ | ||
364 | SK_U8 PMdiPairSts[4]; /* MDI[0..3] Pair Diagnostic Status */ | ||
365 | SK_U8 PPhyPowerState; /* PHY current power state */ | ||
366 | int PMacColThres; /* MAC Collision Threshold */ | ||
367 | int PMacJamLen; /* MAC Jam length */ | ||
368 | int PMacJamIpgVal; /* MAC Jam IPG */ | ||
369 | int PMacJamIpgData; /* MAC IPG Jam to Data */ | ||
370 | int PMacIpgData; /* MAC Data IPG */ | ||
371 | SK_BOOL PMacLimit4; /* reset collision counter and backoff algorithm */ | ||
372 | } SK_GEPORT; | ||
373 | |||
374 | /* | ||
375 | * Gigabit Ethernet Initialization Struct | ||
376 | * (has to be included in the adapter context) | ||
377 | */ | ||
378 | typedef struct s_GeInit { | ||
379 | int GIChipId; /* Chip Identification Number */ | ||
380 | int GIChipRev; /* Chip Revision Number */ | ||
381 | SK_U8 GIPciHwRev; /* PCI HW Revision Number */ | ||
382 | SK_BOOL GIGenesis; /* Genesis adapter ? */ | ||
383 | SK_BOOL GIYukon; /* YUKON-A1/Bx chip */ | ||
384 | SK_BOOL GIYukonLite; /* YUKON-Lite chip */ | ||
385 | SK_BOOL GICopperType; /* Copper Type adapter ? */ | ||
386 | SK_BOOL GIPciSlot64; /* 64-bit PCI Slot */ | ||
387 | SK_BOOL GIPciClock66; /* 66 MHz PCI Clock */ | ||
388 | SK_BOOL GIVauxAvail; /* VAUX available (YUKON) */ | ||
389 | SK_BOOL GIYukon32Bit; /* 32-Bit YUKON adapter */ | ||
390 | SK_U16 GILedBlinkCtrl; /* LED Blink Control */ | ||
391 | int GIMacsFound; /* Number of MACs found on this adapter */ | ||
392 | int GIMacType; /* MAC Type used on this adapter */ | ||
393 | int GIHstClkFact; /* Host Clock Factor (62.5 / HstClk * 100) */ | ||
394 | int GIPortUsage; /* Driver Port Usage */ | ||
395 | int GILevel; /* Initialization Level completed */ | ||
396 | int GIRamSize; /* The RAM size of the adapter in kB */ | ||
397 | int GIWolOffs; /* WOL Register Offset (HW-Bug in Rev. A) */ | ||
398 | SK_U32 GIRamOffs; /* RAM Address Offset for addr calculation */ | ||
399 | SK_U32 GIPollTimerVal; /* Descr. Poll Timer Init Val (HstClk ticks) */ | ||
400 | SK_U32 GIValIrqMask; /* Value for Interrupt Mask */ | ||
401 | SK_U32 GITimeStampCnt; /* Time Stamp High Counter (YUKON only) */ | ||
402 | SK_GEPORT GP[SK_MAX_MACS];/* Port Dependent Information */ | ||
403 | SK_GEMACFUNC GIFunc; /* MAC depedent functions */ | ||
404 | } SK_GEINIT; | ||
405 | |||
406 | /* | ||
407 | * Error numbers and messages for skxmac2.c and skgeinit.c | ||
408 | */ | ||
409 | #define SKERR_HWI_E001 (SK_ERRBASE_HWINIT) | ||
410 | #define SKERR_HWI_E001MSG "SkXmClrExactAddr() has got illegal parameters" | ||
411 | #define SKERR_HWI_E002 (SKERR_HWI_E001+1) | ||
412 | #define SKERR_HWI_E002MSG "SkGeInit(): Level 1 call missing" | ||
413 | #define SKERR_HWI_E003 (SKERR_HWI_E002+1) | ||
414 | #define SKERR_HWI_E003MSG "SkGeInit() called with illegal init Level" | ||
415 | #define SKERR_HWI_E004 (SKERR_HWI_E003+1) | ||
416 | #define SKERR_HWI_E004MSG "SkGeInitPort(): Queue Size illegal configured" | ||
417 | #define SKERR_HWI_E005 (SKERR_HWI_E004+1) | ||
418 | #define SKERR_HWI_E005MSG "SkGeInitPort(): cannot init running ports" | ||
419 | #define SKERR_HWI_E006 (SKERR_HWI_E005+1) | ||
420 | #define SKERR_HWI_E006MSG "SkGeMacInit(): PState does not match HW state" | ||
421 | #define SKERR_HWI_E007 (SKERR_HWI_E006+1) | ||
422 | #define SKERR_HWI_E007MSG "SkXmInitDupMd() called with invalid Dup Mode" | ||
423 | #define SKERR_HWI_E008 (SKERR_HWI_E007+1) | ||
424 | #define SKERR_HWI_E008MSG "SkXmSetRxCmd() called with invalid Mode" | ||
425 | #define SKERR_HWI_E009 (SKERR_HWI_E008+1) | ||
426 | #define SKERR_HWI_E009MSG "SkGeCfgSync() called although PXSQSize zero" | ||
427 | #define SKERR_HWI_E010 (SKERR_HWI_E009+1) | ||
428 | #define SKERR_HWI_E010MSG "SkGeCfgSync() called with invalid parameters" | ||
429 | #define SKERR_HWI_E011 (SKERR_HWI_E010+1) | ||
430 | #define SKERR_HWI_E011MSG "SkGeInitPort(): Receive Queue Size too small" | ||
431 | #define SKERR_HWI_E012 (SKERR_HWI_E011+1) | ||
432 | #define SKERR_HWI_E012MSG "SkGeInitPort(): invalid Queue Size specified" | ||
433 | #define SKERR_HWI_E013 (SKERR_HWI_E012+1) | ||
434 | #define SKERR_HWI_E013MSG "SkGeInitPort(): cfg changed for running queue" | ||
435 | #define SKERR_HWI_E014 (SKERR_HWI_E013+1) | ||
436 | #define SKERR_HWI_E014MSG "SkGeInitPort(): unknown GIPortUsage specified" | ||
437 | #define SKERR_HWI_E015 (SKERR_HWI_E014+1) | ||
438 | #define SKERR_HWI_E015MSG "Illegal Link mode parameter" | ||
439 | #define SKERR_HWI_E016 (SKERR_HWI_E015+1) | ||
440 | #define SKERR_HWI_E016MSG "Illegal Flow control mode parameter" | ||
441 | #define SKERR_HWI_E017 (SKERR_HWI_E016+1) | ||
442 | #define SKERR_HWI_E017MSG "Illegal value specified for GIPollTimerVal" | ||
443 | #define SKERR_HWI_E018 (SKERR_HWI_E017+1) | ||
444 | #define SKERR_HWI_E018MSG "FATAL: SkGeStopPort() does not terminate (Tx)" | ||
445 | #define SKERR_HWI_E019 (SKERR_HWI_E018+1) | ||
446 | #define SKERR_HWI_E019MSG "Illegal Speed parameter" | ||
447 | #define SKERR_HWI_E020 (SKERR_HWI_E019+1) | ||
448 | #define SKERR_HWI_E020MSG "Illegal Master/Slave parameter" | ||
449 | #define SKERR_HWI_E021 (SKERR_HWI_E020+1) | ||
450 | #define SKERR_HWI_E021MSG "MacUpdateStats(): cannot update statistic counter" | ||
451 | #define SKERR_HWI_E022 (SKERR_HWI_E021+1) | ||
452 | #define SKERR_HWI_E022MSG "MacStatistic(): illegal statistic base address" | ||
453 | #define SKERR_HWI_E023 (SKERR_HWI_E022+1) | ||
454 | #define SKERR_HWI_E023MSG "SkGeInitPort(): Transmit Queue Size too small" | ||
455 | #define SKERR_HWI_E024 (SKERR_HWI_E023+1) | ||
456 | #define SKERR_HWI_E024MSG "FATAL: SkGeStopPort() does not terminate (Rx)" | ||
457 | #define SKERR_HWI_E025 (SKERR_HWI_E024+1) | ||
458 | #define SKERR_HWI_E025MSG "" | ||
459 | |||
460 | /* function prototypes ********************************************************/ | ||
461 | |||
462 | #ifndef SK_KR_PROTO | ||
463 | |||
464 | /* | ||
465 | * public functions in skgeinit.c | ||
466 | */ | ||
467 | extern void SkGePollRxD( | ||
468 | SK_AC *pAC, | ||
469 | SK_IOC IoC, | ||
470 | int Port, | ||
471 | SK_BOOL PollRxD); | ||
472 | |||
473 | extern void SkGePollTxD( | ||
474 | SK_AC *pAC, | ||
475 | SK_IOC IoC, | ||
476 | int Port, | ||
477 | SK_BOOL PollTxD); | ||
478 | |||
479 | extern void SkGeYellowLED( | ||
480 | SK_AC *pAC, | ||
481 | SK_IOC IoC, | ||
482 | int State); | ||
483 | |||
484 | extern int SkGeCfgSync( | ||
485 | SK_AC *pAC, | ||
486 | SK_IOC IoC, | ||
487 | int Port, | ||
488 | SK_U32 IntTime, | ||
489 | SK_U32 LimCount, | ||
490 | int SyncMode); | ||
491 | |||
492 | extern void SkGeLoadLnkSyncCnt( | ||
493 | SK_AC *pAC, | ||
494 | SK_IOC IoC, | ||
495 | int Port, | ||
496 | SK_U32 CntVal); | ||
497 | |||
498 | extern void SkGeStopPort( | ||
499 | SK_AC *pAC, | ||
500 | SK_IOC IoC, | ||
501 | int Port, | ||
502 | int Dir, | ||
503 | int RstMode); | ||
504 | |||
505 | extern int SkGeInit( | ||
506 | SK_AC *pAC, | ||
507 | SK_IOC IoC, | ||
508 | int Level); | ||
509 | |||
510 | extern void SkGeDeInit( | ||
511 | SK_AC *pAC, | ||
512 | SK_IOC IoC); | ||
513 | |||
514 | extern int SkGeInitPort( | ||
515 | SK_AC *pAC, | ||
516 | SK_IOC IoC, | ||
517 | int Port); | ||
518 | |||
519 | extern void SkGeXmitLED( | ||
520 | SK_AC *pAC, | ||
521 | SK_IOC IoC, | ||
522 | int Led, | ||
523 | int Mode); | ||
524 | |||
525 | extern void SkGeInitRamIface( | ||
526 | SK_AC *pAC, | ||
527 | SK_IOC IoC); | ||
528 | |||
529 | extern int SkGeInitAssignRamToQueues( | ||
530 | SK_AC *pAC, | ||
531 | int ActivePort, | ||
532 | SK_BOOL DualNet); | ||
533 | |||
534 | /* | ||
535 | * public functions in skxmac2.c | ||
536 | */ | ||
537 | extern void SkMacRxTxDisable( | ||
538 | SK_AC *pAC, | ||
539 | SK_IOC IoC, | ||
540 | int Port); | ||
541 | |||
542 | extern void SkMacSoftRst( | ||
543 | SK_AC *pAC, | ||
544 | SK_IOC IoC, | ||
545 | int Port); | ||
546 | |||
547 | extern void SkMacHardRst( | ||
548 | SK_AC *pAC, | ||
549 | SK_IOC IoC, | ||
550 | int Port); | ||
551 | |||
552 | extern void SkMacClearRst( | ||
553 | SK_AC *pAC, | ||
554 | SK_IOC IoC, | ||
555 | int Port); | ||
556 | |||
557 | extern void SkXmInitMac( | ||
558 | SK_AC *pAC, | ||
559 | SK_IOC IoC, | ||
560 | int Port); | ||
561 | |||
562 | extern void SkGmInitMac( | ||
563 | SK_AC *pAC, | ||
564 | SK_IOC IoC, | ||
565 | int Port); | ||
566 | |||
567 | extern void SkMacInitPhy( | ||
568 | SK_AC *pAC, | ||
569 | SK_IOC IoC, | ||
570 | int Port, | ||
571 | SK_BOOL DoLoop); | ||
572 | |||
573 | extern void SkMacIrqDisable( | ||
574 | SK_AC *pAC, | ||
575 | SK_IOC IoC, | ||
576 | int Port); | ||
577 | |||
578 | extern void SkMacFlushTxFifo( | ||
579 | SK_AC *pAC, | ||
580 | SK_IOC IoC, | ||
581 | int Port); | ||
582 | |||
583 | extern void SkMacFlushRxFifo( | ||
584 | SK_AC *pAC, | ||
585 | SK_IOC IoC, | ||
586 | int Port); | ||
587 | |||
588 | extern void SkMacIrq( | ||
589 | SK_AC *pAC, | ||
590 | SK_IOC IoC, | ||
591 | int Port); | ||
592 | |||
593 | extern int SkMacAutoNegDone( | ||
594 | SK_AC *pAC, | ||
595 | SK_IOC IoC, | ||
596 | int Port); | ||
597 | |||
598 | extern void SkMacAutoNegLipaPhy( | ||
599 | SK_AC *pAC, | ||
600 | SK_IOC IoC, | ||
601 | int Port, | ||
602 | SK_U16 IStatus); | ||
603 | |||
604 | extern void SkMacSetRxTxEn( | ||
605 | SK_AC *pAC, | ||
606 | SK_IOC IoC, | ||
607 | int Port, | ||
608 | int Para); | ||
609 | |||
610 | extern int SkMacRxTxEnable( | ||
611 | SK_AC *pAC, | ||
612 | SK_IOC IoC, | ||
613 | int Port); | ||
614 | |||
615 | extern void SkMacPromiscMode( | ||
616 | SK_AC *pAC, | ||
617 | SK_IOC IoC, | ||
618 | int Port, | ||
619 | SK_BOOL Enable); | ||
620 | |||
621 | extern void SkMacHashing( | ||
622 | SK_AC *pAC, | ||
623 | SK_IOC IoC, | ||
624 | int Port, | ||
625 | SK_BOOL Enable); | ||
626 | |||
627 | extern void SkXmPhyRead( | ||
628 | SK_AC *pAC, | ||
629 | SK_IOC IoC, | ||
630 | int Port, | ||
631 | int Addr, | ||
632 | SK_U16 SK_FAR *pVal); | ||
633 | |||
634 | extern void SkXmPhyWrite( | ||
635 | SK_AC *pAC, | ||
636 | SK_IOC IoC, | ||
637 | int Port, | ||
638 | int Addr, | ||
639 | SK_U16 Val); | ||
640 | |||
641 | extern void SkGmPhyRead( | ||
642 | SK_AC *pAC, | ||
643 | SK_IOC IoC, | ||
644 | int Port, | ||
645 | int Addr, | ||
646 | SK_U16 SK_FAR *pVal); | ||
647 | |||
648 | extern void SkGmPhyWrite( | ||
649 | SK_AC *pAC, | ||
650 | SK_IOC IoC, | ||
651 | int Port, | ||
652 | int Addr, | ||
653 | SK_U16 Val); | ||
654 | |||
655 | extern void SkXmClrExactAddr( | ||
656 | SK_AC *pAC, | ||
657 | SK_IOC IoC, | ||
658 | int Port, | ||
659 | int StartNum, | ||
660 | int StopNum); | ||
661 | |||
662 | extern void SkXmInitDupMd( | ||
663 | SK_AC *pAC, | ||
664 | SK_IOC IoC, | ||
665 | int Port); | ||
666 | |||
667 | extern void SkXmInitPauseMd( | ||
668 | SK_AC *pAC, | ||
669 | SK_IOC IoC, | ||
670 | int Port); | ||
671 | |||
672 | extern void SkXmAutoNegLipaXmac( | ||
673 | SK_AC *pAC, | ||
674 | SK_IOC IoC, | ||
675 | int Port, | ||
676 | SK_U16 IStatus); | ||
677 | |||
678 | extern int SkXmUpdateStats( | ||
679 | SK_AC *pAC, | ||
680 | SK_IOC IoC, | ||
681 | unsigned int Port); | ||
682 | |||
683 | extern int SkGmUpdateStats( | ||
684 | SK_AC *pAC, | ||
685 | SK_IOC IoC, | ||
686 | unsigned int Port); | ||
687 | |||
688 | extern int SkXmMacStatistic( | ||
689 | SK_AC *pAC, | ||
690 | SK_IOC IoC, | ||
691 | unsigned int Port, | ||
692 | SK_U16 StatAddr, | ||
693 | SK_U32 SK_FAR *pVal); | ||
694 | |||
695 | extern int SkGmMacStatistic( | ||
696 | SK_AC *pAC, | ||
697 | SK_IOC IoC, | ||
698 | unsigned int Port, | ||
699 | SK_U16 StatAddr, | ||
700 | SK_U32 SK_FAR *pVal); | ||
701 | |||
702 | extern int SkXmResetCounter( | ||
703 | SK_AC *pAC, | ||
704 | SK_IOC IoC, | ||
705 | unsigned int Port); | ||
706 | |||
707 | extern int SkGmResetCounter( | ||
708 | SK_AC *pAC, | ||
709 | SK_IOC IoC, | ||
710 | unsigned int Port); | ||
711 | |||
712 | extern int SkXmOverflowStatus( | ||
713 | SK_AC *pAC, | ||
714 | SK_IOC IoC, | ||
715 | unsigned int Port, | ||
716 | SK_U16 IStatus, | ||
717 | SK_U64 SK_FAR *pStatus); | ||
718 | |||
719 | extern int SkGmOverflowStatus( | ||
720 | SK_AC *pAC, | ||
721 | SK_IOC IoC, | ||
722 | unsigned int Port, | ||
723 | SK_U16 MacStatus, | ||
724 | SK_U64 SK_FAR *pStatus); | ||
725 | |||
726 | extern int SkGmCableDiagStatus( | ||
727 | SK_AC *pAC, | ||
728 | SK_IOC IoC, | ||
729 | int Port, | ||
730 | SK_BOOL StartTest); | ||
731 | |||
732 | extern int SkGmEnterLowPowerMode( | ||
733 | SK_AC *pAC, | ||
734 | SK_IOC IoC, | ||
735 | int Port, | ||
736 | SK_U8 Mode); | ||
737 | |||
738 | extern int SkGmLeaveLowPowerMode( | ||
739 | SK_AC *pAC, | ||
740 | SK_IOC IoC, | ||
741 | int Port); | ||
742 | |||
743 | #ifdef SK_DIAG | ||
744 | extern void SkGePhyRead( | ||
745 | SK_AC *pAC, | ||
746 | SK_IOC IoC, | ||
747 | int Port, | ||
748 | int Addr, | ||
749 | SK_U16 *pVal); | ||
750 | |||
751 | extern void SkGePhyWrite( | ||
752 | SK_AC *pAC, | ||
753 | SK_IOC IoC, | ||
754 | int Port, | ||
755 | int Addr, | ||
756 | SK_U16 Val); | ||
757 | |||
758 | extern void SkMacSetRxCmd( | ||
759 | SK_AC *pAC, | ||
760 | SK_IOC IoC, | ||
761 | int Port, | ||
762 | int Mode); | ||
763 | extern void SkMacCrcGener( | ||
764 | SK_AC *pAC, | ||
765 | SK_IOC IoC, | ||
766 | int Port, | ||
767 | SK_BOOL Enable); | ||
768 | extern void SkMacTimeStamp( | ||
769 | SK_AC *pAC, | ||
770 | SK_IOC IoC, | ||
771 | int Port, | ||
772 | SK_BOOL Enable); | ||
773 | extern void SkXmSendCont( | ||
774 | SK_AC *pAC, | ||
775 | SK_IOC IoC, | ||
776 | int Port, | ||
777 | SK_BOOL Enable); | ||
778 | #endif /* SK_DIAG */ | ||
779 | |||
780 | #else /* SK_KR_PROTO */ | ||
781 | |||
782 | /* | ||
783 | * public functions in skgeinit.c | ||
784 | */ | ||
785 | extern void SkGePollRxD(); | ||
786 | extern void SkGePollTxD(); | ||
787 | extern void SkGeYellowLED(); | ||
788 | extern int SkGeCfgSync(); | ||
789 | extern void SkGeLoadLnkSyncCnt(); | ||
790 | extern void SkGeStopPort(); | ||
791 | extern int SkGeInit(); | ||
792 | extern void SkGeDeInit(); | ||
793 | extern int SkGeInitPort(); | ||
794 | extern void SkGeXmitLED(); | ||
795 | extern void SkGeInitRamIface(); | ||
796 | extern int SkGeInitAssignRamToQueues(); | ||
797 | |||
798 | /* | ||
799 | * public functions in skxmac2.c | ||
800 | */ | ||
801 | extern void SkMacRxTxDisable(); | ||
802 | extern void SkMacSoftRst(); | ||
803 | extern void SkMacHardRst(); | ||
804 | extern void SkMacClearRst(); | ||
805 | extern void SkMacInitPhy(); | ||
806 | extern int SkMacRxTxEnable(); | ||
807 | extern void SkMacPromiscMode(); | ||
808 | extern void SkMacHashing(); | ||
809 | extern void SkMacIrqDisable(); | ||
810 | extern void SkMacFlushTxFifo(); | ||
811 | extern void SkMacFlushRxFifo(); | ||
812 | extern void SkMacIrq(); | ||
813 | extern int SkMacAutoNegDone(); | ||
814 | extern void SkMacAutoNegLipaPhy(); | ||
815 | extern void SkMacSetRxTxEn(); | ||
816 | extern void SkXmInitMac(); | ||
817 | extern void SkXmPhyRead(); | ||
818 | extern void SkXmPhyWrite(); | ||
819 | extern void SkGmInitMac(); | ||
820 | extern void SkGmPhyRead(); | ||
821 | extern void SkGmPhyWrite(); | ||
822 | extern void SkXmClrExactAddr(); | ||
823 | extern void SkXmInitDupMd(); | ||
824 | extern void SkXmInitPauseMd(); | ||
825 | extern void SkXmAutoNegLipaXmac(); | ||
826 | extern int SkXmUpdateStats(); | ||
827 | extern int SkGmUpdateStats(); | ||
828 | extern int SkXmMacStatistic(); | ||
829 | extern int SkGmMacStatistic(); | ||
830 | extern int SkXmResetCounter(); | ||
831 | extern int SkGmResetCounter(); | ||
832 | extern int SkXmOverflowStatus(); | ||
833 | extern int SkGmOverflowStatus(); | ||
834 | extern int SkGmCableDiagStatus(); | ||
835 | extern int SkGmEnterLowPowerMode(); | ||
836 | extern int SkGmLeaveLowPowerMode(); | ||
837 | |||
838 | #ifdef SK_DIAG | ||
839 | extern void SkGePhyRead(); | ||
840 | extern void SkGePhyWrite(); | ||
841 | extern void SkMacSetRxCmd(); | ||
842 | extern void SkMacCrcGener(); | ||
843 | extern void SkMacTimeStamp(); | ||
844 | extern void SkXmSendCont(); | ||
845 | #endif /* SK_DIAG */ | ||
846 | |||
847 | #endif /* SK_KR_PROTO */ | ||
848 | |||
849 | #ifdef __cplusplus | ||
850 | } | ||
851 | #endif /* __cplusplus */ | ||
852 | |||
853 | #endif /* __INC_SKGEINIT_H_ */ | ||
diff --git a/drivers/net/sk98lin/h/skgepnm2.h b/drivers/net/sk98lin/h/skgepnm2.h new file mode 100644 index 000000000000..ddd304f1a48b --- /dev/null +++ b/drivers/net/sk98lin/h/skgepnm2.h | |||
@@ -0,0 +1,334 @@ | |||
1 | /***************************************************************************** | ||
2 | * | ||
3 | * Name: skgepnm2.h | ||
4 | * Project: GEnesis, PCI Gigabit Ethernet Adapter | ||
5 | * Version: $Revision: 1.36 $ | ||
6 | * Date: $Date: 2003/05/23 12:45:13 $ | ||
7 | * Purpose: Defines for Private Network Management Interface | ||
8 | * | ||
9 | ****************************************************************************/ | ||
10 | |||
11 | /****************************************************************************** | ||
12 | * | ||
13 | * (C)Copyright 1998-2002 SysKonnect GmbH. | ||
14 | * (C)Copyright 2002-2003 Marvell. | ||
15 | * | ||
16 | * This program is free software; you can redistribute it and/or modify | ||
17 | * it under the terms of the GNU General Public License as published by | ||
18 | * the Free Software Foundation; either version 2 of the License, or | ||
19 | * (at your option) any later version. | ||
20 | * | ||
21 | * The information in this file is provided "AS IS" without warranty. | ||
22 | * | ||
23 | ******************************************************************************/ | ||
24 | |||
25 | #ifndef _SKGEPNM2_H_ | ||
26 | #define _SKGEPNM2_H_ | ||
27 | |||
28 | /* | ||
29 | * General definitions | ||
30 | */ | ||
31 | #define SK_PNMI_CHIPSET_XMAC 1 /* XMAC11800FP */ | ||
32 | #define SK_PNMI_CHIPSET_YUKON 2 /* YUKON */ | ||
33 | |||
34 | #define SK_PNMI_BUS_PCI 1 /* PCI bus*/ | ||
35 | |||
36 | /* | ||
37 | * Actions | ||
38 | */ | ||
39 | #define SK_PNMI_ACT_IDLE 1 | ||
40 | #define SK_PNMI_ACT_RESET 2 | ||
41 | #define SK_PNMI_ACT_SELFTEST 3 | ||
42 | #define SK_PNMI_ACT_RESETCNT 4 | ||
43 | |||
44 | /* | ||
45 | * VPD releated defines | ||
46 | */ | ||
47 | |||
48 | #define SK_PNMI_VPD_RW 1 | ||
49 | #define SK_PNMI_VPD_RO 2 | ||
50 | |||
51 | #define SK_PNMI_VPD_OK 0 | ||
52 | #define SK_PNMI_VPD_NOTFOUND 1 | ||
53 | #define SK_PNMI_VPD_CUT 2 | ||
54 | #define SK_PNMI_VPD_TIMEOUT 3 | ||
55 | #define SK_PNMI_VPD_FULL 4 | ||
56 | #define SK_PNMI_VPD_NOWRITE 5 | ||
57 | #define SK_PNMI_VPD_FATAL 6 | ||
58 | |||
59 | #define SK_PNMI_VPD_IGNORE 0 | ||
60 | #define SK_PNMI_VPD_CREATE 1 | ||
61 | #define SK_PNMI_VPD_DELETE 2 | ||
62 | |||
63 | |||
64 | /* | ||
65 | * RLMT related defines | ||
66 | */ | ||
67 | #define SK_PNMI_DEF_RLMT_CHG_THRES 240 /* 4 changes per minute */ | ||
68 | |||
69 | |||
70 | /* | ||
71 | * VCT internal status values | ||
72 | */ | ||
73 | #define SK_PNMI_VCT_PENDING 32 | ||
74 | #define SK_PNMI_VCT_TEST_DONE 64 | ||
75 | #define SK_PNMI_VCT_LINK 128 | ||
76 | |||
77 | /* | ||
78 | * Internal table definitions | ||
79 | */ | ||
80 | #define SK_PNMI_GET 0 | ||
81 | #define SK_PNMI_PRESET 1 | ||
82 | #define SK_PNMI_SET 2 | ||
83 | |||
84 | #define SK_PNMI_RO 0 | ||
85 | #define SK_PNMI_RW 1 | ||
86 | #define SK_PNMI_WO 2 | ||
87 | |||
88 | typedef struct s_OidTabEntry { | ||
89 | SK_U32 Id; | ||
90 | SK_U32 InstanceNo; | ||
91 | unsigned int StructSize; | ||
92 | unsigned int Offset; | ||
93 | int Access; | ||
94 | int (* Func)(SK_AC *pAc, SK_IOC pIo, int action, | ||
95 | SK_U32 Id, char* pBuf, unsigned int* pLen, | ||
96 | SK_U32 Instance, unsigned int TableIndex, | ||
97 | SK_U32 NetNumber); | ||
98 | SK_U16 Param; | ||
99 | } SK_PNMI_TAB_ENTRY; | ||
100 | |||
101 | |||
102 | /* | ||
103 | * Trap lengths | ||
104 | */ | ||
105 | #define SK_PNMI_TRAP_SIMPLE_LEN 17 | ||
106 | #define SK_PNMI_TRAP_SENSOR_LEN_BASE 46 | ||
107 | #define SK_PNMI_TRAP_RLMT_CHANGE_LEN 23 | ||
108 | #define SK_PNMI_TRAP_RLMT_PORT_LEN 23 | ||
109 | |||
110 | /* | ||
111 | * Number of MAC types supported | ||
112 | */ | ||
113 | #define SK_PNMI_MAC_TYPES (SK_MAC_GMAC + 1) | ||
114 | |||
115 | /* | ||
116 | * MAC statistic data list (overall set for MAC types used) | ||
117 | */ | ||
118 | enum SK_MACSTATS { | ||
119 | SK_PNMI_HTX = 0, | ||
120 | SK_PNMI_HTX_OCTET, | ||
121 | SK_PNMI_HTX_OCTETHIGH = SK_PNMI_HTX_OCTET, | ||
122 | SK_PNMI_HTX_OCTETLOW, | ||
123 | SK_PNMI_HTX_BROADCAST, | ||
124 | SK_PNMI_HTX_MULTICAST, | ||
125 | SK_PNMI_HTX_UNICAST, | ||
126 | SK_PNMI_HTX_BURST, | ||
127 | SK_PNMI_HTX_PMACC, | ||
128 | SK_PNMI_HTX_MACC, | ||
129 | SK_PNMI_HTX_COL, | ||
130 | SK_PNMI_HTX_SINGLE_COL, | ||
131 | SK_PNMI_HTX_MULTI_COL, | ||
132 | SK_PNMI_HTX_EXCESS_COL, | ||
133 | SK_PNMI_HTX_LATE_COL, | ||
134 | SK_PNMI_HTX_DEFFERAL, | ||
135 | SK_PNMI_HTX_EXCESS_DEF, | ||
136 | SK_PNMI_HTX_UNDERRUN, | ||
137 | SK_PNMI_HTX_CARRIER, | ||
138 | SK_PNMI_HTX_UTILUNDER, | ||
139 | SK_PNMI_HTX_UTILOVER, | ||
140 | SK_PNMI_HTX_64, | ||
141 | SK_PNMI_HTX_127, | ||
142 | SK_PNMI_HTX_255, | ||
143 | SK_PNMI_HTX_511, | ||
144 | SK_PNMI_HTX_1023, | ||
145 | SK_PNMI_HTX_MAX, | ||
146 | SK_PNMI_HTX_LONGFRAMES, | ||
147 | SK_PNMI_HTX_SYNC, | ||
148 | SK_PNMI_HTX_SYNC_OCTET, | ||
149 | SK_PNMI_HTX_RESERVED, | ||
150 | |||
151 | SK_PNMI_HRX, | ||
152 | SK_PNMI_HRX_OCTET, | ||
153 | SK_PNMI_HRX_OCTETHIGH = SK_PNMI_HRX_OCTET, | ||
154 | SK_PNMI_HRX_OCTETLOW, | ||
155 | SK_PNMI_HRX_BADOCTET, | ||
156 | SK_PNMI_HRX_BADOCTETHIGH = SK_PNMI_HRX_BADOCTET, | ||
157 | SK_PNMI_HRX_BADOCTETLOW, | ||
158 | SK_PNMI_HRX_BROADCAST, | ||
159 | SK_PNMI_HRX_MULTICAST, | ||
160 | SK_PNMI_HRX_UNICAST, | ||
161 | SK_PNMI_HRX_PMACC, | ||
162 | SK_PNMI_HRX_MACC, | ||
163 | SK_PNMI_HRX_PMACC_ERR, | ||
164 | SK_PNMI_HRX_MACC_UNKWN, | ||
165 | SK_PNMI_HRX_BURST, | ||
166 | SK_PNMI_HRX_MISSED, | ||
167 | SK_PNMI_HRX_FRAMING, | ||
168 | SK_PNMI_HRX_UNDERSIZE, | ||
169 | SK_PNMI_HRX_OVERFLOW, | ||
170 | SK_PNMI_HRX_JABBER, | ||
171 | SK_PNMI_HRX_CARRIER, | ||
172 | SK_PNMI_HRX_IRLENGTH, | ||
173 | SK_PNMI_HRX_SYMBOL, | ||
174 | SK_PNMI_HRX_SHORTS, | ||
175 | SK_PNMI_HRX_RUNT, | ||
176 | SK_PNMI_HRX_TOO_LONG, | ||
177 | SK_PNMI_HRX_FCS, | ||
178 | SK_PNMI_HRX_CEXT, | ||
179 | SK_PNMI_HRX_UTILUNDER, | ||
180 | SK_PNMI_HRX_UTILOVER, | ||
181 | SK_PNMI_HRX_64, | ||
182 | SK_PNMI_HRX_127, | ||
183 | SK_PNMI_HRX_255, | ||
184 | SK_PNMI_HRX_511, | ||
185 | SK_PNMI_HRX_1023, | ||
186 | SK_PNMI_HRX_MAX, | ||
187 | SK_PNMI_HRX_LONGFRAMES, | ||
188 | |||
189 | SK_PNMI_HRX_RESERVED, | ||
190 | |||
191 | SK_PNMI_MAX_IDX /* NOTE: Ensure SK_PNMI_CNT_NO is set to this value */ | ||
192 | }; | ||
193 | |||
194 | /* | ||
195 | * MAC specific data | ||
196 | */ | ||
197 | typedef struct s_PnmiStatAddr { | ||
198 | SK_U16 Reg; /* MAC register containing the value */ | ||
199 | SK_BOOL GetOffset; /* TRUE: Offset managed by PNMI (call GetStatVal())*/ | ||
200 | } SK_PNMI_STATADDR; | ||
201 | |||
202 | |||
203 | /* | ||
204 | * SK_PNMI_STRUCT_DATA copy offset evaluation macros | ||
205 | */ | ||
206 | #define SK_PNMI_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_STRUCT_DATA *)0)->e)) | ||
207 | #define SK_PNMI_MAI_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_STRUCT_DATA *)0)->e)) | ||
208 | #define SK_PNMI_VPD_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_VPD *)0)->e)) | ||
209 | #define SK_PNMI_SEN_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_SENSOR *)0)->e)) | ||
210 | #define SK_PNMI_CHK_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_CHECKSUM *)0)->e)) | ||
211 | #define SK_PNMI_STA_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_STAT *)0)->e)) | ||
212 | #define SK_PNMI_CNF_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_CONF *)0)->e)) | ||
213 | #define SK_PNMI_RLM_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_RLMT *)0)->e)) | ||
214 | #define SK_PNMI_MON_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_RLMT_MONITOR *)0)->e)) | ||
215 | #define SK_PNMI_TRP_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_TRAP *)0)->e)) | ||
216 | |||
217 | #define SK_PNMI_SET_STAT(b,s,o) {SK_U32 Val32; char *pVal; \ | ||
218 | Val32 = (s); \ | ||
219 | pVal = (char *)(b) + ((SK_U32)(SK_UPTR) \ | ||
220 | &(((SK_PNMI_STRUCT_DATA *)0)-> \ | ||
221 | ReturnStatus.ErrorStatus)); \ | ||
222 | SK_PNMI_STORE_U32(pVal, Val32); \ | ||
223 | Val32 = (o); \ | ||
224 | pVal = (char *)(b) + ((SK_U32)(SK_UPTR) \ | ||
225 | &(((SK_PNMI_STRUCT_DATA *)0)-> \ | ||
226 | ReturnStatus.ErrorOffset)); \ | ||
227 | SK_PNMI_STORE_U32(pVal, Val32);} | ||
228 | |||
229 | /* | ||
230 | * Time macros | ||
231 | */ | ||
232 | #ifndef SK_PNMI_HUNDREDS_SEC | ||
233 | #if SK_TICKS_PER_SEC == 100 | ||
234 | #define SK_PNMI_HUNDREDS_SEC(t) (t) | ||
235 | #else | ||
236 | #define SK_PNMI_HUNDREDS_SEC(t) (((t) * 100) / (SK_TICKS_PER_SEC)) | ||
237 | #endif /* !SK_TICKS_PER_SEC */ | ||
238 | #endif /* !SK_PNMI_HUNDREDS_SEC */ | ||
239 | |||
240 | /* | ||
241 | * Macros to work around alignment problems | ||
242 | */ | ||
243 | #ifndef SK_PNMI_STORE_U16 | ||
244 | #define SK_PNMI_STORE_U16(p,v) {*(char *)(p) = *((char *)&(v)); \ | ||
245 | *((char *)(p) + 1) = \ | ||
246 | *(((char *)&(v)) + 1);} | ||
247 | #endif | ||
248 | |||
249 | #ifndef SK_PNMI_STORE_U32 | ||
250 | #define SK_PNMI_STORE_U32(p,v) {*(char *)(p) = *((char *)&(v)); \ | ||
251 | *((char *)(p) + 1) = \ | ||
252 | *(((char *)&(v)) + 1); \ | ||
253 | *((char *)(p) + 2) = \ | ||
254 | *(((char *)&(v)) + 2); \ | ||
255 | *((char *)(p) + 3) = \ | ||
256 | *(((char *)&(v)) + 3);} | ||
257 | #endif | ||
258 | |||
259 | #ifndef SK_PNMI_STORE_U64 | ||
260 | #define SK_PNMI_STORE_U64(p,v) {*(char *)(p) = *((char *)&(v)); \ | ||
261 | *((char *)(p) + 1) = \ | ||
262 | *(((char *)&(v)) + 1); \ | ||
263 | *((char *)(p) + 2) = \ | ||
264 | *(((char *)&(v)) + 2); \ | ||
265 | *((char *)(p) + 3) = \ | ||
266 | *(((char *)&(v)) + 3); \ | ||
267 | *((char *)(p) + 4) = \ | ||
268 | *(((char *)&(v)) + 4); \ | ||
269 | *((char *)(p) + 5) = \ | ||
270 | *(((char *)&(v)) + 5); \ | ||
271 | *((char *)(p) + 6) = \ | ||
272 | *(((char *)&(v)) + 6); \ | ||
273 | *((char *)(p) + 7) = \ | ||
274 | *(((char *)&(v)) + 7);} | ||
275 | #endif | ||
276 | |||
277 | #ifndef SK_PNMI_READ_U16 | ||
278 | #define SK_PNMI_READ_U16(p,v) {*((char *)&(v)) = *(char *)(p); \ | ||
279 | *(((char *)&(v)) + 1) = \ | ||
280 | *((char *)(p) + 1);} | ||
281 | #endif | ||
282 | |||
283 | #ifndef SK_PNMI_READ_U32 | ||
284 | #define SK_PNMI_READ_U32(p,v) {*((char *)&(v)) = *(char *)(p); \ | ||
285 | *(((char *)&(v)) + 1) = \ | ||
286 | *((char *)(p) + 1); \ | ||
287 | *(((char *)&(v)) + 2) = \ | ||
288 | *((char *)(p) + 2); \ | ||
289 | *(((char *)&(v)) + 3) = \ | ||
290 | *((char *)(p) + 3);} | ||
291 | #endif | ||
292 | |||
293 | #ifndef SK_PNMI_READ_U64 | ||
294 | #define SK_PNMI_READ_U64(p,v) {*((char *)&(v)) = *(char *)(p); \ | ||
295 | *(((char *)&(v)) + 1) = \ | ||
296 | *((char *)(p) + 1); \ | ||
297 | *(((char *)&(v)) + 2) = \ | ||
298 | *((char *)(p) + 2); \ | ||
299 | *(((char *)&(v)) + 3) = \ | ||
300 | *((char *)(p) + 3); \ | ||
301 | *(((char *)&(v)) + 4) = \ | ||
302 | *((char *)(p) + 4); \ | ||
303 | *(((char *)&(v)) + 5) = \ | ||
304 | *((char *)(p) + 5); \ | ||
305 | *(((char *)&(v)) + 6) = \ | ||
306 | *((char *)(p) + 6); \ | ||
307 | *(((char *)&(v)) + 7) = \ | ||
308 | *((char *)(p) + 7);} | ||
309 | #endif | ||
310 | |||
311 | /* | ||
312 | * Macros for Debug | ||
313 | */ | ||
314 | #ifdef DEBUG | ||
315 | |||
316 | #define SK_PNMI_CHECKFLAGS(vSt) {if (pAC->Pnmi.MacUpdatedFlag > 0 || \ | ||
317 | pAC->Pnmi.RlmtUpdatedFlag > 0 || \ | ||
318 | pAC->Pnmi.SirqUpdatedFlag > 0) { \ | ||
319 | SK_DBG_MSG(pAC, \ | ||
320 | SK_DBGMOD_PNMI, \ | ||
321 | SK_DBGCAT_CTRL, \ | ||
322 | ("PNMI: ERR: %s MacUFlag=%d, RlmtUFlag=%d, SirqUFlag=%d\n", \ | ||
323 | vSt, \ | ||
324 | pAC->Pnmi.MacUpdatedFlag, \ | ||
325 | pAC->Pnmi.RlmtUpdatedFlag, \ | ||
326 | pAC->Pnmi.SirqUpdatedFlag))}} | ||
327 | |||
328 | #else /* !DEBUG */ | ||
329 | |||
330 | #define SK_PNMI_CHECKFLAGS(vSt) /* Nothing */ | ||
331 | |||
332 | #endif /* !DEBUG */ | ||
333 | |||
334 | #endif /* _SKGEPNM2_H_ */ | ||
diff --git a/drivers/net/sk98lin/h/skgepnmi.h b/drivers/net/sk98lin/h/skgepnmi.h new file mode 100644 index 000000000000..3b2773e6f822 --- /dev/null +++ b/drivers/net/sk98lin/h/skgepnmi.h | |||
@@ -0,0 +1,966 @@ | |||
1 | /***************************************************************************** | ||
2 | * | ||
3 | * Name: skgepnmi.h | ||
4 | * Project: GEnesis, PCI Gigabit Ethernet Adapter | ||
5 | * Version: $Revision: 1.62 $ | ||
6 | * Date: $Date: 2003/08/15 12:31:52 $ | ||
7 | * Purpose: Defines for Private Network Management Interface | ||
8 | * | ||
9 | ****************************************************************************/ | ||
10 | |||
11 | /****************************************************************************** | ||
12 | * | ||
13 | * (C)Copyright 1998-2002 SysKonnect GmbH. | ||
14 | * (C)Copyright 2002-2003 Marvell. | ||
15 | * | ||
16 | * This program is free software; you can redistribute it and/or modify | ||
17 | * it under the terms of the GNU General Public License as published by | ||
18 | * the Free Software Foundation; either version 2 of the License, or | ||
19 | * (at your option) any later version. | ||
20 | * | ||
21 | * The information in this file is provided "AS IS" without warranty. | ||
22 | * | ||
23 | ******************************************************************************/ | ||
24 | |||
25 | #ifndef _SKGEPNMI_H_ | ||
26 | #define _SKGEPNMI_H_ | ||
27 | |||
28 | /* | ||
29 | * Include dependencies | ||
30 | */ | ||
31 | #include "h/sktypes.h" | ||
32 | #include "h/skerror.h" | ||
33 | #include "h/sktimer.h" | ||
34 | #include "h/ski2c.h" | ||
35 | #include "h/skaddr.h" | ||
36 | #include "h/skrlmt.h" | ||
37 | #include "h/skvpd.h" | ||
38 | |||
39 | /* | ||
40 | * Management Database Version | ||
41 | */ | ||
42 | #define SK_PNMI_MDB_VERSION 0x00030001 /* 3.1 */ | ||
43 | |||
44 | |||
45 | /* | ||
46 | * Event definitions | ||
47 | */ | ||
48 | #define SK_PNMI_EVT_SIRQ_OVERFLOW 1 /* Counter overflow */ | ||
49 | #define SK_PNMI_EVT_SEN_WAR_LOW 2 /* Lower war thres exceeded */ | ||
50 | #define SK_PNMI_EVT_SEN_WAR_UPP 3 /* Upper war thres exceeded */ | ||
51 | #define SK_PNMI_EVT_SEN_ERR_LOW 4 /* Lower err thres exceeded */ | ||
52 | #define SK_PNMI_EVT_SEN_ERR_UPP 5 /* Upper err thres exceeded */ | ||
53 | #define SK_PNMI_EVT_CHG_EST_TIMER 6 /* Timer event for RLMT Chg */ | ||
54 | #define SK_PNMI_EVT_UTILIZATION_TIMER 7 /* Timer event for Utiliza. */ | ||
55 | #define SK_PNMI_EVT_CLEAR_COUNTER 8 /* Clear statistic counters */ | ||
56 | #define SK_PNMI_EVT_XMAC_RESET 9 /* XMAC will be reset */ | ||
57 | |||
58 | #define SK_PNMI_EVT_RLMT_PORT_UP 10 /* Port came logically up */ | ||
59 | #define SK_PNMI_EVT_RLMT_PORT_DOWN 11 /* Port went logically down */ | ||
60 | #define SK_PNMI_EVT_RLMT_SEGMENTATION 13 /* Two SP root bridges found */ | ||
61 | #define SK_PNMI_EVT_RLMT_ACTIVE_DOWN 14 /* Port went logically down */ | ||
62 | #define SK_PNMI_EVT_RLMT_ACTIVE_UP 15 /* Port came logically up */ | ||
63 | #define SK_PNMI_EVT_RLMT_SET_NETS 16 /* 1. Parameter is number of nets | ||
64 | 1 = single net; 2 = dual net */ | ||
65 | #define SK_PNMI_EVT_VCT_RESET 17 /* VCT port reset timer event started with SET. */ | ||
66 | |||
67 | |||
68 | /* | ||
69 | * Return values | ||
70 | */ | ||
71 | #define SK_PNMI_ERR_OK 0 | ||
72 | #define SK_PNMI_ERR_GENERAL 1 | ||
73 | #define SK_PNMI_ERR_TOO_SHORT 2 | ||
74 | #define SK_PNMI_ERR_BAD_VALUE 3 | ||
75 | #define SK_PNMI_ERR_READ_ONLY 4 | ||
76 | #define SK_PNMI_ERR_UNKNOWN_OID 5 | ||
77 | #define SK_PNMI_ERR_UNKNOWN_INST 6 | ||
78 | #define SK_PNMI_ERR_UNKNOWN_NET 7 | ||
79 | #define SK_PNMI_ERR_NOT_SUPPORTED 10 | ||
80 | |||
81 | |||
82 | /* | ||
83 | * Return values of driver reset function SK_DRIVER_RESET() and | ||
84 | * driver event function SK_DRIVER_EVENT() | ||
85 | */ | ||
86 | #define SK_PNMI_ERR_OK 0 | ||
87 | #define SK_PNMI_ERR_FAIL 1 | ||
88 | |||
89 | |||
90 | /* | ||
91 | * Return values of driver test function SK_DRIVER_SELFTEST() | ||
92 | */ | ||
93 | #define SK_PNMI_TST_UNKNOWN (1 << 0) | ||
94 | #define SK_PNMI_TST_TRANCEIVER (1 << 1) | ||
95 | #define SK_PNMI_TST_ASIC (1 << 2) | ||
96 | #define SK_PNMI_TST_SENSOR (1 << 3) | ||
97 | #define SK_PNMI_TST_POWERMGMT (1 << 4) | ||
98 | #define SK_PNMI_TST_PCI (1 << 5) | ||
99 | #define SK_PNMI_TST_MAC (1 << 6) | ||
100 | |||
101 | |||
102 | /* | ||
103 | * RLMT specific definitions | ||
104 | */ | ||
105 | #define SK_PNMI_RLMT_STATUS_STANDBY 1 | ||
106 | #define SK_PNMI_RLMT_STATUS_ACTIVE 2 | ||
107 | #define SK_PNMI_RLMT_STATUS_ERROR 3 | ||
108 | |||
109 | #define SK_PNMI_RLMT_LSTAT_PHY_DOWN 1 | ||
110 | #define SK_PNMI_RLMT_LSTAT_AUTONEG 2 | ||
111 | #define SK_PNMI_RLMT_LSTAT_LOG_DOWN 3 | ||
112 | #define SK_PNMI_RLMT_LSTAT_LOG_UP 4 | ||
113 | #define SK_PNMI_RLMT_LSTAT_INDETERMINATED 5 | ||
114 | |||
115 | #define SK_PNMI_RLMT_MODE_CHK_LINK (SK_RLMT_CHECK_LINK) | ||
116 | #define SK_PNMI_RLMT_MODE_CHK_RX (SK_RLMT_CHECK_LOC_LINK) | ||
117 | #define SK_PNMI_RLMT_MODE_CHK_SPT (SK_RLMT_CHECK_SEG) | ||
118 | /* #define SK_PNMI_RLMT_MODE_CHK_EX */ | ||
119 | |||
120 | /* | ||
121 | * OID definition | ||
122 | */ | ||
123 | #ifndef _NDIS_ /* Check, whether NDIS already included OIDs */ | ||
124 | |||
125 | #define OID_GEN_XMIT_OK 0x00020101 | ||
126 | #define OID_GEN_RCV_OK 0x00020102 | ||
127 | #define OID_GEN_XMIT_ERROR 0x00020103 | ||
128 | #define OID_GEN_RCV_ERROR 0x00020104 | ||
129 | #define OID_GEN_RCV_NO_BUFFER 0x00020105 | ||
130 | |||
131 | /* #define OID_GEN_DIRECTED_BYTES_XMIT 0x00020201 */ | ||
132 | #define OID_GEN_DIRECTED_FRAMES_XMIT 0x00020202 | ||
133 | /* #define OID_GEN_MULTICAST_BYTES_XMIT 0x00020203 */ | ||
134 | #define OID_GEN_MULTICAST_FRAMES_XMIT 0x00020204 | ||
135 | /* #define OID_GEN_BROADCAST_BYTES_XMIT 0x00020205 */ | ||
136 | #define OID_GEN_BROADCAST_FRAMES_XMIT 0x00020206 | ||
137 | /* #define OID_GEN_DIRECTED_BYTES_RCV 0x00020207 */ | ||
138 | #define OID_GEN_DIRECTED_FRAMES_RCV 0x00020208 | ||
139 | /* #define OID_GEN_MULTICAST_BYTES_RCV 0x00020209 */ | ||
140 | #define OID_GEN_MULTICAST_FRAMES_RCV 0x0002020A | ||
141 | /* #define OID_GEN_BROADCAST_BYTES_RCV 0x0002020B */ | ||
142 | #define OID_GEN_BROADCAST_FRAMES_RCV 0x0002020C | ||
143 | #define OID_GEN_RCV_CRC_ERROR 0x0002020D | ||
144 | #define OID_GEN_TRANSMIT_QUEUE_LENGTH 0x0002020E | ||
145 | |||
146 | #define OID_802_3_PERMANENT_ADDRESS 0x01010101 | ||
147 | #define OID_802_3_CURRENT_ADDRESS 0x01010102 | ||
148 | /* #define OID_802_3_MULTICAST_LIST 0x01010103 */ | ||
149 | /* #define OID_802_3_MAXIMUM_LIST_SIZE 0x01010104 */ | ||
150 | /* #define OID_802_3_MAC_OPTIONS 0x01010105 */ | ||
151 | |||
152 | #define OID_802_3_RCV_ERROR_ALIGNMENT 0x01020101 | ||
153 | #define OID_802_3_XMIT_ONE_COLLISION 0x01020102 | ||
154 | #define OID_802_3_XMIT_MORE_COLLISIONS 0x01020103 | ||
155 | #define OID_802_3_XMIT_DEFERRED 0x01020201 | ||
156 | #define OID_802_3_XMIT_MAX_COLLISIONS 0x01020202 | ||
157 | #define OID_802_3_RCV_OVERRUN 0x01020203 | ||
158 | #define OID_802_3_XMIT_UNDERRUN 0x01020204 | ||
159 | #define OID_802_3_XMIT_TIMES_CRS_LOST 0x01020206 | ||
160 | #define OID_802_3_XMIT_LATE_COLLISIONS 0x01020207 | ||
161 | |||
162 | /* | ||
163 | * PnP and PM OIDs | ||
164 | */ | ||
165 | #ifdef SK_POWER_MGMT | ||
166 | #define OID_PNP_CAPABILITIES 0xFD010100 | ||
167 | #define OID_PNP_SET_POWER 0xFD010101 | ||
168 | #define OID_PNP_QUERY_POWER 0xFD010102 | ||
169 | #define OID_PNP_ADD_WAKE_UP_PATTERN 0xFD010103 | ||
170 | #define OID_PNP_REMOVE_WAKE_UP_PATTERN 0xFD010104 | ||
171 | #define OID_PNP_ENABLE_WAKE_UP 0xFD010106 | ||
172 | #endif /* SK_POWER_MGMT */ | ||
173 | |||
174 | #endif /* _NDIS_ */ | ||
175 | |||
176 | #define OID_SKGE_MDB_VERSION 0xFF010100 | ||
177 | #define OID_SKGE_SUPPORTED_LIST 0xFF010101 | ||
178 | #define OID_SKGE_VPD_FREE_BYTES 0xFF010102 | ||
179 | #define OID_SKGE_VPD_ENTRIES_LIST 0xFF010103 | ||
180 | #define OID_SKGE_VPD_ENTRIES_NUMBER 0xFF010104 | ||
181 | #define OID_SKGE_VPD_KEY 0xFF010105 | ||
182 | #define OID_SKGE_VPD_VALUE 0xFF010106 | ||
183 | #define OID_SKGE_VPD_ACCESS 0xFF010107 | ||
184 | #define OID_SKGE_VPD_ACTION 0xFF010108 | ||
185 | |||
186 | #define OID_SKGE_PORT_NUMBER 0xFF010110 | ||
187 | #define OID_SKGE_DEVICE_TYPE 0xFF010111 | ||
188 | #define OID_SKGE_DRIVER_DESCR 0xFF010112 | ||
189 | #define OID_SKGE_DRIVER_VERSION 0xFF010113 | ||
190 | #define OID_SKGE_HW_DESCR 0xFF010114 | ||
191 | #define OID_SKGE_HW_VERSION 0xFF010115 | ||
192 | #define OID_SKGE_CHIPSET 0xFF010116 | ||
193 | #define OID_SKGE_ACTION 0xFF010117 | ||
194 | #define OID_SKGE_RESULT 0xFF010118 | ||
195 | #define OID_SKGE_BUS_TYPE 0xFF010119 | ||
196 | #define OID_SKGE_BUS_SPEED 0xFF01011A | ||
197 | #define OID_SKGE_BUS_WIDTH 0xFF01011B | ||
198 | /* 0xFF01011C unused */ | ||
199 | #define OID_SKGE_DIAG_ACTION 0xFF01011D | ||
200 | #define OID_SKGE_DIAG_RESULT 0xFF01011E | ||
201 | #define OID_SKGE_MTU 0xFF01011F | ||
202 | #define OID_SKGE_PHYS_CUR_ADDR 0xFF010120 | ||
203 | #define OID_SKGE_PHYS_FAC_ADDR 0xFF010121 | ||
204 | #define OID_SKGE_PMD 0xFF010122 | ||
205 | #define OID_SKGE_CONNECTOR 0xFF010123 | ||
206 | #define OID_SKGE_LINK_CAP 0xFF010124 | ||
207 | #define OID_SKGE_LINK_MODE 0xFF010125 | ||
208 | #define OID_SKGE_LINK_MODE_STATUS 0xFF010126 | ||
209 | #define OID_SKGE_LINK_STATUS 0xFF010127 | ||
210 | #define OID_SKGE_FLOWCTRL_CAP 0xFF010128 | ||
211 | #define OID_SKGE_FLOWCTRL_MODE 0xFF010129 | ||
212 | #define OID_SKGE_FLOWCTRL_STATUS 0xFF01012A | ||
213 | #define OID_SKGE_PHY_OPERATION_CAP 0xFF01012B | ||
214 | #define OID_SKGE_PHY_OPERATION_MODE 0xFF01012C | ||
215 | #define OID_SKGE_PHY_OPERATION_STATUS 0xFF01012D | ||
216 | #define OID_SKGE_MULTICAST_LIST 0xFF01012E | ||
217 | #define OID_SKGE_CURRENT_PACKET_FILTER 0xFF01012F | ||
218 | |||
219 | #define OID_SKGE_TRAP 0xFF010130 | ||
220 | #define OID_SKGE_TRAP_NUMBER 0xFF010131 | ||
221 | |||
222 | #define OID_SKGE_RLMT_MODE 0xFF010140 | ||
223 | #define OID_SKGE_RLMT_PORT_NUMBER 0xFF010141 | ||
224 | #define OID_SKGE_RLMT_PORT_ACTIVE 0xFF010142 | ||
225 | #define OID_SKGE_RLMT_PORT_PREFERRED 0xFF010143 | ||
226 | #define OID_SKGE_INTERMEDIATE_SUPPORT 0xFF010160 | ||
227 | |||
228 | #define OID_SKGE_SPEED_CAP 0xFF010170 | ||
229 | #define OID_SKGE_SPEED_MODE 0xFF010171 | ||
230 | #define OID_SKGE_SPEED_STATUS 0xFF010172 | ||
231 | |||
232 | #define OID_SKGE_BOARDLEVEL 0xFF010180 | ||
233 | |||
234 | #define OID_SKGE_SENSOR_NUMBER 0xFF020100 | ||
235 | #define OID_SKGE_SENSOR_INDEX 0xFF020101 | ||
236 | #define OID_SKGE_SENSOR_DESCR 0xFF020102 | ||
237 | #define OID_SKGE_SENSOR_TYPE 0xFF020103 | ||
238 | #define OID_SKGE_SENSOR_VALUE 0xFF020104 | ||
239 | #define OID_SKGE_SENSOR_WAR_THRES_LOW 0xFF020105 | ||
240 | #define OID_SKGE_SENSOR_WAR_THRES_UPP 0xFF020106 | ||
241 | #define OID_SKGE_SENSOR_ERR_THRES_LOW 0xFF020107 | ||
242 | #define OID_SKGE_SENSOR_ERR_THRES_UPP 0xFF020108 | ||
243 | #define OID_SKGE_SENSOR_STATUS 0xFF020109 | ||
244 | #define OID_SKGE_SENSOR_WAR_CTS 0xFF02010A | ||
245 | #define OID_SKGE_SENSOR_ERR_CTS 0xFF02010B | ||
246 | #define OID_SKGE_SENSOR_WAR_TIME 0xFF02010C | ||
247 | #define OID_SKGE_SENSOR_ERR_TIME 0xFF02010D | ||
248 | |||
249 | #define OID_SKGE_CHKSM_NUMBER 0xFF020110 | ||
250 | #define OID_SKGE_CHKSM_RX_OK_CTS 0xFF020111 | ||
251 | #define OID_SKGE_CHKSM_RX_UNABLE_CTS 0xFF020112 | ||
252 | #define OID_SKGE_CHKSM_RX_ERR_CTS 0xFF020113 | ||
253 | #define OID_SKGE_CHKSM_TX_OK_CTS 0xFF020114 | ||
254 | #define OID_SKGE_CHKSM_TX_UNABLE_CTS 0xFF020115 | ||
255 | |||
256 | #define OID_SKGE_STAT_TX 0xFF020120 | ||
257 | #define OID_SKGE_STAT_TX_OCTETS 0xFF020121 | ||
258 | #define OID_SKGE_STAT_TX_BROADCAST 0xFF020122 | ||
259 | #define OID_SKGE_STAT_TX_MULTICAST 0xFF020123 | ||
260 | #define OID_SKGE_STAT_TX_UNICAST 0xFF020124 | ||
261 | #define OID_SKGE_STAT_TX_LONGFRAMES 0xFF020125 | ||
262 | #define OID_SKGE_STAT_TX_BURST 0xFF020126 | ||
263 | #define OID_SKGE_STAT_TX_PFLOWC 0xFF020127 | ||
264 | #define OID_SKGE_STAT_TX_FLOWC 0xFF020128 | ||
265 | #define OID_SKGE_STAT_TX_SINGLE_COL 0xFF020129 | ||
266 | #define OID_SKGE_STAT_TX_MULTI_COL 0xFF02012A | ||
267 | #define OID_SKGE_STAT_TX_EXCESS_COL 0xFF02012B | ||
268 | #define OID_SKGE_STAT_TX_LATE_COL 0xFF02012C | ||
269 | #define OID_SKGE_STAT_TX_DEFFERAL 0xFF02012D | ||
270 | #define OID_SKGE_STAT_TX_EXCESS_DEF 0xFF02012E | ||
271 | #define OID_SKGE_STAT_TX_UNDERRUN 0xFF02012F | ||
272 | #define OID_SKGE_STAT_TX_CARRIER 0xFF020130 | ||
273 | /* #define OID_SKGE_STAT_TX_UTIL 0xFF020131 */ | ||
274 | #define OID_SKGE_STAT_TX_64 0xFF020132 | ||
275 | #define OID_SKGE_STAT_TX_127 0xFF020133 | ||
276 | #define OID_SKGE_STAT_TX_255 0xFF020134 | ||
277 | #define OID_SKGE_STAT_TX_511 0xFF020135 | ||
278 | #define OID_SKGE_STAT_TX_1023 0xFF020136 | ||
279 | #define OID_SKGE_STAT_TX_MAX 0xFF020137 | ||
280 | #define OID_SKGE_STAT_TX_SYNC 0xFF020138 | ||
281 | #define OID_SKGE_STAT_TX_SYNC_OCTETS 0xFF020139 | ||
282 | #define OID_SKGE_STAT_RX 0xFF02013A | ||
283 | #define OID_SKGE_STAT_RX_OCTETS 0xFF02013B | ||
284 | #define OID_SKGE_STAT_RX_BROADCAST 0xFF02013C | ||
285 | #define OID_SKGE_STAT_RX_MULTICAST 0xFF02013D | ||
286 | #define OID_SKGE_STAT_RX_UNICAST 0xFF02013E | ||
287 | #define OID_SKGE_STAT_RX_PFLOWC 0xFF02013F | ||
288 | #define OID_SKGE_STAT_RX_FLOWC 0xFF020140 | ||
289 | #define OID_SKGE_STAT_RX_PFLOWC_ERR 0xFF020141 | ||
290 | #define OID_SKGE_STAT_RX_FLOWC_UNKWN 0xFF020142 | ||
291 | #define OID_SKGE_STAT_RX_BURST 0xFF020143 | ||
292 | #define OID_SKGE_STAT_RX_MISSED 0xFF020144 | ||
293 | #define OID_SKGE_STAT_RX_FRAMING 0xFF020145 | ||
294 | #define OID_SKGE_STAT_RX_OVERFLOW 0xFF020146 | ||
295 | #define OID_SKGE_STAT_RX_JABBER 0xFF020147 | ||
296 | #define OID_SKGE_STAT_RX_CARRIER 0xFF020148 | ||
297 | #define OID_SKGE_STAT_RX_IR_LENGTH 0xFF020149 | ||
298 | #define OID_SKGE_STAT_RX_SYMBOL 0xFF02014A | ||
299 | #define OID_SKGE_STAT_RX_SHORTS 0xFF02014B | ||
300 | #define OID_SKGE_STAT_RX_RUNT 0xFF02014C | ||
301 | #define OID_SKGE_STAT_RX_CEXT 0xFF02014D | ||
302 | #define OID_SKGE_STAT_RX_TOO_LONG 0xFF02014E | ||
303 | #define OID_SKGE_STAT_RX_FCS 0xFF02014F | ||
304 | /* #define OID_SKGE_STAT_RX_UTIL 0xFF020150 */ | ||
305 | #define OID_SKGE_STAT_RX_64 0xFF020151 | ||
306 | #define OID_SKGE_STAT_RX_127 0xFF020152 | ||
307 | #define OID_SKGE_STAT_RX_255 0xFF020153 | ||
308 | #define OID_SKGE_STAT_RX_511 0xFF020154 | ||
309 | #define OID_SKGE_STAT_RX_1023 0xFF020155 | ||
310 | #define OID_SKGE_STAT_RX_MAX 0xFF020156 | ||
311 | #define OID_SKGE_STAT_RX_LONGFRAMES 0xFF020157 | ||
312 | |||
313 | #define OID_SKGE_RLMT_CHANGE_CTS 0xFF020160 | ||
314 | #define OID_SKGE_RLMT_CHANGE_TIME 0xFF020161 | ||
315 | #define OID_SKGE_RLMT_CHANGE_ESTIM 0xFF020162 | ||
316 | #define OID_SKGE_RLMT_CHANGE_THRES 0xFF020163 | ||
317 | |||
318 | #define OID_SKGE_RLMT_PORT_INDEX 0xFF020164 | ||
319 | #define OID_SKGE_RLMT_STATUS 0xFF020165 | ||
320 | #define OID_SKGE_RLMT_TX_HELLO_CTS 0xFF020166 | ||
321 | #define OID_SKGE_RLMT_RX_HELLO_CTS 0xFF020167 | ||
322 | #define OID_SKGE_RLMT_TX_SP_REQ_CTS 0xFF020168 | ||
323 | #define OID_SKGE_RLMT_RX_SP_CTS 0xFF020169 | ||
324 | |||
325 | #define OID_SKGE_RLMT_MONITOR_NUMBER 0xFF010150 | ||
326 | #define OID_SKGE_RLMT_MONITOR_INDEX 0xFF010151 | ||
327 | #define OID_SKGE_RLMT_MONITOR_ADDR 0xFF010152 | ||
328 | #define OID_SKGE_RLMT_MONITOR_ERRS 0xFF010153 | ||
329 | #define OID_SKGE_RLMT_MONITOR_TIMESTAMP 0xFF010154 | ||
330 | #define OID_SKGE_RLMT_MONITOR_ADMIN 0xFF010155 | ||
331 | |||
332 | #define OID_SKGE_TX_SW_QUEUE_LEN 0xFF020170 | ||
333 | #define OID_SKGE_TX_SW_QUEUE_MAX 0xFF020171 | ||
334 | #define OID_SKGE_TX_RETRY 0xFF020172 | ||
335 | #define OID_SKGE_RX_INTR_CTS 0xFF020173 | ||
336 | #define OID_SKGE_TX_INTR_CTS 0xFF020174 | ||
337 | #define OID_SKGE_RX_NO_BUF_CTS 0xFF020175 | ||
338 | #define OID_SKGE_TX_NO_BUF_CTS 0xFF020176 | ||
339 | #define OID_SKGE_TX_USED_DESCR_NO 0xFF020177 | ||
340 | #define OID_SKGE_RX_DELIVERED_CTS 0xFF020178 | ||
341 | #define OID_SKGE_RX_OCTETS_DELIV_CTS 0xFF020179 | ||
342 | #define OID_SKGE_RX_HW_ERROR_CTS 0xFF02017A | ||
343 | #define OID_SKGE_TX_HW_ERROR_CTS 0xFF02017B | ||
344 | #define OID_SKGE_IN_ERRORS_CTS 0xFF02017C | ||
345 | #define OID_SKGE_OUT_ERROR_CTS 0xFF02017D | ||
346 | #define OID_SKGE_ERR_RECOVERY_CTS 0xFF02017E | ||
347 | #define OID_SKGE_SYSUPTIME 0xFF02017F | ||
348 | |||
349 | #define OID_SKGE_ALL_DATA 0xFF020190 | ||
350 | |||
351 | /* Defines for VCT. */ | ||
352 | #define OID_SKGE_VCT_GET 0xFF020200 | ||
353 | #define OID_SKGE_VCT_SET 0xFF020201 | ||
354 | #define OID_SKGE_VCT_STATUS 0xFF020202 | ||
355 | |||
356 | #ifdef SK_DIAG_SUPPORT | ||
357 | /* Defines for driver DIAG mode. */ | ||
358 | #define OID_SKGE_DIAG_MODE 0xFF020204 | ||
359 | #endif /* SK_DIAG_SUPPORT */ | ||
360 | |||
361 | /* New OIDs */ | ||
362 | #define OID_SKGE_DRIVER_RELDATE 0xFF020210 | ||
363 | #define OID_SKGE_DRIVER_FILENAME 0xFF020211 | ||
364 | #define OID_SKGE_CHIPID 0xFF020212 | ||
365 | #define OID_SKGE_RAMSIZE 0xFF020213 | ||
366 | #define OID_SKGE_VAUXAVAIL 0xFF020214 | ||
367 | #define OID_SKGE_PHY_TYPE 0xFF020215 | ||
368 | #define OID_SKGE_PHY_LP_MODE 0xFF020216 | ||
369 | |||
370 | /* VCT struct to store a backup copy of VCT data after a port reset. */ | ||
371 | typedef struct s_PnmiVct { | ||
372 | SK_U8 VctStatus; | ||
373 | SK_U8 PCableLen; | ||
374 | SK_U32 PMdiPairLen[4]; | ||
375 | SK_U8 PMdiPairSts[4]; | ||
376 | } SK_PNMI_VCT; | ||
377 | |||
378 | |||
379 | /* VCT status values (to be given to CPA via OID_SKGE_VCT_STATUS). */ | ||
380 | #define SK_PNMI_VCT_NONE 0 | ||
381 | #define SK_PNMI_VCT_OLD_VCT_DATA 1 | ||
382 | #define SK_PNMI_VCT_NEW_VCT_DATA 2 | ||
383 | #define SK_PNMI_VCT_OLD_DSP_DATA 4 | ||
384 | #define SK_PNMI_VCT_NEW_DSP_DATA 8 | ||
385 | #define SK_PNMI_VCT_RUNNING 16 | ||
386 | |||
387 | |||
388 | /* VCT cable test status. */ | ||
389 | #define SK_PNMI_VCT_NORMAL_CABLE 0 | ||
390 | #define SK_PNMI_VCT_SHORT_CABLE 1 | ||
391 | #define SK_PNMI_VCT_OPEN_CABLE 2 | ||
392 | #define SK_PNMI_VCT_TEST_FAIL 3 | ||
393 | #define SK_PNMI_VCT_IMPEDANCE_MISMATCH 4 | ||
394 | |||
395 | #define OID_SKGE_TRAP_SEN_WAR_LOW 500 | ||
396 | #define OID_SKGE_TRAP_SEN_WAR_UPP 501 | ||
397 | #define OID_SKGE_TRAP_SEN_ERR_LOW 502 | ||
398 | #define OID_SKGE_TRAP_SEN_ERR_UPP 503 | ||
399 | #define OID_SKGE_TRAP_RLMT_CHANGE_THRES 520 | ||
400 | #define OID_SKGE_TRAP_RLMT_CHANGE_PORT 521 | ||
401 | #define OID_SKGE_TRAP_RLMT_PORT_DOWN 522 | ||
402 | #define OID_SKGE_TRAP_RLMT_PORT_UP 523 | ||
403 | #define OID_SKGE_TRAP_RLMT_SEGMENTATION 524 | ||
404 | |||
405 | #ifdef SK_DIAG_SUPPORT | ||
406 | /* Defines for driver DIAG mode. */ | ||
407 | #define SK_DIAG_ATTACHED 2 | ||
408 | #define SK_DIAG_RUNNING 1 | ||
409 | #define SK_DIAG_IDLE 0 | ||
410 | #endif /* SK_DIAG_SUPPORT */ | ||
411 | |||
412 | /* | ||
413 | * Generic PNMI IOCTL subcommand definitions. | ||
414 | */ | ||
415 | #define SK_GET_SINGLE_VAR 1 | ||
416 | #define SK_SET_SINGLE_VAR 2 | ||
417 | #define SK_PRESET_SINGLE_VAR 3 | ||
418 | #define SK_GET_FULL_MIB 4 | ||
419 | #define SK_SET_FULL_MIB 5 | ||
420 | #define SK_PRESET_FULL_MIB 6 | ||
421 | |||
422 | |||
423 | /* | ||
424 | * Define error numbers and messages for syslog | ||
425 | */ | ||
426 | #define SK_PNMI_ERR001 (SK_ERRBASE_PNMI + 1) | ||
427 | #define SK_PNMI_ERR001MSG "SkPnmiGetStruct: Unknown OID" | ||
428 | #define SK_PNMI_ERR002 (SK_ERRBASE_PNMI + 2) | ||
429 | #define SK_PNMI_ERR002MSG "SkPnmiGetStruct: Cannot read VPD keys" | ||
430 | #define SK_PNMI_ERR003 (SK_ERRBASE_PNMI + 3) | ||
431 | #define SK_PNMI_ERR003MSG "OidStruct: Called with wrong OID" | ||
432 | #define SK_PNMI_ERR004 (SK_ERRBASE_PNMI + 4) | ||
433 | #define SK_PNMI_ERR004MSG "OidStruct: Called with wrong action" | ||
434 | #define SK_PNMI_ERR005 (SK_ERRBASE_PNMI + 5) | ||
435 | #define SK_PNMI_ERR005MSG "Perform: Cannot reset driver" | ||
436 | #define SK_PNMI_ERR006 (SK_ERRBASE_PNMI + 6) | ||
437 | #define SK_PNMI_ERR006MSG "Perform: Unknown OID action command" | ||
438 | #define SK_PNMI_ERR007 (SK_ERRBASE_PNMI + 7) | ||
439 | #define SK_PNMI_ERR007MSG "General: Driver description not initialized" | ||
440 | #define SK_PNMI_ERR008 (SK_ERRBASE_PNMI + 8) | ||
441 | #define SK_PNMI_ERR008MSG "Addr: Tried to get unknown OID" | ||
442 | #define SK_PNMI_ERR009 (SK_ERRBASE_PNMI + 9) | ||
443 | #define SK_PNMI_ERR009MSG "Addr: Unknown OID" | ||
444 | #define SK_PNMI_ERR010 (SK_ERRBASE_PNMI + 10) | ||
445 | #define SK_PNMI_ERR010MSG "CsumStat: Unknown OID" | ||
446 | #define SK_PNMI_ERR011 (SK_ERRBASE_PNMI + 11) | ||
447 | #define SK_PNMI_ERR011MSG "SensorStat: Sensor descr string too long" | ||
448 | #define SK_PNMI_ERR012 (SK_ERRBASE_PNMI + 12) | ||
449 | #define SK_PNMI_ERR012MSG "SensorStat: Unknown OID" | ||
450 | #define SK_PNMI_ERR013 (SK_ERRBASE_PNMI + 13) | ||
451 | #define SK_PNMI_ERR013MSG "" | ||
452 | #define SK_PNMI_ERR014 (SK_ERRBASE_PNMI + 14) | ||
453 | #define SK_PNMI_ERR014MSG "Vpd: Cannot read VPD keys" | ||
454 | #define SK_PNMI_ERR015 (SK_ERRBASE_PNMI + 15) | ||
455 | #define SK_PNMI_ERR015MSG "Vpd: Internal array for VPD keys to small" | ||
456 | #define SK_PNMI_ERR016 (SK_ERRBASE_PNMI + 16) | ||
457 | #define SK_PNMI_ERR016MSG "Vpd: Key string too long" | ||
458 | #define SK_PNMI_ERR017 (SK_ERRBASE_PNMI + 17) | ||
459 | #define SK_PNMI_ERR017MSG "Vpd: Invalid VPD status pointer" | ||
460 | #define SK_PNMI_ERR018 (SK_ERRBASE_PNMI + 18) | ||
461 | #define SK_PNMI_ERR018MSG "Vpd: VPD data not valid" | ||
462 | #define SK_PNMI_ERR019 (SK_ERRBASE_PNMI + 19) | ||
463 | #define SK_PNMI_ERR019MSG "Vpd: VPD entries list string too long" | ||
464 | #define SK_PNMI_ERR021 (SK_ERRBASE_PNMI + 21) | ||
465 | #define SK_PNMI_ERR021MSG "Vpd: VPD data string too long" | ||
466 | #define SK_PNMI_ERR022 (SK_ERRBASE_PNMI + 22) | ||
467 | #define SK_PNMI_ERR022MSG "Vpd: VPD data string too long should be errored before" | ||
468 | #define SK_PNMI_ERR023 (SK_ERRBASE_PNMI + 23) | ||
469 | #define SK_PNMI_ERR023MSG "Vpd: Unknown OID in get action" | ||
470 | #define SK_PNMI_ERR024 (SK_ERRBASE_PNMI + 24) | ||
471 | #define SK_PNMI_ERR024MSG "Vpd: Unknown OID in preset/set action" | ||
472 | #define SK_PNMI_ERR025 (SK_ERRBASE_PNMI + 25) | ||
473 | #define SK_PNMI_ERR025MSG "Vpd: Cannot write VPD after modify entry" | ||
474 | #define SK_PNMI_ERR026 (SK_ERRBASE_PNMI + 26) | ||
475 | #define SK_PNMI_ERR026MSG "Vpd: Cannot update VPD" | ||
476 | #define SK_PNMI_ERR027 (SK_ERRBASE_PNMI + 27) | ||
477 | #define SK_PNMI_ERR027MSG "Vpd: Cannot delete VPD entry" | ||
478 | #define SK_PNMI_ERR028 (SK_ERRBASE_PNMI + 28) | ||
479 | #define SK_PNMI_ERR028MSG "Vpd: Cannot update VPD after delete entry" | ||
480 | #define SK_PNMI_ERR029 (SK_ERRBASE_PNMI + 29) | ||
481 | #define SK_PNMI_ERR029MSG "General: Driver description string too long" | ||
482 | #define SK_PNMI_ERR030 (SK_ERRBASE_PNMI + 30) | ||
483 | #define SK_PNMI_ERR030MSG "General: Driver version not initialized" | ||
484 | #define SK_PNMI_ERR031 (SK_ERRBASE_PNMI + 31) | ||
485 | #define SK_PNMI_ERR031MSG "General: Driver version string too long" | ||
486 | #define SK_PNMI_ERR032 (SK_ERRBASE_PNMI + 32) | ||
487 | #define SK_PNMI_ERR032MSG "General: Cannot read VPD Name for HW descr" | ||
488 | #define SK_PNMI_ERR033 (SK_ERRBASE_PNMI + 33) | ||
489 | #define SK_PNMI_ERR033MSG "General: HW description string too long" | ||
490 | #define SK_PNMI_ERR034 (SK_ERRBASE_PNMI + 34) | ||
491 | #define SK_PNMI_ERR034MSG "General: Unknown OID" | ||
492 | #define SK_PNMI_ERR035 (SK_ERRBASE_PNMI + 35) | ||
493 | #define SK_PNMI_ERR035MSG "Rlmt: Unknown OID" | ||
494 | #define SK_PNMI_ERR036 (SK_ERRBASE_PNMI + 36) | ||
495 | #define SK_PNMI_ERR036MSG "" | ||
496 | #define SK_PNMI_ERR037 (SK_ERRBASE_PNMI + 37) | ||
497 | #define SK_PNMI_ERR037MSG "Rlmt: SK_RLMT_MODE_CHANGE event return not 0" | ||
498 | #define SK_PNMI_ERR038 (SK_ERRBASE_PNMI + 38) | ||
499 | #define SK_PNMI_ERR038MSG "Rlmt: SK_RLMT_PREFPORT_CHANGE event return not 0" | ||
500 | #define SK_PNMI_ERR039 (SK_ERRBASE_PNMI + 39) | ||
501 | #define SK_PNMI_ERR039MSG "RlmtStat: Unknown OID" | ||
502 | #define SK_PNMI_ERR040 (SK_ERRBASE_PNMI + 40) | ||
503 | #define SK_PNMI_ERR040MSG "PowerManagement: Unknown OID" | ||
504 | #define SK_PNMI_ERR041 (SK_ERRBASE_PNMI + 41) | ||
505 | #define SK_PNMI_ERR041MSG "MacPrivateConf: Unknown OID" | ||
506 | #define SK_PNMI_ERR042 (SK_ERRBASE_PNMI + 42) | ||
507 | #define SK_PNMI_ERR042MSG "MacPrivateConf: SK_HWEV_SET_ROLE returned not 0" | ||
508 | #define SK_PNMI_ERR043 (SK_ERRBASE_PNMI + 43) | ||
509 | #define SK_PNMI_ERR043MSG "MacPrivateConf: SK_HWEV_SET_LMODE returned not 0" | ||
510 | #define SK_PNMI_ERR044 (SK_ERRBASE_PNMI + 44) | ||
511 | #define SK_PNMI_ERR044MSG "MacPrivateConf: SK_HWEV_SET_FLOWMODE returned not 0" | ||
512 | #define SK_PNMI_ERR045 (SK_ERRBASE_PNMI + 45) | ||
513 | #define SK_PNMI_ERR045MSG "MacPrivateConf: SK_HWEV_SET_SPEED returned not 0" | ||
514 | #define SK_PNMI_ERR046 (SK_ERRBASE_PNMI + 46) | ||
515 | #define SK_PNMI_ERR046MSG "Monitor: Unknown OID" | ||
516 | #define SK_PNMI_ERR047 (SK_ERRBASE_PNMI + 47) | ||
517 | #define SK_PNMI_ERR047MSG "SirqUpdate: Event function returns not 0" | ||
518 | #define SK_PNMI_ERR048 (SK_ERRBASE_PNMI + 48) | ||
519 | #define SK_PNMI_ERR048MSG "RlmtUpdate: Event function returns not 0" | ||
520 | #define SK_PNMI_ERR049 (SK_ERRBASE_PNMI + 49) | ||
521 | #define SK_PNMI_ERR049MSG "SkPnmiInit: Invalid size of 'CounterOffset' struct!!" | ||
522 | #define SK_PNMI_ERR050 (SK_ERRBASE_PNMI + 50) | ||
523 | #define SK_PNMI_ERR050MSG "SkPnmiInit: Invalid size of 'StatAddr' table!!" | ||
524 | #define SK_PNMI_ERR051 (SK_ERRBASE_PNMI + 51) | ||
525 | #define SK_PNMI_ERR051MSG "SkPnmiEvent: Port switch suspicious" | ||
526 | #define SK_PNMI_ERR052 (SK_ERRBASE_PNMI + 52) | ||
527 | #define SK_PNMI_ERR052MSG "" | ||
528 | #define SK_PNMI_ERR053 (SK_ERRBASE_PNMI + 53) | ||
529 | #define SK_PNMI_ERR053MSG "General: Driver release date not initialized" | ||
530 | #define SK_PNMI_ERR054 (SK_ERRBASE_PNMI + 54) | ||
531 | #define SK_PNMI_ERR054MSG "General: Driver release date string too long" | ||
532 | #define SK_PNMI_ERR055 (SK_ERRBASE_PNMI + 55) | ||
533 | #define SK_PNMI_ERR055MSG "General: Driver file name not initialized" | ||
534 | #define SK_PNMI_ERR056 (SK_ERRBASE_PNMI + 56) | ||
535 | #define SK_PNMI_ERR056MSG "General: Driver file name string too long" | ||
536 | |||
537 | /* | ||
538 | * Management counter macros called by the driver | ||
539 | */ | ||
540 | #define SK_PNMI_SET_DRIVER_DESCR(pAC,v) ((pAC)->Pnmi.pDriverDescription = \ | ||
541 | (char *)(v)) | ||
542 | |||
543 | #define SK_PNMI_SET_DRIVER_VER(pAC,v) ((pAC)->Pnmi.pDriverVersion = \ | ||
544 | (char *)(v)) | ||
545 | |||
546 | #define SK_PNMI_SET_DRIVER_RELDATE(pAC,v) ((pAC)->Pnmi.pDriverReleaseDate = \ | ||
547 | (char *)(v)) | ||
548 | |||
549 | #define SK_PNMI_SET_DRIVER_FILENAME(pAC,v) ((pAC)->Pnmi.pDriverFileName = \ | ||
550 | (char *)(v)) | ||
551 | |||
552 | #define SK_PNMI_CNT_TX_QUEUE_LEN(pAC,v,p) \ | ||
553 | { \ | ||
554 | (pAC)->Pnmi.Port[p].TxSwQueueLen = (SK_U64)(v); \ | ||
555 | if ((pAC)->Pnmi.Port[p].TxSwQueueLen > (pAC)->Pnmi.Port[p].TxSwQueueMax) { \ | ||
556 | (pAC)->Pnmi.Port[p].TxSwQueueMax = (pAC)->Pnmi.Port[p].TxSwQueueLen; \ | ||
557 | } \ | ||
558 | } | ||
559 | #define SK_PNMI_CNT_TX_RETRY(pAC,p) (((pAC)->Pnmi.Port[p].TxRetryCts)++) | ||
560 | #define SK_PNMI_CNT_RX_INTR(pAC,p) (((pAC)->Pnmi.Port[p].RxIntrCts)++) | ||
561 | #define SK_PNMI_CNT_TX_INTR(pAC,p) (((pAC)->Pnmi.Port[p].TxIntrCts)++) | ||
562 | #define SK_PNMI_CNT_NO_RX_BUF(pAC,p) (((pAC)->Pnmi.Port[p].RxNoBufCts)++) | ||
563 | #define SK_PNMI_CNT_NO_TX_BUF(pAC,p) (((pAC)->Pnmi.Port[p].TxNoBufCts)++) | ||
564 | #define SK_PNMI_CNT_USED_TX_DESCR(pAC,v,p) \ | ||
565 | ((pAC)->Pnmi.Port[p].TxUsedDescrNo=(SK_U64)(v)); | ||
566 | #define SK_PNMI_CNT_RX_OCTETS_DELIVERED(pAC,v,p) \ | ||
567 | { \ | ||
568 | ((pAC)->Pnmi.Port[p].RxDeliveredCts)++; \ | ||
569 | (pAC)->Pnmi.Port[p].RxOctetsDeliveredCts += (SK_U64)(v); \ | ||
570 | } | ||
571 | #define SK_PNMI_CNT_ERR_RECOVERY(pAC,p) (((pAC)->Pnmi.Port[p].ErrRecoveryCts)++); | ||
572 | |||
573 | #define SK_PNMI_CNT_SYNC_OCTETS(pAC,p,v) \ | ||
574 | { \ | ||
575 | if ((p) < SK_MAX_MACS) { \ | ||
576 | ((pAC)->Pnmi.Port[p].StatSyncCts)++; \ | ||
577 | (pAC)->Pnmi.Port[p].StatSyncOctetsCts += (SK_U64)(v); \ | ||
578 | } \ | ||
579 | } | ||
580 | |||
581 | #define SK_PNMI_CNT_RX_LONGFRAMES(pAC,p) \ | ||
582 | { \ | ||
583 | if ((p) < SK_MAX_MACS) { \ | ||
584 | ((pAC)->Pnmi.Port[p].StatRxLongFrameCts++); \ | ||
585 | } \ | ||
586 | } | ||
587 | |||
588 | #define SK_PNMI_CNT_RX_FRAMETOOLONG(pAC,p) \ | ||
589 | { \ | ||
590 | if ((p) < SK_MAX_MACS) { \ | ||
591 | ((pAC)->Pnmi.Port[p].StatRxFrameTooLongCts++); \ | ||
592 | } \ | ||
593 | } | ||
594 | |||
595 | #define SK_PNMI_CNT_RX_PMACC_ERR(pAC,p) \ | ||
596 | { \ | ||
597 | if ((p) < SK_MAX_MACS) { \ | ||
598 | ((pAC)->Pnmi.Port[p].StatRxPMaccErr++); \ | ||
599 | } \ | ||
600 | } | ||
601 | |||
602 | /* | ||
603 | * Conversion Macros | ||
604 | */ | ||
605 | #define SK_PNMI_PORT_INST2LOG(i) ((unsigned int)(i) - 1) | ||
606 | #define SK_PNMI_PORT_LOG2INST(l) ((unsigned int)(l) + 1) | ||
607 | #define SK_PNMI_PORT_PHYS2LOG(p) ((unsigned int)(p) + 1) | ||
608 | #define SK_PNMI_PORT_LOG2PHYS(pAC,l) ((unsigned int)(l) - 1) | ||
609 | #define SK_PNMI_PORT_PHYS2INST(pAC,p) \ | ||
610 | (pAC->Pnmi.DualNetActiveFlag ? 2 : ((unsigned int)(p) + 2)) | ||
611 | #define SK_PNMI_PORT_INST2PHYS(pAC,i) ((unsigned int)(i) - 2) | ||
612 | |||
613 | /* | ||
614 | * Structure definition for SkPnmiGetStruct and SkPnmiSetStruct | ||
615 | */ | ||
616 | #define SK_PNMI_VPD_KEY_SIZE 5 | ||
617 | #define SK_PNMI_VPD_BUFSIZE (VPD_SIZE) | ||
618 | #define SK_PNMI_VPD_ENTRIES (VPD_SIZE / 4) | ||
619 | #define SK_PNMI_VPD_DATALEN 128 /* Number of data bytes */ | ||
620 | |||
621 | #define SK_PNMI_MULTICAST_LISTLEN 64 | ||
622 | #define SK_PNMI_SENSOR_ENTRIES (SK_MAX_SENSORS) | ||
623 | #define SK_PNMI_CHECKSUM_ENTRIES 3 | ||
624 | #define SK_PNMI_MAC_ENTRIES (SK_MAX_MACS + 1) | ||
625 | #define SK_PNMI_MONITOR_ENTRIES 20 | ||
626 | #define SK_PNMI_TRAP_ENTRIES 10 | ||
627 | #define SK_PNMI_TRAPLEN 128 | ||
628 | #define SK_PNMI_STRINGLEN1 80 | ||
629 | #define SK_PNMI_STRINGLEN2 25 | ||
630 | #define SK_PNMI_TRAP_QUEUE_LEN 512 | ||
631 | |||
632 | typedef struct s_PnmiVpd { | ||
633 | char VpdKey[SK_PNMI_VPD_KEY_SIZE]; | ||
634 | char VpdValue[SK_PNMI_VPD_DATALEN]; | ||
635 | SK_U8 VpdAccess; | ||
636 | SK_U8 VpdAction; | ||
637 | } SK_PNMI_VPD; | ||
638 | |||
639 | typedef struct s_PnmiSensor { | ||
640 | SK_U8 SensorIndex; | ||
641 | char SensorDescr[SK_PNMI_STRINGLEN2]; | ||
642 | SK_U8 SensorType; | ||
643 | SK_U32 SensorValue; | ||
644 | SK_U32 SensorWarningThresholdLow; | ||
645 | SK_U32 SensorWarningThresholdHigh; | ||
646 | SK_U32 SensorErrorThresholdLow; | ||
647 | SK_U32 SensorErrorThresholdHigh; | ||
648 | SK_U8 SensorStatus; | ||
649 | SK_U64 SensorWarningCts; | ||
650 | SK_U64 SensorErrorCts; | ||
651 | SK_U64 SensorWarningTimestamp; | ||
652 | SK_U64 SensorErrorTimestamp; | ||
653 | } SK_PNMI_SENSOR; | ||
654 | |||
655 | typedef struct s_PnmiChecksum { | ||
656 | SK_U64 ChecksumRxOkCts; | ||
657 | SK_U64 ChecksumRxUnableCts; | ||
658 | SK_U64 ChecksumRxErrCts; | ||
659 | SK_U64 ChecksumTxOkCts; | ||
660 | SK_U64 ChecksumTxUnableCts; | ||
661 | } SK_PNMI_CHECKSUM; | ||
662 | |||
663 | typedef struct s_PnmiStat { | ||
664 | SK_U64 StatTxOkCts; | ||
665 | SK_U64 StatTxOctetsOkCts; | ||
666 | SK_U64 StatTxBroadcastOkCts; | ||
667 | SK_U64 StatTxMulticastOkCts; | ||
668 | SK_U64 StatTxUnicastOkCts; | ||
669 | SK_U64 StatTxLongFramesCts; | ||
670 | SK_U64 StatTxBurstCts; | ||
671 | SK_U64 StatTxPauseMacCtrlCts; | ||
672 | SK_U64 StatTxMacCtrlCts; | ||
673 | SK_U64 StatTxSingleCollisionCts; | ||
674 | SK_U64 StatTxMultipleCollisionCts; | ||
675 | SK_U64 StatTxExcessiveCollisionCts; | ||
676 | SK_U64 StatTxLateCollisionCts; | ||
677 | SK_U64 StatTxDeferralCts; | ||
678 | SK_U64 StatTxExcessiveDeferralCts; | ||
679 | SK_U64 StatTxFifoUnderrunCts; | ||
680 | SK_U64 StatTxCarrierCts; | ||
681 | SK_U64 Dummy1; /* StatTxUtilization */ | ||
682 | SK_U64 StatTx64Cts; | ||
683 | SK_U64 StatTx127Cts; | ||
684 | SK_U64 StatTx255Cts; | ||
685 | SK_U64 StatTx511Cts; | ||
686 | SK_U64 StatTx1023Cts; | ||
687 | SK_U64 StatTxMaxCts; | ||
688 | SK_U64 StatTxSyncCts; | ||
689 | SK_U64 StatTxSyncOctetsCts; | ||
690 | SK_U64 StatRxOkCts; | ||
691 | SK_U64 StatRxOctetsOkCts; | ||
692 | SK_U64 StatRxBroadcastOkCts; | ||
693 | SK_U64 StatRxMulticastOkCts; | ||
694 | SK_U64 StatRxUnicastOkCts; | ||
695 | SK_U64 StatRxLongFramesCts; | ||
696 | SK_U64 StatRxPauseMacCtrlCts; | ||
697 | SK_U64 StatRxMacCtrlCts; | ||
698 | SK_U64 StatRxPauseMacCtrlErrorCts; | ||
699 | SK_U64 StatRxMacCtrlUnknownCts; | ||
700 | SK_U64 StatRxBurstCts; | ||
701 | SK_U64 StatRxMissedCts; | ||
702 | SK_U64 StatRxFramingCts; | ||
703 | SK_U64 StatRxFifoOverflowCts; | ||
704 | SK_U64 StatRxJabberCts; | ||
705 | SK_U64 StatRxCarrierCts; | ||
706 | SK_U64 StatRxIRLengthCts; | ||
707 | SK_U64 StatRxSymbolCts; | ||
708 | SK_U64 StatRxShortsCts; | ||
709 | SK_U64 StatRxRuntCts; | ||
710 | SK_U64 StatRxCextCts; | ||
711 | SK_U64 StatRxTooLongCts; | ||
712 | SK_U64 StatRxFcsCts; | ||
713 | SK_U64 Dummy2; /* StatRxUtilization */ | ||
714 | SK_U64 StatRx64Cts; | ||
715 | SK_U64 StatRx127Cts; | ||
716 | SK_U64 StatRx255Cts; | ||
717 | SK_U64 StatRx511Cts; | ||
718 | SK_U64 StatRx1023Cts; | ||
719 | SK_U64 StatRxMaxCts; | ||
720 | } SK_PNMI_STAT; | ||
721 | |||
722 | typedef struct s_PnmiConf { | ||
723 | char ConfMacCurrentAddr[6]; | ||
724 | char ConfMacFactoryAddr[6]; | ||
725 | SK_U8 ConfPMD; | ||
726 | SK_U8 ConfConnector; | ||
727 | SK_U32 ConfPhyType; | ||
728 | SK_U32 ConfPhyMode; | ||
729 | SK_U8 ConfLinkCapability; | ||
730 | SK_U8 ConfLinkMode; | ||
731 | SK_U8 ConfLinkModeStatus; | ||
732 | SK_U8 ConfLinkStatus; | ||
733 | SK_U8 ConfFlowCtrlCapability; | ||
734 | SK_U8 ConfFlowCtrlMode; | ||
735 | SK_U8 ConfFlowCtrlStatus; | ||
736 | SK_U8 ConfPhyOperationCapability; | ||
737 | SK_U8 ConfPhyOperationMode; | ||
738 | SK_U8 ConfPhyOperationStatus; | ||
739 | SK_U8 ConfSpeedCapability; | ||
740 | SK_U8 ConfSpeedMode; | ||
741 | SK_U8 ConfSpeedStatus; | ||
742 | } SK_PNMI_CONF; | ||
743 | |||
744 | typedef struct s_PnmiRlmt { | ||
745 | SK_U32 RlmtIndex; | ||
746 | SK_U32 RlmtStatus; | ||
747 | SK_U64 RlmtTxHelloCts; | ||
748 | SK_U64 RlmtRxHelloCts; | ||
749 | SK_U64 RlmtTxSpHelloReqCts; | ||
750 | SK_U64 RlmtRxSpHelloCts; | ||
751 | } SK_PNMI_RLMT; | ||
752 | |||
753 | typedef struct s_PnmiRlmtMonitor { | ||
754 | SK_U32 RlmtMonitorIndex; | ||
755 | char RlmtMonitorAddr[6]; | ||
756 | SK_U64 RlmtMonitorErrorCts; | ||
757 | SK_U64 RlmtMonitorTimestamp; | ||
758 | SK_U8 RlmtMonitorAdmin; | ||
759 | } SK_PNMI_RLMT_MONITOR; | ||
760 | |||
761 | typedef struct s_PnmiRequestStatus { | ||
762 | SK_U32 ErrorStatus; | ||
763 | SK_U32 ErrorOffset; | ||
764 | } SK_PNMI_REQUEST_STATUS; | ||
765 | |||
766 | typedef struct s_PnmiStrucData { | ||
767 | SK_U32 MgmtDBVersion; | ||
768 | SK_PNMI_REQUEST_STATUS ReturnStatus; | ||
769 | SK_U32 VpdFreeBytes; | ||
770 | char VpdEntriesList[SK_PNMI_VPD_ENTRIES * SK_PNMI_VPD_KEY_SIZE]; | ||
771 | SK_U32 VpdEntriesNumber; | ||
772 | SK_PNMI_VPD Vpd[SK_PNMI_VPD_ENTRIES]; | ||
773 | SK_U32 PortNumber; | ||
774 | SK_U32 DeviceType; | ||
775 | char DriverDescr[SK_PNMI_STRINGLEN1]; | ||
776 | char DriverVersion[SK_PNMI_STRINGLEN2]; | ||
777 | char DriverReleaseDate[SK_PNMI_STRINGLEN1]; | ||
778 | char DriverFileName[SK_PNMI_STRINGLEN1]; | ||
779 | char HwDescr[SK_PNMI_STRINGLEN1]; | ||
780 | char HwVersion[SK_PNMI_STRINGLEN2]; | ||
781 | SK_U16 Chipset; | ||
782 | SK_U32 ChipId; | ||
783 | SK_U8 VauxAvail; | ||
784 | SK_U32 RamSize; | ||
785 | SK_U32 MtuSize; | ||
786 | SK_U32 Action; | ||
787 | SK_U32 TestResult; | ||
788 | SK_U8 BusType; | ||
789 | SK_U8 BusSpeed; | ||
790 | SK_U8 BusWidth; | ||
791 | SK_U8 SensorNumber; | ||
792 | SK_PNMI_SENSOR Sensor[SK_PNMI_SENSOR_ENTRIES]; | ||
793 | SK_U8 ChecksumNumber; | ||
794 | SK_PNMI_CHECKSUM Checksum[SK_PNMI_CHECKSUM_ENTRIES]; | ||
795 | SK_PNMI_STAT Stat[SK_PNMI_MAC_ENTRIES]; | ||
796 | SK_PNMI_CONF Conf[SK_PNMI_MAC_ENTRIES]; | ||
797 | SK_U8 RlmtMode; | ||
798 | SK_U32 RlmtPortNumber; | ||
799 | SK_U8 RlmtPortActive; | ||
800 | SK_U8 RlmtPortPreferred; | ||
801 | SK_U64 RlmtChangeCts; | ||
802 | SK_U64 RlmtChangeTime; | ||
803 | SK_U64 RlmtChangeEstimate; | ||
804 | SK_U64 RlmtChangeThreshold; | ||
805 | SK_PNMI_RLMT Rlmt[SK_MAX_MACS]; | ||
806 | SK_U32 RlmtMonitorNumber; | ||
807 | SK_PNMI_RLMT_MONITOR RlmtMonitor[SK_PNMI_MONITOR_ENTRIES]; | ||
808 | SK_U32 TrapNumber; | ||
809 | SK_U8 Trap[SK_PNMI_TRAP_QUEUE_LEN]; | ||
810 | SK_U64 TxSwQueueLen; | ||
811 | SK_U64 TxSwQueueMax; | ||
812 | SK_U64 TxRetryCts; | ||
813 | SK_U64 RxIntrCts; | ||
814 | SK_U64 TxIntrCts; | ||
815 | SK_U64 RxNoBufCts; | ||
816 | SK_U64 TxNoBufCts; | ||
817 | SK_U64 TxUsedDescrNo; | ||
818 | SK_U64 RxDeliveredCts; | ||
819 | SK_U64 RxOctetsDeliveredCts; | ||
820 | SK_U64 RxHwErrorsCts; | ||
821 | SK_U64 TxHwErrorsCts; | ||
822 | SK_U64 InErrorsCts; | ||
823 | SK_U64 OutErrorsCts; | ||
824 | SK_U64 ErrRecoveryCts; | ||
825 | SK_U64 SysUpTime; | ||
826 | } SK_PNMI_STRUCT_DATA; | ||
827 | |||
828 | #define SK_PNMI_STRUCT_SIZE (sizeof(SK_PNMI_STRUCT_DATA)) | ||
829 | #define SK_PNMI_MIN_STRUCT_SIZE ((unsigned int)(SK_UPTR)\ | ||
830 | &(((SK_PNMI_STRUCT_DATA *)0)->VpdFreeBytes)) | ||
831 | /* | ||
832 | * ReturnStatus field | ||
833 | * must be located | ||
834 | * before VpdFreeBytes | ||
835 | */ | ||
836 | |||
837 | /* | ||
838 | * Various definitions | ||
839 | */ | ||
840 | #define SK_PNMI_MAX_PROTOS 3 | ||
841 | |||
842 | #define SK_PNMI_CNT_NO 66 /* Must have the value of the enum | ||
843 | * SK_PNMI_MAX_IDX. Define SK_PNMI_CHECK | ||
844 | * for check while init phase 1 | ||
845 | */ | ||
846 | |||
847 | /* | ||
848 | * Estimate data structure | ||
849 | */ | ||
850 | typedef struct s_PnmiEstimate { | ||
851 | unsigned int EstValueIndex; | ||
852 | SK_U64 EstValue[7]; | ||
853 | SK_U64 Estimate; | ||
854 | SK_TIMER EstTimer; | ||
855 | } SK_PNMI_ESTIMATE; | ||
856 | |||
857 | |||
858 | /* | ||
859 | * VCT timer data structure | ||
860 | */ | ||
861 | typedef struct s_VctTimer { | ||
862 | SK_TIMER VctTimer; | ||
863 | } SK_PNMI_VCT_TIMER; | ||
864 | |||
865 | |||
866 | /* | ||
867 | * PNMI specific adapter context structure | ||
868 | */ | ||
869 | typedef struct s_PnmiPort { | ||
870 | SK_U64 StatSyncCts; | ||
871 | SK_U64 StatSyncOctetsCts; | ||
872 | SK_U64 StatRxLongFrameCts; | ||
873 | SK_U64 StatRxFrameTooLongCts; | ||
874 | SK_U64 StatRxPMaccErr; | ||
875 | SK_U64 TxSwQueueLen; | ||
876 | SK_U64 TxSwQueueMax; | ||
877 | SK_U64 TxRetryCts; | ||
878 | SK_U64 RxIntrCts; | ||
879 | SK_U64 TxIntrCts; | ||
880 | SK_U64 RxNoBufCts; | ||
881 | SK_U64 TxNoBufCts; | ||
882 | SK_U64 TxUsedDescrNo; | ||
883 | SK_U64 RxDeliveredCts; | ||
884 | SK_U64 RxOctetsDeliveredCts; | ||
885 | SK_U64 RxHwErrorsCts; | ||
886 | SK_U64 TxHwErrorsCts; | ||
887 | SK_U64 InErrorsCts; | ||
888 | SK_U64 OutErrorsCts; | ||
889 | SK_U64 ErrRecoveryCts; | ||
890 | SK_U64 RxShortZeroMark; | ||
891 | SK_U64 CounterOffset[SK_PNMI_CNT_NO]; | ||
892 | SK_U32 CounterHigh[SK_PNMI_CNT_NO]; | ||
893 | SK_BOOL ActiveFlag; | ||
894 | SK_U8 Align[3]; | ||
895 | } SK_PNMI_PORT; | ||
896 | |||
897 | |||
898 | typedef struct s_PnmiData { | ||
899 | SK_PNMI_PORT Port [SK_MAX_MACS]; | ||
900 | SK_PNMI_PORT BufPort [SK_MAX_MACS]; /* 2002-09-13 pweber */ | ||
901 | SK_U64 VirtualCounterOffset[SK_PNMI_CNT_NO]; | ||
902 | SK_U32 TestResult; | ||
903 | char HwVersion[10]; | ||
904 | SK_U16 Align01; | ||
905 | |||
906 | char *pDriverDescription; | ||
907 | char *pDriverVersion; | ||
908 | char *pDriverReleaseDate; | ||
909 | char *pDriverFileName; | ||
910 | |||
911 | int MacUpdatedFlag; | ||
912 | int RlmtUpdatedFlag; | ||
913 | int SirqUpdatedFlag; | ||
914 | |||
915 | SK_U64 RlmtChangeCts; | ||
916 | SK_U64 RlmtChangeTime; | ||
917 | SK_PNMI_ESTIMATE RlmtChangeEstimate; | ||
918 | SK_U64 RlmtChangeThreshold; | ||
919 | |||
920 | SK_U64 StartUpTime; | ||
921 | SK_U32 DeviceType; | ||
922 | char PciBusSpeed; | ||
923 | char PciBusWidth; | ||
924 | char Chipset; | ||
925 | char PMD; | ||
926 | char Connector; | ||
927 | SK_BOOL DualNetActiveFlag; | ||
928 | SK_U16 Align02; | ||
929 | |||
930 | char TrapBuf[SK_PNMI_TRAP_QUEUE_LEN]; | ||
931 | unsigned int TrapBufFree; | ||
932 | unsigned int TrapQueueBeg; | ||
933 | unsigned int TrapQueueEnd; | ||
934 | unsigned int TrapBufPad; | ||
935 | unsigned int TrapUnique; | ||
936 | SK_U8 VctStatus[SK_MAX_MACS]; | ||
937 | SK_PNMI_VCT VctBackup[SK_MAX_MACS]; | ||
938 | SK_PNMI_VCT_TIMER VctTimeout[SK_MAX_MACS]; | ||
939 | #ifdef SK_DIAG_SUPPORT | ||
940 | SK_U32 DiagAttached; | ||
941 | #endif /* SK_DIAG_SUPPORT */ | ||
942 | } SK_PNMI; | ||
943 | |||
944 | |||
945 | /* | ||
946 | * Function prototypes | ||
947 | */ | ||
948 | extern int SkPnmiInit(SK_AC *pAC, SK_IOC IoC, int Level); | ||
949 | extern int SkPnmiGetVar(SK_AC *pAC, SK_IOC IoC, SK_U32 Id, void* pBuf, | ||
950 | unsigned int* pLen, SK_U32 Instance, SK_U32 NetIndex); | ||
951 | extern int SkPnmiPreSetVar(SK_AC *pAC, SK_IOC IoC, SK_U32 Id, | ||
952 | void* pBuf, unsigned int *pLen, SK_U32 Instance, SK_U32 NetIndex); | ||
953 | extern int SkPnmiSetVar(SK_AC *pAC, SK_IOC IoC, SK_U32 Id, void* pBuf, | ||
954 | unsigned int *pLen, SK_U32 Instance, SK_U32 NetIndex); | ||
955 | extern int SkPnmiGetStruct(SK_AC *pAC, SK_IOC IoC, void* pBuf, | ||
956 | unsigned int *pLen, SK_U32 NetIndex); | ||
957 | extern int SkPnmiPreSetStruct(SK_AC *pAC, SK_IOC IoC, void* pBuf, | ||
958 | unsigned int *pLen, SK_U32 NetIndex); | ||
959 | extern int SkPnmiSetStruct(SK_AC *pAC, SK_IOC IoC, void* pBuf, | ||
960 | unsigned int *pLen, SK_U32 NetIndex); | ||
961 | extern int SkPnmiEvent(SK_AC *pAC, SK_IOC IoC, SK_U32 Event, | ||
962 | SK_EVPARA Param); | ||
963 | extern int SkPnmiGenIoctl(SK_AC *pAC, SK_IOC IoC, void * pBuf, | ||
964 | unsigned int * pLen, SK_U32 NetIndex); | ||
965 | |||
966 | #endif | ||
diff --git a/drivers/net/sk98lin/h/skgesirq.h b/drivers/net/sk98lin/h/skgesirq.h new file mode 100644 index 000000000000..b486bd9b6628 --- /dev/null +++ b/drivers/net/sk98lin/h/skgesirq.h | |||
@@ -0,0 +1,111 @@ | |||
1 | /****************************************************************************** | ||
2 | * | ||
3 | * Name: skgesirq.h | ||
4 | * Project: Gigabit Ethernet Adapters, Common Modules | ||
5 | * Version: $Revision: 1.30 $ | ||
6 | * Date: $Date: 2003/07/04 12:34:13 $ | ||
7 | * Purpose: SK specific Gigabit Ethernet special IRQ functions | ||
8 | * | ||
9 | ******************************************************************************/ | ||
10 | |||
11 | /****************************************************************************** | ||
12 | * | ||
13 | * (C)Copyright 1998-2002 SysKonnect. | ||
14 | * (C)Copyright 2002-2003 Marvell. | ||
15 | * | ||
16 | * This program is free software; you can redistribute it and/or modify | ||
17 | * it under the terms of the GNU General Public License as published by | ||
18 | * the Free Software Foundation; either version 2 of the License, or | ||
19 | * (at your option) any later version. | ||
20 | * | ||
21 | * The information in this file is provided "AS IS" without warranty. | ||
22 | * | ||
23 | ******************************************************************************/ | ||
24 | |||
25 | #ifndef _INC_SKGESIRQ_H_ | ||
26 | #define _INC_SKGESIRQ_H_ | ||
27 | |||
28 | /* Define return codes of SkGePortCheckUp and CheckShort */ | ||
29 | #define SK_HW_PS_NONE 0 /* No action needed */ | ||
30 | #define SK_HW_PS_RESTART 1 /* Restart needed */ | ||
31 | #define SK_HW_PS_LINK 2 /* Link Up actions needed */ | ||
32 | |||
33 | /* | ||
34 | * Define the Event the special IRQ/INI module can handle | ||
35 | */ | ||
36 | #define SK_HWEV_WATIM 1 /* Timeout for WA Errata #2 XMAC */ | ||
37 | #define SK_HWEV_PORT_START 2 /* Port Start Event by RLMT */ | ||
38 | #define SK_HWEV_PORT_STOP 3 /* Port Stop Event by RLMT */ | ||
39 | #define SK_HWEV_CLEAR_STAT 4 /* Clear Statistics by PNMI */ | ||
40 | #define SK_HWEV_UPDATE_STAT 5 /* Update Statistics by PNMI */ | ||
41 | #define SK_HWEV_SET_LMODE 6 /* Set Link Mode by PNMI */ | ||
42 | #define SK_HWEV_SET_FLOWMODE 7 /* Set Flow Control Mode by PNMI */ | ||
43 | #define SK_HWEV_SET_ROLE 8 /* Set Master/Slave (Role) by PNMI */ | ||
44 | #define SK_HWEV_SET_SPEED 9 /* Set Link Speed by PNMI */ | ||
45 | #define SK_HWEV_HALFDUP_CHK 10 /* Half Duplex Hangup Workaround */ | ||
46 | |||
47 | #define SK_WA_ACT_TIME (5000000UL) /* 5 sec */ | ||
48 | #define SK_WA_INA_TIME (100000UL) /* 100 msec */ | ||
49 | |||
50 | #define SK_HALFDUP_CHK_TIME (10000UL) /* 10 msec */ | ||
51 | |||
52 | /* | ||
53 | * Define the error numbers and messages | ||
54 | */ | ||
55 | #define SKERR_SIRQ_E001 (SK_ERRBASE_SIRQ+0) | ||
56 | #define SKERR_SIRQ_E001MSG "Unknown event" | ||
57 | #define SKERR_SIRQ_E002 (SKERR_SIRQ_E001+1) | ||
58 | #define SKERR_SIRQ_E002MSG "Packet timeout RX1" | ||
59 | #define SKERR_SIRQ_E003 (SKERR_SIRQ_E002+1) | ||
60 | #define SKERR_SIRQ_E003MSG "Packet timeout RX2" | ||
61 | #define SKERR_SIRQ_E004 (SKERR_SIRQ_E003+1) | ||
62 | #define SKERR_SIRQ_E004MSG "MAC 1 not correctly initialized" | ||
63 | #define SKERR_SIRQ_E005 (SKERR_SIRQ_E004+1) | ||
64 | #define SKERR_SIRQ_E005MSG "MAC 2 not correctly initialized" | ||
65 | #define SKERR_SIRQ_E006 (SKERR_SIRQ_E005+1) | ||
66 | #define SKERR_SIRQ_E006MSG "CHECK failure R1" | ||
67 | #define SKERR_SIRQ_E007 (SKERR_SIRQ_E006+1) | ||
68 | #define SKERR_SIRQ_E007MSG "CHECK failure R2" | ||
69 | #define SKERR_SIRQ_E008 (SKERR_SIRQ_E007+1) | ||
70 | #define SKERR_SIRQ_E008MSG "CHECK failure XS1" | ||
71 | #define SKERR_SIRQ_E009 (SKERR_SIRQ_E008+1) | ||
72 | #define SKERR_SIRQ_E009MSG "CHECK failure XA1" | ||
73 | #define SKERR_SIRQ_E010 (SKERR_SIRQ_E009+1) | ||
74 | #define SKERR_SIRQ_E010MSG "CHECK failure XS2" | ||
75 | #define SKERR_SIRQ_E011 (SKERR_SIRQ_E010+1) | ||
76 | #define SKERR_SIRQ_E011MSG "CHECK failure XA2" | ||
77 | #define SKERR_SIRQ_E012 (SKERR_SIRQ_E011+1) | ||
78 | #define SKERR_SIRQ_E012MSG "unexpected IRQ Master error" | ||
79 | #define SKERR_SIRQ_E013 (SKERR_SIRQ_E012+1) | ||
80 | #define SKERR_SIRQ_E013MSG "unexpected IRQ Status error" | ||
81 | #define SKERR_SIRQ_E014 (SKERR_SIRQ_E013+1) | ||
82 | #define SKERR_SIRQ_E014MSG "Parity error on RAM (read)" | ||
83 | #define SKERR_SIRQ_E015 (SKERR_SIRQ_E014+1) | ||
84 | #define SKERR_SIRQ_E015MSG "Parity error on RAM (write)" | ||
85 | #define SKERR_SIRQ_E016 (SKERR_SIRQ_E015+1) | ||
86 | #define SKERR_SIRQ_E016MSG "Parity error MAC 1" | ||
87 | #define SKERR_SIRQ_E017 (SKERR_SIRQ_E016+1) | ||
88 | #define SKERR_SIRQ_E017MSG "Parity error MAC 2" | ||
89 | #define SKERR_SIRQ_E018 (SKERR_SIRQ_E017+1) | ||
90 | #define SKERR_SIRQ_E018MSG "Parity error RX 1" | ||
91 | #define SKERR_SIRQ_E019 (SKERR_SIRQ_E018+1) | ||
92 | #define SKERR_SIRQ_E019MSG "Parity error RX 2" | ||
93 | #define SKERR_SIRQ_E020 (SKERR_SIRQ_E019+1) | ||
94 | #define SKERR_SIRQ_E020MSG "MAC transmit FIFO underrun" | ||
95 | #define SKERR_SIRQ_E021 (SKERR_SIRQ_E020+1) | ||
96 | #define SKERR_SIRQ_E021MSG "Spurious TWSI interrupt" | ||
97 | #define SKERR_SIRQ_E022 (SKERR_SIRQ_E021+1) | ||
98 | #define SKERR_SIRQ_E022MSG "Cable pair swap error" | ||
99 | #define SKERR_SIRQ_E023 (SKERR_SIRQ_E022+1) | ||
100 | #define SKERR_SIRQ_E023MSG "Auto-negotiation error" | ||
101 | #define SKERR_SIRQ_E024 (SKERR_SIRQ_E023+1) | ||
102 | #define SKERR_SIRQ_E024MSG "FIFO overflow error" | ||
103 | #define SKERR_SIRQ_E025 (SKERR_SIRQ_E024+1) | ||
104 | #define SKERR_SIRQ_E025MSG "2 Pair Downshift detected" | ||
105 | |||
106 | extern void SkGeSirqIsr(SK_AC *pAC, SK_IOC IoC, SK_U32 Istatus); | ||
107 | extern int SkGeSirqEvent(SK_AC *pAC, SK_IOC IoC, SK_U32 Event, SK_EVPARA Para); | ||
108 | extern void SkHWLinkUp(SK_AC *pAC, SK_IOC IoC, int Port); | ||
109 | extern void SkHWLinkDown(SK_AC *pAC, SK_IOC IoC, int Port); | ||
110 | |||
111 | #endif /* _INC_SKGESIRQ_H_ */ | ||
diff --git a/drivers/net/sk98lin/h/ski2c.h b/drivers/net/sk98lin/h/ski2c.h new file mode 100644 index 000000000000..598bb42ccc3d --- /dev/null +++ b/drivers/net/sk98lin/h/ski2c.h | |||
@@ -0,0 +1,177 @@ | |||
1 | /****************************************************************************** | ||
2 | * | ||
3 | * Name: ski2c.h | ||
4 | * Project: Gigabit Ethernet Adapters, TWSI-Module | ||
5 | * Version: $Revision: 1.35 $ | ||
6 | * Date: $Date: 2003/10/20 09:06:30 $ | ||
7 | * Purpose: Defines to access Voltage and Temperature Sensor | ||
8 | * | ||
9 | ******************************************************************************/ | ||
10 | |||
11 | /****************************************************************************** | ||
12 | * | ||
13 | * (C)Copyright 1998-2002 SysKonnect. | ||
14 | * (C)Copyright 2002-2003 Marvell. | ||
15 | * | ||
16 | * This program is free software; you can redistribute it and/or modify | ||
17 | * it under the terms of the GNU General Public License as published by | ||
18 | * the Free Software Foundation; either version 2 of the License, or | ||
19 | * (at your option) any later version. | ||
20 | * | ||
21 | * The information in this file is provided "AS IS" without warranty. | ||
22 | * | ||
23 | ******************************************************************************/ | ||
24 | |||
25 | /* | ||
26 | * SKI2C.H contains all I2C specific defines | ||
27 | */ | ||
28 | |||
29 | #ifndef _SKI2C_H_ | ||
30 | #define _SKI2C_H_ | ||
31 | |||
32 | typedef struct s_Sensor SK_SENSOR; | ||
33 | |||
34 | #include "h/skgei2c.h" | ||
35 | |||
36 | /* | ||
37 | * Define the I2C events. | ||
38 | */ | ||
39 | #define SK_I2CEV_IRQ 1 /* IRQ happened Event */ | ||
40 | #define SK_I2CEV_TIM 2 /* Timeout event */ | ||
41 | #define SK_I2CEV_CLEAR 3 /* Clear MIB Values */ | ||
42 | |||
43 | /* | ||
44 | * Define READ and WRITE Constants. | ||
45 | */ | ||
46 | #define I2C_READ 0 | ||
47 | #define I2C_WRITE 1 | ||
48 | #define I2C_BURST 1 | ||
49 | #define I2C_SINGLE 0 | ||
50 | |||
51 | #define SKERR_I2C_E001 (SK_ERRBASE_I2C+0) | ||
52 | #define SKERR_I2C_E001MSG "Sensor index unknown" | ||
53 | #define SKERR_I2C_E002 (SKERR_I2C_E001+1) | ||
54 | #define SKERR_I2C_E002MSG "TWSI: transfer does not complete" | ||
55 | #define SKERR_I2C_E003 (SKERR_I2C_E002+1) | ||
56 | #define SKERR_I2C_E003MSG "LM80: NAK on device send" | ||
57 | #define SKERR_I2C_E004 (SKERR_I2C_E003+1) | ||
58 | #define SKERR_I2C_E004MSG "LM80: NAK on register send" | ||
59 | #define SKERR_I2C_E005 (SKERR_I2C_E004+1) | ||
60 | #define SKERR_I2C_E005MSG "LM80: NAK on device (2) send" | ||
61 | #define SKERR_I2C_E006 (SKERR_I2C_E005+1) | ||
62 | #define SKERR_I2C_E006MSG "Unknown event" | ||
63 | #define SKERR_I2C_E007 (SKERR_I2C_E006+1) | ||
64 | #define SKERR_I2C_E007MSG "LM80 read out of state" | ||
65 | #define SKERR_I2C_E008 (SKERR_I2C_E007+1) | ||
66 | #define SKERR_I2C_E008MSG "Unexpected sensor read completed" | ||
67 | #define SKERR_I2C_E009 (SKERR_I2C_E008+1) | ||
68 | #define SKERR_I2C_E009MSG "WARNING: temperature sensor out of range" | ||
69 | #define SKERR_I2C_E010 (SKERR_I2C_E009+1) | ||
70 | #define SKERR_I2C_E010MSG "WARNING: voltage sensor out of range" | ||
71 | #define SKERR_I2C_E011 (SKERR_I2C_E010+1) | ||
72 | #define SKERR_I2C_E011MSG "ERROR: temperature sensor out of range" | ||
73 | #define SKERR_I2C_E012 (SKERR_I2C_E011+1) | ||
74 | #define SKERR_I2C_E012MSG "ERROR: voltage sensor out of range" | ||
75 | #define SKERR_I2C_E013 (SKERR_I2C_E012+1) | ||
76 | #define SKERR_I2C_E013MSG "ERROR: couldn't init sensor" | ||
77 | #define SKERR_I2C_E014 (SKERR_I2C_E013+1) | ||
78 | #define SKERR_I2C_E014MSG "WARNING: fan sensor out of range" | ||
79 | #define SKERR_I2C_E015 (SKERR_I2C_E014+1) | ||
80 | #define SKERR_I2C_E015MSG "ERROR: fan sensor out of range" | ||
81 | #define SKERR_I2C_E016 (SKERR_I2C_E015+1) | ||
82 | #define SKERR_I2C_E016MSG "TWSI: active transfer does not complete" | ||
83 | |||
84 | /* | ||
85 | * Define Timeout values | ||
86 | */ | ||
87 | #define SK_I2C_TIM_LONG 2000000L /* 2 seconds */ | ||
88 | #define SK_I2C_TIM_SHORT 100000L /* 100 milliseconds */ | ||
89 | #define SK_I2C_TIM_WATCH 1000000L /* 1 second */ | ||
90 | |||
91 | /* | ||
92 | * Define trap and error log hold times | ||
93 | */ | ||
94 | #ifndef SK_SEN_ERR_TR_HOLD | ||
95 | #define SK_SEN_ERR_TR_HOLD (4*SK_TICKS_PER_SEC) | ||
96 | #endif | ||
97 | #ifndef SK_SEN_ERR_LOG_HOLD | ||
98 | #define SK_SEN_ERR_LOG_HOLD (60*SK_TICKS_PER_SEC) | ||
99 | #endif | ||
100 | #ifndef SK_SEN_WARN_TR_HOLD | ||
101 | #define SK_SEN_WARN_TR_HOLD (15*SK_TICKS_PER_SEC) | ||
102 | #endif | ||
103 | #ifndef SK_SEN_WARN_LOG_HOLD | ||
104 | #define SK_SEN_WARN_LOG_HOLD (15*60*SK_TICKS_PER_SEC) | ||
105 | #endif | ||
106 | |||
107 | /* | ||
108 | * Defines for SenType | ||
109 | */ | ||
110 | #define SK_SEN_UNKNOWN 0 | ||
111 | #define SK_SEN_TEMP 1 | ||
112 | #define SK_SEN_VOLT 2 | ||
113 | #define SK_SEN_FAN 3 | ||
114 | |||
115 | /* | ||
116 | * Define for the SenErrorFlag | ||
117 | */ | ||
118 | #define SK_SEN_ERR_NOT_PRESENT 0 /* Error Flag: Sensor not present */ | ||
119 | #define SK_SEN_ERR_OK 1 /* Error Flag: O.K. */ | ||
120 | #define SK_SEN_ERR_WARN 2 /* Error Flag: Warning */ | ||
121 | #define SK_SEN_ERR_ERR 3 /* Error Flag: Error */ | ||
122 | #define SK_SEN_ERR_FAULTY 4 /* Error Flag: Faulty */ | ||
123 | |||
124 | /* | ||
125 | * Define the Sensor struct | ||
126 | */ | ||
127 | struct s_Sensor { | ||
128 | char *SenDesc; /* Description */ | ||
129 | int SenType; /* Voltage or Temperature */ | ||
130 | SK_I32 SenValue; /* Current value of the sensor */ | ||
131 | SK_I32 SenThreErrHigh; /* High error Threshhold of this sensor */ | ||
132 | SK_I32 SenThreWarnHigh; /* High warning Threshhold of this sensor */ | ||
133 | SK_I32 SenThreErrLow; /* Lower error Threshold of the sensor */ | ||
134 | SK_I32 SenThreWarnLow; /* Lower warning Threshold of the sensor */ | ||
135 | int SenErrFlag; /* Sensor indicated an error */ | ||
136 | SK_BOOL SenInit; /* Is sensor initialized ? */ | ||
137 | SK_U64 SenErrCts; /* Error trap counter */ | ||
138 | SK_U64 SenWarnCts; /* Warning trap counter */ | ||
139 | SK_U64 SenBegErrTS; /* Begin error timestamp */ | ||
140 | SK_U64 SenBegWarnTS; /* Begin warning timestamp */ | ||
141 | SK_U64 SenLastErrTrapTS; /* Last error trap timestamp */ | ||
142 | SK_U64 SenLastErrLogTS; /* Last error log timestamp */ | ||
143 | SK_U64 SenLastWarnTrapTS; /* Last warning trap timestamp */ | ||
144 | SK_U64 SenLastWarnLogTS; /* Last warning log timestamp */ | ||
145 | int SenState; /* Sensor State (see HW specific include) */ | ||
146 | int (*SenRead)(SK_AC *pAC, SK_IOC IoC, struct s_Sensor *pSen); | ||
147 | /* Sensors read function */ | ||
148 | SK_U16 SenReg; /* Register Address for this sensor */ | ||
149 | SK_U8 SenDev; /* Device Selection for this sensor */ | ||
150 | }; | ||
151 | |||
152 | typedef struct s_I2c { | ||
153 | SK_SENSOR SenTable[SK_MAX_SENSORS]; /* Sensor Table */ | ||
154 | int CurrSens; /* Which sensor is currently queried */ | ||
155 | int MaxSens; /* Max. number of sensors */ | ||
156 | int TimerMode; /* Use the timer also to watch the state machine */ | ||
157 | int InitLevel; /* Initialized Level */ | ||
158 | #ifndef SK_DIAG | ||
159 | int DummyReads; /* Number of non-checked dummy reads */ | ||
160 | SK_TIMER SenTimer; /* Sensors timer */ | ||
161 | #endif /* !SK_DIAG */ | ||
162 | } SK_I2C; | ||
163 | |||
164 | extern int SkI2cInit(SK_AC *pAC, SK_IOC IoC, int Level); | ||
165 | extern int SkI2cWrite(SK_AC *pAC, SK_IOC IoC, SK_U32 Data, int Dev, int Size, | ||
166 | int Reg, int Burst); | ||
167 | extern int SkI2cReadSensor(SK_AC *pAC, SK_IOC IoC, SK_SENSOR *pSen); | ||
168 | #ifdef SK_DIAG | ||
169 | extern SK_U32 SkI2cRead(SK_AC *pAC, SK_IOC IoC, int Dev, int Size, int Reg, | ||
170 | int Burst); | ||
171 | #else /* !SK_DIAG */ | ||
172 | extern int SkI2cEvent(SK_AC *pAC, SK_IOC IoC, SK_U32 Event, SK_EVPARA Para); | ||
173 | extern void SkI2cWaitIrq(SK_AC *pAC, SK_IOC IoC); | ||
174 | extern void SkI2cIsr(SK_AC *pAC, SK_IOC IoC); | ||
175 | #endif /* !SK_DIAG */ | ||
176 | #endif /* n_SKI2C_H */ | ||
177 | |||
diff --git a/drivers/net/sk98lin/h/skqueue.h b/drivers/net/sk98lin/h/skqueue.h new file mode 100644 index 000000000000..2ec40d4fdf60 --- /dev/null +++ b/drivers/net/sk98lin/h/skqueue.h | |||
@@ -0,0 +1,94 @@ | |||
1 | /****************************************************************************** | ||
2 | * | ||
3 | * Name: skqueue.h | ||
4 | * Project: Gigabit Ethernet Adapters, Event Scheduler Module | ||
5 | * Version: $Revision: 1.16 $ | ||
6 | * Date: $Date: 2003/09/16 12:50:32 $ | ||
7 | * Purpose: Defines for the Event queue | ||
8 | * | ||
9 | ******************************************************************************/ | ||
10 | |||
11 | /****************************************************************************** | ||
12 | * | ||
13 | * (C)Copyright 1998-2002 SysKonnect GmbH. | ||
14 | * (C)Copyright 2002-2003 Marvell. | ||
15 | * | ||
16 | * This program is free software; you can redistribute it and/or modify | ||
17 | * it under the terms of the GNU General Public License as published by | ||
18 | * the Free Software Foundation; either version 2 of the License, or | ||
19 | * (at your option) any later version. | ||
20 | * | ||
21 | * The information in this file is provided "AS IS" without warranty. | ||
22 | * | ||
23 | ******************************************************************************/ | ||
24 | |||
25 | /* | ||
26 | * SKQUEUE.H contains all defines and types for the event queue | ||
27 | */ | ||
28 | |||
29 | #ifndef _SKQUEUE_H_ | ||
30 | #define _SKQUEUE_H_ | ||
31 | |||
32 | |||
33 | /* | ||
34 | * define the event classes to be served | ||
35 | */ | ||
36 | #define SKGE_DRV 1 /* Driver Event Class */ | ||
37 | #define SKGE_RLMT 2 /* RLMT Event Class */ | ||
38 | #define SKGE_I2C 3 /* I2C Event Class */ | ||
39 | #define SKGE_PNMI 4 /* PNMI Event Class */ | ||
40 | #define SKGE_CSUM 5 /* Checksum Event Class */ | ||
41 | #define SKGE_HWAC 6 /* Hardware Access Event Class */ | ||
42 | |||
43 | #define SKGE_SWT 9 /* Software Timer Event Class */ | ||
44 | #define SKGE_LACP 10 /* LACP Aggregation Event Class */ | ||
45 | #define SKGE_RSF 11 /* RSF Aggregation Event Class */ | ||
46 | #define SKGE_MARKER 12 /* MARKER Aggregation Event Class */ | ||
47 | #define SKGE_FD 13 /* FD Distributor Event Class */ | ||
48 | |||
49 | /* | ||
50 | * define event queue as circular buffer | ||
51 | */ | ||
52 | #define SK_MAX_EVENT 64 | ||
53 | |||
54 | /* | ||
55 | * Parameter union for the Para stuff | ||
56 | */ | ||
57 | typedef union u_EvPara { | ||
58 | void *pParaPtr; /* Parameter Pointer */ | ||
59 | SK_U64 Para64; /* Parameter 64bit version */ | ||
60 | SK_U32 Para32[2]; /* Parameter Array of 32bit parameters */ | ||
61 | } SK_EVPARA; | ||
62 | |||
63 | /* | ||
64 | * Event Queue | ||
65 | * skqueue.c | ||
66 | * events are class/value pairs | ||
67 | * class is addressee, e.g. RLMT, PNMI etc. | ||
68 | * value is command, e.g. line state change, ring op change etc. | ||
69 | */ | ||
70 | typedef struct s_EventElem { | ||
71 | SK_U32 Class; /* Event class */ | ||
72 | SK_U32 Event; /* Event value */ | ||
73 | SK_EVPARA Para; /* Event parameter */ | ||
74 | } SK_EVENTELEM; | ||
75 | |||
76 | typedef struct s_Queue { | ||
77 | SK_EVENTELEM EvQueue[SK_MAX_EVENT]; | ||
78 | SK_EVENTELEM *EvPut; | ||
79 | SK_EVENTELEM *EvGet; | ||
80 | } SK_QUEUE; | ||
81 | |||
82 | extern void SkEventInit(SK_AC *pAC, SK_IOC Ioc, int Level); | ||
83 | extern void SkEventQueue(SK_AC *pAC, SK_U32 Class, SK_U32 Event, | ||
84 | SK_EVPARA Para); | ||
85 | extern int SkEventDispatcher(SK_AC *pAC, SK_IOC Ioc); | ||
86 | |||
87 | |||
88 | /* Define Error Numbers and messages */ | ||
89 | #define SKERR_Q_E001 (SK_ERRBASE_QUEUE+0) | ||
90 | #define SKERR_Q_E001MSG "Event queue overflow" | ||
91 | #define SKERR_Q_E002 (SKERR_Q_E001+1) | ||
92 | #define SKERR_Q_E002MSG "Undefined event class" | ||
93 | #endif /* _SKQUEUE_H_ */ | ||
94 | |||
diff --git a/drivers/net/sk98lin/h/skrlmt.h b/drivers/net/sk98lin/h/skrlmt.h new file mode 100644 index 000000000000..ca75dfdcf2d6 --- /dev/null +++ b/drivers/net/sk98lin/h/skrlmt.h | |||
@@ -0,0 +1,438 @@ | |||
1 | /****************************************************************************** | ||
2 | * | ||
3 | * Name: skrlmt.h | ||
4 | * Project: GEnesis, PCI Gigabit Ethernet Adapter | ||
5 | * Version: $Revision: 1.37 $ | ||
6 | * Date: $Date: 2003/04/15 09:43:43 $ | ||
7 | * Purpose: Header file for Redundant Link ManagemenT. | ||
8 | * | ||
9 | ******************************************************************************/ | ||
10 | |||
11 | /****************************************************************************** | ||
12 | * | ||
13 | * (C)Copyright 1998-2002 SysKonnect GmbH. | ||
14 | * (C)Copyright 2002-2003 Marvell. | ||
15 | * | ||
16 | * This program is free software; you can redistribute it and/or modify | ||
17 | * it under the terms of the GNU General Public License as published by | ||
18 | * the Free Software Foundation; either version 2 of the License, or | ||
19 | * (at your option) any later version. | ||
20 | * | ||
21 | * The information in this file is provided "AS IS" without warranty. | ||
22 | * | ||
23 | ******************************************************************************/ | ||
24 | |||
25 | /****************************************************************************** | ||
26 | * | ||
27 | * Description: | ||
28 | * | ||
29 | * This is the header file for Redundant Link ManagemenT. | ||
30 | * | ||
31 | * Include File Hierarchy: | ||
32 | * | ||
33 | * "skdrv1st.h" | ||
34 | * ... | ||
35 | * "sktypes.h" | ||
36 | * "skqueue.h" | ||
37 | * "skaddr.h" | ||
38 | * "skrlmt.h" | ||
39 | * ... | ||
40 | * "skdrv2nd.h" | ||
41 | * | ||
42 | ******************************************************************************/ | ||
43 | |||
44 | #ifndef __INC_SKRLMT_H | ||
45 | #define __INC_SKRLMT_H | ||
46 | |||
47 | #ifdef __cplusplus | ||
48 | extern "C" { | ||
49 | #endif /* cplusplus */ | ||
50 | |||
51 | /* defines ********************************************************************/ | ||
52 | |||
53 | #define SK_RLMT_NET_DOWN_TEMP 1 /* NET_DOWN due to last port down. */ | ||
54 | #define SK_RLMT_NET_DOWN_FINAL 2 /* NET_DOWN due to RLMT_STOP. */ | ||
55 | |||
56 | /* ----- Default queue sizes - must be multiples of 8 KB ----- */ | ||
57 | |||
58 | /* Less than 8 KB free in RX queue => pause frames. */ | ||
59 | #define SK_RLMT_STANDBY_QRXSIZE 128 /* Size of rx standby queue in KB. */ | ||
60 | #define SK_RLMT_STANDBY_QXASIZE 32 /* Size of async standby queue in KB. */ | ||
61 | #define SK_RLMT_STANDBY_QXSSIZE 0 /* Size of sync standby queue in KB. */ | ||
62 | |||
63 | #define SK_RLMT_MAX_TX_BUF_SIZE 60 /* Maximum RLMT transmit size. */ | ||
64 | |||
65 | /* ----- PORT states ----- */ | ||
66 | |||
67 | #define SK_RLMT_PS_INIT 0 /* Port state: Init. */ | ||
68 | #define SK_RLMT_PS_LINK_DOWN 1 /* Port state: Link down. */ | ||
69 | #define SK_RLMT_PS_DOWN 2 /* Port state: Port down. */ | ||
70 | #define SK_RLMT_PS_GOING_UP 3 /* Port state: Going up. */ | ||
71 | #define SK_RLMT_PS_UP 4 /* Port state: Up. */ | ||
72 | |||
73 | /* ----- RLMT states ----- */ | ||
74 | |||
75 | #define SK_RLMT_RS_INIT 0 /* RLMT state: Init. */ | ||
76 | #define SK_RLMT_RS_NET_DOWN 1 /* RLMT state: Net down. */ | ||
77 | #define SK_RLMT_RS_NET_UP 2 /* RLMT state: Net up. */ | ||
78 | |||
79 | /* ----- PORT events ----- */ | ||
80 | |||
81 | #define SK_RLMT_LINK_UP 1001 /* Link came up. */ | ||
82 | #define SK_RLMT_LINK_DOWN 1002 /* Link went down. */ | ||
83 | #define SK_RLMT_PORT_ADDR 1003 /* Port address changed. */ | ||
84 | |||
85 | /* ----- RLMT events ----- */ | ||
86 | |||
87 | #define SK_RLMT_START 2001 /* Start RLMT. */ | ||
88 | #define SK_RLMT_STOP 2002 /* Stop RLMT. */ | ||
89 | #define SK_RLMT_PACKET_RECEIVED 2003 /* Packet was received for RLMT. */ | ||
90 | #define SK_RLMT_STATS_CLEAR 2004 /* Clear statistics. */ | ||
91 | #define SK_RLMT_STATS_UPDATE 2005 /* Update statistics. */ | ||
92 | #define SK_RLMT_PREFPORT_CHANGE 2006 /* Change preferred port. */ | ||
93 | #define SK_RLMT_MODE_CHANGE 2007 /* New RlmtMode. */ | ||
94 | #define SK_RLMT_SET_NETS 2008 /* Number of Nets (1 or 2). */ | ||
95 | |||
96 | /* ----- RLMT mode bits ----- */ | ||
97 | |||
98 | /* | ||
99 | * CAUTION: These defines are private to RLMT. | ||
100 | * Please use the RLMT mode defines below. | ||
101 | */ | ||
102 | |||
103 | #define SK_RLMT_CHECK_LINK 1 /* Check Link. */ | ||
104 | #define SK_RLMT_CHECK_LOC_LINK 2 /* Check other link on same adapter. */ | ||
105 | #define SK_RLMT_CHECK_SEG 4 /* Check segmentation. */ | ||
106 | |||
107 | #ifndef RLMT_CHECK_REMOTE | ||
108 | #define SK_RLMT_CHECK_OTHERS SK_RLMT_CHECK_LOC_LINK | ||
109 | #else /* RLMT_CHECK_REMOTE */ | ||
110 | #define SK_RLMT_CHECK_REM_LINK 8 /* Check link(s) on other adapter(s). */ | ||
111 | #define SK_RLMT_MAX_REMOTE_PORTS_CHECKED 3 | ||
112 | #define SK_RLMT_CHECK_OTHERS \ | ||
113 | (SK_RLMT_CHECK_LOC_LINK | SK_RLMT_CHECK_REM_LINK) | ||
114 | #endif /* RLMT_CHECK_REMOTE */ | ||
115 | |||
116 | #ifndef SK_RLMT_ENABLE_TRANSPARENT | ||
117 | #define SK_RLMT_TRANSPARENT 0 /* RLMT transparent - inactive. */ | ||
118 | #else /* SK_RLMT_ENABLE_TRANSPARENT */ | ||
119 | #define SK_RLMT_TRANSPARENT 128 /* RLMT transparent. */ | ||
120 | #endif /* SK_RLMT_ENABLE_TRANSPARENT */ | ||
121 | |||
122 | /* ----- RLMT modes ----- */ | ||
123 | |||
124 | /* Check Link State. */ | ||
125 | #define SK_RLMT_MODE_CLS (SK_RLMT_CHECK_LINK) | ||
126 | |||
127 | /* Check Local Ports: check other links on the same adapter. */ | ||
128 | #define SK_RLMT_MODE_CLP (SK_RLMT_CHECK_LINK | SK_RLMT_CHECK_LOC_LINK) | ||
129 | |||
130 | /* Check Local Ports and Segmentation Status. */ | ||
131 | #define SK_RLMT_MODE_CLPSS \ | ||
132 | (SK_RLMT_CHECK_LINK | SK_RLMT_CHECK_LOC_LINK | SK_RLMT_CHECK_SEG) | ||
133 | |||
134 | #ifdef RLMT_CHECK_REMOTE | ||
135 | /* Check Local and Remote Ports: check links (local or remote). */ | ||
136 | Name of define TBD! | ||
137 | #define SK_RLMT_MODE_CRP \ | ||
138 | (SK_RLMT_CHECK_LINK | SK_RLMT_CHECK_LOC_LINK | SK_RLMT_CHECK_REM_LINK) | ||
139 | |||
140 | /* Check Local and Remote Ports and Segmentation Status. */ | ||
141 | Name of define TBD! | ||
142 | #define SK_RLMT_MODE_CRPSS \ | ||
143 | (SK_RLMT_CHECK_LINK | SK_RLMT_CHECK_LOC_LINK | \ | ||
144 | SK_RLMT_CHECK_REM_LINK | SK_RLMT_CHECK_SEG) | ||
145 | #endif /* RLMT_CHECK_REMOTE */ | ||
146 | |||
147 | /* ----- RLMT lookahead result bits ----- */ | ||
148 | |||
149 | #define SK_RLMT_RX_RLMT 1 /* Give packet to RLMT. */ | ||
150 | #define SK_RLMT_RX_PROTOCOL 2 /* Give packet to protocol. */ | ||
151 | |||
152 | /* Macros */ | ||
153 | |||
154 | #if 0 | ||
155 | SK_AC *pAC /* adapter context */ | ||
156 | SK_U32 PortNum /* receiving port */ | ||
157 | unsigned PktLen /* received packet's length */ | ||
158 | SK_BOOL IsBc /* Flag: packet is broadcast */ | ||
159 | unsigned *pOffset /* offs. of bytes to present to SK_RLMT_LOOKAHEAD */ | ||
160 | unsigned *pNumBytes /* #Bytes to present to SK_RLMT_LOOKAHEAD */ | ||
161 | #endif /* 0 */ | ||
162 | |||
163 | #define SK_RLMT_PRE_LOOKAHEAD(pAC,PortNum,PktLen,IsBc,pOffset,pNumBytes) { \ | ||
164 | SK_AC *_pAC; \ | ||
165 | SK_U32 _PortNum; \ | ||
166 | _pAC = (pAC); \ | ||
167 | _PortNum = (SK_U32)(PortNum); \ | ||
168 | /* _pAC->Rlmt.Port[_PortNum].PacketsRx++; */ \ | ||
169 | _pAC->Rlmt.Port[_PortNum].PacketsPerTimeSlot++; \ | ||
170 | if (_pAC->Rlmt.RlmtOff) { \ | ||
171 | *(pNumBytes) = 0; \ | ||
172 | } \ | ||
173 | else {\ | ||
174 | if ((_pAC->Rlmt.Port[_PortNum].Net->RlmtMode & SK_RLMT_TRANSPARENT) != 0) { \ | ||
175 | *(pNumBytes) = 0; \ | ||
176 | } \ | ||
177 | else if (IsBc) { \ | ||
178 | if (_pAC->Rlmt.Port[_PortNum].Net->RlmtMode != SK_RLMT_MODE_CLS) { \ | ||
179 | *(pNumBytes) = 6; \ | ||
180 | *(pOffset) = 6; \ | ||
181 | } \ | ||
182 | else { \ | ||
183 | *(pNumBytes) = 0; \ | ||
184 | } \ | ||
185 | } \ | ||
186 | else { \ | ||
187 | if ((PktLen) > SK_RLMT_MAX_TX_BUF_SIZE) { \ | ||
188 | /* _pAC->Rlmt.Port[_PortNum].DataPacketsPerTimeSlot++; */ \ | ||
189 | *(pNumBytes) = 0; \ | ||
190 | } \ | ||
191 | else { \ | ||
192 | *(pNumBytes) = 6; \ | ||
193 | *(pOffset) = 0; \ | ||
194 | } \ | ||
195 | } \ | ||
196 | } \ | ||
197 | } | ||
198 | |||
199 | #if 0 | ||
200 | SK_AC *pAC /* adapter context */ | ||
201 | SK_U32 PortNum /* receiving port */ | ||
202 | SK_U8 *pLaPacket, /* received packet's data (points to pOffset) */ | ||
203 | SK_BOOL IsBc /* Flag: packet is broadcast */ | ||
204 | SK_BOOL IsMc /* Flag: packet is multicast */ | ||
205 | unsigned *pForRlmt /* Result: bits SK_RLMT_RX_RLMT, SK_RLMT_RX_PROTOCOL */ | ||
206 | SK_RLMT_LOOKAHEAD() expects *pNumBytes from | ||
207 | packet offset *pOffset (s.a.) at *pLaPacket. | ||
208 | |||
209 | If you use SK_RLMT_LOOKAHEAD in a path where you already know if the packet is | ||
210 | BC, MC, or UC, you should use constants for IsBc and IsMc, so that your compiler | ||
211 | can trash unneeded parts of the if construction. | ||
212 | #endif /* 0 */ | ||
213 | |||
214 | #define SK_RLMT_LOOKAHEAD(pAC,PortNum,pLaPacket,IsBc,IsMc,pForRlmt) { \ | ||
215 | SK_AC *_pAC; \ | ||
216 | SK_U32 _PortNum; \ | ||
217 | SK_U8 *_pLaPacket; \ | ||
218 | _pAC = (pAC); \ | ||
219 | _PortNum = (SK_U32)(PortNum); \ | ||
220 | _pLaPacket = (SK_U8 *)(pLaPacket); \ | ||
221 | if (IsBc) {\ | ||
222 | if (!SK_ADDR_EQUAL(_pLaPacket, _pAC->Addr.Net[_pAC->Rlmt.Port[ \ | ||
223 | _PortNum].Net->NetNumber].CurrentMacAddress.a)) { \ | ||
224 | _pAC->Rlmt.Port[_PortNum].BcTimeStamp = SkOsGetTime(_pAC); \ | ||
225 | _pAC->Rlmt.CheckSwitch = SK_TRUE; \ | ||
226 | } \ | ||
227 | /* _pAC->Rlmt.Port[_PortNum].DataPacketsPerTimeSlot++; */ \ | ||
228 | *(pForRlmt) = SK_RLMT_RX_PROTOCOL; \ | ||
229 | } \ | ||
230 | else if (IsMc) { \ | ||
231 | if (SK_ADDR_EQUAL(_pLaPacket, BridgeMcAddr.a)) { \ | ||
232 | _pAC->Rlmt.Port[_PortNum].BpduPacketsPerTimeSlot++; \ | ||
233 | if (_pAC->Rlmt.Port[_PortNum].Net->RlmtMode & SK_RLMT_CHECK_SEG) { \ | ||
234 | *(pForRlmt) = SK_RLMT_RX_RLMT | SK_RLMT_RX_PROTOCOL; \ | ||
235 | } \ | ||
236 | else { \ | ||
237 | *(pForRlmt) = SK_RLMT_RX_PROTOCOL; \ | ||
238 | } \ | ||
239 | } \ | ||
240 | else if (SK_ADDR_EQUAL(_pLaPacket, SkRlmtMcAddr.a)) { \ | ||
241 | *(pForRlmt) = SK_RLMT_RX_RLMT; \ | ||
242 | } \ | ||
243 | else { \ | ||
244 | /* _pAC->Rlmt.Port[_PortNum].DataPacketsPerTimeSlot++; */ \ | ||
245 | *(pForRlmt) = SK_RLMT_RX_PROTOCOL; \ | ||
246 | } \ | ||
247 | } \ | ||
248 | else { \ | ||
249 | if (SK_ADDR_EQUAL( \ | ||
250 | _pLaPacket, \ | ||
251 | _pAC->Addr.Port[_PortNum].CurrentMacAddress.a)) { \ | ||
252 | *(pForRlmt) = SK_RLMT_RX_RLMT; \ | ||
253 | } \ | ||
254 | else { \ | ||
255 | /* _pAC->Rlmt.Port[_PortNum].DataPacketsPerTimeSlot++; */ \ | ||
256 | *(pForRlmt) = SK_RLMT_RX_PROTOCOL; \ | ||
257 | } \ | ||
258 | } \ | ||
259 | } | ||
260 | |||
261 | #ifdef SK_RLMT_FAST_LOOKAHEAD | ||
262 | Error: SK_RLMT_FAST_LOOKAHEAD no longer used. Use new macros for lookahead. | ||
263 | #endif /* SK_RLMT_FAST_LOOKAHEAD */ | ||
264 | #ifdef SK_RLMT_SLOW_LOOKAHEAD | ||
265 | Error: SK_RLMT_SLOW_LOOKAHEAD no longer used. Use new macros for lookahead. | ||
266 | #endif /* SK_RLMT_SLOW_LOOKAHEAD */ | ||
267 | |||
268 | /* typedefs *******************************************************************/ | ||
269 | |||
270 | #ifdef SK_RLMT_MBUF_PRIVATE | ||
271 | typedef struct s_RlmtMbuf { | ||
272 | some content | ||
273 | } SK_RLMT_MBUF; | ||
274 | #endif /* SK_RLMT_MBUF_PRIVATE */ | ||
275 | |||
276 | |||
277 | #ifdef SK_LA_INFO | ||
278 | typedef struct s_Rlmt_PacketInfo { | ||
279 | unsigned PacketLength; /* Length of packet. */ | ||
280 | unsigned PacketType; /* Directed/Multicast/Broadcast. */ | ||
281 | } SK_RLMT_PINFO; | ||
282 | #endif /* SK_LA_INFO */ | ||
283 | |||
284 | |||
285 | typedef struct s_RootId { | ||
286 | SK_U8 Id[8]; /* Root Bridge Id. */ | ||
287 | } SK_RLMT_ROOT_ID; | ||
288 | |||
289 | |||
290 | typedef struct s_port { | ||
291 | SK_MAC_ADDR CheckAddr; | ||
292 | SK_BOOL SuspectTx; | ||
293 | } SK_PORT_CHECK; | ||
294 | |||
295 | |||
296 | typedef struct s_RlmtNet SK_RLMT_NET; | ||
297 | |||
298 | |||
299 | typedef struct s_RlmtPort { | ||
300 | |||
301 | /* ----- Public part (read-only) ----- */ | ||
302 | |||
303 | SK_U8 PortState; /* Current state of this port. */ | ||
304 | |||
305 | /* For PNMI */ | ||
306 | SK_BOOL LinkDown; | ||
307 | SK_BOOL PortDown; | ||
308 | SK_U8 Align01; | ||
309 | |||
310 | SK_U32 PortNumber; /* Number of port on adapter. */ | ||
311 | SK_RLMT_NET * Net; /* Net port belongs to. */ | ||
312 | |||
313 | SK_U64 TxHelloCts; | ||
314 | SK_U64 RxHelloCts; | ||
315 | SK_U64 TxSpHelloReqCts; | ||
316 | SK_U64 RxSpHelloCts; | ||
317 | |||
318 | /* ----- Private part ----- */ | ||
319 | |||
320 | /* SK_U64 PacketsRx; */ /* Total packets received. */ | ||
321 | SK_U32 PacketsPerTimeSlot; /* Packets rxed between TOs. */ | ||
322 | /* SK_U32 DataPacketsPerTimeSlot; */ /* Data packets ... */ | ||
323 | SK_U32 BpduPacketsPerTimeSlot; /* BPDU packets rxed in TS. */ | ||
324 | SK_U64 BcTimeStamp; /* Time of last BC receive. */ | ||
325 | SK_U64 GuTimeStamp; /* Time of entering GOING_UP. */ | ||
326 | |||
327 | SK_TIMER UpTimer; /* Timer struct Link/Port up. */ | ||
328 | SK_TIMER DownRxTimer; /* Timer struct down rx. */ | ||
329 | SK_TIMER DownTxTimer; /* Timer struct down tx. */ | ||
330 | |||
331 | SK_U32 CheckingState; /* Checking State. */ | ||
332 | |||
333 | SK_ADDR_PORT * AddrPort; | ||
334 | |||
335 | SK_U8 Random[4]; /* Random value. */ | ||
336 | unsigned PortsChecked; /* #ports checked. */ | ||
337 | unsigned PortsSuspect; /* #ports checked that are s. */ | ||
338 | SK_PORT_CHECK PortCheck[1]; | ||
339 | /* SK_PORT_CHECK PortCheck[SK_MAX_MACS - 1]; */ | ||
340 | |||
341 | SK_BOOL PortStarted; /* Port is started. */ | ||
342 | SK_BOOL PortNoRx; /* NoRx for >= 1 time slot. */ | ||
343 | SK_BOOL RootIdSet; | ||
344 | SK_RLMT_ROOT_ID Root; /* Root Bridge Id. */ | ||
345 | } SK_RLMT_PORT; | ||
346 | |||
347 | |||
348 | struct s_RlmtNet { | ||
349 | |||
350 | /* ----- Public part (read-only) ----- */ | ||
351 | |||
352 | SK_U32 NetNumber; /* Number of net. */ | ||
353 | |||
354 | SK_RLMT_PORT * Port[SK_MAX_MACS]; /* Ports that belong to this net. */ | ||
355 | SK_U32 NumPorts; /* Number of ports. */ | ||
356 | SK_U32 PrefPort; /* Preferred port. */ | ||
357 | |||
358 | /* For PNMI */ | ||
359 | |||
360 | SK_U32 ChgBcPrio; /* Change Priority of last broadcast received */ | ||
361 | SK_U32 RlmtMode; /* Check ... */ | ||
362 | SK_U32 ActivePort; /* Active port. */ | ||
363 | SK_U32 Preference; /* 0xFFFFFFFF: Automatic. */ | ||
364 | |||
365 | SK_U8 RlmtState; /* Current RLMT state. */ | ||
366 | |||
367 | /* ----- Private part ----- */ | ||
368 | SK_BOOL RootIdSet; | ||
369 | SK_U16 Align01; | ||
370 | |||
371 | int LinksUp; /* #Links up. */ | ||
372 | int PortsUp; /* #Ports up. */ | ||
373 | SK_U32 TimeoutValue; /* RLMT timeout value. */ | ||
374 | |||
375 | SK_U32 CheckingState; /* Checking State. */ | ||
376 | SK_RLMT_ROOT_ID Root; /* Root Bridge Id. */ | ||
377 | |||
378 | SK_TIMER LocTimer; /* Timer struct. */ | ||
379 | SK_TIMER SegTimer; /* Timer struct. */ | ||
380 | }; | ||
381 | |||
382 | |||
383 | typedef struct s_Rlmt { | ||
384 | |||
385 | /* ----- Public part (read-only) ----- */ | ||
386 | |||
387 | SK_U32 NumNets; /* Number of nets. */ | ||
388 | SK_U32 NetsStarted; /* Number of nets started. */ | ||
389 | SK_RLMT_NET Net[SK_MAX_NETS]; /* Array of available nets. */ | ||
390 | SK_RLMT_PORT Port[SK_MAX_MACS]; /* Array of available ports. */ | ||
391 | |||
392 | /* ----- Private part ----- */ | ||
393 | SK_BOOL CheckSwitch; | ||
394 | SK_BOOL RlmtOff; /* set to zero if the Mac addresses | ||
395 | are equal or the second one | ||
396 | is zero */ | ||
397 | SK_U16 Align01; | ||
398 | |||
399 | } SK_RLMT; | ||
400 | |||
401 | |||
402 | extern SK_MAC_ADDR BridgeMcAddr; | ||
403 | extern SK_MAC_ADDR SkRlmtMcAddr; | ||
404 | |||
405 | /* function prototypes ********************************************************/ | ||
406 | |||
407 | |||
408 | #ifndef SK_KR_PROTO | ||
409 | |||
410 | /* Functions provided by SkRlmt */ | ||
411 | |||
412 | /* ANSI/C++ compliant function prototypes */ | ||
413 | |||
414 | extern void SkRlmtInit( | ||
415 | SK_AC *pAC, | ||
416 | SK_IOC IoC, | ||
417 | int Level); | ||
418 | |||
419 | extern int SkRlmtEvent( | ||
420 | SK_AC *pAC, | ||
421 | SK_IOC IoC, | ||
422 | SK_U32 Event, | ||
423 | SK_EVPARA Para); | ||
424 | |||
425 | #else /* defined(SK_KR_PROTO) */ | ||
426 | |||
427 | /* Non-ANSI/C++ compliant function prototypes */ | ||
428 | |||
429 | #error KR-style function prototypes are not yet provided. | ||
430 | |||
431 | #endif /* defined(SK_KR_PROTO)) */ | ||
432 | |||
433 | |||
434 | #ifdef __cplusplus | ||
435 | } | ||
436 | #endif /* __cplusplus */ | ||
437 | |||
438 | #endif /* __INC_SKRLMT_H */ | ||
diff --git a/drivers/net/sk98lin/h/sktimer.h b/drivers/net/sk98lin/h/sktimer.h new file mode 100644 index 000000000000..04e6d7c1ec33 --- /dev/null +++ b/drivers/net/sk98lin/h/sktimer.h | |||
@@ -0,0 +1,63 @@ | |||
1 | /****************************************************************************** | ||
2 | * | ||
3 | * Name: sktimer.h | ||
4 | * Project: Gigabit Ethernet Adapters, Event Scheduler Module | ||
5 | * Version: $Revision: 1.11 $ | ||
6 | * Date: $Date: 2003/09/16 12:58:18 $ | ||
7 | * Purpose: Defines for the timer functions | ||
8 | * | ||
9 | ******************************************************************************/ | ||
10 | |||
11 | /****************************************************************************** | ||
12 | * | ||
13 | * (C)Copyright 1998-2002 SysKonnect GmbH. | ||
14 | * (C)Copyright 2002-2003 Marvell. | ||
15 | * | ||
16 | * This program is free software; you can redistribute it and/or modify | ||
17 | * it under the terms of the GNU General Public License as published by | ||
18 | * the Free Software Foundation; either version 2 of the License, or | ||
19 | * (at your option) any later version. | ||
20 | * | ||
21 | * The information in this file is provided "AS IS" without warranty. | ||
22 | * | ||
23 | ******************************************************************************/ | ||
24 | |||
25 | /* | ||
26 | * SKTIMER.H contains all defines and types for the timer functions | ||
27 | */ | ||
28 | |||
29 | #ifndef _SKTIMER_H_ | ||
30 | #define _SKTIMER_H_ | ||
31 | |||
32 | #include "h/skqueue.h" | ||
33 | |||
34 | /* | ||
35 | * SK timer | ||
36 | * - needed wherever a timer is used. Put this in your data structure | ||
37 | * wherever you want. | ||
38 | */ | ||
39 | typedef struct s_Timer SK_TIMER; | ||
40 | |||
41 | struct s_Timer { | ||
42 | SK_TIMER *TmNext; /* linked list */ | ||
43 | SK_U32 TmClass; /* Timer Event class */ | ||
44 | SK_U32 TmEvent; /* Timer Event value */ | ||
45 | SK_EVPARA TmPara; /* Timer Event parameter */ | ||
46 | SK_U32 TmDelta; /* delta time */ | ||
47 | int TmActive; /* flag: active/inactive */ | ||
48 | }; | ||
49 | |||
50 | /* | ||
51 | * Timer control struct. | ||
52 | * - use in Adapters context name pAC->Tim | ||
53 | */ | ||
54 | typedef struct s_TimCtrl { | ||
55 | SK_TIMER *StQueue; /* Head of Timer queue */ | ||
56 | } SK_TIMCTRL; | ||
57 | |||
58 | extern void SkTimerInit(SK_AC *pAC, SK_IOC Ioc, int Level); | ||
59 | extern void SkTimerStop(SK_AC *pAC, SK_IOC Ioc, SK_TIMER *pTimer); | ||
60 | extern void SkTimerStart(SK_AC *pAC, SK_IOC Ioc, SK_TIMER *pTimer, | ||
61 | SK_U32 Time, SK_U32 Class, SK_U32 Event, SK_EVPARA Para); | ||
62 | extern void SkTimerDone(SK_AC *pAC, SK_IOC Ioc); | ||
63 | #endif /* _SKTIMER_H_ */ | ||
diff --git a/drivers/net/sk98lin/h/sktypes.h b/drivers/net/sk98lin/h/sktypes.h new file mode 100644 index 000000000000..40edc96e1055 --- /dev/null +++ b/drivers/net/sk98lin/h/sktypes.h | |||
@@ -0,0 +1,69 @@ | |||
1 | /****************************************************************************** | ||
2 | * | ||
3 | * Name: sktypes.h | ||
4 | * Project: GEnesis, PCI Gigabit Ethernet Adapter | ||
5 | * Version: $Revision: 1.2 $ | ||
6 | * Date: $Date: 2003/10/07 08:16:51 $ | ||
7 | * Purpose: Define data types for Linux | ||
8 | * | ||
9 | ******************************************************************************/ | ||
10 | |||
11 | /****************************************************************************** | ||
12 | * | ||
13 | * (C)Copyright 1998-2002 SysKonnect GmbH. | ||
14 | * (C)Copyright 2002-2003 Marvell. | ||
15 | * | ||
16 | * This program is free software; you can redistribute it and/or modify | ||
17 | * it under the terms of the GNU General Public License as published by | ||
18 | * the Free Software Foundation; either version 2 of the License, or | ||
19 | * (at your option) any later version. | ||
20 | * | ||
21 | * The information in this file is provided "AS IS" without warranty. | ||
22 | * | ||
23 | ******************************************************************************/ | ||
24 | |||
25 | /****************************************************************************** | ||
26 | * | ||
27 | * Description: | ||
28 | * | ||
29 | * In this file, all data types that are needed by the common modules | ||
30 | * are mapped to Linux data types. | ||
31 | * | ||
32 | * | ||
33 | * Include File Hierarchy: | ||
34 | * | ||
35 | * | ||
36 | ******************************************************************************/ | ||
37 | |||
38 | #ifndef __INC_SKTYPES_H | ||
39 | #define __INC_SKTYPES_H | ||
40 | |||
41 | |||
42 | /* defines *******************************************************************/ | ||
43 | |||
44 | /* | ||
45 | * Data types with a specific size. 'I' = signed, 'U' = unsigned. | ||
46 | */ | ||
47 | #define SK_I8 s8 | ||
48 | #define SK_U8 u8 | ||
49 | #define SK_I16 s16 | ||
50 | #define SK_U16 u16 | ||
51 | #define SK_I32 s32 | ||
52 | #define SK_U32 u32 | ||
53 | #define SK_I64 s64 | ||
54 | #define SK_U64 u64 | ||
55 | |||
56 | #define SK_UPTR ulong /* casting pointer <-> integral */ | ||
57 | |||
58 | /* | ||
59 | * Boolean type. | ||
60 | */ | ||
61 | #define SK_BOOL SK_U8 | ||
62 | #define SK_FALSE 0 | ||
63 | #define SK_TRUE (!SK_FALSE) | ||
64 | |||
65 | /* typedefs *******************************************************************/ | ||
66 | |||
67 | /* function prototypes ********************************************************/ | ||
68 | |||
69 | #endif /* __INC_SKTYPES_H */ | ||
diff --git a/drivers/net/sk98lin/h/skversion.h b/drivers/net/sk98lin/h/skversion.h new file mode 100644 index 000000000000..a1a7294828e5 --- /dev/null +++ b/drivers/net/sk98lin/h/skversion.h | |||
@@ -0,0 +1,38 @@ | |||
1 | /****************************************************************************** | ||
2 | * | ||
3 | * Name: version.h | ||
4 | * Project: GEnesis, PCI Gigabit Ethernet Adapter | ||
5 | * Version: $Revision: 1.5 $ | ||
6 | * Date: $Date: 2003/10/07 08:16:51 $ | ||
7 | * Purpose: SK specific Error log support | ||
8 | * | ||
9 | ******************************************************************************/ | ||
10 | |||
11 | /****************************************************************************** | ||
12 | * | ||
13 | * (C)Copyright 1998-2002 SysKonnect GmbH. | ||
14 | * (C)Copyright 2002-2003 Marvell. | ||
15 | * | ||
16 | * This program is free software; you can redistribute it and/or modify | ||
17 | * it under the terms of the GNU General Public License as published by | ||
18 | * the Free Software Foundation; either version 2 of the License, or | ||
19 | * (at your option) any later version. | ||
20 | * | ||
21 | * The information in this file is provided "AS IS" without warranty. | ||
22 | * | ||
23 | ******************************************************************************/ | ||
24 | |||
25 | #ifdef lint | ||
26 | static const char SysKonnectFileId[] = "@(#) (C) SysKonnect GmbH."; | ||
27 | static const char SysKonnectBuildNumber[] = | ||
28 | "@(#)SK-BUILD: 6.23 PL: 01"; | ||
29 | #endif /* !defined(lint) */ | ||
30 | |||
31 | #define BOOT_STRING "sk98lin: Network Device Driver v6.23\n" \ | ||
32 | "(C)Copyright 1999-2004 Marvell(R)." | ||
33 | |||
34 | #define VER_STRING "6.23" | ||
35 | #define DRIVER_FILE_NAME "sk98lin" | ||
36 | #define DRIVER_REL_DATE "Feb-13-2004" | ||
37 | |||
38 | |||
diff --git a/drivers/net/sk98lin/h/skvpd.h b/drivers/net/sk98lin/h/skvpd.h new file mode 100644 index 000000000000..bdc1a5eaaae9 --- /dev/null +++ b/drivers/net/sk98lin/h/skvpd.h | |||
@@ -0,0 +1,271 @@ | |||
1 | /****************************************************************************** | ||
2 | * | ||
3 | * Name: skvpd.h | ||
4 | * Project: GEnesis, PCI Gigabit Ethernet Adapter | ||
5 | * Version: $Revision: 1.15 $ | ||
6 | * Date: $Date: 2003/01/13 10:39:38 $ | ||
7 | * Purpose: Defines and Macros for VPD handling | ||
8 | * | ||
9 | ******************************************************************************/ | ||
10 | |||
11 | /****************************************************************************** | ||
12 | * | ||
13 | * (C)Copyright 1998-2003 SysKonnect GmbH. | ||
14 | * | ||
15 | * This program is free software; you can redistribute it and/or modify | ||
16 | * it under the terms of the GNU General Public License as published by | ||
17 | * the Free Software Foundation; either version 2 of the License, or | ||
18 | * (at your option) any later version. | ||
19 | * | ||
20 | * The information in this file is provided "AS IS" without warranty. | ||
21 | * | ||
22 | ******************************************************************************/ | ||
23 | |||
24 | /* | ||
25 | * skvpd.h contains Diagnostic specific defines for VPD handling | ||
26 | */ | ||
27 | |||
28 | #ifndef __INC_SKVPD_H_ | ||
29 | #define __INC_SKVPD_H_ | ||
30 | |||
31 | /* | ||
32 | * Define Resource Type Identifiers and VPD keywords | ||
33 | */ | ||
34 | #define RES_ID 0x82 /* Resource Type ID String (Product Name) */ | ||
35 | #define RES_VPD_R 0x90 /* start of VPD read only area */ | ||
36 | #define RES_VPD_W 0x91 /* start of VPD read/write area */ | ||
37 | #define RES_END 0x78 /* Resource Type End Tag */ | ||
38 | |||
39 | #ifndef VPD_NAME | ||
40 | #define VPD_NAME "Name" /* Product Name, VPD name of RES_ID */ | ||
41 | #endif /* VPD_NAME */ | ||
42 | #define VPD_PN "PN" /* Adapter Part Number */ | ||
43 | #define VPD_EC "EC" /* Adapter Engineering Level */ | ||
44 | #define VPD_MN "MN" /* Manufacture ID */ | ||
45 | #define VPD_SN "SN" /* Serial Number */ | ||
46 | #define VPD_CP "CP" /* Extended Capability */ | ||
47 | #define VPD_RV "RV" /* Checksum and Reserved */ | ||
48 | #define VPD_YA "YA" /* Asset Tag Identifier */ | ||
49 | #define VPD_VL "VL" /* First Error Log Message (SK specific) */ | ||
50 | #define VPD_VF "VF" /* Second Error Log Message (SK specific) */ | ||
51 | #define VPD_RW "RW" /* Remaining Read / Write Area */ | ||
52 | |||
53 | /* 'type' values for vpd_setup_para() */ | ||
54 | #define VPD_RO_KEY 1 /* RO keys are "PN", "EC", "MN", "SN", "RV" */ | ||
55 | #define VPD_RW_KEY 2 /* RW keys are "Yx", "Vx", and "RW" */ | ||
56 | |||
57 | /* 'op' values for vpd_setup_para() */ | ||
58 | #define ADD_KEY 1 /* add the key at the pos "RV" or "RW" */ | ||
59 | #define OWR_KEY 2 /* overwrite key if already exists */ | ||
60 | |||
61 | /* | ||
62 | * Define READ and WRITE Constants. | ||
63 | */ | ||
64 | |||
65 | #define VPD_DEV_ID_GENESIS 0x4300 | ||
66 | |||
67 | #define VPD_SIZE_YUKON 256 | ||
68 | #define VPD_SIZE_GENESIS 512 | ||
69 | #define VPD_SIZE 512 | ||
70 | #define VPD_READ 0x0000 | ||
71 | #define VPD_WRITE 0x8000 | ||
72 | |||
73 | #define VPD_STOP(pAC,IoC) VPD_OUT16(pAC,IoC,PCI_VPD_ADR_REG,VPD_WRITE) | ||
74 | |||
75 | #define VPD_GET_RES_LEN(p) ((unsigned int) \ | ||
76 | (* (SK_U8 *)&(p)[1]) |\ | ||
77 | ((* (SK_U8 *)&(p)[2]) << 8)) | ||
78 | #define VPD_GET_VPD_LEN(p) ((unsigned int)(* (SK_U8 *)&(p)[2])) | ||
79 | #define VPD_GET_VAL(p) ((char *)&(p)[3]) | ||
80 | |||
81 | #define VPD_MAX_LEN 50 | ||
82 | |||
83 | /* VPD status */ | ||
84 | /* bit 7..1 reserved */ | ||
85 | #define VPD_VALID (1<<0) /* VPD data buffer, vpd_free_ro, */ | ||
86 | /* and vpd_free_rw valid */ | ||
87 | |||
88 | /* | ||
89 | * VPD structs | ||
90 | */ | ||
91 | typedef struct s_vpd_status { | ||
92 | unsigned short Align01; /* Alignment */ | ||
93 | unsigned short vpd_status; /* VPD status, description see above */ | ||
94 | int vpd_free_ro; /* unused bytes in read only area */ | ||
95 | int vpd_free_rw; /* bytes available in read/write area */ | ||
96 | } SK_VPD_STATUS; | ||
97 | |||
98 | typedef struct s_vpd { | ||
99 | SK_VPD_STATUS v; /* VPD status structure */ | ||
100 | char vpd_buf[VPD_SIZE]; /* VPD buffer */ | ||
101 | int rom_size; /* VPD ROM Size from PCI_OUR_REG_2 */ | ||
102 | int vpd_size; /* saved VPD-size */ | ||
103 | } SK_VPD; | ||
104 | |||
105 | typedef struct s_vpd_para { | ||
106 | unsigned int p_len; /* parameter length */ | ||
107 | char *p_val; /* points to the value */ | ||
108 | } SK_VPD_PARA; | ||
109 | |||
110 | /* | ||
111 | * structure of Large Resource Type Identifiers | ||
112 | */ | ||
113 | |||
114 | /* was removed because of alignment problems */ | ||
115 | |||
116 | /* | ||
117 | * structure of VPD keywords | ||
118 | */ | ||
119 | typedef struct s_vpd_key { | ||
120 | char p_key[2]; /* 2 bytes ID string */ | ||
121 | unsigned char p_len; /* 1 byte length */ | ||
122 | char p_val; /* start of the value string */ | ||
123 | } SK_VPD_KEY; | ||
124 | |||
125 | |||
126 | /* | ||
127 | * System specific VPD macros | ||
128 | */ | ||
129 | #ifndef SKDIAG | ||
130 | #ifndef VPD_DO_IO | ||
131 | #define VPD_OUT8(pAC,IoC,Addr,Val) (void)SkPciWriteCfgByte(pAC,Addr,Val) | ||
132 | #define VPD_OUT16(pAC,IoC,Addr,Val) (void)SkPciWriteCfgWord(pAC,Addr,Val) | ||
133 | #define VPD_OUT32(pAC,IoC,Addr,Val) (void)SkPciWriteCfgDWord(pAC,Addr,Val) | ||
134 | #define VPD_IN8(pAC,IoC,Addr,pVal) (void)SkPciReadCfgByte(pAC,Addr,pVal) | ||
135 | #define VPD_IN16(pAC,IoC,Addr,pVal) (void)SkPciReadCfgWord(pAC,Addr,pVal) | ||
136 | #define VPD_IN32(pAC,IoC,Addr,pVal) (void)SkPciReadCfgDWord(pAC,Addr,pVal) | ||
137 | #else /* VPD_DO_IO */ | ||
138 | #define VPD_OUT8(pAC,IoC,Addr,Val) SK_OUT8(IoC,PCI_C(Addr),Val) | ||
139 | #define VPD_OUT16(pAC,IoC,Addr,Val) SK_OUT16(IoC,PCI_C(Addr),Val) | ||
140 | #define VPD_OUT32(pAC,IoC,Addr,Val) SK_OUT32(IoC,PCI_C(Addr),Val) | ||
141 | #define VPD_IN8(pAC,IoC,Addr,pVal) SK_IN8(IoC,PCI_C(Addr),pVal) | ||
142 | #define VPD_IN16(pAC,IoC,Addr,pVal) SK_IN16(IoC,PCI_C(Addr),pVal) | ||
143 | #define VPD_IN32(pAC,IoC,Addr,pVal) SK_IN32(IoC,PCI_C(Addr),pVal) | ||
144 | #endif /* VPD_DO_IO */ | ||
145 | #else /* SKDIAG */ | ||
146 | #define VPD_OUT8(pAC,Ioc,Addr,Val) { \ | ||
147 | if ((pAC)->DgT.DgUseCfgCycle) \ | ||
148 | SkPciWriteCfgByte(pAC,Addr,Val); \ | ||
149 | else \ | ||
150 | SK_OUT8(pAC,PCI_C(Addr),Val); \ | ||
151 | } | ||
152 | #define VPD_OUT16(pAC,Ioc,Addr,Val) { \ | ||
153 | if ((pAC)->DgT.DgUseCfgCycle) \ | ||
154 | SkPciWriteCfgWord(pAC,Addr,Val); \ | ||
155 | else \ | ||
156 | SK_OUT16(pAC,PCI_C(Addr),Val); \ | ||
157 | } | ||
158 | #define VPD_OUT32(pAC,Ioc,Addr,Val) { \ | ||
159 | if ((pAC)->DgT.DgUseCfgCycle) \ | ||
160 | SkPciWriteCfgDWord(pAC,Addr,Val); \ | ||
161 | else \ | ||
162 | SK_OUT32(pAC,PCI_C(Addr),Val); \ | ||
163 | } | ||
164 | #define VPD_IN8(pAC,Ioc,Addr,pVal) { \ | ||
165 | if ((pAC)->DgT.DgUseCfgCycle) \ | ||
166 | SkPciReadCfgByte(pAC,Addr,pVal); \ | ||
167 | else \ | ||
168 | SK_IN8(pAC,PCI_C(Addr),pVal); \ | ||
169 | } | ||
170 | #define VPD_IN16(pAC,Ioc,Addr,pVal) { \ | ||
171 | if ((pAC)->DgT.DgUseCfgCycle) \ | ||
172 | SkPciReadCfgWord(pAC,Addr,pVal); \ | ||
173 | else \ | ||
174 | SK_IN16(pAC,PCI_C(Addr),pVal); \ | ||
175 | } | ||
176 | #define VPD_IN32(pAC,Ioc,Addr,pVal) { \ | ||
177 | if ((pAC)->DgT.DgUseCfgCycle) \ | ||
178 | SkPciReadCfgDWord(pAC,Addr,pVal); \ | ||
179 | else \ | ||
180 | SK_IN32(pAC,PCI_C(Addr),pVal); \ | ||
181 | } | ||
182 | #endif /* nSKDIAG */ | ||
183 | |||
184 | /* function prototypes ********************************************************/ | ||
185 | |||
186 | #ifndef SK_KR_PROTO | ||
187 | #ifdef SKDIAG | ||
188 | extern SK_U32 VpdReadDWord( | ||
189 | SK_AC *pAC, | ||
190 | SK_IOC IoC, | ||
191 | int addr); | ||
192 | #endif /* SKDIAG */ | ||
193 | |||
194 | extern int VpdSetupPara( | ||
195 | SK_AC *pAC, | ||
196 | const char *key, | ||
197 | const char *buf, | ||
198 | int len, | ||
199 | int type, | ||
200 | int op); | ||
201 | |||
202 | extern SK_VPD_STATUS *VpdStat( | ||
203 | SK_AC *pAC, | ||
204 | SK_IOC IoC); | ||
205 | |||
206 | extern int VpdKeys( | ||
207 | SK_AC *pAC, | ||
208 | SK_IOC IoC, | ||
209 | char *buf, | ||
210 | int *len, | ||
211 | int *elements); | ||
212 | |||
213 | extern int VpdRead( | ||
214 | SK_AC *pAC, | ||
215 | SK_IOC IoC, | ||
216 | const char *key, | ||
217 | char *buf, | ||
218 | int *len); | ||
219 | |||
220 | extern SK_BOOL VpdMayWrite( | ||
221 | char *key); | ||
222 | |||
223 | extern int VpdWrite( | ||
224 | SK_AC *pAC, | ||
225 | SK_IOC IoC, | ||
226 | const char *key, | ||
227 | const char *buf); | ||
228 | |||
229 | extern int VpdDelete( | ||
230 | SK_AC *pAC, | ||
231 | SK_IOC IoC, | ||
232 | char *key); | ||
233 | |||
234 | extern int VpdUpdate( | ||
235 | SK_AC *pAC, | ||
236 | SK_IOC IoC); | ||
237 | |||
238 | extern void VpdErrLog( | ||
239 | SK_AC *pAC, | ||
240 | SK_IOC IoC, | ||
241 | char *msg); | ||
242 | |||
243 | #ifdef SKDIAG | ||
244 | extern int VpdReadBlock( | ||
245 | SK_AC *pAC, | ||
246 | SK_IOC IoC, | ||
247 | char *buf, | ||
248 | int addr, | ||
249 | int len); | ||
250 | |||
251 | extern int VpdWriteBlock( | ||
252 | SK_AC *pAC, | ||
253 | SK_IOC IoC, | ||
254 | char *buf, | ||
255 | int addr, | ||
256 | int len); | ||
257 | #endif /* SKDIAG */ | ||
258 | #else /* SK_KR_PROTO */ | ||
259 | extern SK_U32 VpdReadDWord(); | ||
260 | extern int VpdSetupPara(); | ||
261 | extern SK_VPD_STATUS *VpdStat(); | ||
262 | extern int VpdKeys(); | ||
263 | extern int VpdRead(); | ||
264 | extern SK_BOOL VpdMayWrite(); | ||
265 | extern int VpdWrite(); | ||
266 | extern int VpdDelete(); | ||
267 | extern int VpdUpdate(); | ||
268 | extern void VpdErrLog(); | ||
269 | #endif /* SK_KR_PROTO */ | ||
270 | |||
271 | #endif /* __INC_SKVPD_H_ */ | ||
diff --git a/drivers/net/sk98lin/h/xmac_ii.h b/drivers/net/sk98lin/h/xmac_ii.h new file mode 100644 index 000000000000..2b19f8ad0318 --- /dev/null +++ b/drivers/net/sk98lin/h/xmac_ii.h | |||
@@ -0,0 +1,1579 @@ | |||
1 | /****************************************************************************** | ||
2 | * | ||
3 | * Name: xmac_ii.h | ||
4 | * Project: Gigabit Ethernet Adapters, Common Modules | ||
5 | * Version: $Revision: 1.52 $ | ||
6 | * Date: $Date: 2003/10/02 16:35:50 $ | ||
7 | * Purpose: Defines and Macros for Gigabit Ethernet Controller | ||
8 | * | ||
9 | ******************************************************************************/ | ||
10 | |||
11 | /****************************************************************************** | ||
12 | * | ||
13 | * (C)Copyright 1998-2002 SysKonnect. | ||
14 | * (C)Copyright 2002-2003 Marvell. | ||
15 | * | ||
16 | * This program is free software; you can redistribute it and/or modify | ||
17 | * it under the terms of the GNU General Public License as published by | ||
18 | * the Free Software Foundation; either version 2 of the License, or | ||
19 | * (at your option) any later version. | ||
20 | * | ||
21 | * The information in this file is provided "AS IS" without warranty. | ||
22 | * | ||
23 | ******************************************************************************/ | ||
24 | |||
25 | #ifndef __INC_XMAC_H | ||
26 | #define __INC_XMAC_H | ||
27 | |||
28 | #ifdef __cplusplus | ||
29 | extern "C" { | ||
30 | #endif /* __cplusplus */ | ||
31 | |||
32 | /* defines ********************************************************************/ | ||
33 | |||
34 | /* | ||
35 | * XMAC II registers | ||
36 | * | ||
37 | * The XMAC registers are 16 or 32 bits wide. | ||
38 | * The XMACs host processor interface is set to 16 bit mode, | ||
39 | * therefore ALL registers will be addressed with 16 bit accesses. | ||
40 | * | ||
41 | * The following macros are provided to access the XMAC registers | ||
42 | * XM_IN16(), XM_OUT16, XM_IN32(), XM_OUT32(), XM_INADR(), XM_OUTADR(), | ||
43 | * XM_INHASH(), and XM_OUTHASH(). | ||
44 | * The macros are defined in SkGeHw.h. | ||
45 | * | ||
46 | * Note: NA reg = Network Address e.g DA, SA etc. | ||
47 | * | ||
48 | */ | ||
49 | #define XM_MMU_CMD 0x0000 /* 16 bit r/w MMU Command Register */ | ||
50 | /* 0x0004: reserved */ | ||
51 | #define XM_POFF 0x0008 /* 32 bit r/w Packet Offset Register */ | ||
52 | #define XM_BURST 0x000c /* 32 bit r/w Burst Register for half duplex*/ | ||
53 | #define XM_1L_VLAN_TAG 0x0010 /* 16 bit r/w One Level VLAN Tag ID */ | ||
54 | #define XM_2L_VLAN_TAG 0x0014 /* 16 bit r/w Two Level VLAN Tag ID */ | ||
55 | /* 0x0018 - 0x001e: reserved */ | ||
56 | #define XM_TX_CMD 0x0020 /* 16 bit r/w Transmit Command Register */ | ||
57 | #define XM_TX_RT_LIM 0x0024 /* 16 bit r/w Transmit Retry Limit Register */ | ||
58 | #define XM_TX_STIME 0x0028 /* 16 bit r/w Transmit Slottime Register */ | ||
59 | #define XM_TX_IPG 0x002c /* 16 bit r/w Transmit Inter Packet Gap */ | ||
60 | #define XM_RX_CMD 0x0030 /* 16 bit r/w Receive Command Register */ | ||
61 | #define XM_PHY_ADDR 0x0034 /* 16 bit r/w PHY Address Register */ | ||
62 | #define XM_PHY_DATA 0x0038 /* 16 bit r/w PHY Data Register */ | ||
63 | /* 0x003c: reserved */ | ||
64 | #define XM_GP_PORT 0x0040 /* 32 bit r/w General Purpose Port Register */ | ||
65 | #define XM_IMSK 0x0044 /* 16 bit r/w Interrupt Mask Register */ | ||
66 | #define XM_ISRC 0x0048 /* 16 bit r/o Interrupt Status Register */ | ||
67 | #define XM_HW_CFG 0x004c /* 16 bit r/w Hardware Config Register */ | ||
68 | /* 0x0050 - 0x005e: reserved */ | ||
69 | #define XM_TX_LO_WM 0x0060 /* 16 bit r/w Tx FIFO Low Water Mark */ | ||
70 | #define XM_TX_HI_WM 0x0062 /* 16 bit r/w Tx FIFO High Water Mark */ | ||
71 | #define XM_TX_THR 0x0064 /* 16 bit r/w Tx Request Threshold */ | ||
72 | #define XM_HT_THR 0x0066 /* 16 bit r/w Host Request Threshold */ | ||
73 | #define XM_PAUSE_DA 0x0068 /* NA reg r/w Pause Destination Address */ | ||
74 | /* 0x006e: reserved */ | ||
75 | #define XM_CTL_PARA 0x0070 /* 32 bit r/w Control Parameter Register */ | ||
76 | #define XM_MAC_OPCODE 0x0074 /* 16 bit r/w Opcode for MAC control frames */ | ||
77 | #define XM_MAC_PTIME 0x0076 /* 16 bit r/w Pause time for MAC ctrl frames*/ | ||
78 | #define XM_TX_STAT 0x0078 /* 32 bit r/o Tx Status LIFO Register */ | ||
79 | |||
80 | /* 0x0080 - 0x00fc: 16 NA reg r/w Exact Match Address Registers */ | ||
81 | /* use the XM_EXM() macro to address */ | ||
82 | #define XM_EXM_START 0x0080 /* r/w Start Address of the EXM Regs */ | ||
83 | |||
84 | /* | ||
85 | * XM_EXM(Reg) | ||
86 | * | ||
87 | * returns the XMAC address offset of specified Exact Match Addr Reg | ||
88 | * | ||
89 | * para: Reg EXM register to addr (0 .. 15) | ||
90 | * | ||
91 | * usage: XM_INADDR(IoC, MAC_1, XM_EXM(i), &val[i]); | ||
92 | */ | ||
93 | #define XM_EXM(Reg) (XM_EXM_START + ((Reg) << 3)) | ||
94 | |||
95 | #define XM_SRC_CHK 0x0100 /* NA reg r/w Source Check Address Register */ | ||
96 | #define XM_SA 0x0108 /* NA reg r/w Station Address Register */ | ||
97 | #define XM_HSM 0x0110 /* 64 bit r/w Hash Match Address Registers */ | ||
98 | #define XM_RX_LO_WM 0x0118 /* 16 bit r/w Receive Low Water Mark */ | ||
99 | #define XM_RX_HI_WM 0x011a /* 16 bit r/w Receive High Water Mark */ | ||
100 | #define XM_RX_THR 0x011c /* 32 bit r/w Receive Request Threshold */ | ||
101 | #define XM_DEV_ID 0x0120 /* 32 bit r/o Device ID Register */ | ||
102 | #define XM_MODE 0x0124 /* 32 bit r/w Mode Register */ | ||
103 | #define XM_LSA 0x0128 /* NA reg r/o Last Source Register */ | ||
104 | /* 0x012e: reserved */ | ||
105 | #define XM_TS_READ 0x0130 /* 32 bit r/o Time Stamp Read Register */ | ||
106 | #define XM_TS_LOAD 0x0134 /* 32 bit r/o Time Stamp Load Value */ | ||
107 | /* 0x0138 - 0x01fe: reserved */ | ||
108 | #define XM_STAT_CMD 0x0200 /* 16 bit r/w Statistics Command Register */ | ||
109 | #define XM_RX_CNT_EV 0x0204 /* 32 bit r/o Rx Counter Event Register */ | ||
110 | #define XM_TX_CNT_EV 0x0208 /* 32 bit r/o Tx Counter Event Register */ | ||
111 | #define XM_RX_EV_MSK 0x020c /* 32 bit r/w Rx Counter Event Mask */ | ||
112 | #define XM_TX_EV_MSK 0x0210 /* 32 bit r/w Tx Counter Event Mask */ | ||
113 | /* 0x0204 - 0x027e: reserved */ | ||
114 | #define XM_TXF_OK 0x0280 /* 32 bit r/o Frames Transmitted OK Conuter */ | ||
115 | #define XM_TXO_OK_HI 0x0284 /* 32 bit r/o Octets Transmitted OK High Cnt*/ | ||
116 | #define XM_TXO_OK_LO 0x0288 /* 32 bit r/o Octets Transmitted OK Low Cnt */ | ||
117 | #define XM_TXF_BC_OK 0x028c /* 32 bit r/o Broadcast Frames Xmitted OK */ | ||
118 | #define XM_TXF_MC_OK 0x0290 /* 32 bit r/o Multicast Frames Xmitted OK */ | ||
119 | #define XM_TXF_UC_OK 0x0294 /* 32 bit r/o Unicast Frames Xmitted OK */ | ||
120 | #define XM_TXF_LONG 0x0298 /* 32 bit r/o Tx Long Frame Counter */ | ||
121 | #define XM_TXE_BURST 0x029c /* 32 bit r/o Tx Burst Event Counter */ | ||
122 | #define XM_TXF_MPAUSE 0x02a0 /* 32 bit r/o Tx Pause MAC Ctrl Frame Cnt */ | ||
123 | #define XM_TXF_MCTRL 0x02a4 /* 32 bit r/o Tx MAC Ctrl Frame Counter */ | ||
124 | #define XM_TXF_SNG_COL 0x02a8 /* 32 bit r/o Tx Single Collision Counter */ | ||
125 | #define XM_TXF_MUL_COL 0x02ac /* 32 bit r/o Tx Multiple Collision Counter */ | ||
126 | #define XM_TXF_ABO_COL 0x02b0 /* 32 bit r/o Tx aborted due to Exces. Col. */ | ||
127 | #define XM_TXF_LAT_COL 0x02b4 /* 32 bit r/o Tx Late Collision Counter */ | ||
128 | #define XM_TXF_DEF 0x02b8 /* 32 bit r/o Tx Deferred Frame Counter */ | ||
129 | #define XM_TXF_EX_DEF 0x02bc /* 32 bit r/o Tx Excessive Deferall Counter */ | ||
130 | #define XM_TXE_FIFO_UR 0x02c0 /* 32 bit r/o Tx FIFO Underrun Event Cnt */ | ||
131 | #define XM_TXE_CS_ERR 0x02c4 /* 32 bit r/o Tx Carrier Sense Error Cnt */ | ||
132 | #define XM_TXP_UTIL 0x02c8 /* 32 bit r/o Tx Utilization in % */ | ||
133 | /* 0x02cc - 0x02ce: reserved */ | ||
134 | #define XM_TXF_64B 0x02d0 /* 32 bit r/o 64 Byte Tx Frame Counter */ | ||
135 | #define XM_TXF_127B 0x02d4 /* 32 bit r/o 65-127 Byte Tx Frame Counter */ | ||
136 | #define XM_TXF_255B 0x02d8 /* 32 bit r/o 128-255 Byte Tx Frame Counter */ | ||
137 | #define XM_TXF_511B 0x02dc /* 32 bit r/o 256-511 Byte Tx Frame Counter */ | ||
138 | #define XM_TXF_1023B 0x02e0 /* 32 bit r/o 512-1023 Byte Tx Frame Counter*/ | ||
139 | #define XM_TXF_MAX_SZ 0x02e4 /* 32 bit r/o 1024-MaxSize Byte Tx Frame Cnt*/ | ||
140 | /* 0x02e8 - 0x02fe: reserved */ | ||
141 | #define XM_RXF_OK 0x0300 /* 32 bit r/o Frames Received OK */ | ||
142 | #define XM_RXO_OK_HI 0x0304 /* 32 bit r/o Octets Received OK High Cnt */ | ||
143 | #define XM_RXO_OK_LO 0x0308 /* 32 bit r/o Octets Received OK Low Counter*/ | ||
144 | #define XM_RXF_BC_OK 0x030c /* 32 bit r/o Broadcast Frames Received OK */ | ||
145 | #define XM_RXF_MC_OK 0x0310 /* 32 bit r/o Multicast Frames Received OK */ | ||
146 | #define XM_RXF_UC_OK 0x0314 /* 32 bit r/o Unicast Frames Received OK */ | ||
147 | #define XM_RXF_MPAUSE 0x0318 /* 32 bit r/o Rx Pause MAC Ctrl Frame Cnt */ | ||
148 | #define XM_RXF_MCTRL 0x031c /* 32 bit r/o Rx MAC Ctrl Frame Counter */ | ||
149 | #define XM_RXF_INV_MP 0x0320 /* 32 bit r/o Rx invalid Pause Frame Cnt */ | ||
150 | #define XM_RXF_INV_MOC 0x0324 /* 32 bit r/o Rx Frames with inv. MAC Opcode*/ | ||
151 | #define XM_RXE_BURST 0x0328 /* 32 bit r/o Rx Burst Event Counter */ | ||
152 | #define XM_RXE_FMISS 0x032c /* 32 bit r/o Rx Missed Frames Event Cnt */ | ||
153 | #define XM_RXF_FRA_ERR 0x0330 /* 32 bit r/o Rx Framing Error Counter */ | ||
154 | #define XM_RXE_FIFO_OV 0x0334 /* 32 bit r/o Rx FIFO overflow Event Cnt */ | ||
155 | #define XM_RXF_JAB_PKT 0x0338 /* 32 bit r/o Rx Jabber Packet Frame Cnt */ | ||
156 | #define XM_RXE_CAR_ERR 0x033c /* 32 bit r/o Rx Carrier Event Error Cnt */ | ||
157 | #define XM_RXF_LEN_ERR 0x0340 /* 32 bit r/o Rx in Range Length Error */ | ||
158 | #define XM_RXE_SYM_ERR 0x0344 /* 32 bit r/o Rx Symbol Error Counter */ | ||
159 | #define XM_RXE_SHT_ERR 0x0348 /* 32 bit r/o Rx Short Event Error Cnt */ | ||
160 | #define XM_RXE_RUNT 0x034c /* 32 bit r/o Rx Runt Event Counter */ | ||
161 | #define XM_RXF_LNG_ERR 0x0350 /* 32 bit r/o Rx Frame too Long Error Cnt */ | ||
162 | #define XM_RXF_FCS_ERR 0x0354 /* 32 bit r/o Rx Frame Check Seq. Error Cnt */ | ||
163 | /* 0x0358 - 0x035a: reserved */ | ||
164 | #define XM_RXF_CEX_ERR 0x035c /* 32 bit r/o Rx Carrier Ext Error Frame Cnt*/ | ||
165 | #define XM_RXP_UTIL 0x0360 /* 32 bit r/o Rx Utilization in % */ | ||
166 | /* 0x0364 - 0x0366: reserved */ | ||
167 | #define XM_RXF_64B 0x0368 /* 32 bit r/o 64 Byte Rx Frame Counter */ | ||
168 | #define XM_RXF_127B 0x036c /* 32 bit r/o 65-127 Byte Rx Frame Counter */ | ||
169 | #define XM_RXF_255B 0x0370 /* 32 bit r/o 128-255 Byte Rx Frame Counter */ | ||
170 | #define XM_RXF_511B 0x0374 /* 32 bit r/o 256-511 Byte Rx Frame Counter */ | ||
171 | #define XM_RXF_1023B 0x0378 /* 32 bit r/o 512-1023 Byte Rx Frame Counter*/ | ||
172 | #define XM_RXF_MAX_SZ 0x037c /* 32 bit r/o 1024-MaxSize Byte Rx Frame Cnt*/ | ||
173 | /* 0x02e8 - 0x02fe: reserved */ | ||
174 | |||
175 | |||
176 | /*----------------------------------------------------------------------------*/ | ||
177 | /* | ||
178 | * XMAC Bit Definitions | ||
179 | * | ||
180 | * If the bit access behaviour differs from the register access behaviour | ||
181 | * (r/w, r/o) this is documented after the bit number. | ||
182 | * The following bit access behaviours are used: | ||
183 | * (sc) self clearing | ||
184 | * (ro) read only | ||
185 | */ | ||
186 | |||
187 | /* XM_MMU_CMD 16 bit r/w MMU Command Register */ | ||
188 | /* Bit 15..13: reserved */ | ||
189 | #define XM_MMU_PHY_RDY (1<<12) /* Bit 12: PHY Read Ready */ | ||
190 | #define XM_MMU_PHY_BUSY (1<<11) /* Bit 11: PHY Busy */ | ||
191 | #define XM_MMU_IGN_PF (1<<10) /* Bit 10: Ignore Pause Frame */ | ||
192 | #define XM_MMU_MAC_LB (1<<9) /* Bit 9: Enable MAC Loopback */ | ||
193 | /* Bit 8: reserved */ | ||
194 | #define XM_MMU_FRC_COL (1<<7) /* Bit 7: Force Collision */ | ||
195 | #define XM_MMU_SIM_COL (1<<6) /* Bit 6: Simulate Collision */ | ||
196 | #define XM_MMU_NO_PRE (1<<5) /* Bit 5: No MDIO Preamble */ | ||
197 | #define XM_MMU_GMII_FD (1<<4) /* Bit 4: GMII uses Full Duplex */ | ||
198 | #define XM_MMU_RAT_CTRL (1<<3) /* Bit 3: Enable Rate Control */ | ||
199 | #define XM_MMU_GMII_LOOP (1<<2) /* Bit 2: PHY is in Loopback Mode */ | ||
200 | #define XM_MMU_ENA_RX (1<<1) /* Bit 1: Enable Receiver */ | ||
201 | #define XM_MMU_ENA_TX (1<<0) /* Bit 0: Enable Transmitter */ | ||
202 | |||
203 | |||
204 | /* XM_TX_CMD 16 bit r/w Transmit Command Register */ | ||
205 | /* Bit 15..7: reserved */ | ||
206 | #define XM_TX_BK2BK (1<<6) /* Bit 6: Ignor Carrier Sense (Tx Bk2Bk)*/ | ||
207 | #define XM_TX_ENC_BYP (1<<5) /* Bit 5: Set Encoder in Bypass Mode */ | ||
208 | #define XM_TX_SAM_LINE (1<<4) /* Bit 4: (sc) Start utilization calculation */ | ||
209 | #define XM_TX_NO_GIG_MD (1<<3) /* Bit 3: Disable Carrier Extension */ | ||
210 | #define XM_TX_NO_PRE (1<<2) /* Bit 2: Disable Preamble Generation */ | ||
211 | #define XM_TX_NO_CRC (1<<1) /* Bit 1: Disable CRC Generation */ | ||
212 | #define XM_TX_AUTO_PAD (1<<0) /* Bit 0: Enable Automatic Padding */ | ||
213 | |||
214 | |||
215 | /* XM_TX_RT_LIM 16 bit r/w Transmit Retry Limit Register */ | ||
216 | /* Bit 15..5: reserved */ | ||
217 | #define XM_RT_LIM_MSK 0x1f /* Bit 4..0: Tx Retry Limit */ | ||
218 | |||
219 | |||
220 | /* XM_TX_STIME 16 bit r/w Transmit Slottime Register */ | ||
221 | /* Bit 15..7: reserved */ | ||
222 | #define XM_STIME_MSK 0x7f /* Bit 6..0: Tx Slottime bits */ | ||
223 | |||
224 | |||
225 | /* XM_TX_IPG 16 bit r/w Transmit Inter Packet Gap */ | ||
226 | /* Bit 15..8: reserved */ | ||
227 | #define XM_IPG_MSK 0xff /* Bit 7..0: IPG value bits */ | ||
228 | |||
229 | |||
230 | /* XM_RX_CMD 16 bit r/w Receive Command Register */ | ||
231 | /* Bit 15..9: reserved */ | ||
232 | #define XM_RX_LENERR_OK (1<<8) /* Bit 8 don't set Rx Err bit for */ | ||
233 | /* inrange error packets */ | ||
234 | #define XM_RX_BIG_PK_OK (1<<7) /* Bit 7 don't set Rx Err bit for */ | ||
235 | /* jumbo packets */ | ||
236 | #define XM_RX_IPG_CAP (1<<6) /* Bit 6 repl. type field with IPG */ | ||
237 | #define XM_RX_TP_MD (1<<5) /* Bit 5: Enable transparent Mode */ | ||
238 | #define XM_RX_STRIP_FCS (1<<4) /* Bit 4: Enable FCS Stripping */ | ||
239 | #define XM_RX_SELF_RX (1<<3) /* Bit 3: Enable Rx of own packets */ | ||
240 | #define XM_RX_SAM_LINE (1<<2) /* Bit 2: (sc) Start utilization calculation */ | ||
241 | #define XM_RX_STRIP_PAD (1<<1) /* Bit 1: Strip pad bytes of Rx frames */ | ||
242 | #define XM_RX_DIS_CEXT (1<<0) /* Bit 0: Disable carrier ext. check */ | ||
243 | |||
244 | |||
245 | /* XM_PHY_ADDR 16 bit r/w PHY Address Register */ | ||
246 | /* Bit 15..5: reserved */ | ||
247 | #define XM_PHY_ADDR_SZ 0x1f /* Bit 4..0: PHY Address bits */ | ||
248 | |||
249 | |||
250 | /* XM_GP_PORT 32 bit r/w General Purpose Port Register */ | ||
251 | /* Bit 31..7: reserved */ | ||
252 | #define XM_GP_ANIP (1L<<6) /* Bit 6: (ro) Auto-Neg. in progress */ | ||
253 | #define XM_GP_FRC_INT (1L<<5) /* Bit 5: (sc) Force Interrupt */ | ||
254 | /* Bit 4: reserved */ | ||
255 | #define XM_GP_RES_MAC (1L<<3) /* Bit 3: (sc) Reset MAC and FIFOs */ | ||
256 | #define XM_GP_RES_STAT (1L<<2) /* Bit 2: (sc) Reset the statistics module */ | ||
257 | /* Bit 1: reserved */ | ||
258 | #define XM_GP_INP_ASS (1L<<0) /* Bit 0: (ro) GP Input Pin asserted */ | ||
259 | |||
260 | |||
261 | /* XM_IMSK 16 bit r/w Interrupt Mask Register */ | ||
262 | /* XM_ISRC 16 bit r/o Interrupt Status Register */ | ||
263 | /* Bit 15: reserved */ | ||
264 | #define XM_IS_LNK_AE (1<<14) /* Bit 14: Link Asynchronous Event */ | ||
265 | #define XM_IS_TX_ABORT (1<<13) /* Bit 13: Transmit Abort, late Col. etc */ | ||
266 | #define XM_IS_FRC_INT (1<<12) /* Bit 12: Force INT bit set in GP */ | ||
267 | #define XM_IS_INP_ASS (1<<11) /* Bit 11: Input Asserted, GP bit 0 set */ | ||
268 | #define XM_IS_LIPA_RC (1<<10) /* Bit 10: Link Partner requests config */ | ||
269 | #define XM_IS_RX_PAGE (1<<9) /* Bit 9: Page Received */ | ||
270 | #define XM_IS_TX_PAGE (1<<8) /* Bit 8: Next Page Loaded for Transmit */ | ||
271 | #define XM_IS_AND (1<<7) /* Bit 7: Auto-Negotiation Done */ | ||
272 | #define XM_IS_TSC_OV (1<<6) /* Bit 6: Time Stamp Counter Overflow */ | ||
273 | #define XM_IS_RXC_OV (1<<5) /* Bit 5: Rx Counter Event Overflow */ | ||
274 | #define XM_IS_TXC_OV (1<<4) /* Bit 4: Tx Counter Event Overflow */ | ||
275 | #define XM_IS_RXF_OV (1<<3) /* Bit 3: Receive FIFO Overflow */ | ||
276 | #define XM_IS_TXF_UR (1<<2) /* Bit 2: Transmit FIFO Underrun */ | ||
277 | #define XM_IS_TX_COMP (1<<1) /* Bit 1: Frame Tx Complete */ | ||
278 | #define XM_IS_RX_COMP (1<<0) /* Bit 0: Frame Rx Complete */ | ||
279 | |||
280 | #define XM_DEF_MSK (~(XM_IS_INP_ASS | XM_IS_LIPA_RC | XM_IS_RX_PAGE |\ | ||
281 | XM_IS_AND | XM_IS_RXC_OV | XM_IS_TXC_OV | XM_IS_TXF_UR)) | ||
282 | |||
283 | |||
284 | /* XM_HW_CFG 16 bit r/w Hardware Config Register */ | ||
285 | /* Bit 15.. 4: reserved */ | ||
286 | #define XM_HW_GEN_EOP (1<<3) /* Bit 3: generate End of Packet pulse */ | ||
287 | #define XM_HW_COM4SIG (1<<2) /* Bit 2: use Comma Detect for Sig. Det.*/ | ||
288 | /* Bit 1: reserved */ | ||
289 | #define XM_HW_GMII_MD (1<<0) /* Bit 0: GMII Interface selected */ | ||
290 | |||
291 | |||
292 | /* XM_TX_LO_WM 16 bit r/w Tx FIFO Low Water Mark */ | ||
293 | /* XM_TX_HI_WM 16 bit r/w Tx FIFO High Water Mark */ | ||
294 | /* Bit 15..10 reserved */ | ||
295 | #define XM_TX_WM_MSK 0x01ff /* Bit 9.. 0 Tx FIFO Watermark bits */ | ||
296 | |||
297 | /* XM_TX_THR 16 bit r/w Tx Request Threshold */ | ||
298 | /* XM_HT_THR 16 bit r/w Host Request Threshold */ | ||
299 | /* XM_RX_THR 16 bit r/w Rx Request Threshold */ | ||
300 | /* Bit 15..11 reserved */ | ||
301 | #define XM_THR_MSK 0x03ff /* Bit 10.. 0 Rx/Tx Request Threshold bits */ | ||
302 | |||
303 | |||
304 | /* XM_TX_STAT 32 bit r/o Tx Status LIFO Register */ | ||
305 | #define XM_ST_VALID (1UL<<31) /* Bit 31: Status Valid */ | ||
306 | #define XM_ST_BYTE_CNT (0x3fffL<<17) /* Bit 30..17: Tx frame Length */ | ||
307 | #define XM_ST_RETRY_CNT (0x1fL<<12) /* Bit 16..12: Retry Count */ | ||
308 | #define XM_ST_EX_COL (1L<<11) /* Bit 11: Excessive Collisions */ | ||
309 | #define XM_ST_EX_DEF (1L<<10) /* Bit 10: Excessive Deferral */ | ||
310 | #define XM_ST_BURST (1L<<9) /* Bit 9: p. xmitted in burst md*/ | ||
311 | #define XM_ST_DEFER (1L<<8) /* Bit 8: packet was defered */ | ||
312 | #define XM_ST_BC (1L<<7) /* Bit 7: Broadcast packet */ | ||
313 | #define XM_ST_MC (1L<<6) /* Bit 6: Multicast packet */ | ||
314 | #define XM_ST_UC (1L<<5) /* Bit 5: Unicast packet */ | ||
315 | #define XM_ST_TX_UR (1L<<4) /* Bit 4: FIFO Underrun occured */ | ||
316 | #define XM_ST_CS_ERR (1L<<3) /* Bit 3: Carrier Sense Error */ | ||
317 | #define XM_ST_LAT_COL (1L<<2) /* Bit 2: Late Collision Error */ | ||
318 | #define XM_ST_MUL_COL (1L<<1) /* Bit 1: Multiple Collisions */ | ||
319 | #define XM_ST_SGN_COL (1L<<0) /* Bit 0: Single Collision */ | ||
320 | |||
321 | /* XM_RX_LO_WM 16 bit r/w Receive Low Water Mark */ | ||
322 | /* XM_RX_HI_WM 16 bit r/w Receive High Water Mark */ | ||
323 | /* Bit 15..11: reserved */ | ||
324 | #define XM_RX_WM_MSK 0x03ff /* Bit 11.. 0: Rx FIFO Watermark bits */ | ||
325 | |||
326 | |||
327 | /* XM_DEV_ID 32 bit r/o Device ID Register */ | ||
328 | #define XM_DEV_OUI (0x00ffffffUL<<8) /* Bit 31..8: Device OUI */ | ||
329 | #define XM_DEV_REV (0x07L << 5) /* Bit 7..5: Chip Rev Num */ | ||
330 | |||
331 | |||
332 | /* XM_MODE 32 bit r/w Mode Register */ | ||
333 | /* Bit 31..27: reserved */ | ||
334 | #define XM_MD_ENA_REJ (1L<<26) /* Bit 26: Enable Frame Reject */ | ||
335 | #define XM_MD_SPOE_E (1L<<25) /* Bit 25: Send Pause on Edge */ | ||
336 | /* extern generated */ | ||
337 | #define XM_MD_TX_REP (1L<<24) /* Bit 24: Transmit Repeater Mode */ | ||
338 | #define XM_MD_SPOFF_I (1L<<23) /* Bit 23: Send Pause on FIFO full */ | ||
339 | /* intern generated */ | ||
340 | #define XM_MD_LE_STW (1L<<22) /* Bit 22: Rx Stat Word in Little Endian */ | ||
341 | #define XM_MD_TX_CONT (1L<<21) /* Bit 21: Send Continuous */ | ||
342 | #define XM_MD_TX_PAUSE (1L<<20) /* Bit 20: (sc) Send Pause Frame */ | ||
343 | #define XM_MD_ATS (1L<<19) /* Bit 19: Append Time Stamp */ | ||
344 | #define XM_MD_SPOL_I (1L<<18) /* Bit 18: Send Pause on Low */ | ||
345 | /* intern generated */ | ||
346 | #define XM_MD_SPOH_I (1L<<17) /* Bit 17: Send Pause on High */ | ||
347 | /* intern generated */ | ||
348 | #define XM_MD_CAP (1L<<16) /* Bit 16: Check Address Pair */ | ||
349 | #define XM_MD_ENA_HASH (1L<<15) /* Bit 15: Enable Hashing */ | ||
350 | #define XM_MD_CSA (1L<<14) /* Bit 14: Check Station Address */ | ||
351 | #define XM_MD_CAA (1L<<13) /* Bit 13: Check Address Array */ | ||
352 | #define XM_MD_RX_MCTRL (1L<<12) /* Bit 12: Rx MAC Control Frame */ | ||
353 | #define XM_MD_RX_RUNT (1L<<11) /* Bit 11: Rx Runt Frames */ | ||
354 | #define XM_MD_RX_IRLE (1L<<10) /* Bit 10: Rx in Range Len Err Frame */ | ||
355 | #define XM_MD_RX_LONG (1L<<9) /* Bit 9: Rx Long Frame */ | ||
356 | #define XM_MD_RX_CRCE (1L<<8) /* Bit 8: Rx CRC Error Frame */ | ||
357 | #define XM_MD_RX_ERR (1L<<7) /* Bit 7: Rx Error Frame */ | ||
358 | #define XM_MD_DIS_UC (1L<<6) /* Bit 6: Disable Rx Unicast */ | ||
359 | #define XM_MD_DIS_MC (1L<<5) /* Bit 5: Disable Rx Multicast */ | ||
360 | #define XM_MD_DIS_BC (1L<<4) /* Bit 4: Disable Rx Broadcast */ | ||
361 | #define XM_MD_ENA_PROM (1L<<3) /* Bit 3: Enable Promiscuous */ | ||
362 | #define XM_MD_ENA_BE (1L<<2) /* Bit 2: Enable Big Endian */ | ||
363 | #define XM_MD_FTF (1L<<1) /* Bit 1: (sc) Flush Tx FIFO */ | ||
364 | #define XM_MD_FRF (1L<<0) /* Bit 0: (sc) Flush Rx FIFO */ | ||
365 | |||
366 | #define XM_PAUSE_MODE (XM_MD_SPOE_E | XM_MD_SPOL_I | XM_MD_SPOH_I) | ||
367 | #define XM_DEF_MODE (XM_MD_RX_RUNT | XM_MD_RX_IRLE | XM_MD_RX_LONG |\ | ||
368 | XM_MD_RX_CRCE | XM_MD_RX_ERR | XM_MD_CSA | XM_MD_CAA) | ||
369 | |||
370 | /* XM_STAT_CMD 16 bit r/w Statistics Command Register */ | ||
371 | /* Bit 16..6: reserved */ | ||
372 | #define XM_SC_SNP_RXC (1<<5) /* Bit 5: (sc) Snap Rx Counters */ | ||
373 | #define XM_SC_SNP_TXC (1<<4) /* Bit 4: (sc) Snap Tx Counters */ | ||
374 | #define XM_SC_CP_RXC (1<<3) /* Bit 3: Copy Rx Counters Continuously */ | ||
375 | #define XM_SC_CP_TXC (1<<2) /* Bit 2: Copy Tx Counters Continuously */ | ||
376 | #define XM_SC_CLR_RXC (1<<1) /* Bit 1: (sc) Clear Rx Counters */ | ||
377 | #define XM_SC_CLR_TXC (1<<0) /* Bit 0: (sc) Clear Tx Counters */ | ||
378 | |||
379 | |||
380 | /* XM_RX_CNT_EV 32 bit r/o Rx Counter Event Register */ | ||
381 | /* XM_RX_EV_MSK 32 bit r/w Rx Counter Event Mask */ | ||
382 | #define XMR_MAX_SZ_OV (1UL<<31) /* Bit 31: 1024-MaxSize Rx Cnt Ov*/ | ||
383 | #define XMR_1023B_OV (1L<<30) /* Bit 30: 512-1023Byte Rx Cnt Ov*/ | ||
384 | #define XMR_511B_OV (1L<<29) /* Bit 29: 256-511 Byte Rx Cnt Ov*/ | ||
385 | #define XMR_255B_OV (1L<<28) /* Bit 28: 128-255 Byte Rx Cnt Ov*/ | ||
386 | #define XMR_127B_OV (1L<<27) /* Bit 27: 65-127 Byte Rx Cnt Ov */ | ||
387 | #define XMR_64B_OV (1L<<26) /* Bit 26: 64 Byte Rx Cnt Ov */ | ||
388 | #define XMR_UTIL_OV (1L<<25) /* Bit 25: Rx Util Cnt Overflow */ | ||
389 | #define XMR_UTIL_UR (1L<<24) /* Bit 24: Rx Util Cnt Underrun */ | ||
390 | #define XMR_CEX_ERR_OV (1L<<23) /* Bit 23: CEXT Err Cnt Ov */ | ||
391 | /* Bit 22: reserved */ | ||
392 | #define XMR_FCS_ERR_OV (1L<<21) /* Bit 21: Rx FCS Error Cnt Ov */ | ||
393 | #define XMR_LNG_ERR_OV (1L<<20) /* Bit 20: Rx too Long Err Cnt Ov*/ | ||
394 | #define XMR_RUNT_OV (1L<<19) /* Bit 19: Runt Event Cnt Ov */ | ||
395 | #define XMR_SHT_ERR_OV (1L<<18) /* Bit 18: Rx Short Ev Err Cnt Ov*/ | ||
396 | #define XMR_SYM_ERR_OV (1L<<17) /* Bit 17: Rx Sym Err Cnt Ov */ | ||
397 | /* Bit 16: reserved */ | ||
398 | #define XMR_CAR_ERR_OV (1L<<15) /* Bit 15: Rx Carr Ev Err Cnt Ov */ | ||
399 | #define XMR_JAB_PKT_OV (1L<<14) /* Bit 14: Rx Jabb Packet Cnt Ov */ | ||
400 | #define XMR_FIFO_OV (1L<<13) /* Bit 13: Rx FIFO Ov Ev Cnt Ov */ | ||
401 | #define XMR_FRA_ERR_OV (1L<<12) /* Bit 12: Rx Framing Err Cnt Ov */ | ||
402 | #define XMR_FMISS_OV (1L<<11) /* Bit 11: Rx Missed Ev Cnt Ov */ | ||
403 | #define XMR_BURST (1L<<10) /* Bit 10: Rx Burst Event Cnt Ov */ | ||
404 | #define XMR_INV_MOC (1L<<9) /* Bit 9: Rx with inv. MAC OC Ov*/ | ||
405 | #define XMR_INV_MP (1L<<8) /* Bit 8: Rx inv Pause Frame Ov */ | ||
406 | #define XMR_MCTRL_OV (1L<<7) /* Bit 7: Rx MAC Ctrl-F Cnt Ov */ | ||
407 | #define XMR_MPAUSE_OV (1L<<6) /* Bit 6: Rx Pause MAC Ctrl-F Ov*/ | ||
408 | #define XMR_UC_OK_OV (1L<<5) /* Bit 5: Rx Unicast Frame CntOv*/ | ||
409 | #define XMR_MC_OK_OV (1L<<4) /* Bit 4: Rx Multicast Cnt Ov */ | ||
410 | #define XMR_BC_OK_OV (1L<<3) /* Bit 3: Rx Broadcast Cnt Ov */ | ||
411 | #define XMR_OK_LO_OV (1L<<2) /* Bit 2: Octets Rx OK Low CntOv*/ | ||
412 | #define XMR_OK_HI_OV (1L<<1) /* Bit 1: Octets Rx OK Hi Cnt Ov*/ | ||
413 | #define XMR_OK_OV (1L<<0) /* Bit 0: Frames Received Ok Ov */ | ||
414 | |||
415 | #define XMR_DEF_MSK (XMR_OK_LO_OV | XMR_OK_HI_OV) | ||
416 | |||
417 | /* XM_TX_CNT_EV 32 bit r/o Tx Counter Event Register */ | ||
418 | /* XM_TX_EV_MSK 32 bit r/w Tx Counter Event Mask */ | ||
419 | /* Bit 31..26: reserved */ | ||
420 | #define XMT_MAX_SZ_OV (1L<<25) /* Bit 25: 1024-MaxSize Tx Cnt Ov*/ | ||
421 | #define XMT_1023B_OV (1L<<24) /* Bit 24: 512-1023Byte Tx Cnt Ov*/ | ||
422 | #define XMT_511B_OV (1L<<23) /* Bit 23: 256-511 Byte Tx Cnt Ov*/ | ||
423 | #define XMT_255B_OV (1L<<22) /* Bit 22: 128-255 Byte Tx Cnt Ov*/ | ||
424 | #define XMT_127B_OV (1L<<21) /* Bit 21: 65-127 Byte Tx Cnt Ov */ | ||
425 | #define XMT_64B_OV (1L<<20) /* Bit 20: 64 Byte Tx Cnt Ov */ | ||
426 | #define XMT_UTIL_OV (1L<<19) /* Bit 19: Tx Util Cnt Overflow */ | ||
427 | #define XMT_UTIL_UR (1L<<18) /* Bit 18: Tx Util Cnt Underrun */ | ||
428 | #define XMT_CS_ERR_OV (1L<<17) /* Bit 17: Tx Carr Sen Err Cnt Ov*/ | ||
429 | #define XMT_FIFO_UR_OV (1L<<16) /* Bit 16: Tx FIFO Ur Ev Cnt Ov */ | ||
430 | #define XMT_EX_DEF_OV (1L<<15) /* Bit 15: Tx Ex Deferall Cnt Ov */ | ||
431 | #define XMT_DEF (1L<<14) /* Bit 14: Tx Deferred Cnt Ov */ | ||
432 | #define XMT_LAT_COL_OV (1L<<13) /* Bit 13: Tx Late Col Cnt Ov */ | ||
433 | #define XMT_ABO_COL_OV (1L<<12) /* Bit 12: Tx abo dueto Ex Col Ov*/ | ||
434 | #define XMT_MUL_COL_OV (1L<<11) /* Bit 11: Tx Mult Col Cnt Ov */ | ||
435 | #define XMT_SNG_COL (1L<<10) /* Bit 10: Tx Single Col Cnt Ov */ | ||
436 | #define XMT_MCTRL_OV (1L<<9) /* Bit 9: Tx MAC Ctrl Counter Ov*/ | ||
437 | #define XMT_MPAUSE (1L<<8) /* Bit 8: Tx Pause MAC Ctrl-F Ov*/ | ||
438 | #define XMT_BURST (1L<<7) /* Bit 7: Tx Burst Event Cnt Ov */ | ||
439 | #define XMT_LONG (1L<<6) /* Bit 6: Tx Long Frame Cnt Ov */ | ||
440 | #define XMT_UC_OK_OV (1L<<5) /* Bit 5: Tx Unicast Cnt Ov */ | ||
441 | #define XMT_MC_OK_OV (1L<<4) /* Bit 4: Tx Multicast Cnt Ov */ | ||
442 | #define XMT_BC_OK_OV (1L<<3) /* Bit 3: Tx Broadcast Cnt Ov */ | ||
443 | #define XMT_OK_LO_OV (1L<<2) /* Bit 2: Octets Tx OK Low CntOv*/ | ||
444 | #define XMT_OK_HI_OV (1L<<1) /* Bit 1: Octets Tx OK Hi Cnt Ov*/ | ||
445 | #define XMT_OK_OV (1L<<0) /* Bit 0: Frames Tx Ok Ov */ | ||
446 | |||
447 | #define XMT_DEF_MSK (XMT_OK_LO_OV | XMT_OK_HI_OV) | ||
448 | |||
449 | /* | ||
450 | * Receive Frame Status Encoding | ||
451 | */ | ||
452 | #define XMR_FS_LEN (0x3fffUL<<18) /* Bit 31..18: Rx Frame Length */ | ||
453 | #define XMR_FS_2L_VLAN (1L<<17) /* Bit 17: tagged wh 2Lev VLAN ID*/ | ||
454 | #define XMR_FS_1L_VLAN (1L<<16) /* Bit 16: tagged wh 1Lev VLAN ID*/ | ||
455 | #define XMR_FS_BC (1L<<15) /* Bit 15: Broadcast Frame */ | ||
456 | #define XMR_FS_MC (1L<<14) /* Bit 14: Multicast Frame */ | ||
457 | #define XMR_FS_UC (1L<<13) /* Bit 13: Unicast Frame */ | ||
458 | /* Bit 12: reserved */ | ||
459 | #define XMR_FS_BURST (1L<<11) /* Bit 11: Burst Mode */ | ||
460 | #define XMR_FS_CEX_ERR (1L<<10) /* Bit 10: Carrier Ext. Error */ | ||
461 | #define XMR_FS_802_3 (1L<<9) /* Bit 9: 802.3 Frame */ | ||
462 | #define XMR_FS_COL_ERR (1L<<8) /* Bit 8: Collision Error */ | ||
463 | #define XMR_FS_CAR_ERR (1L<<7) /* Bit 7: Carrier Event Error */ | ||
464 | #define XMR_FS_LEN_ERR (1L<<6) /* Bit 6: In-Range Length Error */ | ||
465 | #define XMR_FS_FRA_ERR (1L<<5) /* Bit 5: Framing Error */ | ||
466 | #define XMR_FS_RUNT (1L<<4) /* Bit 4: Runt Frame */ | ||
467 | #define XMR_FS_LNG_ERR (1L<<3) /* Bit 3: Giant (Jumbo) Frame */ | ||
468 | #define XMR_FS_FCS_ERR (1L<<2) /* Bit 2: Frame Check Sequ Err */ | ||
469 | #define XMR_FS_ERR (1L<<1) /* Bit 1: Frame Error */ | ||
470 | #define XMR_FS_MCTRL (1L<<0) /* Bit 0: MAC Control Packet */ | ||
471 | |||
472 | /* | ||
473 | * XMR_FS_ERR will be set if | ||
474 | * XMR_FS_FCS_ERR, XMR_FS_LNG_ERR, XMR_FS_RUNT, | ||
475 | * XMR_FS_FRA_ERR, XMR_FS_LEN_ERR, or XMR_FS_CEX_ERR | ||
476 | * is set. XMR_FS_LNG_ERR and XMR_FS_LEN_ERR will issue | ||
477 | * XMR_FS_ERR unless the corresponding bit in the Receive Command | ||
478 | * Register is set. | ||
479 | */ | ||
480 | #define XMR_FS_ANY_ERR XMR_FS_ERR | ||
481 | |||
482 | /*----------------------------------------------------------------------------*/ | ||
483 | /* | ||
484 | * XMAC-PHY Registers, indirect addressed over the XMAC | ||
485 | */ | ||
486 | #define PHY_XMAC_CTRL 0x00 /* 16 bit r/w PHY Control Register */ | ||
487 | #define PHY_XMAC_STAT 0x01 /* 16 bit r/w PHY Status Register */ | ||
488 | #define PHY_XMAC_ID0 0x02 /* 16 bit r/o PHY ID0 Register */ | ||
489 | #define PHY_XMAC_ID1 0x03 /* 16 bit r/o PHY ID1 Register */ | ||
490 | #define PHY_XMAC_AUNE_ADV 0x04 /* 16 bit r/w Auto-Neg. Advertisement */ | ||
491 | #define PHY_XMAC_AUNE_LP 0x05 /* 16 bit r/o Link Partner Abi Reg */ | ||
492 | #define PHY_XMAC_AUNE_EXP 0x06 /* 16 bit r/o Auto-Neg. Expansion Reg */ | ||
493 | #define PHY_XMAC_NEPG 0x07 /* 16 bit r/w Next Page Register */ | ||
494 | #define PHY_XMAC_NEPG_LP 0x08 /* 16 bit r/o Next Page Link Partner */ | ||
495 | /* 0x09 - 0x0e: reserved */ | ||
496 | #define PHY_XMAC_EXT_STAT 0x0f /* 16 bit r/o Ext Status Register */ | ||
497 | #define PHY_XMAC_RES_ABI 0x10 /* 16 bit r/o PHY Resolved Ability */ | ||
498 | |||
499 | /*----------------------------------------------------------------------------*/ | ||
500 | /* | ||
501 | * Broadcom-PHY Registers, indirect addressed over XMAC | ||
502 | */ | ||
503 | #define PHY_BCOM_CTRL 0x00 /* 16 bit r/w PHY Control Register */ | ||
504 | #define PHY_BCOM_STAT 0x01 /* 16 bit r/o PHY Status Register */ | ||
505 | #define PHY_BCOM_ID0 0x02 /* 16 bit r/o PHY ID0 Register */ | ||
506 | #define PHY_BCOM_ID1 0x03 /* 16 bit r/o PHY ID1 Register */ | ||
507 | #define PHY_BCOM_AUNE_ADV 0x04 /* 16 bit r/w Auto-Neg. Advertisement */ | ||
508 | #define PHY_BCOM_AUNE_LP 0x05 /* 16 bit r/o Link Part Ability Reg */ | ||
509 | #define PHY_BCOM_AUNE_EXP 0x06 /* 16 bit r/o Auto-Neg. Expansion Reg */ | ||
510 | #define PHY_BCOM_NEPG 0x07 /* 16 bit r/w Next Page Register */ | ||
511 | #define PHY_BCOM_NEPG_LP 0x08 /* 16 bit r/o Next Page Link Partner */ | ||
512 | /* Broadcom-specific registers */ | ||
513 | #define PHY_BCOM_1000T_CTRL 0x09 /* 16 bit r/w 1000Base-T Ctrl Reg */ | ||
514 | #define PHY_BCOM_1000T_STAT 0x0a /* 16 bit r/o 1000Base-T Status Reg */ | ||
515 | /* 0x0b - 0x0e: reserved */ | ||
516 | #define PHY_BCOM_EXT_STAT 0x0f /* 16 bit r/o Extended Status Reg */ | ||
517 | #define PHY_BCOM_P_EXT_CTRL 0x10 /* 16 bit r/w PHY Extended Ctrl Reg */ | ||
518 | #define PHY_BCOM_P_EXT_STAT 0x11 /* 16 bit r/o PHY Extended Stat Reg */ | ||
519 | #define PHY_BCOM_RE_CTR 0x12 /* 16 bit r/w Receive Error Counter */ | ||
520 | #define PHY_BCOM_FC_CTR 0x13 /* 16 bit r/w False Carrier Sense Cnt */ | ||
521 | #define PHY_BCOM_RNO_CTR 0x14 /* 16 bit r/w Receiver NOT_OK Cnt */ | ||
522 | /* 0x15 - 0x17: reserved */ | ||
523 | #define PHY_BCOM_AUX_CTRL 0x18 /* 16 bit r/w Auxiliary Control Reg */ | ||
524 | #define PHY_BCOM_AUX_STAT 0x19 /* 16 bit r/o Auxiliary Stat Summary */ | ||
525 | #define PHY_BCOM_INT_STAT 0x1a /* 16 bit r/o Interrupt Status Reg */ | ||
526 | #define PHY_BCOM_INT_MASK 0x1b /* 16 bit r/w Interrupt Mask Reg */ | ||
527 | /* 0x1c: reserved */ | ||
528 | /* 0x1d - 0x1f: test registers */ | ||
529 | |||
530 | /*----------------------------------------------------------------------------*/ | ||
531 | /* | ||
532 | * Marvel-PHY Registers, indirect addressed over GMAC | ||
533 | */ | ||
534 | #define PHY_MARV_CTRL 0x00 /* 16 bit r/w PHY Control Register */ | ||
535 | #define PHY_MARV_STAT 0x01 /* 16 bit r/o PHY Status Register */ | ||
536 | #define PHY_MARV_ID0 0x02 /* 16 bit r/o PHY ID0 Register */ | ||
537 | #define PHY_MARV_ID1 0x03 /* 16 bit r/o PHY ID1 Register */ | ||
538 | #define PHY_MARV_AUNE_ADV 0x04 /* 16 bit r/w Auto-Neg. Advertisement */ | ||
539 | #define PHY_MARV_AUNE_LP 0x05 /* 16 bit r/o Link Part Ability Reg */ | ||
540 | #define PHY_MARV_AUNE_EXP 0x06 /* 16 bit r/o Auto-Neg. Expansion Reg */ | ||
541 | #define PHY_MARV_NEPG 0x07 /* 16 bit r/w Next Page Register */ | ||
542 | #define PHY_MARV_NEPG_LP 0x08 /* 16 bit r/o Next Page Link Partner */ | ||
543 | /* Marvel-specific registers */ | ||
544 | #define PHY_MARV_1000T_CTRL 0x09 /* 16 bit r/w 1000Base-T Ctrl Reg */ | ||
545 | #define PHY_MARV_1000T_STAT 0x0a /* 16 bit r/o 1000Base-T Status Reg */ | ||
546 | /* 0x0b - 0x0e: reserved */ | ||
547 | #define PHY_MARV_EXT_STAT 0x0f /* 16 bit r/o Extended Status Reg */ | ||
548 | #define PHY_MARV_PHY_CTRL 0x10 /* 16 bit r/w PHY Specific Ctrl Reg */ | ||
549 | #define PHY_MARV_PHY_STAT 0x11 /* 16 bit r/o PHY Specific Stat Reg */ | ||
550 | #define PHY_MARV_INT_MASK 0x12 /* 16 bit r/w Interrupt Mask Reg */ | ||
551 | #define PHY_MARV_INT_STAT 0x13 /* 16 bit r/o Interrupt Status Reg */ | ||
552 | #define PHY_MARV_EXT_CTRL 0x14 /* 16 bit r/w Ext. PHY Specific Ctrl */ | ||
553 | #define PHY_MARV_RXE_CNT 0x15 /* 16 bit r/w Receive Error Counter */ | ||
554 | #define PHY_MARV_EXT_ADR 0x16 /* 16 bit r/w Ext. Ad. for Cable Diag. */ | ||
555 | /* 0x17: reserved */ | ||
556 | #define PHY_MARV_LED_CTRL 0x18 /* 16 bit r/w LED Control Reg */ | ||
557 | #define PHY_MARV_LED_OVER 0x19 /* 16 bit r/w Manual LED Override Reg */ | ||
558 | #define PHY_MARV_EXT_CTRL_2 0x1a /* 16 bit r/w Ext. PHY Specific Ctrl 2 */ | ||
559 | #define PHY_MARV_EXT_P_STAT 0x1b /* 16 bit r/w Ext. PHY Spec. Stat Reg */ | ||
560 | #define PHY_MARV_CABLE_DIAG 0x1c /* 16 bit r/o Cable Diagnostic Reg */ | ||
561 | /* 0x1d - 0x1f: reserved */ | ||
562 | |||
563 | /*----------------------------------------------------------------------------*/ | ||
564 | /* | ||
565 | * Level One-PHY Registers, indirect addressed over XMAC | ||
566 | */ | ||
567 | #define PHY_LONE_CTRL 0x00 /* 16 bit r/w PHY Control Register */ | ||
568 | #define PHY_LONE_STAT 0x01 /* 16 bit r/o PHY Status Register */ | ||
569 | #define PHY_LONE_ID0 0x02 /* 16 bit r/o PHY ID0 Register */ | ||
570 | #define PHY_LONE_ID1 0x03 /* 16 bit r/o PHY ID1 Register */ | ||
571 | #define PHY_LONE_AUNE_ADV 0x04 /* 16 bit r/w Auto-Neg. Advertisement */ | ||
572 | #define PHY_LONE_AUNE_LP 0x05 /* 16 bit r/o Link Part Ability Reg */ | ||
573 | #define PHY_LONE_AUNE_EXP 0x06 /* 16 bit r/o Auto-Neg. Expansion Reg */ | ||
574 | #define PHY_LONE_NEPG 0x07 /* 16 bit r/w Next Page Register */ | ||
575 | #define PHY_LONE_NEPG_LP 0x08 /* 16 bit r/o Next Page Link Partner */ | ||
576 | /* Level One-specific registers */ | ||
577 | #define PHY_LONE_1000T_CTRL 0x09 /* 16 bit r/w 1000Base-T Control Reg*/ | ||
578 | #define PHY_LONE_1000T_STAT 0x0a /* 16 bit r/o 1000Base-T Status Reg */ | ||
579 | /* 0x0b -0x0e: reserved */ | ||
580 | #define PHY_LONE_EXT_STAT 0x0f /* 16 bit r/o Extended Status Reg */ | ||
581 | #define PHY_LONE_PORT_CFG 0x10 /* 16 bit r/w Port Configuration Reg*/ | ||
582 | #define PHY_LONE_Q_STAT 0x11 /* 16 bit r/o Quick Status Reg */ | ||
583 | #define PHY_LONE_INT_ENAB 0x12 /* 16 bit r/w Interrupt Enable Reg */ | ||
584 | #define PHY_LONE_INT_STAT 0x13 /* 16 bit r/o Interrupt Status Reg */ | ||
585 | #define PHY_LONE_LED_CFG 0x14 /* 16 bit r/w LED Configuration Reg */ | ||
586 | #define PHY_LONE_PORT_CTRL 0x15 /* 16 bit r/w Port Control Reg */ | ||
587 | #define PHY_LONE_CIM 0x16 /* 16 bit r/o CIM Reg */ | ||
588 | /* 0x17 -0x1c: reserved */ | ||
589 | |||
590 | /*----------------------------------------------------------------------------*/ | ||
591 | /* | ||
592 | * National-PHY Registers, indirect addressed over XMAC | ||
593 | */ | ||
594 | #define PHY_NAT_CTRL 0x00 /* 16 bit r/w PHY Control Register */ | ||
595 | #define PHY_NAT_STAT 0x01 /* 16 bit r/w PHY Status Register */ | ||
596 | #define PHY_NAT_ID0 0x02 /* 16 bit r/o PHY ID0 Register */ | ||
597 | #define PHY_NAT_ID1 0x03 /* 16 bit r/o PHY ID1 Register */ | ||
598 | #define PHY_NAT_AUNE_ADV 0x04 /* 16 bit r/w Auto-Neg. Advertisement */ | ||
599 | #define PHY_NAT_AUNE_LP 0x05 /* 16 bit r/o Link Partner Ability Reg */ | ||
600 | #define PHY_NAT_AUNE_EXP 0x06 /* 16 bit r/o Auto-Neg. Expansion Reg */ | ||
601 | #define PHY_NAT_NEPG 0x07 /* 16 bit r/w Next Page Register */ | ||
602 | #define PHY_NAT_NEPG_LP 0x08 /* 16 bit r/o Next Page Link Partner Reg */ | ||
603 | /* National-specific registers */ | ||
604 | #define PHY_NAT_1000T_CTRL 0x09 /* 16 bit r/w 1000Base-T Control Reg */ | ||
605 | #define PHY_NAT_1000T_STAT 0x0a /* 16 bit r/o 1000Base-T Status Reg */ | ||
606 | /* 0x0b -0x0e: reserved */ | ||
607 | #define PHY_NAT_EXT_STAT 0x0f /* 16 bit r/o Extended Status Register */ | ||
608 | #define PHY_NAT_EXT_CTRL1 0x10 /* 16 bit r/o Extended Control Reg1 */ | ||
609 | #define PHY_NAT_Q_STAT1 0x11 /* 16 bit r/o Quick Status Reg1 */ | ||
610 | #define PHY_NAT_10B_OP 0x12 /* 16 bit r/o 10Base-T Operations Reg */ | ||
611 | #define PHY_NAT_EXT_CTRL2 0x13 /* 16 bit r/o Extended Control Reg1 */ | ||
612 | #define PHY_NAT_Q_STAT2 0x14 /* 16 bit r/o Quick Status Reg2 */ | ||
613 | /* 0x15 -0x18: reserved */ | ||
614 | #define PHY_NAT_PHY_ADDR 0x19 /* 16 bit r/o PHY Address Register */ | ||
615 | |||
616 | |||
617 | /*----------------------------------------------------------------------------*/ | ||
618 | |||
619 | /* | ||
620 | * PHY bit definitions | ||
621 | * Bits defined as PHY_X_..., PHY_B_..., PHY_L_... or PHY_N_... are | ||
622 | * XMAC/Broadcom/LevelOne/National/Marvell-specific. | ||
623 | * All other are general. | ||
624 | */ | ||
625 | |||
626 | /***** PHY_XMAC_CTRL 16 bit r/w PHY Control Register *****/ | ||
627 | /***** PHY_BCOM_CTRL 16 bit r/w PHY Control Register *****/ | ||
628 | /***** PHY_MARV_CTRL 16 bit r/w PHY Status Register *****/ | ||
629 | /***** PHY_LONE_CTRL 16 bit r/w PHY Control Register *****/ | ||
630 | #define PHY_CT_RESET (1<<15) /* Bit 15: (sc) clear all PHY related regs */ | ||
631 | #define PHY_CT_LOOP (1<<14) /* Bit 14: enable Loopback over PHY */ | ||
632 | #define PHY_CT_SPS_LSB (1<<13) /* Bit 13: (BC,L1) Speed select, lower bit */ | ||
633 | #define PHY_CT_ANE (1<<12) /* Bit 12: Auto-Negotiation Enabled */ | ||
634 | #define PHY_CT_PDOWN (1<<11) /* Bit 11: (BC,L1) Power Down Mode */ | ||
635 | #define PHY_CT_ISOL (1<<10) /* Bit 10: (BC,L1) Isolate Mode */ | ||
636 | #define PHY_CT_RE_CFG (1<<9) /* Bit 9: (sc) Restart Auto-Negotiation */ | ||
637 | #define PHY_CT_DUP_MD (1<<8) /* Bit 8: Duplex Mode */ | ||
638 | #define PHY_CT_COL_TST (1<<7) /* Bit 7: (BC,L1) Collision Test enabled */ | ||
639 | #define PHY_CT_SPS_MSB (1<<6) /* Bit 6: (BC,L1) Speed select, upper bit */ | ||
640 | /* Bit 5..0: reserved */ | ||
641 | |||
642 | #define PHY_CT_SP1000 PHY_CT_SPS_MSB /* enable speed of 1000 Mbps */ | ||
643 | #define PHY_CT_SP100 PHY_CT_SPS_LSB /* enable speed of 100 Mbps */ | ||
644 | #define PHY_CT_SP10 (0) /* enable speed of 10 Mbps */ | ||
645 | |||
646 | |||
647 | /***** PHY_XMAC_STAT 16 bit r/w PHY Status Register *****/ | ||
648 | /***** PHY_BCOM_STAT 16 bit r/w PHY Status Register *****/ | ||
649 | /***** PHY_MARV_STAT 16 bit r/w PHY Status Register *****/ | ||
650 | /***** PHY_LONE_STAT 16 bit r/w PHY Status Register *****/ | ||
651 | /* Bit 15..9: reserved */ | ||
652 | /* (BC/L1) 100/10 Mbps cap bits ignored*/ | ||
653 | #define PHY_ST_EXT_ST (1<<8) /* Bit 8: Extended Status Present */ | ||
654 | /* Bit 7: reserved */ | ||
655 | #define PHY_ST_PRE_SUP (1<<6) /* Bit 6: (BC/L1) preamble suppression */ | ||
656 | #define PHY_ST_AN_OVER (1<<5) /* Bit 5: Auto-Negotiation Over */ | ||
657 | #define PHY_ST_REM_FLT (1<<4) /* Bit 4: Remote Fault Condition Occured */ | ||
658 | #define PHY_ST_AN_CAP (1<<3) /* Bit 3: Auto-Negotiation Capability */ | ||
659 | #define PHY_ST_LSYNC (1<<2) /* Bit 2: Link Synchronized */ | ||
660 | #define PHY_ST_JAB_DET (1<<1) /* Bit 1: (BC/L1) Jabber Detected */ | ||
661 | #define PHY_ST_EXT_REG (1<<0) /* Bit 0: Extended Register available */ | ||
662 | |||
663 | |||
664 | /***** PHY_XMAC_ID1 16 bit r/o PHY ID1 Register */ | ||
665 | /***** PHY_BCOM_ID1 16 bit r/o PHY ID1 Register */ | ||
666 | /***** PHY_MARV_ID1 16 bit r/o PHY ID1 Register */ | ||
667 | /***** PHY_LONE_ID1 16 bit r/o PHY ID1 Register */ | ||
668 | #define PHY_I1_OUI_MSK (0x3f<<10) /* Bit 15..10: Organization Unique ID */ | ||
669 | #define PHY_I1_MOD_NUM (0x3f<<4) /* Bit 9.. 4: Model Number */ | ||
670 | #define PHY_I1_REV_MSK 0x0f /* Bit 3.. 0: Revision Number */ | ||
671 | |||
672 | /* different Broadcom PHY Ids */ | ||
673 | #define PHY_BCOM_ID1_A1 0x6041 | ||
674 | #define PHY_BCOM_ID1_B2 0x6043 | ||
675 | #define PHY_BCOM_ID1_C0 0x6044 | ||
676 | #define PHY_BCOM_ID1_C5 0x6047 | ||
677 | |||
678 | |||
679 | /***** PHY_XMAC_AUNE_ADV 16 bit r/w Auto-Negotiation Advertisement *****/ | ||
680 | /***** PHY_XMAC_AUNE_LP 16 bit r/o Link Partner Ability Reg *****/ | ||
681 | #define PHY_AN_NXT_PG (1<<15) /* Bit 15: Request Next Page */ | ||
682 | #define PHY_X_AN_ACK (1<<14) /* Bit 14: (ro) Acknowledge Received */ | ||
683 | #define PHY_X_AN_RFB (3<<12) /* Bit 13..12: Remote Fault Bits */ | ||
684 | /* Bit 11.. 9: reserved */ | ||
685 | #define PHY_X_AN_PAUSE (3<<7) /* Bit 8.. 7: Pause Bits */ | ||
686 | #define PHY_X_AN_HD (1<<6) /* Bit 6: Half Duplex */ | ||
687 | #define PHY_X_AN_FD (1<<5) /* Bit 5: Full Duplex */ | ||
688 | /* Bit 4.. 0: reserved */ | ||
689 | |||
690 | /***** PHY_BCOM_AUNE_ADV 16 bit r/w Auto-Negotiation Advertisement *****/ | ||
691 | /***** PHY_BCOM_AUNE_LP 16 bit r/o Link Partner Ability Reg *****/ | ||
692 | /* PHY_AN_NXT_PG (see XMAC) Bit 15: Request Next Page */ | ||
693 | /* Bit 14: reserved */ | ||
694 | #define PHY_B_AN_RF (1<<13) /* Bit 13: Remote Fault */ | ||
695 | /* Bit 12: reserved */ | ||
696 | #define PHY_B_AN_ASP (1<<11) /* Bit 11: Asymmetric Pause */ | ||
697 | #define PHY_B_AN_PC (1<<10) /* Bit 10: Pause Capable */ | ||
698 | /* Bit 9..5: 100/10 BT cap bits ingnored */ | ||
699 | #define PHY_B_AN_SEL 0x1f /* Bit 4..0: Selector Field, 00001=Ethernet*/ | ||
700 | |||
701 | /***** PHY_LONE_AUNE_ADV 16 bit r/w Auto-Negotiation Advertisement *****/ | ||
702 | /***** PHY_LONE_AUNE_LP 16 bit r/o Link Partner Ability Reg *****/ | ||
703 | /* PHY_AN_NXT_PG (see XMAC) Bit 15: Request Next Page */ | ||
704 | /* Bit 14: reserved */ | ||
705 | #define PHY_L_AN_RF (1<<13) /* Bit 13: Remote Fault */ | ||
706 | /* Bit 12: reserved */ | ||
707 | #define PHY_L_AN_ASP (1<<11) /* Bit 11: Asymmetric Pause */ | ||
708 | #define PHY_L_AN_PC (1<<10) /* Bit 10: Pause Capable */ | ||
709 | /* Bit 9..5: 100/10 BT cap bits ingnored */ | ||
710 | #define PHY_L_AN_SEL 0x1f /* Bit 4..0: Selector Field, 00001=Ethernet*/ | ||
711 | |||
712 | /***** PHY_NAT_AUNE_ADV 16 bit r/w Auto-Negotiation Advertisement *****/ | ||
713 | /***** PHY_NAT_AUNE_LP 16 bit r/o Link Partner Ability Reg *****/ | ||
714 | /* PHY_AN_NXT_PG (see XMAC) Bit 15: Request Next Page */ | ||
715 | /* Bit 14: reserved */ | ||
716 | #define PHY_N_AN_RF (1<<13) /* Bit 13: Remote Fault */ | ||
717 | /* Bit 12: reserved */ | ||
718 | #define PHY_N_AN_100F (1<<11) /* Bit 11: 100Base-T2 FD Support */ | ||
719 | #define PHY_N_AN_100H (1<<10) /* Bit 10: 100Base-T2 HD Support */ | ||
720 | /* Bit 9..5: 100/10 BT cap bits ingnored */ | ||
721 | #define PHY_N_AN_SEL 0x1f /* Bit 4..0: Selector Field, 00001=Ethernet*/ | ||
722 | |||
723 | /* field type definition for PHY_x_AN_SEL */ | ||
724 | #define PHY_SEL_TYPE 0x01 /* 00001 = Ethernet */ | ||
725 | |||
726 | /***** PHY_XMAC_AUNE_EXP 16 bit r/o Auto-Negotiation Expansion Reg *****/ | ||
727 | /* Bit 15..4: reserved */ | ||
728 | #define PHY_ANE_LP_NP (1<<3) /* Bit 3: Link Partner can Next Page */ | ||
729 | #define PHY_ANE_LOC_NP (1<<2) /* Bit 2: Local PHY can Next Page */ | ||
730 | #define PHY_ANE_RX_PG (1<<1) /* Bit 1: Page Received */ | ||
731 | /* Bit 0: reserved */ | ||
732 | |||
733 | /***** PHY_BCOM_AUNE_EXP 16 bit r/o Auto-Negotiation Expansion Reg *****/ | ||
734 | /***** PHY_LONE_AUNE_EXP 16 bit r/o Auto-Negotiation Expansion Reg *****/ | ||
735 | /***** PHY_MARV_AUNE_EXP 16 bit r/o Auto-Negotiation Expansion Reg *****/ | ||
736 | /* Bit 15..5: reserved */ | ||
737 | #define PHY_ANE_PAR_DF (1<<4) /* Bit 4: Parallel Detection Fault */ | ||
738 | /* PHY_ANE_LP_NP (see XMAC) Bit 3: Link Partner can Next Page */ | ||
739 | /* PHY_ANE_LOC_NP (see XMAC) Bit 2: Local PHY can Next Page */ | ||
740 | /* PHY_ANE_RX_PG (see XMAC) Bit 1: Page Received */ | ||
741 | #define PHY_ANE_LP_CAP (1<<0) /* Bit 0: Link Partner Auto-Neg. Cap. */ | ||
742 | |||
743 | /***** PHY_XMAC_NEPG 16 bit r/w Next Page Register *****/ | ||
744 | /***** PHY_BCOM_NEPG 16 bit r/w Next Page Register *****/ | ||
745 | /***** PHY_LONE_NEPG 16 bit r/w Next Page Register *****/ | ||
746 | /***** PHY_XMAC_NEPG_LP 16 bit r/o Next Page Link Partner *****/ | ||
747 | /***** PHY_BCOM_NEPG_LP 16 bit r/o Next Page Link Partner *****/ | ||
748 | /***** PHY_LONE_NEPG_LP 16 bit r/o Next Page Link Partner *****/ | ||
749 | #define PHY_NP_MORE (1<<15) /* Bit 15: More, Next Pages to follow */ | ||
750 | #define PHY_NP_ACK1 (1<<14) /* Bit 14: (ro) Ack1, for receiving a message */ | ||
751 | #define PHY_NP_MSG_VAL (1<<13) /* Bit 13: Message Page valid */ | ||
752 | #define PHY_NP_ACK2 (1<<12) /* Bit 12: Ack2, comply with msg content */ | ||
753 | #define PHY_NP_TOG (1<<11) /* Bit 11: Toggle Bit, ensure sync */ | ||
754 | #define PHY_NP_MSG 0x07ff /* Bit 10..0: Message from/to Link Partner */ | ||
755 | |||
756 | /* | ||
757 | * XMAC-Specific | ||
758 | */ | ||
759 | /***** PHY_XMAC_EXT_STAT 16 bit r/w Extended Status Register *****/ | ||
760 | #define PHY_X_EX_FD (1<<15) /* Bit 15: Device Supports Full Duplex */ | ||
761 | #define PHY_X_EX_HD (1<<14) /* Bit 14: Device Supports Half Duplex */ | ||
762 | /* Bit 13..0: reserved */ | ||
763 | |||
764 | /***** PHY_XMAC_RES_ABI 16 bit r/o PHY Resolved Ability *****/ | ||
765 | /* Bit 15..9: reserved */ | ||
766 | #define PHY_X_RS_PAUSE (3<<7) /* Bit 8..7: selected Pause Mode */ | ||
767 | #define PHY_X_RS_HD (1<<6) /* Bit 6: Half Duplex Mode selected */ | ||
768 | #define PHY_X_RS_FD (1<<5) /* Bit 5: Full Duplex Mode selected */ | ||
769 | #define PHY_X_RS_ABLMIS (1<<4) /* Bit 4: duplex or pause cap mismatch */ | ||
770 | #define PHY_X_RS_PAUMIS (1<<3) /* Bit 3: pause capability mismatch */ | ||
771 | /* Bit 2..0: reserved */ | ||
772 | /* | ||
773 | * Remote Fault Bits (PHY_X_AN_RFB) encoding | ||
774 | */ | ||
775 | #define X_RFB_OK (0<<12) /* Bit 13..12 No errors, Link OK */ | ||
776 | #define X_RFB_LF (1<<12) /* Bit 13..12 Link Failure */ | ||
777 | #define X_RFB_OFF (2<<12) /* Bit 13..12 Offline */ | ||
778 | #define X_RFB_AN_ERR (3<<12) /* Bit 13..12 Auto-Negotiation Error */ | ||
779 | |||
780 | /* | ||
781 | * Pause Bits (PHY_X_AN_PAUSE and PHY_X_RS_PAUSE) encoding | ||
782 | */ | ||
783 | #define PHY_X_P_NO_PAUSE (0<<7) /* Bit 8..7: no Pause Mode */ | ||
784 | #define PHY_X_P_SYM_MD (1<<7) /* Bit 8..7: symmetric Pause Mode */ | ||
785 | #define PHY_X_P_ASYM_MD (2<<7) /* Bit 8..7: asymmetric Pause Mode */ | ||
786 | #define PHY_X_P_BOTH_MD (3<<7) /* Bit 8..7: both Pause Mode */ | ||
787 | |||
788 | |||
789 | /* | ||
790 | * Broadcom-Specific | ||
791 | */ | ||
792 | /***** PHY_BCOM_1000T_CTRL 16 bit r/w 1000Base-T Control Reg *****/ | ||
793 | #define PHY_B_1000C_TEST (7<<13) /* Bit 15..13: Test Modes */ | ||
794 | #define PHY_B_1000C_MSE (1<<12) /* Bit 12: Master/Slave Enable */ | ||
795 | #define PHY_B_1000C_MSC (1<<11) /* Bit 11: M/S Configuration */ | ||
796 | #define PHY_B_1000C_RD (1<<10) /* Bit 10: Repeater/DTE */ | ||
797 | #define PHY_B_1000C_AFD (1<<9) /* Bit 9: Advertise Full Duplex */ | ||
798 | #define PHY_B_1000C_AHD (1<<8) /* Bit 8: Advertise Half Duplex */ | ||
799 | /* Bit 7..0: reserved */ | ||
800 | |||
801 | /***** PHY_BCOM_1000T_STAT 16 bit r/o 1000Base-T Status Reg *****/ | ||
802 | /***** PHY_MARV_1000T_STAT 16 bit r/o 1000Base-T Status Reg *****/ | ||
803 | #define PHY_B_1000S_MSF (1<<15) /* Bit 15: Master/Slave Fault */ | ||
804 | #define PHY_B_1000S_MSR (1<<14) /* Bit 14: Master/Slave Result */ | ||
805 | #define PHY_B_1000S_LRS (1<<13) /* Bit 13: Local Receiver Status */ | ||
806 | #define PHY_B_1000S_RRS (1<<12) /* Bit 12: Remote Receiver Status */ | ||
807 | #define PHY_B_1000S_LP_FD (1<<11) /* Bit 11: Link Partner can FD */ | ||
808 | #define PHY_B_1000S_LP_HD (1<<10) /* Bit 10: Link Partner can HD */ | ||
809 | /* Bit 9..8: reserved */ | ||
810 | #define PHY_B_1000S_IEC 0xff /* Bit 7..0: Idle Error Count */ | ||
811 | |||
812 | /***** PHY_BCOM_EXT_STAT 16 bit r/o Extended Status Register *****/ | ||
813 | #define PHY_B_ES_X_FD_CAP (1<<15) /* Bit 15: 1000Base-X FD capable */ | ||
814 | #define PHY_B_ES_X_HD_CAP (1<<14) /* Bit 14: 1000Base-X HD capable */ | ||
815 | #define PHY_B_ES_T_FD_CAP (1<<13) /* Bit 13: 1000Base-T FD capable */ | ||
816 | #define PHY_B_ES_T_HD_CAP (1<<12) /* Bit 12: 1000Base-T HD capable */ | ||
817 | /* Bit 11..0: reserved */ | ||
818 | |||
819 | /***** PHY_BCOM_P_EXT_CTRL 16 bit r/w PHY Extended Control Reg *****/ | ||
820 | #define PHY_B_PEC_MAC_PHY (1<<15) /* Bit 15: 10BIT/GMI-Interface */ | ||
821 | #define PHY_B_PEC_DIS_CROSS (1<<14) /* Bit 14: Disable MDI Crossover */ | ||
822 | #define PHY_B_PEC_TX_DIS (1<<13) /* Bit 13: Tx output Disabled */ | ||
823 | #define PHY_B_PEC_INT_DIS (1<<12) /* Bit 12: Interrupts Disabled */ | ||
824 | #define PHY_B_PEC_F_INT (1<<11) /* Bit 11: Force Interrupt */ | ||
825 | #define PHY_B_PEC_BY_45 (1<<10) /* Bit 10: Bypass 4B5B-Decoder */ | ||
826 | #define PHY_B_PEC_BY_SCR (1<<9) /* Bit 9: Bypass Scrambler */ | ||
827 | #define PHY_B_PEC_BY_MLT3 (1<<8) /* Bit 8: Bypass MLT3 Encoder */ | ||
828 | #define PHY_B_PEC_BY_RXA (1<<7) /* Bit 7: Bypass Rx Alignm. */ | ||
829 | #define PHY_B_PEC_RES_SCR (1<<6) /* Bit 6: Reset Scrambler */ | ||
830 | #define PHY_B_PEC_EN_LTR (1<<5) /* Bit 5: Ena LED Traffic Mode */ | ||
831 | #define PHY_B_PEC_LED_ON (1<<4) /* Bit 4: Force LED's on */ | ||
832 | #define PHY_B_PEC_LED_OFF (1<<3) /* Bit 3: Force LED's off */ | ||
833 | #define PHY_B_PEC_EX_IPG (1<<2) /* Bit 2: Extend Tx IPG Mode */ | ||
834 | #define PHY_B_PEC_3_LED (1<<1) /* Bit 1: Three Link LED mode */ | ||
835 | #define PHY_B_PEC_HIGH_LA (1<<0) /* Bit 0: GMII FIFO Elasticy */ | ||
836 | |||
837 | /***** PHY_BCOM_P_EXT_STAT 16 bit r/o PHY Extended Status Reg *****/ | ||
838 | /* Bit 15..14: reserved */ | ||
839 | #define PHY_B_PES_CROSS_STAT (1<<13) /* Bit 13: MDI Crossover Status */ | ||
840 | #define PHY_B_PES_INT_STAT (1<<12) /* Bit 12: Interrupt Status */ | ||
841 | #define PHY_B_PES_RRS (1<<11) /* Bit 11: Remote Receiver Stat. */ | ||
842 | #define PHY_B_PES_LRS (1<<10) /* Bit 10: Local Receiver Stat. */ | ||
843 | #define PHY_B_PES_LOCKED (1<<9) /* Bit 9: Locked */ | ||
844 | #define PHY_B_PES_LS (1<<8) /* Bit 8: Link Status */ | ||
845 | #define PHY_B_PES_RF (1<<7) /* Bit 7: Remote Fault */ | ||
846 | #define PHY_B_PES_CE_ER (1<<6) /* Bit 6: Carrier Ext Error */ | ||
847 | #define PHY_B_PES_BAD_SSD (1<<5) /* Bit 5: Bad SSD */ | ||
848 | #define PHY_B_PES_BAD_ESD (1<<4) /* Bit 4: Bad ESD */ | ||
849 | #define PHY_B_PES_RX_ER (1<<3) /* Bit 3: Receive Error */ | ||
850 | #define PHY_B_PES_TX_ER (1<<2) /* Bit 2: Transmit Error */ | ||
851 | #define PHY_B_PES_LOCK_ER (1<<1) /* Bit 1: Lock Error */ | ||
852 | #define PHY_B_PES_MLT3_ER (1<<0) /* Bit 0: MLT3 code Error */ | ||
853 | |||
854 | /***** PHY_BCOM_FC_CTR 16 bit r/w False Carrier Counter *****/ | ||
855 | /* Bit 15..8: reserved */ | ||
856 | #define PHY_B_FC_CTR 0xff /* Bit 7..0: False Carrier Counter */ | ||
857 | |||
858 | /***** PHY_BCOM_RNO_CTR 16 bit r/w Receive NOT_OK Counter *****/ | ||
859 | #define PHY_B_RC_LOC_MSK 0xff00 /* Bit 15..8: Local Rx NOT_OK cnt */ | ||
860 | #define PHY_B_RC_REM_MSK 0x00ff /* Bit 7..0: Remote Rx NOT_OK cnt */ | ||
861 | |||
862 | /***** PHY_BCOM_AUX_CTRL 16 bit r/w Auxiliary Control Reg *****/ | ||
863 | #define PHY_B_AC_L_SQE (1<<15) /* Bit 15: Low Squelch */ | ||
864 | #define PHY_B_AC_LONG_PACK (1<<14) /* Bit 14: Rx Long Packets */ | ||
865 | #define PHY_B_AC_ER_CTRL (3<<12) /* Bit 13..12: Edgerate Control */ | ||
866 | /* Bit 11: reserved */ | ||
867 | #define PHY_B_AC_TX_TST (1<<10) /* Bit 10: Tx test bit, always 1 */ | ||
868 | /* Bit 9.. 8: reserved */ | ||
869 | #define PHY_B_AC_DIS_PRF (1<<7) /* Bit 7: dis part resp filter */ | ||
870 | /* Bit 6: reserved */ | ||
871 | #define PHY_B_AC_DIS_PM (1<<5) /* Bit 5: dis power management */ | ||
872 | /* Bit 4: reserved */ | ||
873 | #define PHY_B_AC_DIAG (1<<3) /* Bit 3: Diagnostic Mode */ | ||
874 | /* Bit 2.. 0: reserved */ | ||
875 | |||
876 | /***** PHY_BCOM_AUX_STAT 16 bit r/o Auxiliary Status Reg *****/ | ||
877 | #define PHY_B_AS_AN_C (1<<15) /* Bit 15: AutoNeg complete */ | ||
878 | #define PHY_B_AS_AN_CA (1<<14) /* Bit 14: AN Complete Ack */ | ||
879 | #define PHY_B_AS_ANACK_D (1<<13) /* Bit 13: AN Ack Detect */ | ||
880 | #define PHY_B_AS_ANAB_D (1<<12) /* Bit 12: AN Ability Detect */ | ||
881 | #define PHY_B_AS_NPW (1<<11) /* Bit 11: AN Next Page Wait */ | ||
882 | #define PHY_B_AS_AN_RES_MSK (7<<8) /* Bit 10..8: AN HDC */ | ||
883 | #define PHY_B_AS_PDF (1<<7) /* Bit 7: Parallel Detect. Fault */ | ||
884 | #define PHY_B_AS_RF (1<<6) /* Bit 6: Remote Fault */ | ||
885 | #define PHY_B_AS_ANP_R (1<<5) /* Bit 5: AN Page Received */ | ||
886 | #define PHY_B_AS_LP_ANAB (1<<4) /* Bit 4: LP AN Ability */ | ||
887 | #define PHY_B_AS_LP_NPAB (1<<3) /* Bit 3: LP Next Page Ability */ | ||
888 | #define PHY_B_AS_LS (1<<2) /* Bit 2: Link Status */ | ||
889 | #define PHY_B_AS_PRR (1<<1) /* Bit 1: Pause Resolution-Rx */ | ||
890 | #define PHY_B_AS_PRT (1<<0) /* Bit 0: Pause Resolution-Tx */ | ||
891 | |||
892 | #define PHY_B_AS_PAUSE_MSK (PHY_B_AS_PRR | PHY_B_AS_PRT) | ||
893 | |||
894 | /***** PHY_BCOM_INT_STAT 16 bit r/o Interrupt Status Reg *****/ | ||
895 | /***** PHY_BCOM_INT_MASK 16 bit r/w Interrupt Mask Reg *****/ | ||
896 | /* Bit 15: reserved */ | ||
897 | #define PHY_B_IS_PSE (1<<14) /* Bit 14: Pair Swap Error */ | ||
898 | #define PHY_B_IS_MDXI_SC (1<<13) /* Bit 13: MDIX Status Change */ | ||
899 | #define PHY_B_IS_HCT (1<<12) /* Bit 12: counter above 32k */ | ||
900 | #define PHY_B_IS_LCT (1<<11) /* Bit 11: counter above 128 */ | ||
901 | #define PHY_B_IS_AN_PR (1<<10) /* Bit 10: Page Received */ | ||
902 | #define PHY_B_IS_NO_HDCL (1<<9) /* Bit 9: No HCD Link */ | ||
903 | #define PHY_B_IS_NO_HDC (1<<8) /* Bit 8: No HCD */ | ||
904 | #define PHY_B_IS_NEG_USHDC (1<<7) /* Bit 7: Negotiated Unsup. HCD */ | ||
905 | #define PHY_B_IS_SCR_S_ER (1<<6) /* Bit 6: Scrambler Sync Error */ | ||
906 | #define PHY_B_IS_RRS_CHANGE (1<<5) /* Bit 5: Remote Rx Stat Change */ | ||
907 | #define PHY_B_IS_LRS_CHANGE (1<<4) /* Bit 4: Local Rx Stat Change */ | ||
908 | #define PHY_B_IS_DUP_CHANGE (1<<3) /* Bit 3: Duplex Mode Change */ | ||
909 | #define PHY_B_IS_LSP_CHANGE (1<<2) /* Bit 2: Link Speed Change */ | ||
910 | #define PHY_B_IS_LST_CHANGE (1<<1) /* Bit 1: Link Status Changed */ | ||
911 | #define PHY_B_IS_CRC_ER (1<<0) /* Bit 0: CRC Error */ | ||
912 | |||
913 | #define PHY_B_DEF_MSK (~(PHY_B_IS_AN_PR | PHY_B_IS_LST_CHANGE)) | ||
914 | |||
915 | /* Pause Bits (PHY_B_AN_ASP and PHY_B_AN_PC) encoding */ | ||
916 | #define PHY_B_P_NO_PAUSE (0<<10) /* Bit 11..10: no Pause Mode */ | ||
917 | #define PHY_B_P_SYM_MD (1<<10) /* Bit 11..10: symmetric Pause Mode */ | ||
918 | #define PHY_B_P_ASYM_MD (2<<10) /* Bit 11..10: asymmetric Pause Mode */ | ||
919 | #define PHY_B_P_BOTH_MD (3<<10) /* Bit 11..10: both Pause Mode */ | ||
920 | |||
921 | /* | ||
922 | * Resolved Duplex mode and Capabilities (Aux Status Summary Reg) | ||
923 | */ | ||
924 | #define PHY_B_RES_1000FD (7<<8) /* Bit 10..8: 1000Base-T Full Dup. */ | ||
925 | #define PHY_B_RES_1000HD (6<<8) /* Bit 10..8: 1000Base-T Half Dup. */ | ||
926 | /* others: 100/10: invalid for us */ | ||
927 | |||
928 | /* | ||
929 | * Level One-Specific | ||
930 | */ | ||
931 | /***** PHY_LONE_1000T_CTRL 16 bit r/w 1000Base-T Control Reg *****/ | ||
932 | #define PHY_L_1000C_TEST (7<<13) /* Bit 15..13: Test Modes */ | ||
933 | #define PHY_L_1000C_MSE (1<<12) /* Bit 12: Master/Slave Enable */ | ||
934 | #define PHY_L_1000C_MSC (1<<11) /* Bit 11: M/S Configuration */ | ||
935 | #define PHY_L_1000C_RD (1<<10) /* Bit 10: Repeater/DTE */ | ||
936 | #define PHY_L_1000C_AFD (1<<9) /* Bit 9: Advertise Full Duplex */ | ||
937 | #define PHY_L_1000C_AHD (1<<8) /* Bit 8: Advertise Half Duplex */ | ||
938 | /* Bit 7..0: reserved */ | ||
939 | |||
940 | /***** PHY_LONE_1000T_STAT 16 bit r/o 1000Base-T Status Reg *****/ | ||
941 | #define PHY_L_1000S_MSF (1<<15) /* Bit 15: Master/Slave Fault */ | ||
942 | #define PHY_L_1000S_MSR (1<<14) /* Bit 14: Master/Slave Result */ | ||
943 | #define PHY_L_1000S_LRS (1<<13) /* Bit 13: Local Receiver Status */ | ||
944 | #define PHY_L_1000S_RRS (1<<12) /* Bit 12: Remote Receiver Status */ | ||
945 | #define PHY_L_1000S_LP_FD (1<<11) /* Bit 11: Link Partner can FD */ | ||
946 | #define PHY_L_1000S_LP_HD (1<<10) /* Bit 10: Link Partner can HD */ | ||
947 | /* Bit 9..8: reserved */ | ||
948 | #define PHY_B_1000S_IEC 0xff /* Bit 7..0: Idle Error Count */ | ||
949 | |||
950 | /***** PHY_LONE_EXT_STAT 16 bit r/o Extended Status Register *****/ | ||
951 | #define PHY_L_ES_X_FD_CAP (1<<15) /* Bit 15: 1000Base-X FD capable */ | ||
952 | #define PHY_L_ES_X_HD_CAP (1<<14) /* Bit 14: 1000Base-X HD capable */ | ||
953 | #define PHY_L_ES_T_FD_CAP (1<<13) /* Bit 13: 1000Base-T FD capable */ | ||
954 | #define PHY_L_ES_T_HD_CAP (1<<12) /* Bit 12: 1000Base-T HD capable */ | ||
955 | /* Bit 11..0: reserved */ | ||
956 | |||
957 | /***** PHY_LONE_PORT_CFG 16 bit r/w Port Configuration Reg *****/ | ||
958 | #define PHY_L_PC_REP_MODE (1<<15) /* Bit 15: Repeater Mode */ | ||
959 | /* Bit 14: reserved */ | ||
960 | #define PHY_L_PC_TX_DIS (1<<13) /* Bit 13: Tx output Disabled */ | ||
961 | #define PHY_L_PC_BY_SCR (1<<12) /* Bit 12: Bypass Scrambler */ | ||
962 | #define PHY_L_PC_BY_45 (1<<11) /* Bit 11: Bypass 4B5B-Decoder */ | ||
963 | #define PHY_L_PC_JAB_DIS (1<<10) /* Bit 10: Jabber Disabled */ | ||
964 | #define PHY_L_PC_SQE (1<<9) /* Bit 9: Enable Heartbeat */ | ||
965 | #define PHY_L_PC_TP_LOOP (1<<8) /* Bit 8: TP Loopback */ | ||
966 | #define PHY_L_PC_SSS (1<<7) /* Bit 7: Smart Speed Selection */ | ||
967 | #define PHY_L_PC_FIFO_SIZE (1<<6) /* Bit 6: FIFO Size */ | ||
968 | #define PHY_L_PC_PRE_EN (1<<5) /* Bit 5: Preamble Enable */ | ||
969 | #define PHY_L_PC_CIM (1<<4) /* Bit 4: Carrier Integrity Mon */ | ||
970 | #define PHY_L_PC_10_SER (1<<3) /* Bit 3: Use Serial Output */ | ||
971 | #define PHY_L_PC_ANISOL (1<<2) /* Bit 2: Unisolate Port */ | ||
972 | #define PHY_L_PC_TEN_BIT (1<<1) /* Bit 1: 10bit iface mode on */ | ||
973 | #define PHY_L_PC_ALTCLOCK (1<<0) /* Bit 0: (ro) ALTCLOCK Mode on */ | ||
974 | |||
975 | /***** PHY_LONE_Q_STAT 16 bit r/o Quick Status Reg *****/ | ||
976 | #define PHY_L_QS_D_RATE (3<<14) /* Bit 15..14: Data Rate */ | ||
977 | #define PHY_L_QS_TX_STAT (1<<13) /* Bit 13: Transmitting */ | ||
978 | #define PHY_L_QS_RX_STAT (1<<12) /* Bit 12: Receiving */ | ||
979 | #define PHY_L_QS_COL_STAT (1<<11) /* Bit 11: Collision */ | ||
980 | #define PHY_L_QS_L_STAT (1<<10) /* Bit 10: Link is up */ | ||
981 | #define PHY_L_QS_DUP_MOD (1<<9) /* Bit 9: Full/Half Duplex */ | ||
982 | #define PHY_L_QS_AN (1<<8) /* Bit 8: AutoNeg is On */ | ||
983 | #define PHY_L_QS_AN_C (1<<7) /* Bit 7: AN is Complete */ | ||
984 | #define PHY_L_QS_LLE (7<<4) /* Bit 6: Line Length Estim. */ | ||
985 | #define PHY_L_QS_PAUSE (1<<3) /* Bit 3: LP advertised Pause */ | ||
986 | #define PHY_L_QS_AS_PAUSE (1<<2) /* Bit 2: LP adv. asym. Pause */ | ||
987 | #define PHY_L_QS_ISOLATE (1<<1) /* Bit 1: CIM Isolated */ | ||
988 | #define PHY_L_QS_EVENT (1<<0) /* Bit 0: Event has occurred */ | ||
989 | |||
990 | /***** PHY_LONE_INT_ENAB 16 bit r/w Interrupt Enable Reg *****/ | ||
991 | /***** PHY_LONE_INT_STAT 16 bit r/o Interrupt Status Reg *****/ | ||
992 | /* Bit 15..14: reserved */ | ||
993 | #define PHY_L_IS_AN_F (1<<13) /* Bit 13: Auto-Negotiation fault */ | ||
994 | /* Bit 12: not described */ | ||
995 | #define PHY_L_IS_CROSS (1<<11) /* Bit 11: Crossover used */ | ||
996 | #define PHY_L_IS_POL (1<<10) /* Bit 10: Polarity correct. used */ | ||
997 | #define PHY_L_IS_SS (1<<9) /* Bit 9: Smart Speed Downgrade */ | ||
998 | #define PHY_L_IS_CFULL (1<<8) /* Bit 8: Counter Full */ | ||
999 | #define PHY_L_IS_AN_C (1<<7) /* Bit 7: AutoNeg Complete */ | ||
1000 | #define PHY_L_IS_SPEED (1<<6) /* Bit 6: Speed Changed */ | ||
1001 | #define PHY_L_IS_DUP (1<<5) /* Bit 5: Duplex Changed */ | ||
1002 | #define PHY_L_IS_LS (1<<4) /* Bit 4: Link Status Changed */ | ||
1003 | #define PHY_L_IS_ISOL (1<<3) /* Bit 3: Isolate Occured */ | ||
1004 | #define PHY_L_IS_MDINT (1<<2) /* Bit 2: (ro) STAT: MII Int Pending */ | ||
1005 | #define PHY_L_IS_INTEN (1<<1) /* Bit 1: ENAB: Enable IRQs */ | ||
1006 | #define PHY_L_IS_FORCE (1<<0) /* Bit 0: ENAB: Force Interrupt */ | ||
1007 | |||
1008 | /* int. mask */ | ||
1009 | #define PHY_L_DEF_MSK (PHY_L_IS_LS | PHY_L_IS_ISOL | PHY_L_IS_INTEN) | ||
1010 | |||
1011 | /***** PHY_LONE_LED_CFG 16 bit r/w LED Configuration Reg *****/ | ||
1012 | #define PHY_L_LC_LEDC (3<<14) /* Bit 15..14: Col/Blink/On/Off */ | ||
1013 | #define PHY_L_LC_LEDR (3<<12) /* Bit 13..12: Rx/Blink/On/Off */ | ||
1014 | #define PHY_L_LC_LEDT (3<<10) /* Bit 11..10: Tx/Blink/On/Off */ | ||
1015 | #define PHY_L_LC_LEDG (3<<8) /* Bit 9..8: Giga/Blink/On/Off */ | ||
1016 | #define PHY_L_LC_LEDS (3<<6) /* Bit 7..6: 10-100/Blink/On/Off */ | ||
1017 | #define PHY_L_LC_LEDL (3<<4) /* Bit 5..4: Link/Blink/On/Off */ | ||
1018 | #define PHY_L_LC_LEDF (3<<2) /* Bit 3..2: Duplex/Blink/On/Off */ | ||
1019 | #define PHY_L_LC_PSTRECH (1<<1) /* Bit 1: Strech LED Pulses */ | ||
1020 | #define PHY_L_LC_FREQ (1<<0) /* Bit 0: 30/100 ms */ | ||
1021 | |||
1022 | /***** PHY_LONE_PORT_CTRL 16 bit r/w Port Control Reg *****/ | ||
1023 | #define PHY_L_PC_TX_TCLK (1<<15) /* Bit 15: Enable TX_TCLK */ | ||
1024 | /* Bit 14: reserved */ | ||
1025 | #define PHY_L_PC_ALT_NP (1<<13) /* Bit 14: Alternate Next Page */ | ||
1026 | #define PHY_L_PC_GMII_ALT (1<<12) /* Bit 13: Alternate GMII driver */ | ||
1027 | /* Bit 11: reserved */ | ||
1028 | #define PHY_L_PC_TEN_CRS (1<<10) /* Bit 10: Extend CRS*/ | ||
1029 | /* Bit 9..0: not described */ | ||
1030 | |||
1031 | /***** PHY_LONE_CIM 16 bit r/o CIM Reg *****/ | ||
1032 | #define PHY_L_CIM_ISOL (255<<8)/* Bit 15..8: Isolate Count */ | ||
1033 | #define PHY_L_CIM_FALSE_CAR (255<<0)/* Bit 7..0: False Carrier Count */ | ||
1034 | |||
1035 | |||
1036 | /* | ||
1037 | * Pause Bits (PHY_L_AN_ASP and PHY_L_AN_PC) encoding | ||
1038 | */ | ||
1039 | #define PHY_L_P_NO_PAUSE (0<<10) /* Bit 11..10: no Pause Mode */ | ||
1040 | #define PHY_L_P_SYM_MD (1<<10) /* Bit 11..10: symmetric Pause Mode */ | ||
1041 | #define PHY_L_P_ASYM_MD (2<<10) /* Bit 11..10: asymmetric Pause Mode */ | ||
1042 | #define PHY_L_P_BOTH_MD (3<<10) /* Bit 11..10: both Pause Mode */ | ||
1043 | |||
1044 | |||
1045 | /* | ||
1046 | * National-Specific | ||
1047 | */ | ||
1048 | /***** PHY_NAT_1000T_CTRL 16 bit r/w 1000Base-T Control Reg *****/ | ||
1049 | #define PHY_N_1000C_TEST (7<<13) /* Bit 15..13: Test Modes */ | ||
1050 | #define PHY_N_1000C_MSE (1<<12) /* Bit 12: Master/Slave Enable */ | ||
1051 | #define PHY_N_1000C_MSC (1<<11) /* Bit 11: M/S Configuration */ | ||
1052 | #define PHY_N_1000C_RD (1<<10) /* Bit 10: Repeater/DTE */ | ||
1053 | #define PHY_N_1000C_AFD (1<<9) /* Bit 9: Advertise Full Duplex */ | ||
1054 | #define PHY_N_1000C_AHD (1<<8) /* Bit 8: Advertise Half Duplex */ | ||
1055 | #define PHY_N_1000C_APC (1<<7) /* Bit 7: Asymmetric Pause Cap. */ | ||
1056 | /* Bit 6..0: reserved */ | ||
1057 | |||
1058 | /***** PHY_NAT_1000T_STAT 16 bit r/o 1000Base-T Status Reg *****/ | ||
1059 | #define PHY_N_1000S_MSF (1<<15) /* Bit 15: Master/Slave Fault */ | ||
1060 | #define PHY_N_1000S_MSR (1<<14) /* Bit 14: Master/Slave Result */ | ||
1061 | #define PHY_N_1000S_LRS (1<<13) /* Bit 13: Local Receiver Status */ | ||
1062 | #define PHY_N_1000S_RRS (1<<12) /* Bit 12: Remote Receiver Status*/ | ||
1063 | #define PHY_N_1000S_LP_FD (1<<11) /* Bit 11: Link Partner can FD */ | ||
1064 | #define PHY_N_1000S_LP_HD (1<<10) /* Bit 10: Link Partner can HD */ | ||
1065 | #define PHY_N_1000C_LP_APC (1<<9) /* Bit 9: LP Asym. Pause Cap. */ | ||
1066 | /* Bit 8: reserved */ | ||
1067 | #define PHY_N_1000S_IEC 0xff /* Bit 7..0: Idle Error Count */ | ||
1068 | |||
1069 | /***** PHY_NAT_EXT_STAT 16 bit r/o Extended Status Register *****/ | ||
1070 | #define PHY_N_ES_X_FD_CAP (1<<15) /* Bit 15: 1000Base-X FD capable */ | ||
1071 | #define PHY_N_ES_X_HD_CAP (1<<14) /* Bit 14: 1000Base-X HD capable */ | ||
1072 | #define PHY_N_ES_T_FD_CAP (1<<13) /* Bit 13: 1000Base-T FD capable */ | ||
1073 | #define PHY_N_ES_T_HD_CAP (1<<12) /* Bit 12: 1000Base-T HD capable */ | ||
1074 | /* Bit 11..0: reserved */ | ||
1075 | |||
1076 | /* todo: those are still missing */ | ||
1077 | /***** PHY_NAT_EXT_CTRL1 16 bit r/o Extended Control Reg1 *****/ | ||
1078 | /***** PHY_NAT_Q_STAT1 16 bit r/o Quick Status Reg1 *****/ | ||
1079 | /***** PHY_NAT_10B_OP 16 bit r/o 10Base-T Operations Reg *****/ | ||
1080 | /***** PHY_NAT_EXT_CTRL2 16 bit r/o Extended Control Reg1 *****/ | ||
1081 | /***** PHY_NAT_Q_STAT2 16 bit r/o Quick Status Reg2 *****/ | ||
1082 | /***** PHY_NAT_PHY_ADDR 16 bit r/o PHY Address Register *****/ | ||
1083 | |||
1084 | /* | ||
1085 | * Marvell-Specific | ||
1086 | */ | ||
1087 | /***** PHY_MARV_AUNE_ADV 16 bit r/w Auto-Negotiation Advertisement *****/ | ||
1088 | /***** PHY_MARV_AUNE_LP 16 bit r/w Link Part Ability Reg *****/ | ||
1089 | #define PHY_M_AN_NXT_PG BIT_15 /* Request Next Page */ | ||
1090 | #define PHY_M_AN_ACK BIT_14 /* (ro) Acknowledge Received */ | ||
1091 | #define PHY_M_AN_RF BIT_13 /* Remote Fault */ | ||
1092 | /* Bit 12: reserved */ | ||
1093 | #define PHY_M_AN_ASP BIT_11 /* Asymmetric Pause */ | ||
1094 | #define PHY_M_AN_PC BIT_10 /* MAC Pause implemented */ | ||
1095 | #define PHY_M_AN_100_FD BIT_8 /* Advertise 100Base-TX Full Duplex */ | ||
1096 | #define PHY_M_AN_100_HD BIT_7 /* Advertise 100Base-TX Half Duplex */ | ||
1097 | #define PHY_M_AN_10_FD BIT_6 /* Advertise 10Base-TX Full Duplex */ | ||
1098 | #define PHY_M_AN_10_HD BIT_5 /* Advertise 10Base-TX Half Duplex */ | ||
1099 | |||
1100 | /* special defines for FIBER (88E1011S only) */ | ||
1101 | #define PHY_M_AN_ASP_X BIT_8 /* Asymmetric Pause */ | ||
1102 | #define PHY_M_AN_PC_X BIT_7 /* MAC Pause implemented */ | ||
1103 | #define PHY_M_AN_1000X_AHD BIT_6 /* Advertise 10000Base-X Half Duplex */ | ||
1104 | #define PHY_M_AN_1000X_AFD BIT_5 /* Advertise 10000Base-X Full Duplex */ | ||
1105 | |||
1106 | /* Pause Bits (PHY_M_AN_ASP_X and PHY_M_AN_PC_X) encoding */ | ||
1107 | #define PHY_M_P_NO_PAUSE_X (0<<7) /* Bit 8.. 7: no Pause Mode */ | ||
1108 | #define PHY_M_P_SYM_MD_X (1<<7) /* Bit 8.. 7: symmetric Pause Mode */ | ||
1109 | #define PHY_M_P_ASYM_MD_X (2<<7) /* Bit 8.. 7: asymmetric Pause Mode */ | ||
1110 | #define PHY_M_P_BOTH_MD_X (3<<7) /* Bit 8.. 7: both Pause Mode */ | ||
1111 | |||
1112 | /***** PHY_MARV_1000T_CTRL 16 bit r/w 1000Base-T Control Reg *****/ | ||
1113 | #define PHY_M_1000C_TEST (7<<13) /* Bit 15..13: Test Modes */ | ||
1114 | #define PHY_M_1000C_MSE (1<<12) /* Bit 12: Manual Master/Slave Enable */ | ||
1115 | #define PHY_M_1000C_MSC (1<<11) /* Bit 11: M/S Configuration (1=Master) */ | ||
1116 | #define PHY_M_1000C_MPD (1<<10) /* Bit 10: Multi-Port Device */ | ||
1117 | #define PHY_M_1000C_AFD (1<<9) /* Bit 9: Advertise Full Duplex */ | ||
1118 | #define PHY_M_1000C_AHD (1<<8) /* Bit 8: Advertise Half Duplex */ | ||
1119 | /* Bit 7..0: reserved */ | ||
1120 | |||
1121 | /***** PHY_MARV_PHY_CTRL 16 bit r/w PHY Specific Ctrl Reg *****/ | ||
1122 | #define PHY_M_PC_TX_FFD_MSK (3<<14) /* Bit 15..14: Tx FIFO Depth Mask */ | ||
1123 | #define PHY_M_PC_RX_FFD_MSK (3<<12) /* Bit 13..12: Rx FIFO Depth Mask */ | ||
1124 | #define PHY_M_PC_ASS_CRS_TX (1<<11) /* Bit 11: Assert CRS on Transmit */ | ||
1125 | #define PHY_M_PC_FL_GOOD (1<<10) /* Bit 10: Force Link Good */ | ||
1126 | #define PHY_M_PC_EN_DET_MSK (3<<8) /* Bit 9.. 8: Energy Detect Mask */ | ||
1127 | #define PHY_M_PC_ENA_EXT_D (1<<7) /* Bit 7: Enable Ext. Distance (10BT) */ | ||
1128 | #define PHY_M_PC_MDIX_MSK (3<<5) /* Bit 6.. 5: MDI/MDIX Config. Mask */ | ||
1129 | #define PHY_M_PC_DIS_125CLK (1<<4) /* Bit 4: Disable 125 CLK */ | ||
1130 | #define PHY_M_PC_MAC_POW_UP (1<<3) /* Bit 3: MAC Power up */ | ||
1131 | #define PHY_M_PC_SQE_T_ENA (1<<2) /* Bit 2: SQE Test Enabled */ | ||
1132 | #define PHY_M_PC_POL_R_DIS (1<<1) /* Bit 1: Polarity Reversal Disabled */ | ||
1133 | #define PHY_M_PC_DIS_JABBER (1<<0) /* Bit 0: Disable Jabber */ | ||
1134 | |||
1135 | #define PHY_M_PC_EN_DET SHIFT8(2) /* Energy Detect (Mode 1) */ | ||
1136 | #define PHY_M_PC_EN_DET_PLUS SHIFT8(3) /* Energy Detect Plus (Mode 2) */ | ||
1137 | |||
1138 | #define PHY_M_PC_MDI_XMODE(x) SHIFT5(x) | ||
1139 | #define PHY_M_PC_MAN_MDI 0 /* 00 = Manual MDI configuration */ | ||
1140 | #define PHY_M_PC_MAN_MDIX 1 /* 01 = Manual MDIX configuration */ | ||
1141 | #define PHY_M_PC_ENA_AUTO 3 /* 11 = Enable Automatic Crossover */ | ||
1142 | |||
1143 | /***** PHY_MARV_PHY_STAT 16 bit r/o PHY Specific Status Reg *****/ | ||
1144 | #define PHY_M_PS_SPEED_MSK (3<<14) /* Bit 15..14: Speed Mask */ | ||
1145 | #define PHY_M_PS_SPEED_1000 (1<<15) /* 10 = 1000 Mbps */ | ||
1146 | #define PHY_M_PS_SPEED_100 (1<<14) /* 01 = 100 Mbps */ | ||
1147 | #define PHY_M_PS_SPEED_10 0 /* 00 = 10 Mbps */ | ||
1148 | #define PHY_M_PS_FULL_DUP (1<<13) /* Bit 13: Full Duplex */ | ||
1149 | #define PHY_M_PS_PAGE_REC (1<<12) /* Bit 12: Page Received */ | ||
1150 | #define PHY_M_PS_SPDUP_RES (1<<11) /* Bit 11: Speed & Duplex Resolved */ | ||
1151 | #define PHY_M_PS_LINK_UP (1<<10) /* Bit 10: Link Up */ | ||
1152 | #define PHY_M_PS_CABLE_MSK (3<<7) /* Bit 9.. 7: Cable Length Mask */ | ||
1153 | #define PHY_M_PS_MDI_X_STAT (1<<6) /* Bit 6: MDI Crossover Stat (1=MDIX) */ | ||
1154 | #define PHY_M_PS_DOWNS_STAT (1<<5) /* Bit 5: Downshift Status (1=downsh.) */ | ||
1155 | #define PHY_M_PS_ENDET_STAT (1<<4) /* Bit 4: Energy Detect Status (1=act) */ | ||
1156 | #define PHY_M_PS_TX_P_EN (1<<3) /* Bit 3: Tx Pause Enabled */ | ||
1157 | #define PHY_M_PS_RX_P_EN (1<<2) /* Bit 2: Rx Pause Enabled */ | ||
1158 | #define PHY_M_PS_POL_REV (1<<1) /* Bit 1: Polarity Reversed */ | ||
1159 | #define PHY_M_PC_JABBER (1<<0) /* Bit 0: Jabber */ | ||
1160 | |||
1161 | #define PHY_M_PS_PAUSE_MSK (PHY_M_PS_TX_P_EN | PHY_M_PS_RX_P_EN) | ||
1162 | |||
1163 | /***** PHY_MARV_INT_MASK 16 bit r/w Interrupt Mask Reg *****/ | ||
1164 | /***** PHY_MARV_INT_STAT 16 bit r/o Interrupt Status Reg *****/ | ||
1165 | #define PHY_M_IS_AN_ERROR (1<<15) /* Bit 15: Auto-Negotiation Error */ | ||
1166 | #define PHY_M_IS_LSP_CHANGE (1<<14) /* Bit 14: Link Speed Changed */ | ||
1167 | #define PHY_M_IS_DUP_CHANGE (1<<13) /* Bit 13: Duplex Mode Changed */ | ||
1168 | #define PHY_M_IS_AN_PR (1<<12) /* Bit 12: Page Received */ | ||
1169 | #define PHY_M_IS_AN_COMPL (1<<11) /* Bit 11: Auto-Negotiation Completed */ | ||
1170 | #define PHY_M_IS_LST_CHANGE (1<<10) /* Bit 10: Link Status Changed */ | ||
1171 | #define PHY_M_IS_SYMB_ERROR (1<<9) /* Bit 9: Symbol Error */ | ||
1172 | #define PHY_M_IS_FALSE_CARR (1<<8) /* Bit 8: False Carrier */ | ||
1173 | #define PHY_M_IS_FIFO_ERROR (1<<7) /* Bit 7: FIFO Overflow/Underrun Error */ | ||
1174 | #define PHY_M_IS_MDI_CHANGE (1<<6) /* Bit 6: MDI Crossover Changed */ | ||
1175 | #define PHY_M_IS_DOWNSH_DET (1<<5) /* Bit 5: Downshift Detected */ | ||
1176 | #define PHY_M_IS_END_CHANGE (1<<4) /* Bit 4: Energy Detect Changed */ | ||
1177 | /* Bit 3..2: reserved */ | ||
1178 | #define PHY_M_IS_POL_CHANGE (1<<1) /* Bit 1: Polarity Changed */ | ||
1179 | #define PHY_M_IS_JABBER (1<<0) /* Bit 0: Jabber */ | ||
1180 | |||
1181 | #define PHY_M_DEF_MSK (PHY_M_IS_AN_ERROR | PHY_M_IS_AN_PR | \ | ||
1182 | PHY_M_IS_LST_CHANGE | PHY_M_IS_FIFO_ERROR) | ||
1183 | |||
1184 | /***** PHY_MARV_EXT_CTRL 16 bit r/w Ext. PHY Specific Ctrl *****/ | ||
1185 | #define PHY_M_EC_M_DSC_MSK (3<<10) /* Bit 11..10: Master downshift counter */ | ||
1186 | #define PHY_M_EC_S_DSC_MSK (3<<8) /* Bit 9.. 8: Slave downshift counter */ | ||
1187 | #define PHY_M_EC_MAC_S_MSK (7<<4) /* Bit 6.. 4: Def. MAC interface speed */ | ||
1188 | #define PHY_M_EC_FIB_AN_ENA (1<<3) /* Bit 3: Fiber Auto-Neg. Enable */ | ||
1189 | |||
1190 | #define PHY_M_EC_M_DSC(x) SHIFT10(x) /* 00=1x; 01=2x; 10=3x; 11=4x */ | ||
1191 | #define PHY_M_EC_S_DSC(x) SHIFT8(x) /* 00=dis; 01=1x; 10=2x; 11=3x */ | ||
1192 | #define PHY_M_EC_MAC_S(x) SHIFT4(x) /* 01X=0; 110=2.5; 111=25 (MHz) */ | ||
1193 | |||
1194 | #define MAC_TX_CLK_0_MHZ 2 | ||
1195 | #define MAC_TX_CLK_2_5_MHZ 6 | ||
1196 | #define MAC_TX_CLK_25_MHZ 7 | ||
1197 | |||
1198 | /***** PHY_MARV_LED_CTRL 16 bit r/w LED Control Reg *****/ | ||
1199 | #define PHY_M_LEDC_DIS_LED (1<<15) /* Bit 15: Disable LED */ | ||
1200 | #define PHY_M_LEDC_PULS_MSK (7<<12) /* Bit 14..12: Pulse Stretch Mask */ | ||
1201 | #define PHY_M_LEDC_F_INT (1<<11) /* Bit 11: Force Interrupt */ | ||
1202 | #define PHY_M_LEDC_BL_R_MSK (7<<8) /* Bit 10.. 8: Blink Rate Mask */ | ||
1203 | /* Bit 7.. 5: reserved */ | ||
1204 | #define PHY_M_LEDC_LINK_MSK (3<<3) /* Bit 4.. 3: Link Control Mask */ | ||
1205 | #define PHY_M_LEDC_DP_CTRL (1<<2) /* Bit 2: Duplex Control */ | ||
1206 | #define PHY_M_LEDC_RX_CTRL (1<<1) /* Bit 1: Rx activity / Link */ | ||
1207 | #define PHY_M_LEDC_TX_CTRL (1<<0) /* Bit 0: Tx activity / Link */ | ||
1208 | |||
1209 | #define PHY_M_LED_PULS_DUR(x) SHIFT12(x) /* Pulse Stretch Duration */ | ||
1210 | |||
1211 | #define PULS_NO_STR 0 /* no pulse stretching */ | ||
1212 | #define PULS_21MS 1 /* 21 ms to 42 ms */ | ||
1213 | #define PULS_42MS 2 /* 42 ms to 84 ms */ | ||
1214 | #define PULS_84MS 3 /* 84 ms to 170 ms */ | ||
1215 | #define PULS_170MS 4 /* 170 ms to 340 ms */ | ||
1216 | #define PULS_340MS 5 /* 340 ms to 670 ms */ | ||
1217 | #define PULS_670MS 6 /* 670 ms to 1.3 s */ | ||
1218 | #define PULS_1300MS 7 /* 1.3 s to 2.7 s */ | ||
1219 | |||
1220 | #define PHY_M_LED_BLINK_RT(x) SHIFT8(x) /* Blink Rate */ | ||
1221 | |||
1222 | #define BLINK_42MS 0 /* 42 ms */ | ||
1223 | #define BLINK_84MS 1 /* 84 ms */ | ||
1224 | #define BLINK_170MS 2 /* 170 ms */ | ||
1225 | #define BLINK_340MS 3 /* 340 ms */ | ||
1226 | #define BLINK_670MS 4 /* 670 ms */ | ||
1227 | /* values 5 - 7: reserved */ | ||
1228 | |||
1229 | /***** PHY_MARV_LED_OVER 16 bit r/w Manual LED Override Reg *****/ | ||
1230 | #define PHY_M_LED_MO_DUP(x) SHIFT10(x) /* Bit 11..10: Duplex */ | ||
1231 | #define PHY_M_LED_MO_10(x) SHIFT8(x) /* Bit 9.. 8: Link 10 */ | ||
1232 | #define PHY_M_LED_MO_100(x) SHIFT6(x) /* Bit 7.. 6: Link 100 */ | ||
1233 | #define PHY_M_LED_MO_1000(x) SHIFT4(x) /* Bit 5.. 4: Link 1000 */ | ||
1234 | #define PHY_M_LED_MO_RX(x) SHIFT2(x) /* Bit 3.. 2: Rx */ | ||
1235 | #define PHY_M_LED_MO_TX(x) SHIFT0(x) /* Bit 1.. 0: Tx */ | ||
1236 | |||
1237 | #define MO_LED_NORM 0 | ||
1238 | #define MO_LED_BLINK 1 | ||
1239 | #define MO_LED_OFF 2 | ||
1240 | #define MO_LED_ON 3 | ||
1241 | |||
1242 | /***** PHY_MARV_EXT_CTRL_2 16 bit r/w Ext. PHY Specific Ctrl 2 *****/ | ||
1243 | /* Bit 15.. 7: reserved */ | ||
1244 | #define PHY_M_EC2_FI_IMPED (1<<6) /* Bit 6: Fiber Input Impedance */ | ||
1245 | #define PHY_M_EC2_FO_IMPED (1<<5) /* Bit 5: Fiber Output Impedance */ | ||
1246 | #define PHY_M_EC2_FO_M_CLK (1<<4) /* Bit 4: Fiber Mode Clock Enable */ | ||
1247 | #define PHY_M_EC2_FO_BOOST (1<<3) /* Bit 3: Fiber Output Boost */ | ||
1248 | #define PHY_M_EC2_FO_AM_MSK 7 /* Bit 2.. 0: Fiber Output Amplitude */ | ||
1249 | |||
1250 | /***** PHY_MARV_EXT_P_STAT 16 bit r/w Ext. PHY Specific Status *****/ | ||
1251 | #define PHY_M_FC_AUTO_SEL (1<<15) /* Bit 15: Fiber/Copper Auto Sel. dis. */ | ||
1252 | #define PHY_M_FC_AN_REG_ACC (1<<14) /* Bit 14: Fiber/Copper Autoneg. reg acc */ | ||
1253 | #define PHY_M_FC_RESULUTION (1<<13) /* Bit 13: Fiber/Copper Resulution */ | ||
1254 | #define PHY_M_SER_IF_AN_BP (1<<12) /* Bit 12: Ser IF autoneg. bypass enable */ | ||
1255 | #define PHY_M_SER_IF_BP_ST (1<<11) /* Bit 11: Ser IF autoneg. bypass status */ | ||
1256 | #define PHY_M_IRQ_POLARITY (1<<10) /* Bit 10: IRQ polarity */ | ||
1257 | /* Bit 9..4: reserved */ | ||
1258 | #define PHY_M_UNDOC1 (1<< 7) /* undocumented bit !! */ | ||
1259 | #define PHY_M_MODE_MASK (0xf<<0)/* Bit 3..0: copy of HWCFG MODE[3:0] */ | ||
1260 | |||
1261 | |||
1262 | /***** PHY_MARV_CABLE_DIAG 16 bit r/o Cable Diagnostic Reg *****/ | ||
1263 | #define PHY_M_CABD_ENA_TEST (1<<15) /* Bit 15: Enable Test */ | ||
1264 | #define PHY_M_CABD_STAT_MSK (3<<13) /* Bit 14..13: Status */ | ||
1265 | /* Bit 12.. 8: reserved */ | ||
1266 | #define PHY_M_CABD_DIST_MSK 0xff /* Bit 7.. 0: Distance */ | ||
1267 | |||
1268 | /* values for Cable Diagnostic Status (11=fail; 00=OK; 10=open; 01=short) */ | ||
1269 | #define CABD_STAT_NORMAL 0 | ||
1270 | #define CABD_STAT_SHORT 1 | ||
1271 | #define CABD_STAT_OPEN 2 | ||
1272 | #define CABD_STAT_FAIL 3 | ||
1273 | |||
1274 | |||
1275 | /* | ||
1276 | * GMAC registers | ||
1277 | * | ||
1278 | * The GMAC registers are 16 or 32 bits wide. | ||
1279 | * The GMACs host processor interface is 16 bits wide, | ||
1280 | * therefore ALL registers will be addressed with 16 bit accesses. | ||
1281 | * | ||
1282 | * The following macros are provided to access the GMAC registers | ||
1283 | * GM_IN16(), GM_OUT16, GM_IN32(), GM_OUT32(), GM_INADR(), GM_OUTADR(), | ||
1284 | * GM_INHASH(), and GM_OUTHASH(). | ||
1285 | * The macros are defined in SkGeHw.h. | ||
1286 | * | ||
1287 | * Note: NA reg = Network Address e.g DA, SA etc. | ||
1288 | * | ||
1289 | */ | ||
1290 | |||
1291 | /* Port Registers */ | ||
1292 | #define GM_GP_STAT 0x0000 /* 16 bit r/o General Purpose Status */ | ||
1293 | #define GM_GP_CTRL 0x0004 /* 16 bit r/w General Purpose Control */ | ||
1294 | #define GM_TX_CTRL 0x0008 /* 16 bit r/w Transmit Control Reg. */ | ||
1295 | #define GM_RX_CTRL 0x000c /* 16 bit r/w Receive Control Reg. */ | ||
1296 | #define GM_TX_FLOW_CTRL 0x0010 /* 16 bit r/w Transmit Flow-Control */ | ||
1297 | #define GM_TX_PARAM 0x0014 /* 16 bit r/w Transmit Parameter Reg. */ | ||
1298 | #define GM_SERIAL_MODE 0x0018 /* 16 bit r/w Serial Mode Register */ | ||
1299 | |||
1300 | /* Source Address Registers */ | ||
1301 | #define GM_SRC_ADDR_1L 0x001c /* 16 bit r/w Source Address 1 (low) */ | ||
1302 | #define GM_SRC_ADDR_1M 0x0020 /* 16 bit r/w Source Address 1 (middle) */ | ||
1303 | #define GM_SRC_ADDR_1H 0x0024 /* 16 bit r/w Source Address 1 (high) */ | ||
1304 | #define GM_SRC_ADDR_2L 0x0028 /* 16 bit r/w Source Address 2 (low) */ | ||
1305 | #define GM_SRC_ADDR_2M 0x002c /* 16 bit r/w Source Address 2 (middle) */ | ||
1306 | #define GM_SRC_ADDR_2H 0x0030 /* 16 bit r/w Source Address 2 (high) */ | ||
1307 | |||
1308 | /* Multicast Address Hash Registers */ | ||
1309 | #define GM_MC_ADDR_H1 0x0034 /* 16 bit r/w Multicast Address Hash 1 */ | ||
1310 | #define GM_MC_ADDR_H2 0x0038 /* 16 bit r/w Multicast Address Hash 2 */ | ||
1311 | #define GM_MC_ADDR_H3 0x003c /* 16 bit r/w Multicast Address Hash 3 */ | ||
1312 | #define GM_MC_ADDR_H4 0x0040 /* 16 bit r/w Multicast Address Hash 4 */ | ||
1313 | |||
1314 | /* Interrupt Source Registers */ | ||
1315 | #define GM_TX_IRQ_SRC 0x0044 /* 16 bit r/o Tx Overflow IRQ Source */ | ||
1316 | #define GM_RX_IRQ_SRC 0x0048 /* 16 bit r/o Rx Overflow IRQ Source */ | ||
1317 | #define GM_TR_IRQ_SRC 0x004c /* 16 bit r/o Tx/Rx Over. IRQ Source */ | ||
1318 | |||
1319 | /* Interrupt Mask Registers */ | ||
1320 | #define GM_TX_IRQ_MSK 0x0050 /* 16 bit r/w Tx Overflow IRQ Mask */ | ||
1321 | #define GM_RX_IRQ_MSK 0x0054 /* 16 bit r/w Rx Overflow IRQ Mask */ | ||
1322 | #define GM_TR_IRQ_MSK 0x0058 /* 16 bit r/w Tx/Rx Over. IRQ Mask */ | ||
1323 | |||
1324 | /* Serial Management Interface (SMI) Registers */ | ||
1325 | #define GM_SMI_CTRL 0x0080 /* 16 bit r/w SMI Control Register */ | ||
1326 | #define GM_SMI_DATA 0x0084 /* 16 bit r/w SMI Data Register */ | ||
1327 | #define GM_PHY_ADDR 0x0088 /* 16 bit r/w GPHY Address Register */ | ||
1328 | |||
1329 | /* MIB Counters */ | ||
1330 | #define GM_MIB_CNT_BASE 0x0100 /* Base Address of MIB Counters */ | ||
1331 | #define GM_MIB_CNT_SIZE 44 /* Number of MIB Counters */ | ||
1332 | |||
1333 | /* | ||
1334 | * MIB Counters base address definitions (low word) - | ||
1335 | * use offset 4 for access to high word (32 bit r/o) | ||
1336 | */ | ||
1337 | #define GM_RXF_UC_OK \ | ||
1338 | (GM_MIB_CNT_BASE + 0) /* Unicast Frames Received OK */ | ||
1339 | #define GM_RXF_BC_OK \ | ||
1340 | (GM_MIB_CNT_BASE + 8) /* Broadcast Frames Received OK */ | ||
1341 | #define GM_RXF_MPAUSE \ | ||
1342 | (GM_MIB_CNT_BASE + 16) /* Pause MAC Ctrl Frames Received */ | ||
1343 | #define GM_RXF_MC_OK \ | ||
1344 | (GM_MIB_CNT_BASE + 24) /* Multicast Frames Received OK */ | ||
1345 | #define GM_RXF_FCS_ERR \ | ||
1346 | (GM_MIB_CNT_BASE + 32) /* Rx Frame Check Seq. Error */ | ||
1347 | /* GM_MIB_CNT_BASE + 40: reserved */ | ||
1348 | #define GM_RXO_OK_LO \ | ||
1349 | (GM_MIB_CNT_BASE + 48) /* Octets Received OK Low */ | ||
1350 | #define GM_RXO_OK_HI \ | ||
1351 | (GM_MIB_CNT_BASE + 56) /* Octets Received OK High */ | ||
1352 | #define GM_RXO_ERR_LO \ | ||
1353 | (GM_MIB_CNT_BASE + 64) /* Octets Received Invalid Low */ | ||
1354 | #define GM_RXO_ERR_HI \ | ||
1355 | (GM_MIB_CNT_BASE + 72) /* Octets Received Invalid High */ | ||
1356 | #define GM_RXF_SHT \ | ||
1357 | (GM_MIB_CNT_BASE + 80) /* Frames <64 Byte Received OK */ | ||
1358 | #define GM_RXE_FRAG \ | ||
1359 | (GM_MIB_CNT_BASE + 88) /* Frames <64 Byte Received with FCS Err */ | ||
1360 | #define GM_RXF_64B \ | ||
1361 | (GM_MIB_CNT_BASE + 96) /* 64 Byte Rx Frame */ | ||
1362 | #define GM_RXF_127B \ | ||
1363 | (GM_MIB_CNT_BASE + 104) /* 65-127 Byte Rx Frame */ | ||
1364 | #define GM_RXF_255B \ | ||
1365 | (GM_MIB_CNT_BASE + 112) /* 128-255 Byte Rx Frame */ | ||
1366 | #define GM_RXF_511B \ | ||
1367 | (GM_MIB_CNT_BASE + 120) /* 256-511 Byte Rx Frame */ | ||
1368 | #define GM_RXF_1023B \ | ||
1369 | (GM_MIB_CNT_BASE + 128) /* 512-1023 Byte Rx Frame */ | ||
1370 | #define GM_RXF_1518B \ | ||
1371 | (GM_MIB_CNT_BASE + 136) /* 1024-1518 Byte Rx Frame */ | ||
1372 | #define GM_RXF_MAX_SZ \ | ||
1373 | (GM_MIB_CNT_BASE + 144) /* 1519-MaxSize Byte Rx Frame */ | ||
1374 | #define GM_RXF_LNG_ERR \ | ||
1375 | (GM_MIB_CNT_BASE + 152) /* Rx Frame too Long Error */ | ||
1376 | #define GM_RXF_JAB_PKT \ | ||
1377 | (GM_MIB_CNT_BASE + 160) /* Rx Jabber Packet Frame */ | ||
1378 | /* GM_MIB_CNT_BASE + 168: reserved */ | ||
1379 | #define GM_RXE_FIFO_OV \ | ||
1380 | (GM_MIB_CNT_BASE + 176) /* Rx FIFO overflow Event */ | ||
1381 | /* GM_MIB_CNT_BASE + 184: reserved */ | ||
1382 | #define GM_TXF_UC_OK \ | ||
1383 | (GM_MIB_CNT_BASE + 192) /* Unicast Frames Xmitted OK */ | ||
1384 | #define GM_TXF_BC_OK \ | ||
1385 | (GM_MIB_CNT_BASE + 200) /* Broadcast Frames Xmitted OK */ | ||
1386 | #define GM_TXF_MPAUSE \ | ||
1387 | (GM_MIB_CNT_BASE + 208) /* Pause MAC Ctrl Frames Xmitted */ | ||
1388 | #define GM_TXF_MC_OK \ | ||
1389 | (GM_MIB_CNT_BASE + 216) /* Multicast Frames Xmitted OK */ | ||
1390 | #define GM_TXO_OK_LO \ | ||
1391 | (GM_MIB_CNT_BASE + 224) /* Octets Transmitted OK Low */ | ||
1392 | #define GM_TXO_OK_HI \ | ||
1393 | (GM_MIB_CNT_BASE + 232) /* Octets Transmitted OK High */ | ||
1394 | #define GM_TXF_64B \ | ||
1395 | (GM_MIB_CNT_BASE + 240) /* 64 Byte Tx Frame */ | ||
1396 | #define GM_TXF_127B \ | ||
1397 | (GM_MIB_CNT_BASE + 248) /* 65-127 Byte Tx Frame */ | ||
1398 | #define GM_TXF_255B \ | ||
1399 | (GM_MIB_CNT_BASE + 256) /* 128-255 Byte Tx Frame */ | ||
1400 | #define GM_TXF_511B \ | ||
1401 | (GM_MIB_CNT_BASE + 264) /* 256-511 Byte Tx Frame */ | ||
1402 | #define GM_TXF_1023B \ | ||
1403 | (GM_MIB_CNT_BASE + 272) /* 512-1023 Byte Tx Frame */ | ||
1404 | #define GM_TXF_1518B \ | ||
1405 | (GM_MIB_CNT_BASE + 280) /* 1024-1518 Byte Tx Frame */ | ||
1406 | #define GM_TXF_MAX_SZ \ | ||
1407 | (GM_MIB_CNT_BASE + 288) /* 1519-MaxSize Byte Tx Frame */ | ||
1408 | /* GM_MIB_CNT_BASE + 296: reserved */ | ||
1409 | #define GM_TXF_COL \ | ||
1410 | (GM_MIB_CNT_BASE + 304) /* Tx Collision */ | ||
1411 | #define GM_TXF_LAT_COL \ | ||
1412 | (GM_MIB_CNT_BASE + 312) /* Tx Late Collision */ | ||
1413 | #define GM_TXF_ABO_COL \ | ||
1414 | (GM_MIB_CNT_BASE + 320) /* Tx aborted due to Exces. Col. */ | ||
1415 | #define GM_TXF_MUL_COL \ | ||
1416 | (GM_MIB_CNT_BASE + 328) /* Tx Multiple Collision */ | ||
1417 | #define GM_TXF_SNG_COL \ | ||
1418 | (GM_MIB_CNT_BASE + 336) /* Tx Single Collision */ | ||
1419 | #define GM_TXE_FIFO_UR \ | ||
1420 | (GM_MIB_CNT_BASE + 344) /* Tx FIFO Underrun Event */ | ||
1421 | |||
1422 | /*----------------------------------------------------------------------------*/ | ||
1423 | /* | ||
1424 | * GMAC Bit Definitions | ||
1425 | * | ||
1426 | * If the bit access behaviour differs from the register access behaviour | ||
1427 | * (r/w, r/o) this is documented after the bit number. | ||
1428 | * The following bit access behaviours are used: | ||
1429 | * (sc) self clearing | ||
1430 | * (r/o) read only | ||
1431 | */ | ||
1432 | |||
1433 | /* GM_GP_STAT 16 bit r/o General Purpose Status Register */ | ||
1434 | #define GM_GPSR_SPEED (1<<15) /* Bit 15: Port Speed (1 = 100 Mbps) */ | ||
1435 | #define GM_GPSR_DUPLEX (1<<14) /* Bit 14: Duplex Mode (1 = Full) */ | ||
1436 | #define GM_GPSR_FC_TX_DIS (1<<13) /* Bit 13: Tx Flow-Control Mode Disabled */ | ||
1437 | #define GM_GPSR_LINK_UP (1<<12) /* Bit 12: Link Up Status */ | ||
1438 | #define GM_GPSR_PAUSE (1<<11) /* Bit 11: Pause State */ | ||
1439 | #define GM_GPSR_TX_ACTIVE (1<<10) /* Bit 10: Tx in Progress */ | ||
1440 | #define GM_GPSR_EXC_COL (1<<9) /* Bit 9: Excessive Collisions Occured */ | ||
1441 | #define GM_GPSR_LAT_COL (1<<8) /* Bit 8: Late Collisions Occured */ | ||
1442 | /* Bit 7..6: reserved */ | ||
1443 | #define GM_GPSR_PHY_ST_CH (1<<5) /* Bit 5: PHY Status Change */ | ||
1444 | #define GM_GPSR_GIG_SPEED (1<<4) /* Bit 4: Gigabit Speed (1 = 1000 Mbps) */ | ||
1445 | #define GM_GPSR_PART_MODE (1<<3) /* Bit 3: Partition mode */ | ||
1446 | #define GM_GPSR_FC_RX_DIS (1<<2) /* Bit 2: Rx Flow-Control Mode Disabled */ | ||
1447 | #define GM_GPSR_PROM_EN (1<<1) /* Bit 1: Promiscuous Mode Enabled */ | ||
1448 | /* Bit 0: reserved */ | ||
1449 | |||
1450 | /* GM_GP_CTRL 16 bit r/w General Purpose Control Register */ | ||
1451 | /* Bit 15: reserved */ | ||
1452 | #define GM_GPCR_PROM_ENA (1<<14) /* Bit 14: Enable Promiscuous Mode */ | ||
1453 | #define GM_GPCR_FC_TX_DIS (1<<13) /* Bit 13: Disable Tx Flow-Control Mode */ | ||
1454 | #define GM_GPCR_TX_ENA (1<<12) /* Bit 12: Enable Transmit */ | ||
1455 | #define GM_GPCR_RX_ENA (1<<11) /* Bit 11: Enable Receive */ | ||
1456 | #define GM_GPCR_BURST_ENA (1<<10) /* Bit 10: Enable Burst Mode */ | ||
1457 | #define GM_GPCR_LOOP_ENA (1<<9) /* Bit 9: Enable MAC Loopback Mode */ | ||
1458 | #define GM_GPCR_PART_ENA (1<<8) /* Bit 8: Enable Partition Mode */ | ||
1459 | #define GM_GPCR_GIGS_ENA (1<<7) /* Bit 7: Gigabit Speed (1000 Mbps) */ | ||
1460 | #define GM_GPCR_FL_PASS (1<<6) /* Bit 6: Force Link Pass */ | ||
1461 | #define GM_GPCR_DUP_FULL (1<<5) /* Bit 5: Full Duplex Mode */ | ||
1462 | #define GM_GPCR_FC_RX_DIS (1<<4) /* Bit 4: Disable Rx Flow-Control Mode */ | ||
1463 | #define GM_GPCR_SPEED_100 (1<<3) /* Bit 3: Port Speed 100 Mbps */ | ||
1464 | #define GM_GPCR_AU_DUP_DIS (1<<2) /* Bit 2: Disable Auto-Update Duplex */ | ||
1465 | #define GM_GPCR_AU_FCT_DIS (1<<1) /* Bit 1: Disable Auto-Update Flow-C. */ | ||
1466 | #define GM_GPCR_AU_SPD_DIS (1<<0) /* Bit 0: Disable Auto-Update Speed */ | ||
1467 | |||
1468 | #define GM_GPCR_SPEED_1000 (GM_GPCR_GIGS_ENA | GM_GPCR_SPEED_100) | ||
1469 | #define GM_GPCR_AU_ALL_DIS (GM_GPCR_AU_DUP_DIS | GM_GPCR_AU_FCT_DIS |\ | ||
1470 | GM_GPCR_AU_SPD_DIS) | ||
1471 | |||
1472 | /* GM_TX_CTRL 16 bit r/w Transmit Control Register */ | ||
1473 | #define GM_TXCR_FORCE_JAM (1<<15) /* Bit 15: Force Jam / Flow-Control */ | ||
1474 | #define GM_TXCR_CRC_DIS (1<<14) /* Bit 14: Disable insertion of CRC */ | ||
1475 | #define GM_TXCR_PAD_DIS (1<<13) /* Bit 13: Disable padding of packets */ | ||
1476 | #define GM_TXCR_COL_THR_MSK (1<<10) /* Bit 12..10: Collision Threshold */ | ||
1477 | |||
1478 | #define TX_COL_THR(x) (SHIFT10(x) & GM_TXCR_COL_THR_MSK) | ||
1479 | |||
1480 | #define TX_COL_DEF 0x04 | ||
1481 | |||
1482 | /* GM_RX_CTRL 16 bit r/w Receive Control Register */ | ||
1483 | #define GM_RXCR_UCF_ENA (1<<15) /* Bit 15: Enable Unicast filtering */ | ||
1484 | #define GM_RXCR_MCF_ENA (1<<14) /* Bit 14: Enable Multicast filtering */ | ||
1485 | #define GM_RXCR_CRC_DIS (1<<13) /* Bit 13: Remove 4-byte CRC */ | ||
1486 | #define GM_RXCR_PASS_FC (1<<12) /* Bit 12: Pass FC packets to FIFO */ | ||
1487 | |||
1488 | /* GM_TX_PARAM 16 bit r/w Transmit Parameter Register */ | ||
1489 | #define GM_TXPA_JAMLEN_MSK (0x03<<14) /* Bit 15..14: Jam Length */ | ||
1490 | #define GM_TXPA_JAMIPG_MSK (0x1f<<9) /* Bit 13..9: Jam IPG */ | ||
1491 | #define GM_TXPA_JAMDAT_MSK (0x1f<<4) /* Bit 8..4: IPG Jam to Data */ | ||
1492 | /* Bit 3..0: reserved */ | ||
1493 | |||
1494 | #define TX_JAM_LEN_VAL(x) (SHIFT14(x) & GM_TXPA_JAMLEN_MSK) | ||
1495 | #define TX_JAM_IPG_VAL(x) (SHIFT9(x) & GM_TXPA_JAMIPG_MSK) | ||
1496 | #define TX_IPG_JAM_DATA(x) (SHIFT4(x) & GM_TXPA_JAMDAT_MSK) | ||
1497 | |||
1498 | #define TX_JAM_LEN_DEF 0x03 | ||
1499 | #define TX_JAM_IPG_DEF 0x0b | ||
1500 | #define TX_IPG_JAM_DEF 0x1c | ||
1501 | |||
1502 | /* GM_SERIAL_MODE 16 bit r/w Serial Mode Register */ | ||
1503 | #define GM_SMOD_DATABL_MSK (0x1f<<11) /* Bit 15..11: Data Blinder (r/o) */ | ||
1504 | #define GM_SMOD_LIMIT_4 (1<<10) /* Bit 10: 4 consecutive Tx trials */ | ||
1505 | #define GM_SMOD_VLAN_ENA (1<<9) /* Bit 9: Enable VLAN (Max. Frame Len) */ | ||
1506 | #define GM_SMOD_JUMBO_ENA (1<<8) /* Bit 8: Enable Jumbo (Max. Frame Len) */ | ||
1507 | /* Bit 7..5: reserved */ | ||
1508 | #define GM_SMOD_IPG_MSK 0x1f /* Bit 4..0: Inter-Packet Gap (IPG) */ | ||
1509 | |||
1510 | #define DATA_BLIND_VAL(x) (SHIFT11(x) & GM_SMOD_DATABL_MSK) | ||
1511 | #define DATA_BLIND_DEF 0x04 | ||
1512 | |||
1513 | #define IPG_DATA_VAL(x) (x & GM_SMOD_IPG_MSK) | ||
1514 | #define IPG_DATA_DEF 0x1e | ||
1515 | |||
1516 | /* GM_SMI_CTRL 16 bit r/w SMI Control Register */ | ||
1517 | #define GM_SMI_CT_PHY_A_MSK (0x1f<<11) /* Bit 15..11: PHY Device Address */ | ||
1518 | #define GM_SMI_CT_REG_A_MSK (0x1f<<6) /* Bit 10.. 6: PHY Register Address */ | ||
1519 | #define GM_SMI_CT_OP_RD (1<<5) /* Bit 5: OpCode Read (0=Write)*/ | ||
1520 | #define GM_SMI_CT_RD_VAL (1<<4) /* Bit 4: Read Valid (Read completed) */ | ||
1521 | #define GM_SMI_CT_BUSY (1<<3) /* Bit 3: Busy (Operation in progress) */ | ||
1522 | /* Bit 2..0: reserved */ | ||
1523 | |||
1524 | #define GM_SMI_CT_PHY_AD(x) (SHIFT11(x) & GM_SMI_CT_PHY_A_MSK) | ||
1525 | #define GM_SMI_CT_REG_AD(x) (SHIFT6(x) & GM_SMI_CT_REG_A_MSK) | ||
1526 | |||
1527 | /* GM_PHY_ADDR 16 bit r/w GPHY Address Register */ | ||
1528 | /* Bit 15..6: reserved */ | ||
1529 | #define GM_PAR_MIB_CLR (1<<5) /* Bit 5: Set MIB Clear Counter Mode */ | ||
1530 | #define GM_PAR_MIB_TST (1<<4) /* Bit 4: MIB Load Counter (Test Mode) */ | ||
1531 | /* Bit 3..0: reserved */ | ||
1532 | |||
1533 | /* Receive Frame Status Encoding */ | ||
1534 | #define GMR_FS_LEN (0xffffUL<<16) /* Bit 31..16: Rx Frame Length */ | ||
1535 | /* Bit 15..14: reserved */ | ||
1536 | #define GMR_FS_VLAN (1L<<13) /* Bit 13: VLAN Packet */ | ||
1537 | #define GMR_FS_JABBER (1L<<12) /* Bit 12: Jabber Packet */ | ||
1538 | #define GMR_FS_UN_SIZE (1L<<11) /* Bit 11: Undersize Packet */ | ||
1539 | #define GMR_FS_MC (1L<<10) /* Bit 10: Multicast Packet */ | ||
1540 | #define GMR_FS_BC (1L<<9) /* Bit 9: Broadcast Packet */ | ||
1541 | #define GMR_FS_RX_OK (1L<<8) /* Bit 8: Receive OK (Good Packet) */ | ||
1542 | #define GMR_FS_GOOD_FC (1L<<7) /* Bit 7: Good Flow-Control Packet */ | ||
1543 | #define GMR_FS_BAD_FC (1L<<6) /* Bit 6: Bad Flow-Control Packet */ | ||
1544 | #define GMR_FS_MII_ERR (1L<<5) /* Bit 5: MII Error */ | ||
1545 | #define GMR_FS_LONG_ERR (1L<<4) /* Bit 4: Too Long Packet */ | ||
1546 | #define GMR_FS_FRAGMENT (1L<<3) /* Bit 3: Fragment */ | ||
1547 | /* Bit 2: reserved */ | ||
1548 | #define GMR_FS_CRC_ERR (1L<<1) /* Bit 1: CRC Error */ | ||
1549 | #define GMR_FS_RX_FF_OV (1L<<0) /* Bit 0: Rx FIFO Overflow */ | ||
1550 | |||
1551 | /* | ||
1552 | * GMR_FS_ANY_ERR (analogous to XMR_FS_ANY_ERR) | ||
1553 | */ | ||
1554 | #define GMR_FS_ANY_ERR (GMR_FS_CRC_ERR | \ | ||
1555 | GMR_FS_LONG_ERR | \ | ||
1556 | GMR_FS_MII_ERR | \ | ||
1557 | GMR_FS_BAD_FC | \ | ||
1558 | GMR_FS_GOOD_FC | \ | ||
1559 | GMR_FS_JABBER) | ||
1560 | |||
1561 | /* Rx GMAC FIFO Flush Mask (default) */ | ||
1562 | #define RX_FF_FL_DEF_MSK (GMR_FS_CRC_ERR | \ | ||
1563 | GMR_FS_RX_FF_OV | \ | ||
1564 | GMR_FS_MII_ERR | \ | ||
1565 | GMR_FS_BAD_FC | \ | ||
1566 | GMR_FS_GOOD_FC | \ | ||
1567 | GMR_FS_UN_SIZE | \ | ||
1568 | GMR_FS_JABBER) | ||
1569 | |||
1570 | /* typedefs *******************************************************************/ | ||
1571 | |||
1572 | |||
1573 | /* function prototypes ********************************************************/ | ||
1574 | |||
1575 | #ifdef __cplusplus | ||
1576 | } | ||
1577 | #endif /* __cplusplus */ | ||
1578 | |||
1579 | #endif /* __INC_XMAC_H */ | ||