2 * Copyright (C) 2013 Realtek Semiconductor Corp.
5 * Unless you and Realtek execute a separate written software license
6 * agreement governing use of this software, this software is licensed
7 * to you under the terms of the GNU General Public License version 2,
8 * available at https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
11 * $Date: 2017-03-09 09:33:15 +0800 (ι±ε, 09 δΈζ 2017) $
13 * Purpose : RTL8367C switch high-level API for RTL8367C
14 * Feature : Port security related functions
18 #include <rtl8367c_asicdrv_port.h>
23 #define FIBER2_AUTO_INIT_SIZE 2038
24 rtk_uint8 Fiber2_Auto
[FIBER2_AUTO_INIT_SIZE
] = {
25 0x02,0x05,0x8F,0xE4,0xF5,0xA8,0xD2,0xAF,
26 0x22,0x00,0x00,0x02,0x07,0x2C,0xC5,0xF0,
27 0xF8,0xA3,0xE0,0x28,0xF0,0xC5,0xF0,0xF8,
28 0xE5,0x82,0x15,0x82,0x70,0x02,0x15,0x83,
29 0xE0,0x38,0xF0,0x22,0x75,0xF0,0x08,0x75,
30 0x82,0x00,0xEF,0x2F,0xFF,0xEE,0x33,0xFE,
31 0xCD,0x33,0xCD,0xCC,0x33,0xCC,0xC5,0x82,
32 0x33,0xC5,0x82,0x9B,0xED,0x9A,0xEC,0x99,
33 0xE5,0x82,0x98,0x40,0x0C,0xF5,0x82,0xEE,
34 0x9B,0xFE,0xED,0x9A,0xFD,0xEC,0x99,0xFC,
35 0x0F,0xD5,0xF0,0xD6,0xE4,0xCE,0xFB,0xE4,
36 0xCD,0xFA,0xE4,0xCC,0xF9,0xA8,0x82,0x22,
37 0xB8,0x00,0xC1,0xB9,0x00,0x59,0xBA,0x00,
38 0x2D,0xEC,0x8B,0xF0,0x84,0xCF,0xCE,0xCD,
39 0xFC,0xE5,0xF0,0xCB,0xF9,0x78,0x18,0xEF,
40 0x2F,0xFF,0xEE,0x33,0xFE,0xED,0x33,0xFD,
41 0xEC,0x33,0xFC,0xEB,0x33,0xFB,0x10,0xD7,
42 0x03,0x99,0x40,0x04,0xEB,0x99,0xFB,0x0F,
43 0xD8,0xE5,0xE4,0xF9,0xFA,0x22,0x78,0x18,
44 0xEF,0x2F,0xFF,0xEE,0x33,0xFE,0xED,0x33,
45 0xFD,0xEC,0x33,0xFC,0xC9,0x33,0xC9,0x10,
46 0xD7,0x05,0x9B,0xE9,0x9A,0x40,0x07,0xEC,
47 0x9B,0xFC,0xE9,0x9A,0xF9,0x0F,0xD8,0xE0,
48 0xE4,0xC9,0xFA,0xE4,0xCC,0xFB,0x22,0x75,
49 0xF0,0x10,0xEF,0x2F,0xFF,0xEE,0x33,0xFE,
50 0xED,0x33,0xFD,0xCC,0x33,0xCC,0xC8,0x33,
51 0xC8,0x10,0xD7,0x07,0x9B,0xEC,0x9A,0xE8,
52 0x99,0x40,0x0A,0xED,0x9B,0xFD,0xEC,0x9A,
53 0xFC,0xE8,0x99,0xF8,0x0F,0xD5,0xF0,0xDA,
54 0xE4,0xCD,0xFB,0xE4,0xCC,0xFA,0xE4,0xC8,
55 0xF9,0x22,0xEB,0x9F,0xF5,0xF0,0xEA,0x9E,
56 0x42,0xF0,0xE9,0x9D,0x42,0xF0,0xE8,0x9C,
57 0x45,0xF0,0x22,0xE0,0xFC,0xA3,0xE0,0xFD,
58 0xA3,0xE0,0xFE,0xA3,0xE0,0xFF,0x22,0xE0,
59 0xF8,0xA3,0xE0,0xF9,0xA3,0xE0,0xFA,0xA3,
60 0xE0,0xFB,0x22,0xEC,0xF0,0xA3,0xED,0xF0,
61 0xA3,0xEE,0xF0,0xA3,0xEF,0xF0,0x22,0x7D,
62 0xD7,0x7C,0x04,0x7F,0x02,0x7E,0x66,0x12,
63 0x07,0xAB,0x7D,0x80,0x7C,0x04,0x7F,0x01,
64 0x7E,0x66,0x12,0x07,0xAB,0x7D,0xC0,0x7C,
65 0x00,0x7F,0x00,0x7E,0x66,0x12,0x07,0xAB,
66 0x7D,0x94,0x7C,0xF9,0x7F,0x02,0x7E,0x66,
67 0x12,0x07,0xAB,0x7D,0x81,0x7C,0x04,0x7F,
68 0x01,0x7E,0x66,0x12,0x07,0xAB,0x7D,0xC0,
69 0x7C,0x00,0x7F,0x00,0x7E,0x66,0x12,0x07,
70 0xAB,0x7D,0xA2,0x7C,0x31,0x7F,0x02,0x7E,
71 0x66,0x12,0x07,0xAB,0x7D,0x82,0x7C,0x04,
72 0x7F,0x01,0x7E,0x66,0x12,0x07,0xAB,0x7D,
73 0xC0,0x7C,0x00,0x7F,0x00,0x7E,0x66,0x12,
74 0x07,0xAB,0x7D,0x60,0x7C,0x69,0x7F,0x02,
75 0x7E,0x66,0x12,0x07,0xAB,0x7D,0x83,0x7C,
76 0x04,0x7F,0x01,0x7E,0x66,0x12,0x07,0xAB,
77 0x7D,0xC0,0x7C,0x00,0x7F,0x00,0x7E,0x66,
78 0x12,0x07,0xAB,0x7D,0x28,0x7C,0x97,0x7F,
79 0x02,0x7E,0x66,0x12,0x07,0xAB,0x7D,0x84,
80 0x7C,0x04,0x7F,0x01,0x7E,0x66,0x12,0x07,
81 0xAB,0x7D,0xC0,0x7C,0x00,0x7F,0x00,0x7E,
82 0x66,0x12,0x07,0xAB,0x7D,0x85,0x7C,0x9D,
83 0x7F,0x02,0x7E,0x66,0x12,0x07,0xAB,0x7D,
84 0x23,0x7C,0x04,0x7F,0x01,0x7E,0x66,0x12,
85 0x07,0xAB,0x7D,0xC0,0x7C,0x00,0x7F,0x00,
86 0x7E,0x66,0x12,0x07,0xAB,0x7D,0x10,0x7C,
87 0xD8,0x7F,0x02,0x7E,0x66,0x12,0x07,0xAB,
88 0x7D,0x24,0x7C,0x04,0x7F,0x01,0x7E,0x66,
89 0x12,0x07,0xAB,0x7D,0xC0,0x7C,0x00,0x7F,
90 0x00,0x7E,0x66,0x12,0x07,0xAB,0x7D,0x00,
91 0x7C,0x04,0x7F,0x02,0x7E,0x66,0x12,0x07,
92 0xAB,0x7D,0x2F,0x7C,0x00,0x7F,0x01,0x7E,
93 0x66,0x12,0x07,0xAB,0x7D,0xC0,0x7C,0x00,
94 0x7F,0x00,0x7E,0x66,0x02,0x07,0xAB,0x7D,
95 0x03,0x7C,0x00,0x7F,0x01,0x7E,0x66,0x12,
96 0x07,0xAB,0x7D,0x80,0x7C,0x00,0x7F,0x00,
97 0x7E,0x66,0x12,0x07,0xAB,0x7F,0x02,0x7E,
98 0x66,0x12,0x07,0x66,0xEF,0x44,0x40,0xFD,
99 0xAC,0x06,0x7F,0x02,0x7E,0x66,0x12,0x07,
100 0xAB,0x7D,0x03,0x7C,0x00,0x7F,0x01,0x7E,
101 0x66,0x12,0x07,0xAB,0x7D,0xC0,0x7C,0x00,
102 0x7F,0x00,0x7E,0x66,0x12,0x07,0xAB,0x7D,
103 0x03,0x7C,0x00,0x7F,0x01,0x7E,0x66,0x12,
104 0x07,0xAB,0x7D,0x80,0x7C,0x00,0x7F,0x00,
105 0x7E,0x66,0x12,0x07,0xAB,0x7F,0x02,0x7E,
106 0x66,0x12,0x07,0x66,0xEF,0x54,0xBF,0xFD,
107 0xAC,0x06,0x7F,0x02,0x7E,0x66,0x12,0x07,
108 0xAB,0x7D,0x03,0x7C,0x00,0x7F,0x01,0x7E,
109 0x66,0x12,0x07,0xAB,0x7D,0xC0,0x7C,0x00,
110 0x7F,0x00,0x7E,0x66,0x12,0x07,0xAB,0xE4,
111 0xFD,0xFC,0x7F,0x01,0x7E,0x66,0x12,0x07,
112 0xAB,0x7D,0x80,0x7C,0x00,0x7F,0x00,0x7E,
113 0x66,0x12,0x07,0xAB,0x7F,0x02,0x7E,0x66,
114 0x12,0x07,0x66,0xEF,0x54,0xFD,0x54,0xFE,
115 0xFD,0xAC,0x06,0x7F,0x02,0x7E,0x66,0x12,
116 0x07,0xAB,0xE4,0xFD,0xFC,0x7F,0x01,0x7E,
117 0x66,0x12,0x07,0xAB,0x7D,0xC0,0x7C,0x00,
118 0x7F,0x00,0x7E,0x66,0x12,0x07,0xAB,0xE4,
119 0xFD,0xFC,0x7F,0x01,0x7E,0x66,0x12,0x07,
120 0xAB,0x7D,0x80,0x7C,0x00,0x7F,0x00,0x7E,
121 0x66,0x12,0x07,0xAB,0x7F,0x02,0x7E,0x66,
122 0x12,0x07,0x66,0xEF,0x44,0x02,0x44,0x01,
123 0xFD,0xAC,0x06,0x7F,0x02,0x7E,0x66,0x12,
124 0x07,0xAB,0xE4,0xFD,0xFC,0x7F,0x01,0x7E,
125 0x66,0x12,0x07,0xAB,0x7D,0xC0,0x7C,0x00,
126 0x7F,0x00,0x7E,0x66,0x02,0x07,0xAB,0xE4,
127 0x90,0x06,0x2C,0xF0,0xFD,0x7C,0x01,0x7F,
128 0x3F,0x7E,0x1D,0x12,0x07,0xAB,0x7D,0x40,
129 0x7C,0x00,0x7F,0x36,0x7E,0x13,0x12,0x07,
130 0xAB,0xE4,0xFF,0xFE,0xFD,0x80,0x25,0xE4,
131 0x7F,0xFF,0x7E,0xFF,0xFD,0xFC,0x90,0x06,
132 0x24,0x12,0x01,0x0F,0xC3,0x12,0x00,0xF2,
133 0x50,0x1B,0x90,0x06,0x24,0x12,0x01,0x03,
134 0xEF,0x24,0x01,0xFF,0xE4,0x3E,0xFE,0xE4,
135 0x3D,0xFD,0xE4,0x3C,0xFC,0x90,0x06,0x24,
136 0x12,0x01,0x1B,0x80,0xD2,0xE4,0xF5,0xA8,
137 0xD2,0xAF,0x7D,0x1F,0xFC,0x7F,0x49,0x7E,
138 0x13,0x12,0x07,0xAB,0x12,0x07,0xDB,0x12,
139 0x01,0x27,0x12,0x06,0x1B,0x12,0x07,0x8A,
140 0x12,0x06,0xEA,0x7D,0x41,0x7C,0x00,0x7F,
141 0x36,0x7E,0x13,0x12,0x07,0xAB,0xE4,0xFF,
142 0xFE,0xFD,0x80,0x26,0x7F,0xFF,0x7E,0xFF,
143 0x7D,0x05,0x7C,0x00,0x90,0x06,0x24,0x12,
144 0x01,0x0F,0xC3,0x12,0x00,0xF2,0x50,0x1B,
145 0x90,0x06,0x24,0x12,0x01,0x03,0xEF,0x24,
146 0x01,0xFF,0xE4,0x3E,0xFE,0xE4,0x3D,0xFD,
147 0xE4,0x3C,0xFC,0x90,0x06,0x24,0x12,0x01,
148 0x1B,0x80,0xD1,0xC2,0x00,0xC2,0x01,0xD2,
149 0xA9,0xD2,0x8C,0x7F,0x01,0x7E,0x62,0x12,
150 0x07,0x66,0xEF,0x30,0xE2,0x07,0xE4,0x90,
151 0x06,0x2C,0xF0,0x80,0xEE,0x90,0x06,0x2C,
152 0xE0,0x70,0x12,0x12,0x04,0xF0,0x90,0x06,
153 0x2C,0x74,0x01,0xF0,0xE4,0x90,0x06,0x33,
154 0xF0,0xA3,0xF0,0x80,0xD6,0xC3,0x90,0x06,
155 0x34,0xE0,0x94,0x62,0x90,0x06,0x33,0xE0,
156 0x94,0x00,0x40,0xC7,0xE4,0xF0,0xA3,0xF0,
157 0x12,0x04,0xF0,0x90,0x06,0x2C,0x74,0x01,
158 0xF0,0x80,0xB8,0x75,0x0F,0x80,0x75,0x0E,
159 0x7E,0x75,0x0D,0xAA,0x75,0x0C,0x83,0xE4,
160 0xF5,0x10,0x7F,0x36,0x7E,0x13,0x12,0x07,
161 0x66,0xEE,0xC4,0xF8,0x54,0xF0,0xC8,0xEF,
162 0xC4,0x54,0x0F,0x48,0x54,0x07,0xFB,0x7A,
163 0x00,0xEA,0x70,0x4A,0xEB,0x14,0x60,0x1C,
164 0x14,0x60,0x27,0x24,0xFE,0x60,0x31,0x14,
165 0x60,0x3C,0x24,0x05,0x70,0x38,0x75,0x0B,
166 0x00,0x75,0x0A,0xC2,0x75,0x09,0xEB,0x75,
167 0x08,0x0B,0x80,0x36,0x75,0x0B,0x40,0x75,
168 0x0A,0x59,0x75,0x09,0x73,0x75,0x08,0x07,
169 0x80,0x28,0x75,0x0B,0x00,0x75,0x0A,0xE1,
170 0x75,0x09,0xF5,0x75,0x08,0x05,0x80,0x1A,
171 0x75,0x0B,0xA0,0x75,0x0A,0xAC,0x75,0x09,
172 0xB9,0x75,0x08,0x03,0x80,0x0C,0x75,0x0B,
173 0x00,0x75,0x0A,0x62,0x75,0x09,0x3D,0x75,
174 0x08,0x01,0x75,0x89,0x11,0xE4,0x7B,0x60,
175 0x7A,0x09,0xF9,0xF8,0xAF,0x0B,0xAE,0x0A,
176 0xAD,0x09,0xAC,0x08,0x12,0x00,0x60,0xAA,
177 0x06,0xAB,0x07,0xC3,0xE4,0x9B,0xFB,0xE4,
178 0x9A,0xFA,0x78,0x17,0xF6,0xAF,0x03,0xEF,
179 0x08,0xF6,0x18,0xE6,0xF5,0x8C,0x08,0xE6,
180 0xF5,0x8A,0x74,0x0D,0x2B,0xFB,0xE4,0x3A,
181 0x18,0xF6,0xAF,0x03,0xEF,0x08,0xF6,0x75,
182 0x88,0x10,0x53,0x8E,0xC7,0xD2,0xA9,0x22,
183 0x7F,0x10,0x7E,0x13,0x12,0x07,0x66,0x90,
184 0x06,0x2D,0xEE,0xF0,0xA3,0xEF,0xF0,0xEE,
185 0x44,0x10,0xFE,0x90,0x06,0x2D,0xF0,0xA3,
186 0xEF,0xF0,0x54,0xEF,0xFF,0x90,0x06,0x2D,
187 0xEE,0xF0,0xFC,0xA3,0xEF,0xF0,0xFD,0x7F,
188 0x10,0x7E,0x13,0x12,0x07,0xAB,0xE4,0xFF,
189 0xFE,0x0F,0xBF,0x00,0x01,0x0E,0xEF,0x64,
190 0x64,0x4E,0x70,0xF5,0x7D,0x04,0x7C,0x00,
191 0x7F,0x02,0x7E,0x66,0x12,0x07,0xAB,0x7D,
192 0x00,0x7C,0x04,0x7F,0x01,0x7E,0x66,0x12,
193 0x07,0xAB,0x7D,0xC0,0x7C,0x00,0x7F,0x00,
194 0x7E,0x66,0x12,0x07,0xAB,0xE4,0xFD,0xFC,
195 0x7F,0x02,0x7E,0x66,0x12,0x07,0xAB,0x7D,
196 0x00,0x7C,0x04,0x7F,0x01,0x7E,0x66,0x12,
197 0x07,0xAB,0x7D,0xC0,0x7C,0x00,0x7F,0x00,
198 0x7E,0x66,0x12,0x07,0xAB,0x7F,0x10,0x7E,
199 0x13,0x12,0x07,0x66,0x90,0x06,0x2D,0xEE,
200 0xF0,0xA3,0xEF,0xF0,0xEE,0x54,0xEF,0x90,
201 0x06,0x2D,0xF0,0xFC,0xA3,0xEF,0xF0,0xFD,
202 0x7F,0x10,0x7E,0x13,0x02,0x07,0xAB,0x78,
203 0x7F,0xE4,0xF6,0xD8,0xFD,0x75,0x81,0x3C,
204 0x02,0x05,0xD6,0x02,0x03,0x2F,0xE4,0x93,
205 0xA3,0xF8,0xE4,0x93,0xA3,0x40,0x03,0xF6,
206 0x80,0x01,0xF2,0x08,0xDF,0xF4,0x80,0x29,
207 0xE4,0x93,0xA3,0xF8,0x54,0x07,0x24,0x0C,
208 0xC8,0xC3,0x33,0xC4,0x54,0x0F,0x44,0x20,
209 0xC8,0x83,0x40,0x04,0xF4,0x56,0x80,0x01,
210 0x46,0xF6,0xDF,0xE4,0x80,0x0B,0x01,0x02,
211 0x04,0x08,0x10,0x20,0x40,0x80,0x90,0x07,
212 0xE7,0xE4,0x7E,0x01,0x93,0x60,0xBC,0xA3,
213 0xFF,0x54,0x3F,0x30,0xE5,0x09,0x54,0x1F,
214 0xFE,0xE4,0x93,0xA3,0x60,0x01,0x0E,0xCF,
215 0x54,0xC0,0x25,0xE0,0x60,0xA8,0x40,0xB8,
216 0xE4,0x93,0xA3,0xFA,0xE4,0x93,0xA3,0xF8,
217 0xE4,0x93,0xA3,0xC8,0xC5,0x82,0xC8,0xCA,
218 0xC5,0x83,0xCA,0xF0,0xA3,0xC8,0xC5,0x82,
219 0xC8,0xCA,0xC5,0x83,0xCA,0xDF,0xE9,0xDE,
220 0xE7,0x80,0xBE,0x7D,0x40,0x7C,0x17,0x7F,
221 0x11,0x7E,0x1D,0x12,0x07,0xAB,0x7F,0x41,
222 0x7E,0x1D,0x12,0x07,0x66,0xEF,0x44,0x20,
223 0x44,0x80,0xFD,0xAC,0x06,0x7F,0x41,0x7E,
224 0x1D,0x12,0x07,0xAB,0x7D,0xBB,0x7C,0x15,
225 0x7F,0xEB,0x7E,0x13,0x12,0x07,0xAB,0x7D,
226 0x07,0x7C,0x00,0x7F,0xE7,0x7E,0x13,0x12,
227 0x07,0xAB,0x7D,0x40,0x7C,0x11,0x7F,0x00,
228 0x7E,0x62,0x12,0x07,0xAB,0x02,0x02,0x2F,
229 0x7D,0xC0,0x7C,0x16,0x7F,0x11,0x7E,0x1D,
230 0x12,0x07,0xAB,0x7D,0xBB,0x7C,0x15,0x7F,
231 0xEB,0x7E,0x13,0x12,0x07,0xAB,0x7D,0x0D,
232 0x7C,0x00,0x7F,0xE7,0x7E,0x13,0x12,0x07,
233 0xAB,0x7F,0x41,0x7E,0x1D,0x12,0x07,0x66,
234 0xEF,0x44,0x20,0x44,0x80,0xFD,0xAC,0x06,
235 0x7F,0x41,0x7E,0x1D,0x12,0x07,0xAB,0x7D,
236 0x00,0x7C,0x21,0x7F,0x00,0x7E,0x62,0x12,
237 0x07,0xAB,0x02,0x02,0x2F,0x7D,0x40,0x7C,
238 0x17,0x7F,0x11,0x7E,0x1D,0x12,0x07,0xAB,
239 0x7D,0xBB,0x7C,0x15,0x7F,0xEB,0x7E,0x13,
240 0x12,0x07,0xAB,0x7D,0x0C,0x7C,0x00,0x7F,
241 0xE7,0x7E,0x13,0x12,0x07,0xAB,0x7F,0x41,
242 0x7E,0x1D,0x12,0x07,0x66,0xEF,0x44,0x20,
243 0x44,0x80,0xFD,0xAC,0x06,0x7F,0x41,0x7E,
244 0x1D,0x12,0x07,0xAB,0x7D,0x40,0x7C,0x11,
245 0x7F,0x00,0x7E,0x62,0x12,0x07,0xAB,0x02,
246 0x02,0x2F,0x7D,0x04,0x7C,0x00,0x7F,0x01,
247 0x7E,0x66,0x12,0x07,0xAB,0x7D,0x80,0x7C,
248 0x00,0x7F,0x00,0x7E,0x66,0x12,0x07,0xAB,
249 0x7F,0x02,0x7E,0x66,0x12,0x07,0x66,0xEF,
250 0x44,0x02,0x44,0x04,0xFD,0xAC,0x06,0x7F,
251 0x02,0x7E,0x66,0x12,0x07,0xAB,0x7D,0x04,
252 0x7C,0x00,0x7F,0x01,0x7E,0x66,0x12,0x07,
253 0xAB,0x7D,0xC0,0x7C,0x00,0x7F,0x00,0x7E,
254 0x66,0x02,0x07,0xAB,0xC0,0xE0,0xC0,0xF0,
255 0xC0,0x83,0xC0,0x82,0xC0,0xD0,0x75,0xD0,
256 0x00,0xC0,0x00,0x78,0x17,0xE6,0xF5,0x8C,
257 0x78,0x18,0xE6,0xF5,0x8A,0x90,0x06,0x31,
258 0xE4,0x75,0xF0,0x01,0x12,0x00,0x0E,0x90,
259 0x06,0x33,0xE4,0x75,0xF0,0x01,0x12,0x00,
260 0x0E,0xD0,0x00,0xD0,0xD0,0xD0,0x82,0xD0,
261 0x83,0xD0,0xF0,0xD0,0xE0,0x32,0xC2,0xAF,
262 0xAD,0x07,0xAC,0x06,0x8C,0xA2,0x8D,0xA3,
263 0x75,0xA0,0x01,0x00,0x00,0x00,0x00,0x00,
264 0x00,0x00,0x00,0x00,0x00,0x00,0xAE,0xA1,
265 0xBE,0x00,0xF0,0xAE,0xA6,0xAF,0xA7,0xD2,
266 0xAF,0x22,0x7D,0x20,0x7C,0x0F,0x7F,0x02,
267 0x7E,0x66,0x12,0x07,0xAB,0x7D,0x01,0x7C,
268 0x00,0x7F,0x01,0x7E,0x66,0x12,0x07,0xAB,
269 0x7D,0xC0,0x7C,0x00,0x7F,0x00,0x7E,0x66,
270 0x02,0x07,0xAB,0xC2,0xAF,0xAB,0x07,0xAA,
271 0x06,0x8A,0xA2,0x8B,0xA3,0x8C,0xA4,0x8D,
272 0xA5,0x75,0xA0,0x03,0x00,0x00,0x00,0xAA,
273 0xA1,0xBA,0x00,0xF8,0xD2,0xAF,0x22,0x7F,
274 0x0C,0x7E,0x13,0x12,0x07,0x66,0xEF,0x44,
275 0x50,0xFD,0xAC,0x06,0x7F,0x0C,0x7E,0x13,
276 0x02,0x07,0xAB,0x12,0x07,0xC7,0x12,0x07,
277 0xF2,0x12,0x04,0x2B,0x02,0x00,0x03,0x42,
278 0x06,0x33,0x00,0x00,0x42,0x06,0x31,0x00,
279 0x00,0x00,0xE4,0xF5,0x8E,0x22,};
281 #define FIBER2_1G_INIT_SIZE 2032
282 rtk_uint8 Fiber2_1G
[FIBER2_1G_INIT_SIZE
] = {
283 0x02,0x05,0x89,0xE4,0xF5,0xA8,0xD2,0xAF,
284 0x22,0x00,0x00,0x02,0x07,0x26,0xC5,0xF0,
285 0xF8,0xA3,0xE0,0x28,0xF0,0xC5,0xF0,0xF8,
286 0xE5,0x82,0x15,0x82,0x70,0x02,0x15,0x83,
287 0xE0,0x38,0xF0,0x22,0x75,0xF0,0x08,0x75,
288 0x82,0x00,0xEF,0x2F,0xFF,0xEE,0x33,0xFE,
289 0xCD,0x33,0xCD,0xCC,0x33,0xCC,0xC5,0x82,
290 0x33,0xC5,0x82,0x9B,0xED,0x9A,0xEC,0x99,
291 0xE5,0x82,0x98,0x40,0x0C,0xF5,0x82,0xEE,
292 0x9B,0xFE,0xED,0x9A,0xFD,0xEC,0x99,0xFC,
293 0x0F,0xD5,0xF0,0xD6,0xE4,0xCE,0xFB,0xE4,
294 0xCD,0xFA,0xE4,0xCC,0xF9,0xA8,0x82,0x22,
295 0xB8,0x00,0xC1,0xB9,0x00,0x59,0xBA,0x00,
296 0x2D,0xEC,0x8B,0xF0,0x84,0xCF,0xCE,0xCD,
297 0xFC,0xE5,0xF0,0xCB,0xF9,0x78,0x18,0xEF,
298 0x2F,0xFF,0xEE,0x33,0xFE,0xED,0x33,0xFD,
299 0xEC,0x33,0xFC,0xEB,0x33,0xFB,0x10,0xD7,
300 0x03,0x99,0x40,0x04,0xEB,0x99,0xFB,0x0F,
301 0xD8,0xE5,0xE4,0xF9,0xFA,0x22,0x78,0x18,
302 0xEF,0x2F,0xFF,0xEE,0x33,0xFE,0xED,0x33,
303 0xFD,0xEC,0x33,0xFC,0xC9,0x33,0xC9,0x10,
304 0xD7,0x05,0x9B,0xE9,0x9A,0x40,0x07,0xEC,
305 0x9B,0xFC,0xE9,0x9A,0xF9,0x0F,0xD8,0xE0,
306 0xE4,0xC9,0xFA,0xE4,0xCC,0xFB,0x22,0x75,
307 0xF0,0x10,0xEF,0x2F,0xFF,0xEE,0x33,0xFE,
308 0xED,0x33,0xFD,0xCC,0x33,0xCC,0xC8,0x33,
309 0xC8,0x10,0xD7,0x07,0x9B,0xEC,0x9A,0xE8,
310 0x99,0x40,0x0A,0xED,0x9B,0xFD,0xEC,0x9A,
311 0xFC,0xE8,0x99,0xF8,0x0F,0xD5,0xF0,0xDA,
312 0xE4,0xCD,0xFB,0xE4,0xCC,0xFA,0xE4,0xC8,
313 0xF9,0x22,0xEB,0x9F,0xF5,0xF0,0xEA,0x9E,
314 0x42,0xF0,0xE9,0x9D,0x42,0xF0,0xE8,0x9C,
315 0x45,0xF0,0x22,0xE0,0xFC,0xA3,0xE0,0xFD,
316 0xA3,0xE0,0xFE,0xA3,0xE0,0xFF,0x22,0xE0,
317 0xF8,0xA3,0xE0,0xF9,0xA3,0xE0,0xFA,0xA3,
318 0xE0,0xFB,0x22,0xEC,0xF0,0xA3,0xED,0xF0,
319 0xA3,0xEE,0xF0,0xA3,0xEF,0xF0,0x22,0x7D,
320 0xD7,0x7C,0x04,0x7F,0x02,0x7E,0x66,0x12,
321 0x07,0xA5,0x7D,0x80,0x7C,0x04,0x7F,0x01,
322 0x7E,0x66,0x12,0x07,0xA5,0x7D,0xC0,0x7C,
323 0x00,0x7F,0x00,0x7E,0x66,0x12,0x07,0xA5,
324 0x7D,0x94,0x7C,0xF9,0x7F,0x02,0x7E,0x66,
325 0x12,0x07,0xA5,0x7D,0x81,0x7C,0x04,0x7F,
326 0x01,0x7E,0x66,0x12,0x07,0xA5,0x7D,0xC0,
327 0x7C,0x00,0x7F,0x00,0x7E,0x66,0x12,0x07,
328 0xA5,0x7D,0xA2,0x7C,0x31,0x7F,0x02,0x7E,
329 0x66,0x12,0x07,0xA5,0x7D,0x82,0x7C,0x04,
330 0x7F,0x01,0x7E,0x66,0x12,0x07,0xA5,0x7D,
331 0xC0,0x7C,0x00,0x7F,0x00,0x7E,0x66,0x12,
332 0x07,0xA5,0x7D,0x60,0x7C,0x69,0x7F,0x02,
333 0x7E,0x66,0x12,0x07,0xA5,0x7D,0x83,0x7C,
334 0x04,0x7F,0x01,0x7E,0x66,0x12,0x07,0xA5,
335 0x7D,0xC0,0x7C,0x00,0x7F,0x00,0x7E,0x66,
336 0x12,0x07,0xA5,0x7D,0x28,0x7C,0x97,0x7F,
337 0x02,0x7E,0x66,0x12,0x07,0xA5,0x7D,0x84,
338 0x7C,0x04,0x7F,0x01,0x7E,0x66,0x12,0x07,
339 0xA5,0x7D,0xC0,0x7C,0x00,0x7F,0x00,0x7E,
340 0x66,0x12,0x07,0xA5,0x7D,0x85,0x7C,0x9D,
341 0x7F,0x02,0x7E,0x66,0x12,0x07,0xA5,0x7D,
342 0x23,0x7C,0x04,0x7F,0x01,0x7E,0x66,0x12,
343 0x07,0xA5,0x7D,0xC0,0x7C,0x00,0x7F,0x00,
344 0x7E,0x66,0x12,0x07,0xA5,0x7D,0x10,0x7C,
345 0xD8,0x7F,0x02,0x7E,0x66,0x12,0x07,0xA5,
346 0x7D,0x24,0x7C,0x04,0x7F,0x01,0x7E,0x66,
347 0x12,0x07,0xA5,0x7D,0xC0,0x7C,0x00,0x7F,
348 0x00,0x7E,0x66,0x12,0x07,0xA5,0x7D,0x00,
349 0x7C,0x04,0x7F,0x02,0x7E,0x66,0x12,0x07,
350 0xA5,0x7D,0x2F,0x7C,0x00,0x7F,0x01,0x7E,
351 0x66,0x12,0x07,0xA5,0x7D,0xC0,0x7C,0x00,
352 0x7F,0x00,0x7E,0x66,0x02,0x07,0xA5,0x7D,
353 0x03,0x7C,0x00,0x7F,0x01,0x7E,0x66,0x12,
354 0x07,0xA5,0x7D,0x80,0x7C,0x00,0x7F,0x00,
355 0x7E,0x66,0x12,0x07,0xA5,0x7F,0x02,0x7E,
356 0x66,0x12,0x07,0x60,0xEF,0x44,0x40,0xFD,
357 0xAC,0x06,0x7F,0x02,0x7E,0x66,0x12,0x07,
358 0xA5,0x7D,0x03,0x7C,0x00,0x7F,0x01,0x7E,
359 0x66,0x12,0x07,0xA5,0x7D,0xC0,0x7C,0x00,
360 0x7F,0x00,0x7E,0x66,0x12,0x07,0xA5,0x7D,
361 0x03,0x7C,0x00,0x7F,0x01,0x7E,0x66,0x12,
362 0x07,0xA5,0x7D,0x80,0x7C,0x00,0x7F,0x00,
363 0x7E,0x66,0x12,0x07,0xA5,0x7F,0x02,0x7E,
364 0x66,0x12,0x07,0x60,0xEF,0x54,0xBF,0xFD,
365 0xAC,0x06,0x7F,0x02,0x7E,0x66,0x12,0x07,
366 0xA5,0x7D,0x03,0x7C,0x00,0x7F,0x01,0x7E,
367 0x66,0x12,0x07,0xA5,0x7D,0xC0,0x7C,0x00,
368 0x7F,0x00,0x7E,0x66,0x12,0x07,0xA5,0xE4,
369 0xFD,0xFC,0x7F,0x01,0x7E,0x66,0x12,0x07,
370 0xA5,0x7D,0x80,0x7C,0x00,0x7F,0x00,0x7E,
371 0x66,0x12,0x07,0xA5,0x7F,0x02,0x7E,0x66,
372 0x12,0x07,0x60,0xEF,0x54,0xFD,0x54,0xFE,
373 0xFD,0xAC,0x06,0x7F,0x02,0x7E,0x66,0x12,
374 0x07,0xA5,0xE4,0xFD,0xFC,0x7F,0x01,0x7E,
375 0x66,0x12,0x07,0xA5,0x7D,0xC0,0x7C,0x00,
376 0x7F,0x00,0x7E,0x66,0x12,0x07,0xA5,0xE4,
377 0xFD,0xFC,0x7F,0x01,0x7E,0x66,0x12,0x07,
378 0xA5,0x7D,0x80,0x7C,0x00,0x7F,0x00,0x7E,
379 0x66,0x12,0x07,0xA5,0x7F,0x02,0x7E,0x66,
380 0x12,0x07,0x60,0xEF,0x44,0x02,0x44,0x01,
381 0xFD,0xAC,0x06,0x7F,0x02,0x7E,0x66,0x12,
382 0x07,0xA5,0xE4,0xFD,0xFC,0x7F,0x01,0x7E,
383 0x66,0x12,0x07,0xA5,0x7D,0xC0,0x7C,0x00,
384 0x7F,0x00,0x7E,0x66,0x02,0x07,0xA5,0xE4,
385 0x90,0x06,0x2C,0xF0,0xFD,0x7C,0x01,0x7F,
386 0x3F,0x7E,0x1D,0x12,0x07,0xA5,0x7D,0x40,
387 0x7C,0x00,0x7F,0x36,0x7E,0x13,0x12,0x07,
388 0xA5,0xE4,0xFF,0xFE,0xFD,0x80,0x25,0xE4,
389 0x7F,0xFF,0x7E,0xFF,0xFD,0xFC,0x90,0x06,
390 0x24,0x12,0x01,0x0F,0xC3,0x12,0x00,0xF2,
391 0x50,0x1B,0x90,0x06,0x24,0x12,0x01,0x03,
392 0xEF,0x24,0x01,0xFF,0xE4,0x3E,0xFE,0xE4,
393 0x3D,0xFD,0xE4,0x3C,0xFC,0x90,0x06,0x24,
394 0x12,0x01,0x1B,0x80,0xD2,0xE4,0xF5,0xA8,
395 0xD2,0xAF,0x7D,0x1F,0xFC,0x7F,0x49,0x7E,
396 0x13,0x12,0x07,0xA5,0x12,0x07,0xD5,0x12,
397 0x01,0x27,0x12,0x06,0x9F,0x7D,0x41,0x7C,
398 0x00,0x7F,0x36,0x7E,0x13,0x12,0x07,0xA5,
399 0xE4,0xFF,0xFE,0xFD,0x80,0x26,0x7F,0xFF,
400 0x7E,0xFF,0x7D,0x05,0x7C,0x00,0x90,0x06,
401 0x24,0x12,0x01,0x0F,0xC3,0x12,0x00,0xF2,
402 0x50,0x1B,0x90,0x06,0x24,0x12,0x01,0x03,
403 0xEF,0x24,0x01,0xFF,0xE4,0x3E,0xFE,0xE4,
404 0x3D,0xFD,0xE4,0x3C,0xFC,0x90,0x06,0x24,
405 0x12,0x01,0x1B,0x80,0xD1,0xC2,0x00,0xC2,
406 0x01,0xD2,0xA9,0xD2,0x8C,0x7F,0x01,0x7E,
407 0x62,0x12,0x07,0x60,0xEF,0x30,0xE2,0x07,
408 0xE4,0x90,0x06,0x2C,0xF0,0x80,0xEE,0x90,
409 0x06,0x2C,0xE0,0x70,0x12,0x12,0x04,0xEA,
410 0x90,0x06,0x2C,0x74,0x01,0xF0,0xE4,0x90,
411 0x06,0x33,0xF0,0xA3,0xF0,0x80,0xD6,0xC3,
412 0x90,0x06,0x34,0xE0,0x94,0x62,0x90,0x06,
413 0x33,0xE0,0x94,0x00,0x40,0xC7,0xE4,0xF0,
414 0xA3,0xF0,0x12,0x04,0xEA,0x90,0x06,0x2C,
415 0x74,0x01,0xF0,0x80,0xB8,0x75,0x0F,0x80,
416 0x75,0x0E,0x7E,0x75,0x0D,0xAA,0x75,0x0C,
417 0x83,0xE4,0xF5,0x10,0x7F,0x36,0x7E,0x13,
418 0x12,0x07,0x60,0xEE,0xC4,0xF8,0x54,0xF0,
419 0xC8,0xEF,0xC4,0x54,0x0F,0x48,0x54,0x07,
420 0xFB,0x7A,0x00,0xEA,0x70,0x4A,0xEB,0x14,
421 0x60,0x1C,0x14,0x60,0x27,0x24,0xFE,0x60,
422 0x31,0x14,0x60,0x3C,0x24,0x05,0x70,0x38,
423 0x75,0x0B,0x00,0x75,0x0A,0xC2,0x75,0x09,
424 0xEB,0x75,0x08,0x0B,0x80,0x36,0x75,0x0B,
425 0x40,0x75,0x0A,0x59,0x75,0x09,0x73,0x75,
426 0x08,0x07,0x80,0x28,0x75,0x0B,0x00,0x75,
427 0x0A,0xE1,0x75,0x09,0xF5,0x75,0x08,0x05,
428 0x80,0x1A,0x75,0x0B,0xA0,0x75,0x0A,0xAC,
429 0x75,0x09,0xB9,0x75,0x08,0x03,0x80,0x0C,
430 0x75,0x0B,0x00,0x75,0x0A,0x62,0x75,0x09,
431 0x3D,0x75,0x08,0x01,0x75,0x89,0x11,0xE4,
432 0x7B,0x60,0x7A,0x09,0xF9,0xF8,0xAF,0x0B,
433 0xAE,0x0A,0xAD,0x09,0xAC,0x08,0x12,0x00,
434 0x60,0xAA,0x06,0xAB,0x07,0xC3,0xE4,0x9B,
435 0xFB,0xE4,0x9A,0xFA,0x78,0x17,0xF6,0xAF,
436 0x03,0xEF,0x08,0xF6,0x18,0xE6,0xF5,0x8C,
437 0x08,0xE6,0xF5,0x8A,0x74,0x0D,0x2B,0xFB,
438 0xE4,0x3A,0x18,0xF6,0xAF,0x03,0xEF,0x08,
439 0xF6,0x75,0x88,0x10,0x53,0x8E,0xC7,0xD2,
440 0xA9,0x22,0x7F,0x10,0x7E,0x13,0x12,0x07,
441 0x60,0x90,0x06,0x2D,0xEE,0xF0,0xA3,0xEF,
442 0xF0,0xEE,0x44,0x10,0xFE,0x90,0x06,0x2D,
443 0xF0,0xA3,0xEF,0xF0,0x54,0xEF,0xFF,0x90,
444 0x06,0x2D,0xEE,0xF0,0xFC,0xA3,0xEF,0xF0,
445 0xFD,0x7F,0x10,0x7E,0x13,0x12,0x07,0xA5,
446 0xE4,0xFF,0xFE,0x0F,0xBF,0x00,0x01,0x0E,
447 0xEF,0x64,0x64,0x4E,0x70,0xF5,0x7D,0x04,
448 0x7C,0x00,0x7F,0x02,0x7E,0x66,0x12,0x07,
449 0xA5,0x7D,0x00,0x7C,0x04,0x7F,0x01,0x7E,
450 0x66,0x12,0x07,0xA5,0x7D,0xC0,0x7C,0x00,
451 0x7F,0x00,0x7E,0x66,0x12,0x07,0xA5,0xE4,
452 0xFD,0xFC,0x7F,0x02,0x7E,0x66,0x12,0x07,
453 0xA5,0x7D,0x00,0x7C,0x04,0x7F,0x01,0x7E,
454 0x66,0x12,0x07,0xA5,0x7D,0xC0,0x7C,0x00,
455 0x7F,0x00,0x7E,0x66,0x12,0x07,0xA5,0x7F,
456 0x10,0x7E,0x13,0x12,0x07,0x60,0x90,0x06,
457 0x2D,0xEE,0xF0,0xA3,0xEF,0xF0,0xEE,0x54,
458 0xEF,0x90,0x06,0x2D,0xF0,0xFC,0xA3,0xEF,
459 0xF0,0xFD,0x7F,0x10,0x7E,0x13,0x02,0x07,
460 0xA5,0x78,0x7F,0xE4,0xF6,0xD8,0xFD,0x75,
461 0x81,0x3C,0x02,0x05,0xD0,0x02,0x03,0x2F,
462 0xE4,0x93,0xA3,0xF8,0xE4,0x93,0xA3,0x40,
463 0x03,0xF6,0x80,0x01,0xF2,0x08,0xDF,0xF4,
464 0x80,0x29,0xE4,0x93,0xA3,0xF8,0x54,0x07,
465 0x24,0x0C,0xC8,0xC3,0x33,0xC4,0x54,0x0F,
466 0x44,0x20,0xC8,0x83,0x40,0x04,0xF4,0x56,
467 0x80,0x01,0x46,0xF6,0xDF,0xE4,0x80,0x0B,
468 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,
469 0x90,0x07,0xE1,0xE4,0x7E,0x01,0x93,0x60,
470 0xBC,0xA3,0xFF,0x54,0x3F,0x30,0xE5,0x09,
471 0x54,0x1F,0xFE,0xE4,0x93,0xA3,0x60,0x01,
472 0x0E,0xCF,0x54,0xC0,0x25,0xE0,0x60,0xA8,
473 0x40,0xB8,0xE4,0x93,0xA3,0xFA,0xE4,0x93,
474 0xA3,0xF8,0xE4,0x93,0xA3,0xC8,0xC5,0x82,
475 0xC8,0xCA,0xC5,0x83,0xCA,0xF0,0xA3,0xC8,
476 0xC5,0x82,0xC8,0xCA,0xC5,0x83,0xCA,0xDF,
477 0xE9,0xDE,0xE7,0x80,0xBE,0x7D,0x40,0x7C,
478 0x17,0x7F,0x11,0x7E,0x1D,0x12,0x07,0xA5,
479 0x7F,0x41,0x7E,0x1D,0x12,0x07,0x60,0xEF,
480 0x44,0x20,0x44,0x80,0xFD,0xAC,0x06,0x7F,
481 0x41,0x7E,0x1D,0x12,0x07,0xA5,0x7D,0xBB,
482 0x7C,0x15,0x7F,0xEB,0x7E,0x13,0x12,0x07,
483 0xA5,0x7D,0x07,0x7C,0x00,0x7F,0xE7,0x7E,
484 0x13,0x12,0x07,0xA5,0x7D,0x40,0x7C,0x11,
485 0x7F,0x00,0x7E,0x62,0x12,0x07,0xA5,0x02,
486 0x02,0x2F,0x7D,0xC0,0x7C,0x16,0x7F,0x11,
487 0x7E,0x1D,0x12,0x07,0xA5,0x7D,0xBB,0x7C,
488 0x15,0x7F,0xEB,0x7E,0x13,0x12,0x07,0xA5,
489 0x7D,0x0D,0x7C,0x00,0x7F,0xE7,0x7E,0x13,
490 0x12,0x07,0xA5,0x7F,0x41,0x7E,0x1D,0x12,
491 0x07,0x60,0xEF,0x44,0x20,0x44,0x80,0xFD,
492 0xAC,0x06,0x7F,0x41,0x7E,0x1D,0x12,0x07,
493 0xA5,0x7D,0x00,0x7C,0x21,0x7F,0x00,0x7E,
494 0x62,0x12,0x07,0xA5,0x02,0x02,0x2F,0x7D,
495 0x40,0x7C,0x17,0x7F,0x11,0x7E,0x1D,0x12,
496 0x07,0xA5,0x7D,0xBB,0x7C,0x15,0x7F,0xEB,
497 0x7E,0x13,0x12,0x07,0xA5,0x7D,0x0C,0x7C,
498 0x00,0x7F,0xE7,0x7E,0x13,0x12,0x07,0xA5,
499 0x7F,0x41,0x7E,0x1D,0x12,0x07,0x60,0xEF,
500 0x44,0x20,0x44,0x80,0xFD,0xAC,0x06,0x7F,
501 0x41,0x7E,0x1D,0x12,0x07,0xA5,0x7D,0x40,
502 0x7C,0x11,0x7F,0x00,0x7E,0x62,0x12,0x07,
503 0xA5,0x02,0x02,0x2F,0x7D,0x04,0x7C,0x00,
504 0x7F,0x01,0x7E,0x66,0x12,0x07,0xA5,0x7D,
505 0x80,0x7C,0x00,0x7F,0x00,0x7E,0x66,0x12,
506 0x07,0xA5,0x7F,0x02,0x7E,0x66,0x12,0x07,
507 0x60,0xEF,0x44,0x02,0x44,0x04,0xFD,0xAC,
508 0x06,0x7F,0x02,0x7E,0x66,0x12,0x07,0xA5,
509 0x7D,0x04,0x7C,0x00,0x7F,0x01,0x7E,0x66,
510 0x12,0x07,0xA5,0x7D,0xC0,0x7C,0x00,0x7F,
511 0x00,0x7E,0x66,0x02,0x07,0xA5,0xC0,0xE0,
512 0xC0,0xF0,0xC0,0x83,0xC0,0x82,0xC0,0xD0,
513 0x75,0xD0,0x00,0xC0,0x00,0x78,0x17,0xE6,
514 0xF5,0x8C,0x78,0x18,0xE6,0xF5,0x8A,0x90,
515 0x06,0x31,0xE4,0x75,0xF0,0x01,0x12,0x00,
516 0x0E,0x90,0x06,0x33,0xE4,0x75,0xF0,0x01,
517 0x12,0x00,0x0E,0xD0,0x00,0xD0,0xD0,0xD0,
518 0x82,0xD0,0x83,0xD0,0xF0,0xD0,0xE0,0x32,
519 0xC2,0xAF,0xAD,0x07,0xAC,0x06,0x8C,0xA2,
520 0x8D,0xA3,0x75,0xA0,0x01,0x00,0x00,0x00,
521 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
522 0xAE,0xA1,0xBE,0x00,0xF0,0xAE,0xA6,0xAF,
523 0xA7,0xD2,0xAF,0x22,0x7D,0x20,0x7C,0x0F,
524 0x7F,0x02,0x7E,0x66,0x12,0x07,0xA5,0x7D,
525 0x01,0x7C,0x00,0x7F,0x01,0x7E,0x66,0x12,
526 0x07,0xA5,0x7D,0xC0,0x7C,0x00,0x7F,0x00,
527 0x7E,0x66,0x02,0x07,0xA5,0xC2,0xAF,0xAB,
528 0x07,0xAA,0x06,0x8A,0xA2,0x8B,0xA3,0x8C,
529 0xA4,0x8D,0xA5,0x75,0xA0,0x03,0x00,0x00,
530 0x00,0xAA,0xA1,0xBA,0x00,0xF8,0xD2,0xAF,
531 0x22,0x7F,0x0C,0x7E,0x13,0x12,0x07,0x60,
532 0xEF,0x44,0x50,0xFD,0xAC,0x06,0x7F,0x0C,
533 0x7E,0x13,0x02,0x07,0xA5,0x12,0x07,0xC1,
534 0x12,0x07,0xEC,0x12,0x04,0x25,0x02,0x00,
535 0x03,0x42,0x06,0x33,0x00,0x00,0x42,0x06,
536 0x31,0x00,0x00,0x00,0xE4,0xF5,0x8E,0x22,};
538 #define FIBER2_100M_INIT_SIZE 2032
539 rtk_uint8 Fiber2_100M
[FIBER2_100M_INIT_SIZE
] = {
540 0x02,0x05,0x89,0xE4,0xF5,0xA8,0xD2,0xAF,
541 0x22,0x00,0x00,0x02,0x07,0x26,0xC5,0xF0,
542 0xF8,0xA3,0xE0,0x28,0xF0,0xC5,0xF0,0xF8,
543 0xE5,0x82,0x15,0x82,0x70,0x02,0x15,0x83,
544 0xE0,0x38,0xF0,0x22,0x75,0xF0,0x08,0x75,
545 0x82,0x00,0xEF,0x2F,0xFF,0xEE,0x33,0xFE,
546 0xCD,0x33,0xCD,0xCC,0x33,0xCC,0xC5,0x82,
547 0x33,0xC5,0x82,0x9B,0xED,0x9A,0xEC,0x99,
548 0xE5,0x82,0x98,0x40,0x0C,0xF5,0x82,0xEE,
549 0x9B,0xFE,0xED,0x9A,0xFD,0xEC,0x99,0xFC,
550 0x0F,0xD5,0xF0,0xD6,0xE4,0xCE,0xFB,0xE4,
551 0xCD,0xFA,0xE4,0xCC,0xF9,0xA8,0x82,0x22,
552 0xB8,0x00,0xC1,0xB9,0x00,0x59,0xBA,0x00,
553 0x2D,0xEC,0x8B,0xF0,0x84,0xCF,0xCE,0xCD,
554 0xFC,0xE5,0xF0,0xCB,0xF9,0x78,0x18,0xEF,
555 0x2F,0xFF,0xEE,0x33,0xFE,0xED,0x33,0xFD,
556 0xEC,0x33,0xFC,0xEB,0x33,0xFB,0x10,0xD7,
557 0x03,0x99,0x40,0x04,0xEB,0x99,0xFB,0x0F,
558 0xD8,0xE5,0xE4,0xF9,0xFA,0x22,0x78,0x18,
559 0xEF,0x2F,0xFF,0xEE,0x33,0xFE,0xED,0x33,
560 0xFD,0xEC,0x33,0xFC,0xC9,0x33,0xC9,0x10,
561 0xD7,0x05,0x9B,0xE9,0x9A,0x40,0x07,0xEC,
562 0x9B,0xFC,0xE9,0x9A,0xF9,0x0F,0xD8,0xE0,
563 0xE4,0xC9,0xFA,0xE4,0xCC,0xFB,0x22,0x75,
564 0xF0,0x10,0xEF,0x2F,0xFF,0xEE,0x33,0xFE,
565 0xED,0x33,0xFD,0xCC,0x33,0xCC,0xC8,0x33,
566 0xC8,0x10,0xD7,0x07,0x9B,0xEC,0x9A,0xE8,
567 0x99,0x40,0x0A,0xED,0x9B,0xFD,0xEC,0x9A,
568 0xFC,0xE8,0x99,0xF8,0x0F,0xD5,0xF0,0xDA,
569 0xE4,0xCD,0xFB,0xE4,0xCC,0xFA,0xE4,0xC8,
570 0xF9,0x22,0xEB,0x9F,0xF5,0xF0,0xEA,0x9E,
571 0x42,0xF0,0xE9,0x9D,0x42,0xF0,0xE8,0x9C,
572 0x45,0xF0,0x22,0xE0,0xFC,0xA3,0xE0,0xFD,
573 0xA3,0xE0,0xFE,0xA3,0xE0,0xFF,0x22,0xE0,
574 0xF8,0xA3,0xE0,0xF9,0xA3,0xE0,0xFA,0xA3,
575 0xE0,0xFB,0x22,0xEC,0xF0,0xA3,0xED,0xF0,
576 0xA3,0xEE,0xF0,0xA3,0xEF,0xF0,0x22,0x7D,
577 0xD7,0x7C,0x04,0x7F,0x02,0x7E,0x66,0x12,
578 0x07,0xA5,0x7D,0x80,0x7C,0x04,0x7F,0x01,
579 0x7E,0x66,0x12,0x07,0xA5,0x7D,0xC0,0x7C,
580 0x00,0x7F,0x00,0x7E,0x66,0x12,0x07,0xA5,
581 0x7D,0x94,0x7C,0xF9,0x7F,0x02,0x7E,0x66,
582 0x12,0x07,0xA5,0x7D,0x81,0x7C,0x04,0x7F,
583 0x01,0x7E,0x66,0x12,0x07,0xA5,0x7D,0xC0,
584 0x7C,0x00,0x7F,0x00,0x7E,0x66,0x12,0x07,
585 0xA5,0x7D,0xA2,0x7C,0x31,0x7F,0x02,0x7E,
586 0x66,0x12,0x07,0xA5,0x7D,0x82,0x7C,0x04,
587 0x7F,0x01,0x7E,0x66,0x12,0x07,0xA5,0x7D,
588 0xC0,0x7C,0x00,0x7F,0x00,0x7E,0x66,0x12,
589 0x07,0xA5,0x7D,0x60,0x7C,0x69,0x7F,0x02,
590 0x7E,0x66,0x12,0x07,0xA5,0x7D,0x83,0x7C,
591 0x04,0x7F,0x01,0x7E,0x66,0x12,0x07,0xA5,
592 0x7D,0xC0,0x7C,0x00,0x7F,0x00,0x7E,0x66,
593 0x12,0x07,0xA5,0x7D,0x28,0x7C,0x97,0x7F,
594 0x02,0x7E,0x66,0x12,0x07,0xA5,0x7D,0x84,
595 0x7C,0x04,0x7F,0x01,0x7E,0x66,0x12,0x07,
596 0xA5,0x7D,0xC0,0x7C,0x00,0x7F,0x00,0x7E,
597 0x66,0x12,0x07,0xA5,0x7D,0x85,0x7C,0x9D,
598 0x7F,0x02,0x7E,0x66,0x12,0x07,0xA5,0x7D,
599 0x23,0x7C,0x04,0x7F,0x01,0x7E,0x66,0x12,
600 0x07,0xA5,0x7D,0xC0,0x7C,0x00,0x7F,0x00,
601 0x7E,0x66,0x12,0x07,0xA5,0x7D,0x10,0x7C,
602 0xD8,0x7F,0x02,0x7E,0x66,0x12,0x07,0xA5,
603 0x7D,0x24,0x7C,0x04,0x7F,0x01,0x7E,0x66,
604 0x12,0x07,0xA5,0x7D,0xC0,0x7C,0x00,0x7F,
605 0x00,0x7E,0x66,0x12,0x07,0xA5,0x7D,0x00,
606 0x7C,0x04,0x7F,0x02,0x7E,0x66,0x12,0x07,
607 0xA5,0x7D,0x2F,0x7C,0x00,0x7F,0x01,0x7E,
608 0x66,0x12,0x07,0xA5,0x7D,0xC0,0x7C,0x00,
609 0x7F,0x00,0x7E,0x66,0x02,0x07,0xA5,0x7D,
610 0x03,0x7C,0x00,0x7F,0x01,0x7E,0x66,0x12,
611 0x07,0xA5,0x7D,0x80,0x7C,0x00,0x7F,0x00,
612 0x7E,0x66,0x12,0x07,0xA5,0x7F,0x02,0x7E,
613 0x66,0x12,0x07,0x60,0xEF,0x44,0x40,0xFD,
614 0xAC,0x06,0x7F,0x02,0x7E,0x66,0x12,0x07,
615 0xA5,0x7D,0x03,0x7C,0x00,0x7F,0x01,0x7E,
616 0x66,0x12,0x07,0xA5,0x7D,0xC0,0x7C,0x00,
617 0x7F,0x00,0x7E,0x66,0x12,0x07,0xA5,0x7D,
618 0x03,0x7C,0x00,0x7F,0x01,0x7E,0x66,0x12,
619 0x07,0xA5,0x7D,0x80,0x7C,0x00,0x7F,0x00,
620 0x7E,0x66,0x12,0x07,0xA5,0x7F,0x02,0x7E,
621 0x66,0x12,0x07,0x60,0xEF,0x54,0xBF,0xFD,
622 0xAC,0x06,0x7F,0x02,0x7E,0x66,0x12,0x07,
623 0xA5,0x7D,0x03,0x7C,0x00,0x7F,0x01,0x7E,
624 0x66,0x12,0x07,0xA5,0x7D,0xC0,0x7C,0x00,
625 0x7F,0x00,0x7E,0x66,0x12,0x07,0xA5,0xE4,
626 0xFD,0xFC,0x7F,0x01,0x7E,0x66,0x12,0x07,
627 0xA5,0x7D,0x80,0x7C,0x00,0x7F,0x00,0x7E,
628 0x66,0x12,0x07,0xA5,0x7F,0x02,0x7E,0x66,
629 0x12,0x07,0x60,0xEF,0x54,0xFD,0x54,0xFE,
630 0xFD,0xAC,0x06,0x7F,0x02,0x7E,0x66,0x12,
631 0x07,0xA5,0xE4,0xFD,0xFC,0x7F,0x01,0x7E,
632 0x66,0x12,0x07,0xA5,0x7D,0xC0,0x7C,0x00,
633 0x7F,0x00,0x7E,0x66,0x12,0x07,0xA5,0xE4,
634 0xFD,0xFC,0x7F,0x01,0x7E,0x66,0x12,0x07,
635 0xA5,0x7D,0x80,0x7C,0x00,0x7F,0x00,0x7E,
636 0x66,0x12,0x07,0xA5,0x7F,0x02,0x7E,0x66,
637 0x12,0x07,0x60,0xEF,0x44,0x02,0x44,0x01,
638 0xFD,0xAC,0x06,0x7F,0x02,0x7E,0x66,0x12,
639 0x07,0xA5,0xE4,0xFD,0xFC,0x7F,0x01,0x7E,
640 0x66,0x12,0x07,0xA5,0x7D,0xC0,0x7C,0x00,
641 0x7F,0x00,0x7E,0x66,0x02,0x07,0xA5,0xE4,
642 0x90,0x06,0x2C,0xF0,0xFD,0x7C,0x01,0x7F,
643 0x3F,0x7E,0x1D,0x12,0x07,0xA5,0x7D,0x40,
644 0x7C,0x00,0x7F,0x36,0x7E,0x13,0x12,0x07,
645 0xA5,0xE4,0xFF,0xFE,0xFD,0x80,0x25,0xE4,
646 0x7F,0xFF,0x7E,0xFF,0xFD,0xFC,0x90,0x06,
647 0x24,0x12,0x01,0x0F,0xC3,0x12,0x00,0xF2,
648 0x50,0x1B,0x90,0x06,0x24,0x12,0x01,0x03,
649 0xEF,0x24,0x01,0xFF,0xE4,0x3E,0xFE,0xE4,
650 0x3D,0xFD,0xE4,0x3C,0xFC,0x90,0x06,0x24,
651 0x12,0x01,0x1B,0x80,0xD2,0xE4,0xF5,0xA8,
652 0xD2,0xAF,0x7D,0x1F,0xFC,0x7F,0x49,0x7E,
653 0x13,0x12,0x07,0xA5,0x12,0x07,0xD5,0x12,
654 0x01,0x27,0x12,0x06,0x5A,0x7D,0x41,0x7C,
655 0x00,0x7F,0x36,0x7E,0x13,0x12,0x07,0xA5,
656 0xE4,0xFF,0xFE,0xFD,0x80,0x26,0x7F,0xFF,
657 0x7E,0xFF,0x7D,0x05,0x7C,0x00,0x90,0x06,
658 0x24,0x12,0x01,0x0F,0xC3,0x12,0x00,0xF2,
659 0x50,0x1B,0x90,0x06,0x24,0x12,0x01,0x03,
660 0xEF,0x24,0x01,0xFF,0xE4,0x3E,0xFE,0xE4,
661 0x3D,0xFD,0xE4,0x3C,0xFC,0x90,0x06,0x24,
662 0x12,0x01,0x1B,0x80,0xD1,0xC2,0x00,0xC2,
663 0x01,0xD2,0xA9,0xD2,0x8C,0x7F,0x01,0x7E,
664 0x62,0x12,0x07,0x60,0xEF,0x30,0xE2,0x07,
665 0xE4,0x90,0x06,0x2C,0xF0,0x80,0xEE,0x90,
666 0x06,0x2C,0xE0,0x70,0x12,0x12,0x04,0xEA,
667 0x90,0x06,0x2C,0x74,0x01,0xF0,0xE4,0x90,
668 0x06,0x33,0xF0,0xA3,0xF0,0x80,0xD6,0xC3,
669 0x90,0x06,0x34,0xE0,0x94,0x62,0x90,0x06,
670 0x33,0xE0,0x94,0x00,0x40,0xC7,0xE4,0xF0,
671 0xA3,0xF0,0x12,0x04,0xEA,0x90,0x06,0x2C,
672 0x74,0x01,0xF0,0x80,0xB8,0x75,0x0F,0x80,
673 0x75,0x0E,0x7E,0x75,0x0D,0xAA,0x75,0x0C,
674 0x83,0xE4,0xF5,0x10,0x7F,0x36,0x7E,0x13,
675 0x12,0x07,0x60,0xEE,0xC4,0xF8,0x54,0xF0,
676 0xC8,0xEF,0xC4,0x54,0x0F,0x48,0x54,0x07,
677 0xFB,0x7A,0x00,0xEA,0x70,0x4A,0xEB,0x14,
678 0x60,0x1C,0x14,0x60,0x27,0x24,0xFE,0x60,
679 0x31,0x14,0x60,0x3C,0x24,0x05,0x70,0x38,
680 0x75,0x0B,0x00,0x75,0x0A,0xC2,0x75,0x09,
681 0xEB,0x75,0x08,0x0B,0x80,0x36,0x75,0x0B,
682 0x40,0x75,0x0A,0x59,0x75,0x09,0x73,0x75,
683 0x08,0x07,0x80,0x28,0x75,0x0B,0x00,0x75,
684 0x0A,0xE1,0x75,0x09,0xF5,0x75,0x08,0x05,
685 0x80,0x1A,0x75,0x0B,0xA0,0x75,0x0A,0xAC,
686 0x75,0x09,0xB9,0x75,0x08,0x03,0x80,0x0C,
687 0x75,0x0B,0x00,0x75,0x0A,0x62,0x75,0x09,
688 0x3D,0x75,0x08,0x01,0x75,0x89,0x11,0xE4,
689 0x7B,0x60,0x7A,0x09,0xF9,0xF8,0xAF,0x0B,
690 0xAE,0x0A,0xAD,0x09,0xAC,0x08,0x12,0x00,
691 0x60,0xAA,0x06,0xAB,0x07,0xC3,0xE4,0x9B,
692 0xFB,0xE4,0x9A,0xFA,0x78,0x17,0xF6,0xAF,
693 0x03,0xEF,0x08,0xF6,0x18,0xE6,0xF5,0x8C,
694 0x08,0xE6,0xF5,0x8A,0x74,0x0D,0x2B,0xFB,
695 0xE4,0x3A,0x18,0xF6,0xAF,0x03,0xEF,0x08,
696 0xF6,0x75,0x88,0x10,0x53,0x8E,0xC7,0xD2,
697 0xA9,0x22,0x7F,0x10,0x7E,0x13,0x12,0x07,
698 0x60,0x90,0x06,0x2D,0xEE,0xF0,0xA3,0xEF,
699 0xF0,0xEE,0x44,0x10,0xFE,0x90,0x06,0x2D,
700 0xF0,0xA3,0xEF,0xF0,0x54,0xEF,0xFF,0x90,
701 0x06,0x2D,0xEE,0xF0,0xFC,0xA3,0xEF,0xF0,
702 0xFD,0x7F,0x10,0x7E,0x13,0x12,0x07,0xA5,
703 0xE4,0xFF,0xFE,0x0F,0xBF,0x00,0x01,0x0E,
704 0xEF,0x64,0x64,0x4E,0x70,0xF5,0x7D,0x04,
705 0x7C,0x00,0x7F,0x02,0x7E,0x66,0x12,0x07,
706 0xA5,0x7D,0x00,0x7C,0x04,0x7F,0x01,0x7E,
707 0x66,0x12,0x07,0xA5,0x7D,0xC0,0x7C,0x00,
708 0x7F,0x00,0x7E,0x66,0x12,0x07,0xA5,0xE4,
709 0xFD,0xFC,0x7F,0x02,0x7E,0x66,0x12,0x07,
710 0xA5,0x7D,0x00,0x7C,0x04,0x7F,0x01,0x7E,
711 0x66,0x12,0x07,0xA5,0x7D,0xC0,0x7C,0x00,
712 0x7F,0x00,0x7E,0x66,0x12,0x07,0xA5,0x7F,
713 0x10,0x7E,0x13,0x12,0x07,0x60,0x90,0x06,
714 0x2D,0xEE,0xF0,0xA3,0xEF,0xF0,0xEE,0x54,
715 0xEF,0x90,0x06,0x2D,0xF0,0xFC,0xA3,0xEF,
716 0xF0,0xFD,0x7F,0x10,0x7E,0x13,0x02,0x07,
717 0xA5,0x78,0x7F,0xE4,0xF6,0xD8,0xFD,0x75,
718 0x81,0x3C,0x02,0x05,0xD0,0x02,0x03,0x2F,
719 0xE4,0x93,0xA3,0xF8,0xE4,0x93,0xA3,0x40,
720 0x03,0xF6,0x80,0x01,0xF2,0x08,0xDF,0xF4,
721 0x80,0x29,0xE4,0x93,0xA3,0xF8,0x54,0x07,
722 0x24,0x0C,0xC8,0xC3,0x33,0xC4,0x54,0x0F,
723 0x44,0x20,0xC8,0x83,0x40,0x04,0xF4,0x56,
724 0x80,0x01,0x46,0xF6,0xDF,0xE4,0x80,0x0B,
725 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,
726 0x90,0x07,0xE1,0xE4,0x7E,0x01,0x93,0x60,
727 0xBC,0xA3,0xFF,0x54,0x3F,0x30,0xE5,0x09,
728 0x54,0x1F,0xFE,0xE4,0x93,0xA3,0x60,0x01,
729 0x0E,0xCF,0x54,0xC0,0x25,0xE0,0x60,0xA8,
730 0x40,0xB8,0xE4,0x93,0xA3,0xFA,0xE4,0x93,
731 0xA3,0xF8,0xE4,0x93,0xA3,0xC8,0xC5,0x82,
732 0xC8,0xCA,0xC5,0x83,0xCA,0xF0,0xA3,0xC8,
733 0xC5,0x82,0xC8,0xCA,0xC5,0x83,0xCA,0xDF,
734 0xE9,0xDE,0xE7,0x80,0xBE,0x7D,0x40,0x7C,
735 0x17,0x7F,0x11,0x7E,0x1D,0x12,0x07,0xA5,
736 0x7F,0x41,0x7E,0x1D,0x12,0x07,0x60,0xEF,
737 0x44,0x20,0x44,0x80,0xFD,0xAC,0x06,0x7F,
738 0x41,0x7E,0x1D,0x12,0x07,0xA5,0x7D,0xBB,
739 0x7C,0x15,0x7F,0xEB,0x7E,0x13,0x12,0x07,
740 0xA5,0x7D,0x07,0x7C,0x00,0x7F,0xE7,0x7E,
741 0x13,0x12,0x07,0xA5,0x7D,0x40,0x7C,0x11,
742 0x7F,0x00,0x7E,0x62,0x12,0x07,0xA5,0x02,
743 0x02,0x2F,0x7D,0xC0,0x7C,0x16,0x7F,0x11,
744 0x7E,0x1D,0x12,0x07,0xA5,0x7D,0xBB,0x7C,
745 0x15,0x7F,0xEB,0x7E,0x13,0x12,0x07,0xA5,
746 0x7D,0x0D,0x7C,0x00,0x7F,0xE7,0x7E,0x13,
747 0x12,0x07,0xA5,0x7F,0x41,0x7E,0x1D,0x12,
748 0x07,0x60,0xEF,0x44,0x20,0x44,0x80,0xFD,
749 0xAC,0x06,0x7F,0x41,0x7E,0x1D,0x12,0x07,
750 0xA5,0x7D,0x00,0x7C,0x21,0x7F,0x00,0x7E,
751 0x62,0x12,0x07,0xA5,0x02,0x02,0x2F,0x7D,
752 0x40,0x7C,0x17,0x7F,0x11,0x7E,0x1D,0x12,
753 0x07,0xA5,0x7D,0xBB,0x7C,0x15,0x7F,0xEB,
754 0x7E,0x13,0x12,0x07,0xA5,0x7D,0x0C,0x7C,
755 0x00,0x7F,0xE7,0x7E,0x13,0x12,0x07,0xA5,
756 0x7F,0x41,0x7E,0x1D,0x12,0x07,0x60,0xEF,
757 0x44,0x20,0x44,0x80,0xFD,0xAC,0x06,0x7F,
758 0x41,0x7E,0x1D,0x12,0x07,0xA5,0x7D,0x40,
759 0x7C,0x11,0x7F,0x00,0x7E,0x62,0x12,0x07,
760 0xA5,0x02,0x02,0x2F,0x7D,0x04,0x7C,0x00,
761 0x7F,0x01,0x7E,0x66,0x12,0x07,0xA5,0x7D,
762 0x80,0x7C,0x00,0x7F,0x00,0x7E,0x66,0x12,
763 0x07,0xA5,0x7F,0x02,0x7E,0x66,0x12,0x07,
764 0x60,0xEF,0x44,0x02,0x44,0x04,0xFD,0xAC,
765 0x06,0x7F,0x02,0x7E,0x66,0x12,0x07,0xA5,
766 0x7D,0x04,0x7C,0x00,0x7F,0x01,0x7E,0x66,
767 0x12,0x07,0xA5,0x7D,0xC0,0x7C,0x00,0x7F,
768 0x00,0x7E,0x66,0x02,0x07,0xA5,0xC0,0xE0,
769 0xC0,0xF0,0xC0,0x83,0xC0,0x82,0xC0,0xD0,
770 0x75,0xD0,0x00,0xC0,0x00,0x78,0x17,0xE6,
771 0xF5,0x8C,0x78,0x18,0xE6,0xF5,0x8A,0x90,
772 0x06,0x31,0xE4,0x75,0xF0,0x01,0x12,0x00,
773 0x0E,0x90,0x06,0x33,0xE4,0x75,0xF0,0x01,
774 0x12,0x00,0x0E,0xD0,0x00,0xD0,0xD0,0xD0,
775 0x82,0xD0,0x83,0xD0,0xF0,0xD0,0xE0,0x32,
776 0xC2,0xAF,0xAD,0x07,0xAC,0x06,0x8C,0xA2,
777 0x8D,0xA3,0x75,0xA0,0x01,0x00,0x00,0x00,
778 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
779 0xAE,0xA1,0xBE,0x00,0xF0,0xAE,0xA6,0xAF,
780 0xA7,0xD2,0xAF,0x22,0x7D,0x20,0x7C,0x0F,
781 0x7F,0x02,0x7E,0x66,0x12,0x07,0xA5,0x7D,
782 0x01,0x7C,0x00,0x7F,0x01,0x7E,0x66,0x12,
783 0x07,0xA5,0x7D,0xC0,0x7C,0x00,0x7F,0x00,
784 0x7E,0x66,0x02,0x07,0xA5,0xC2,0xAF,0xAB,
785 0x07,0xAA,0x06,0x8A,0xA2,0x8B,0xA3,0x8C,
786 0xA4,0x8D,0xA5,0x75,0xA0,0x03,0x00,0x00,
787 0x00,0xAA,0xA1,0xBA,0x00,0xF8,0xD2,0xAF,
788 0x22,0x7F,0x0C,0x7E,0x13,0x12,0x07,0x60,
789 0xEF,0x44,0x50,0xFD,0xAC,0x06,0x7F,0x0C,
790 0x7E,0x13,0x02,0x07,0xA5,0x12,0x07,0xC1,
791 0x12,0x07,0xEC,0x12,0x04,0x25,0x02,0x00,
792 0x03,0x42,0x06,0x33,0x00,0x00,0x42,0x06,
793 0x31,0x00,0x00,0x00,0xE4,0xF5,0x8E,0x22,};
796 #define SGMII_INIT_SIZE 1183
797 rtk_uint8 Sgmii_Init
[SGMII_INIT_SIZE
] = {
798 0x02,0x03,0x81,0xE4,0xF5,0xA8,0xD2,0xAF,
799 0x22,0x00,0x00,0x02,0x04,0x0D,0xC5,0xF0,
800 0xF8,0xA3,0xE0,0x28,0xF0,0xC5,0xF0,0xF8,
801 0xE5,0x82,0x15,0x82,0x70,0x02,0x15,0x83,
802 0xE0,0x38,0xF0,0x22,0x75,0xF0,0x08,0x75,
803 0x82,0x00,0xEF,0x2F,0xFF,0xEE,0x33,0xFE,
804 0xCD,0x33,0xCD,0xCC,0x33,0xCC,0xC5,0x82,
805 0x33,0xC5,0x82,0x9B,0xED,0x9A,0xEC,0x99,
806 0xE5,0x82,0x98,0x40,0x0C,0xF5,0x82,0xEE,
807 0x9B,0xFE,0xED,0x9A,0xFD,0xEC,0x99,0xFC,
808 0x0F,0xD5,0xF0,0xD6,0xE4,0xCE,0xFB,0xE4,
809 0xCD,0xFA,0xE4,0xCC,0xF9,0xA8,0x82,0x22,
810 0xB8,0x00,0xC1,0xB9,0x00,0x59,0xBA,0x00,
811 0x2D,0xEC,0x8B,0xF0,0x84,0xCF,0xCE,0xCD,
812 0xFC,0xE5,0xF0,0xCB,0xF9,0x78,0x18,0xEF,
813 0x2F,0xFF,0xEE,0x33,0xFE,0xED,0x33,0xFD,
814 0xEC,0x33,0xFC,0xEB,0x33,0xFB,0x10,0xD7,
815 0x03,0x99,0x40,0x04,0xEB,0x99,0xFB,0x0F,
816 0xD8,0xE5,0xE4,0xF9,0xFA,0x22,0x78,0x18,
817 0xEF,0x2F,0xFF,0xEE,0x33,0xFE,0xED,0x33,
818 0xFD,0xEC,0x33,0xFC,0xC9,0x33,0xC9,0x10,
819 0xD7,0x05,0x9B,0xE9,0x9A,0x40,0x07,0xEC,
820 0x9B,0xFC,0xE9,0x9A,0xF9,0x0F,0xD8,0xE0,
821 0xE4,0xC9,0xFA,0xE4,0xCC,0xFB,0x22,0x75,
822 0xF0,0x10,0xEF,0x2F,0xFF,0xEE,0x33,0xFE,
823 0xED,0x33,0xFD,0xCC,0x33,0xCC,0xC8,0x33,
824 0xC8,0x10,0xD7,0x07,0x9B,0xEC,0x9A,0xE8,
825 0x99,0x40,0x0A,0xED,0x9B,0xFD,0xEC,0x9A,
826 0xFC,0xE8,0x99,0xF8,0x0F,0xD5,0xF0,0xDA,
827 0xE4,0xCD,0xFB,0xE4,0xCC,0xFA,0xE4,0xC8,
828 0xF9,0x22,0xEB,0x9F,0xF5,0xF0,0xEA,0x9E,
829 0x42,0xF0,0xE9,0x9D,0x42,0xF0,0xE8,0x9C,
830 0x45,0xF0,0x22,0xE0,0xFC,0xA3,0xE0,0xFD,
831 0xA3,0xE0,0xFE,0xA3,0xE0,0xFF,0x22,0xE0,
832 0xF8,0xA3,0xE0,0xF9,0xA3,0xE0,0xFA,0xA3,
833 0xE0,0xFB,0x22,0xEC,0xF0,0xA3,0xED,0xF0,
834 0xA3,0xEE,0xF0,0xA3,0xEF,0xF0,0x22,0xE4,
835 0x90,0x06,0x2C,0xF0,0xFD,0x7C,0x01,0x7F,
836 0x3F,0x7E,0x1D,0x12,0x04,0x6B,0x7D,0x40,
837 0x7C,0x00,0x7F,0x36,0x7E,0x13,0x12,0x04,
838 0x6B,0xE4,0xFF,0xFE,0xFD,0x80,0x25,0xE4,
839 0x7F,0xFF,0x7E,0xFF,0xFD,0xFC,0x90,0x06,
840 0x24,0x12,0x01,0x0F,0xC3,0x12,0x00,0xF2,
841 0x50,0x1B,0x90,0x06,0x24,0x12,0x01,0x03,
842 0xEF,0x24,0x01,0xFF,0xE4,0x3E,0xFE,0xE4,
843 0x3D,0xFD,0xE4,0x3C,0xFC,0x90,0x06,0x24,
844 0x12,0x01,0x1B,0x80,0xD2,0xE4,0xF5,0xA8,
845 0xD2,0xAF,0x7D,0x1F,0xFC,0x7F,0x49,0x7E,
846 0x13,0x12,0x04,0x6B,0x12,0x04,0x92,0x7D,
847 0x41,0x7C,0x00,0x7F,0x36,0x7E,0x13,0x12,
848 0x04,0x6B,0xE4,0xFF,0xFE,0xFD,0x80,0x25,
849 0xE4,0x7F,0x20,0x7E,0x4E,0xFD,0xFC,0x90,
850 0x06,0x24,0x12,0x01,0x0F,0xC3,0x12,0x00,
851 0xF2,0x50,0x1B,0x90,0x06,0x24,0x12,0x01,
852 0x03,0xEF,0x24,0x01,0xFF,0xE4,0x3E,0xFE,
853 0xE4,0x3D,0xFD,0xE4,0x3C,0xFC,0x90,0x06,
854 0x24,0x12,0x01,0x1B,0x80,0xD2,0xC2,0x00,
855 0xC2,0x01,0xD2,0xA9,0xD2,0x8C,0x7F,0x01,
856 0x7E,0x62,0x12,0x04,0x47,0xEF,0x30,0xE2,
857 0x07,0xE4,0x90,0x06,0x2C,0xF0,0x80,0xEE,
858 0x90,0x06,0x2C,0xE0,0x70,0x12,0x12,0x02,
859 0xDB,0x90,0x06,0x2C,0x74,0x01,0xF0,0xE4,
860 0x90,0x06,0x2F,0xF0,0xA3,0xF0,0x80,0xD6,
861 0xC3,0x90,0x06,0x30,0xE0,0x94,0x62,0x90,
862 0x06,0x2F,0xE0,0x94,0x00,0x40,0xC7,0xE4,
863 0xF0,0xA3,0xF0,0x12,0x02,0xDB,0x90,0x06,
864 0x2C,0x74,0x01,0xF0,0x80,0xB8,0x75,0x0F,
865 0x80,0x75,0x0E,0x7E,0x75,0x0D,0xAA,0x75,
866 0x0C,0x83,0xE4,0xF5,0x10,0x7F,0x36,0x7E,
867 0x13,0x12,0x04,0x47,0xEE,0xC4,0xF8,0x54,
868 0xF0,0xC8,0xEF,0xC4,0x54,0x0F,0x48,0x54,
869 0x07,0xFB,0x7A,0x00,0xEA,0x70,0x4A,0xEB,
870 0x14,0x60,0x1C,0x14,0x60,0x27,0x24,0xFE,
871 0x60,0x31,0x14,0x60,0x3C,0x24,0x05,0x70,
872 0x38,0x75,0x0B,0x00,0x75,0x0A,0xC2,0x75,
873 0x09,0xEB,0x75,0x08,0x0B,0x80,0x36,0x75,
874 0x0B,0x40,0x75,0x0A,0x59,0x75,0x09,0x73,
875 0x75,0x08,0x07,0x80,0x28,0x75,0x0B,0x00,
876 0x75,0x0A,0xE1,0x75,0x09,0xF5,0x75,0x08,
877 0x05,0x80,0x1A,0x75,0x0B,0xA0,0x75,0x0A,
878 0xAC,0x75,0x09,0xB9,0x75,0x08,0x03,0x80,
879 0x0C,0x75,0x0B,0x00,0x75,0x0A,0x62,0x75,
880 0x09,0x3D,0x75,0x08,0x01,0x75,0x89,0x11,
881 0xE4,0x7B,0x60,0x7A,0x09,0xF9,0xF8,0xAF,
882 0x0B,0xAE,0x0A,0xAD,0x09,0xAC,0x08,0x12,
883 0x00,0x60,0xAA,0x06,0xAB,0x07,0xC3,0xE4,
884 0x9B,0xFB,0xE4,0x9A,0xFA,0x78,0x17,0xF6,
885 0xAF,0x03,0xEF,0x08,0xF6,0x18,0xE6,0xF5,
886 0x8C,0x08,0xE6,0xF5,0x8A,0x74,0x0D,0x2B,
887 0xFB,0xE4,0x3A,0x18,0xF6,0xAF,0x03,0xEF,
888 0x08,0xF6,0x75,0x88,0x10,0x53,0x8E,0xC7,
889 0xD2,0xA9,0x22,0x7D,0x02,0x7C,0x00,0x7F,
890 0x4A,0x7E,0x13,0x12,0x04,0x6B,0x7D,0x46,
891 0x7C,0x71,0x7F,0x02,0x7E,0x66,0x12,0x04,
892 0x6B,0x7D,0x03,0x7C,0x00,0x7F,0x01,0x7E,
893 0x66,0x12,0x04,0x6B,0x7D,0xC0,0x7C,0x00,
894 0x7F,0x00,0x7E,0x66,0x12,0x04,0x6B,0xE4,
895 0xFF,0xFE,0x0F,0xBF,0x00,0x01,0x0E,0xEF,
896 0x64,0x64,0x4E,0x70,0xF5,0x7D,0x04,0x7C,
897 0x00,0x7F,0x02,0x7E,0x66,0x12,0x04,0x6B,
898 0x7D,0x00,0x7C,0x04,0x7F,0x01,0x7E,0x66,
899 0x12,0x04,0x6B,0x7D,0xC0,0x7C,0x00,0x7F,
900 0x00,0x7E,0x66,0x12,0x04,0x6B,0xE4,0xFD,
901 0xFC,0x7F,0x02,0x7E,0x66,0x12,0x04,0x6B,
902 0x7D,0x00,0x7C,0x04,0x7F,0x01,0x7E,0x66,
903 0x12,0x04,0x6B,0x7D,0xC0,0x7C,0x00,0x7F,
904 0x00,0x7E,0x66,0x12,0x04,0x6B,0xE4,0xFD,
905 0xFC,0x7F,0x4A,0x7E,0x13,0x12,0x04,0x6B,
906 0x7D,0x06,0x7C,0x71,0x7F,0x02,0x7E,0x66,
907 0x12,0x04,0x6B,0x7D,0x03,0x7C,0x00,0x7F,
908 0x01,0x7E,0x66,0x12,0x04,0x6B,0x7D,0xC0,
909 0x7C,0x00,0x7F,0x00,0x7E,0x66,0x02,0x04,
910 0x6B,0x78,0x7F,0xE4,0xF6,0xD8,0xFD,0x75,
911 0x81,0x3C,0x02,0x03,0xC8,0x02,0x01,0x27,
912 0xE4,0x93,0xA3,0xF8,0xE4,0x93,0xA3,0x40,
913 0x03,0xF6,0x80,0x01,0xF2,0x08,0xDF,0xF4,
914 0x80,0x29,0xE4,0x93,0xA3,0xF8,0x54,0x07,
915 0x24,0x0C,0xC8,0xC3,0x33,0xC4,0x54,0x0F,
916 0x44,0x20,0xC8,0x83,0x40,0x04,0xF4,0x56,
917 0x80,0x01,0x46,0xF6,0xDF,0xE4,0x80,0x0B,
918 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,
919 0x90,0x04,0x87,0xE4,0x7E,0x01,0x93,0x60,
920 0xBC,0xA3,0xFF,0x54,0x3F,0x30,0xE5,0x09,
921 0x54,0x1F,0xFE,0xE4,0x93,0xA3,0x60,0x01,
922 0x0E,0xCF,0x54,0xC0,0x25,0xE0,0x60,0xA8,
923 0x40,0xB8,0xE4,0x93,0xA3,0xFA,0xE4,0x93,
924 0xA3,0xF8,0xE4,0x93,0xA3,0xC8,0xC5,0x82,
925 0xC8,0xCA,0xC5,0x83,0xCA,0xF0,0xA3,0xC8,
926 0xC5,0x82,0xC8,0xCA,0xC5,0x83,0xCA,0xDF,
927 0xE9,0xDE,0xE7,0x80,0xBE,0xC0,0xE0,0xC0,
928 0xF0,0xC0,0x83,0xC0,0x82,0xC0,0xD0,0x75,
929 0xD0,0x00,0xC0,0x00,0x78,0x17,0xE6,0xF5,
930 0x8C,0x78,0x18,0xE6,0xF5,0x8A,0x90,0x06,
931 0x2D,0xE4,0x75,0xF0,0x01,0x12,0x00,0x0E,
932 0x90,0x06,0x2F,0xE4,0x75,0xF0,0x01,0x12,
933 0x00,0x0E,0xD0,0x00,0xD0,0xD0,0xD0,0x82,
934 0xD0,0x83,0xD0,0xF0,0xD0,0xE0,0x32,0xC2,
935 0xAF,0xAD,0x07,0xAC,0x06,0x8C,0xA2,0x8D,
936 0xA3,0x75,0xA0,0x01,0x00,0x00,0x00,0x00,
937 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xAE,
938 0xA1,0xBE,0x00,0xF0,0xAE,0xA6,0xAF,0xA7,
939 0xD2,0xAF,0x22,0xC2,0xAF,0xAB,0x07,0xAA,
940 0x06,0x8A,0xA2,0x8B,0xA3,0x8C,0xA4,0x8D,
941 0xA5,0x75,0xA0,0x03,0x00,0x00,0x00,0xAA,
942 0xA1,0xBA,0x00,0xF8,0xD2,0xAF,0x22,0x42,
943 0x06,0x2F,0x00,0x00,0x42,0x06,0x2D,0x00,
944 0x00,0x00,0x12,0x04,0x9B,0x12,0x02,0x16,
945 0x02,0x00,0x03,0xE4,0xF5,0x8E,0x22,};
949 * rtl8367c_setAsicPortUnknownDaBehavior
954 * behavior - 0: flooding to unknwon DA portmask; 1: drop; 2:trap; 3: flooding
958 * RT_ERR_OK - Success
959 * RT_ERR_SMI - SMI access error
960 * RT_ERR_NOT_ALLOWED - Invalid behavior
964 ret_t
rtl8367c_setAsicPortUnknownDaBehavior(rtk_uint32 port
, rtk_uint32 behavior
)
966 if(port
>= RTL8367C_PORTNO
)
967 return RT_ERR_PORT_ID
;
969 if(behavior
>= L2_UNDA_BEHAVE_END
)
970 return RT_ERR_NOT_ALLOWED
;
973 return rtl8367c_setAsicRegBits(RTL8367C_REG_UNKNOWN_UNICAST_DA_PORT_BEHAVE
, RTL8367C_Port0_ACTION_MASK
<< (port
* 2), behavior
);
975 return rtl8367c_setAsicRegBits(RTL8367C_REG_UNKNOWN_UNICAST_DA_PORT_BEHAVE_EXT
, RTL8367C_PORT8_ACTION_MASK
<< ((port
-8) * 2), behavior
);
978 * rtl8367c_getAsicPortUnknownDaBehavior
984 * pBehavior - 0: flooding to unknwon DA portmask; 1: drop; 2:trap; 3: flooding
986 * RT_ERR_OK - Success
987 * RT_ERR_SMI - SMI access error
991 ret_t
rtl8367c_getAsicPortUnknownDaBehavior(rtk_uint32 port
, rtk_uint32
*pBehavior
)
993 if(port
>= RTL8367C_PORTNO
)
994 return RT_ERR_PORT_ID
;
997 return rtl8367c_getAsicRegBits(RTL8367C_REG_UNKNOWN_UNICAST_DA_PORT_BEHAVE
, RTL8367C_Port0_ACTION_MASK
<< (port
* 2), pBehavior
);
999 return rtl8367c_getAsicRegBits(RTL8367C_REG_UNKNOWN_UNICAST_DA_PORT_BEHAVE_EXT
, RTL8367C_PORT8_ACTION_MASK
<< ((port
-8) * 2), pBehavior
);
1002 * rtl8367c_setAsicPortUnknownSaBehavior
1006 * behavior - 0: flooding; 1: drop; 2:trap
1010 * RT_ERR_OK - Success
1011 * RT_ERR_SMI - SMI access error
1012 * RT_ERR_NOT_ALLOWED - Invalid behavior
1016 ret_t
rtl8367c_setAsicPortUnknownSaBehavior(rtk_uint32 behavior
)
1018 if(behavior
>= L2_BEHAVE_SA_END
)
1019 return RT_ERR_NOT_ALLOWED
;
1021 return rtl8367c_setAsicRegBits(RTL8367C_PORT_SECURIT_CTRL_REG
, RTL8367C_UNKNOWN_SA_BEHAVE_MASK
, behavior
);
1024 * rtl8367c_getAsicPortUnknownSaBehavior
1028 * pBehavior - 0: flooding; 1: drop; 2:trap
1032 * RT_ERR_OK - Success
1033 * RT_ERR_SMI - SMI access error
1037 ret_t
rtl8367c_getAsicPortUnknownSaBehavior(rtk_uint32
*pBehavior
)
1039 return rtl8367c_getAsicRegBits(RTL8367C_PORT_SECURIT_CTRL_REG
, RTL8367C_UNKNOWN_SA_BEHAVE_MASK
, pBehavior
);
1042 * rtl8367c_setAsicPortUnmatchedSaBehavior
1044 * Set Unmatched SA behavior
1046 * behavior - 0: flooding; 1: drop; 2:trap
1050 * RT_ERR_OK - Success
1051 * RT_ERR_SMI - SMI access error
1052 * RT_ERR_NOT_ALLOWED - Invalid behavior
1056 ret_t
rtl8367c_setAsicPortUnmatchedSaBehavior(rtk_uint32 behavior
)
1058 if(behavior
>= L2_BEHAVE_SA_END
)
1059 return RT_ERR_NOT_ALLOWED
;
1061 return rtl8367c_setAsicRegBits(RTL8367C_PORT_SECURIT_CTRL_REG
, RTL8367C_UNMATCHED_SA_BEHAVE_MASK
, behavior
);
1064 * rtl8367c_getAsicPortUnmatchedSaBehavior
1066 * Get Unmatched SA behavior
1068 * pBehavior - 0: flooding; 1: drop; 2:trap
1072 * RT_ERR_OK - Success
1073 * RT_ERR_SMI - SMI access error
1077 ret_t
rtl8367c_getAsicPortUnmatchedSaBehavior(rtk_uint32
*pBehavior
)
1079 return rtl8367c_getAsicRegBits(RTL8367C_PORT_SECURIT_CTRL_REG
, RTL8367C_UNMATCHED_SA_BEHAVE_MASK
, pBehavior
);
1083 * rtl8367c_setAsicPortUnmatchedSaMoving
1085 * Set Unmatched SA moving state
1088 * enabled - 0: can't move to new port; 1: can move to new port
1092 * RT_ERR_OK - Success
1093 * RT_ERR_SMI - SMI access error
1094 * RT_ERR_PORT_ID - Error Port ID
1098 ret_t
rtl8367c_setAsicPortUnmatchedSaMoving(rtk_uint32 port
, rtk_uint32 enabled
)
1100 if(port
>= RTL8367C_PORTNO
)
1101 return RT_ERR_PORT_ID
;
1103 return rtl8367c_setAsicRegBit(RTL8367C_REG_L2_SA_MOVING_FORBID
, port
, (enabled
== 1) ? 0 : 1);
1107 * rtl8367c_getAsicPortUnmatchedSaMoving
1109 * Get Unmatched SA moving state
1113 * pEnabled - 0: can't move to new port; 1: can move to new port
1115 * RT_ERR_OK - Success
1116 * RT_ERR_SMI - SMI access error
1117 * RT_ERR_PORT_ID - Error Port ID
1121 ret_t
rtl8367c_getAsicPortUnmatchedSaMoving(rtk_uint32 port
, rtk_uint32
*pEnabled
)
1126 if(port
>= RTL8367C_PORTNO
)
1127 return RT_ERR_PORT_ID
;
1129 if((retVal
= rtl8367c_getAsicRegBit(RTL8367C_REG_L2_SA_MOVING_FORBID
, port
, &data
)) != RT_ERR_OK
)
1132 *pEnabled
= (data
== 1) ? 0 : 1;
1137 * rtl8367c_setAsicPortUnknownDaFloodingPortmask
1139 * Set UNDA flooding portmask
1141 * portmask - portmask(0~0xFF)
1145 * RT_ERR_OK - Success
1146 * RT_ERR_SMI - SMI access error
1147 * RT_ERR_PORT_MASK - Invalid portmask
1151 ret_t
rtl8367c_setAsicPortUnknownDaFloodingPortmask(rtk_uint32 portmask
)
1153 if(portmask
> RTL8367C_PORTMASK
)
1154 return RT_ERR_PORT_MASK
;
1156 return rtl8367c_setAsicReg(RTL8367C_UNUCAST_FLOADING_PMSK_REG
, portmask
);
1159 * rtl8367c_getAsicPortUnknownDaFloodingPortmask
1161 * Get UNDA flooding portmask
1163 * pPortmask - portmask(0~0xFF)
1167 * RT_ERR_OK - Success
1168 * RT_ERR_SMI - SMI access error
1172 ret_t
rtl8367c_getAsicPortUnknownDaFloodingPortmask(rtk_uint32
*pPortmask
)
1174 return rtl8367c_getAsicReg(RTL8367C_UNUCAST_FLOADING_PMSK_REG
, pPortmask
);
1177 * rtl8367c_setAsicPortUnknownMulticastFloodingPortmask
1179 * Set UNMC flooding portmask
1181 * portmask - portmask(0~0xFF)
1185 * RT_ERR_OK - Success
1186 * RT_ERR_SMI - SMI access error
1187 * RT_ERR_PORT_MASK - Invalid portmask
1191 ret_t
rtl8367c_setAsicPortUnknownMulticastFloodingPortmask(rtk_uint32 portmask
)
1193 if(portmask
> RTL8367C_PORTMASK
)
1194 return RT_ERR_PORT_MASK
;
1196 return rtl8367c_setAsicReg(RTL8367C_UNMCAST_FLOADING_PMSK_REG
, portmask
);
1199 * rtl8367c_getAsicPortUnknownMulticastFloodingPortmask
1201 * Get UNMC flooding portmask
1203 * pPortmask - portmask(0~0xFF)
1207 * RT_ERR_OK - Success
1208 * RT_ERR_SMI - SMI access error
1212 ret_t
rtl8367c_getAsicPortUnknownMulticastFloodingPortmask(rtk_uint32
*pPortmask
)
1214 return rtl8367c_getAsicReg(RTL8367C_UNMCAST_FLOADING_PMSK_REG
, pPortmask
);
1217 * rtl8367c_setAsicPortBcastFloodingPortmask
1219 * Set Bcast flooding portmask
1221 * portmask - portmask(0~0xFF)
1225 * RT_ERR_OK - Success
1226 * RT_ERR_SMI - SMI access error
1227 * RT_ERR_PORT_MASK - Invalid portmask
1231 ret_t
rtl8367c_setAsicPortBcastFloodingPortmask(rtk_uint32 portmask
)
1233 if(portmask
> RTL8367C_PORTMASK
)
1234 return RT_ERR_PORT_MASK
;
1236 return rtl8367c_setAsicReg(RTL8367C_BCAST_FLOADING_PMSK_REG
, portmask
);
1239 * rtl8367c_getAsicPortBcastFloodingPortmask
1241 * Get Bcast flooding portmask
1243 * pPortmask - portmask(0~0xFF)
1247 * RT_ERR_OK - Success
1248 * RT_ERR_SMI - SMI access error
1252 ret_t
rtl8367c_getAsicPortBcastFloodingPortmask(rtk_uint32
*pPortmask
)
1254 return rtl8367c_getAsicReg(RTL8367C_BCAST_FLOADING_PMSK_REG
, pPortmask
);
1257 * rtl8367c_setAsicPortBlockSpa
1259 * Set disabling blocking frame if source port and destination port are the same
1261 * port - Physical port number (0~7)
1262 * permit - 0: block; 1: permit
1266 * RT_ERR_OK - Success
1267 * RT_ERR_SMI - SMI access error
1268 * RT_ERR_PORT_ID - Invalid port number
1272 ret_t
rtl8367c_setAsicPortBlockSpa(rtk_uint32 port
, rtk_uint32 permit
)
1274 if(port
>= RTL8367C_PORTNO
)
1275 return RT_ERR_PORT_ID
;
1277 return rtl8367c_setAsicRegBit(RTL8367C_SOURCE_PORT_BLOCK_REG
, port
, permit
);
1280 * rtl8367c_getAsicPortBlockSpa
1282 * Get disabling blocking frame if source port and destination port are the same
1284 * port - Physical port number (0~7)
1285 * pPermit - 0: block; 1: permit
1289 * RT_ERR_OK - Success
1290 * RT_ERR_SMI - SMI access error
1291 * RT_ERR_PORT_ID - Invalid port number
1295 ret_t
rtl8367c_getAsicPortBlockSpa(rtk_uint32 port
, rtk_uint32
* pPermit
)
1297 if(port
>= RTL8367C_PORTNO
)
1298 return RT_ERR_PORT_ID
;
1300 return rtl8367c_getAsicRegBit(RTL8367C_SOURCE_PORT_BLOCK_REG
, port
, pPermit
);
1303 * rtl8367c_setAsicPortDos
1308 * drop - 0: permit; 1: drop
1312 * RT_ERR_OK - Success
1313 * RT_ERR_SMI - SMI access error
1314 * RT_ERR_OUT_OF_RANGE - Invalid payload index
1318 ret_t
rtl8367c_setAsicPortDos(rtk_uint32 type
, rtk_uint32 drop
)
1321 return RT_ERR_OUT_OF_RANGE
;
1323 return rtl8367c_setAsicRegBit(RTL8367C_REG_DOS_CFG
, RTL8367C_DROP_DAEQSA_OFFSET
+ type
, drop
);
1326 * rtl8367c_getAsicPortDos
1331 * pDrop - 0: permit; 1: drop
1335 * RT_ERR_OK - Success
1336 * RT_ERR_SMI - SMI access error
1337 * RT_ERR_OUT_OF_RANGE - Invalid payload index
1341 ret_t
rtl8367c_getAsicPortDos(rtk_uint32 type
, rtk_uint32
* pDrop
)
1344 return RT_ERR_OUT_OF_RANGE
;
1346 return rtl8367c_getAsicRegBit(RTL8367C_REG_DOS_CFG
, RTL8367C_DROP_DAEQSA_OFFSET
+ type
,pDrop
);
1349 * rtl8367c_setAsicPortForceLink
1351 * Set port force linking configuration
1353 * port - Physical port number (0~7)
1354 * pPortAbility - port ability configuration
1358 * RT_ERR_OK - Success
1359 * RT_ERR_SMI - SMI access error
1360 * RT_ERR_PORT_ID - Invalid port number
1364 ret_t
rtl8367c_setAsicPortForceLink(rtk_uint32 port
, rtl8367c_port_ability_t
*pPortAbility
)
1366 rtk_uint32 regData
= 0;
1368 /* Invalid input parameter */
1369 if(port
>= RTL8367C_PORTNO
)
1370 return RT_ERR_PORT_ID
;
1372 regData
|= pPortAbility
->forcemode
<< 12;
1373 regData
|= pPortAbility
->mstfault
<< 9;
1374 regData
|= pPortAbility
->mstmode
<< 8;
1375 regData
|= pPortAbility
->nway
<< 7;
1376 regData
|= pPortAbility
->txpause
<< 6;
1377 regData
|= pPortAbility
->rxpause
<< 5;
1378 regData
|= pPortAbility
->link
<< 4;
1379 regData
|= pPortAbility
->duplex
<< 2;
1380 regData
|= pPortAbility
->speed
;
1382 return rtl8367c_setAsicReg(RTL8367C_REG_MAC0_FORCE_SELECT
+port
, regData
);
1385 * rtl8367c_getAsicPortForceLink
1387 * Get port force linking configuration
1389 * port - Physical port number (0~7)
1390 * pPortAbility - port ability configuration
1394 * RT_ERR_OK - Success
1395 * RT_ERR_SMI - SMI access error
1396 * RT_ERR_PORT_ID - Invalid port number
1400 ret_t
rtl8367c_getAsicPortForceLink(rtk_uint32 port
, rtl8367c_port_ability_t
*pPortAbility
)
1405 /* Invalid input parameter */
1406 if(port
>= RTL8367C_PORTNO
)
1407 return RT_ERR_PORT_ID
;
1409 retVal
= rtl8367c_getAsicReg(RTL8367C_REG_MAC0_FORCE_SELECT
+ port
, ®Data
);
1410 if(retVal
!= RT_ERR_OK
)
1413 pPortAbility
->forcemode
= (regData
>> 12) & 0x0001;
1414 pPortAbility
->mstfault
= (regData
>> 9) & 0x0001;
1415 pPortAbility
->mstmode
= (regData
>> 8) & 0x0001;
1416 pPortAbility
->nway
= (regData
>> 7) & 0x0001;
1417 pPortAbility
->txpause
= (regData
>> 6) & 0x0001;
1418 pPortAbility
->rxpause
= (regData
>> 5) & 0x0001;
1419 pPortAbility
->link
= (regData
>> 4) & 0x0001;
1420 pPortAbility
->duplex
= (regData
>> 2) & 0x0001;
1421 pPortAbility
->speed
= regData
& 0x0003;
1426 * rtl8367c_getAsicPortStatus
1428 * Get port link status
1430 * port - Physical port number (0~7)
1431 * pPortAbility - port ability configuration
1435 * RT_ERR_OK - Success
1436 * RT_ERR_SMI - SMI access error
1437 * RT_ERR_PORT_ID - Invalid port number
1441 ret_t
rtl8367c_getAsicPortStatus(rtk_uint32 port
, rtl8367c_port_status_t
*pPortStatus
)
1446 /* Invalid input parameter */
1447 if(port
>= RTL8367C_PORTNO
)
1448 return RT_ERR_PORT_ID
;
1450 retVal
= rtl8367c_getAsicReg(RTL8367C_REG_PORT0_STATUS
+port
,®Data
);
1451 if(retVal
!= RT_ERR_OK
)
1454 pPortStatus
->lpi1000
= (regData
>> 11) & 0x0001;
1455 pPortStatus
->lpi100
= (regData
>> 10) & 0x0001;
1456 pPortStatus
->mstfault
= (regData
>> 9) & 0x0001;
1457 pPortStatus
->mstmode
= (regData
>> 8) & 0x0001;
1458 pPortStatus
->nway
= (regData
>> 7) & 0x0001;
1459 pPortStatus
->txpause
= (regData
>> 6) & 0x0001;
1460 pPortStatus
->rxpause
= (regData
>> 5) & 0x0001;
1461 pPortStatus
->link
= (regData
>> 4) & 0x0001;
1462 pPortStatus
->duplex
= (regData
>> 2) & 0x0001;
1463 pPortStatus
->speed
= regData
& 0x0003;
1468 * rtl8367c_setAsicPortForceLinkExt
1470 * Set external interface force linking configuration
1472 * id - external interface id (0~2)
1473 * portAbility - port ability configuration
1477 * RT_ERR_OK - Success
1478 * RT_ERR_SMI - SMI access error
1479 * RT_ERR_OUT_OF_RANGE - input parameter out of range
1483 ret_t
rtl8367c_setAsicPortForceLinkExt(rtk_uint32 id
, rtl8367c_port_ability_t
*pPortAbility
)
1485 rtk_uint32 retVal
, regValue
, regValue2
, type
, sgmiibit
, hisgmiibit
;
1486 rtk_uint32 reg_data
= 0;
1489 /* Invalid input parameter */
1490 if(id
>= RTL8367C_EXTNO
)
1491 return RT_ERR_OUT_OF_RANGE
;
1493 reg_data
|= pPortAbility
->forcemode
<< 12;
1494 reg_data
|= pPortAbility
->mstfault
<< 9;
1495 reg_data
|= pPortAbility
->mstmode
<< 8;
1496 reg_data
|= pPortAbility
->nway
<< 7;
1497 reg_data
|= pPortAbility
->txpause
<< 6;
1498 reg_data
|= pPortAbility
->rxpause
<< 5;
1499 reg_data
|= pPortAbility
->link
<< 4;
1500 reg_data
|= pPortAbility
->duplex
<< 2;
1501 reg_data
|= pPortAbility
->speed
;
1503 if((retVal
= rtl8367c_setAsicReg(0x13C2, 0x0249)) != RT_ERR_OK
)
1506 if((retVal
= rtl8367c_getAsicReg(0x1300, ®Value
)) != RT_ERR_OK
)
1509 if((retVal
= rtl8367c_setAsicReg(0x13C2, 0x0000)) != RT_ERR_OK
)
1530 return RT_ERR_FAILED
;
1537 if ((retVal
= rtl8367c_getAsicReg(RTL8367C_REG_REG_TO_ECO4
, ®Value
)) != RT_ERR_OK
)
1540 if((regValue
& (0x0001 << 5)) && (regValue
& (0x0001 << 7)))
1545 if((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_SGMII_FDUP_OFFSET
, pPortAbility
->duplex
)) != RT_ERR_OK
)
1548 if((retVal
= rtl8367c_setAsicRegBits(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_SGMII_SPD_MASK
, pPortAbility
->speed
)) != RT_ERR_OK
)
1551 if((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_SGMII_LINK_OFFSET
, pPortAbility
->link
)) != RT_ERR_OK
)
1554 if((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_SGMII_TXFC_OFFSET
, pPortAbility
->txpause
)) != RT_ERR_OK
)
1557 if((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_SGMII_RXFC_OFFSET
, pPortAbility
->rxpause
)) != RT_ERR_OK
)
1561 if(0 == id
|| 1 == id
)
1562 return rtl8367c_setAsicReg(RTL8367C_REG_DIGITAL_INTERFACE0_FORCE
+ id
, reg_data
);
1564 return rtl8367c_setAsicReg(RTL8367C_REG_DIGITAL_INTERFACE2_FORCE
, reg_data
);
1570 if((retVal
= rtl8367c_setAsicRegBit(0x1311, 2, pPortAbility
->duplex
)) != RT_ERR_OK
)
1573 if((retVal
= rtl8367c_setAsicRegBits(0x1311, 0x3, pPortAbility
->speed
)) != RT_ERR_OK
)
1576 if((retVal
= rtl8367c_setAsicRegBit(0x1311, 4, pPortAbility
->link
)) != RT_ERR_OK
)
1579 if((retVal
= rtl8367c_setAsicRegBit(0x1311, 6, pPortAbility
->txpause
)) != RT_ERR_OK
)
1582 if((retVal
= rtl8367c_setAsicRegBit(0x1311, 5, pPortAbility
->rxpause
)) != RT_ERR_OK
)
1585 if((retVal
= rtl8367c_setAsicRegBit(0x1311, 12, pPortAbility
->forcemode
)) != RT_ERR_OK
)
1588 if (pPortAbility
->link
== 1)
1590 if((retVal
= rtl8367c_setAsicRegBit(0x1311, 4, 0)) != RT_ERR_OK
)
1593 if((retVal
= rtl8367c_setAsicRegBit(0x1311, 4, 1)) != RT_ERR_OK
)
1598 if((retVal
= rtl8367c_setAsicRegBits(0x1311, 0x3, 2)) != RT_ERR_OK
)
1603 if((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_SGMII_FDUP_OFFSET
, pPortAbility
->duplex
)) != RT_ERR_OK
)
1606 if((retVal
= rtl8367c_setAsicRegBits(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_SGMII_SPD_MASK
, pPortAbility
->speed
)) != RT_ERR_OK
)
1609 if((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_SGMII_LINK_OFFSET
, pPortAbility
->link
)) != RT_ERR_OK
)
1612 if((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_SGMII_TXFC_OFFSET
, pPortAbility
->txpause
)) != RT_ERR_OK
)
1615 if((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_SGMII_RXFC_OFFSET
, pPortAbility
->rxpause
)) != RT_ERR_OK
)
1620 if((retVal
= rtl8367c_setAsicRegBit(0x13c4, 2, pPortAbility
->duplex
)) != RT_ERR_OK
)
1623 if((retVal
= rtl8367c_setAsicRegBits(0x13c4, 0x3, pPortAbility
->speed
)) != RT_ERR_OK
)
1626 if((retVal
= rtl8367c_setAsicRegBit(0x13c4, 4, pPortAbility
->link
)) != RT_ERR_OK
)
1629 if((retVal
= rtl8367c_setAsicRegBit(0x13c4, 6, pPortAbility
->txpause
)) != RT_ERR_OK
)
1632 if((retVal
= rtl8367c_setAsicRegBit(0x13c4, 5, pPortAbility
->rxpause
)) != RT_ERR_OK
)
1635 if((retVal
= rtl8367c_setAsicRegBit(0x13c4, 12, pPortAbility
->forcemode
)) != RT_ERR_OK
)
1638 if (pPortAbility
->link
== 1)
1640 if((retVal
= rtl8367c_setAsicRegBit(0x13c4, 4, 0)) != RT_ERR_OK
)
1643 if((retVal
= rtl8367c_setAsicRegBit(0x13c4, 4, 1)) != RT_ERR_OK
)
1648 if((retVal
= rtl8367c_setAsicRegBits(0x13c4, 0x3, 2)) != RT_ERR_OK
)
1652 if((retVal
= rtl8367c_setAsicRegBit(0x1dc1, RTL8367C_CFG_SGMII_FDUP_OFFSET
, pPortAbility
->duplex
)) != RT_ERR_OK
)
1655 if((retVal
= rtl8367c_setAsicRegBits(0x1dc1, RTL8367C_CFG_SGMII_SPD_MASK
, pPortAbility
->speed
)) != RT_ERR_OK
)
1658 if((retVal
= rtl8367c_setAsicRegBit(0x1dc1, RTL8367C_CFG_SGMII_LINK_OFFSET
, pPortAbility
->link
)) != RT_ERR_OK
)
1661 if((retVal
= rtl8367c_setAsicRegBit(0x1dc1, RTL8367C_CFG_SGMII_TXFC_OFFSET
, pPortAbility
->txpause
)) != RT_ERR_OK
)
1664 if((retVal
= rtl8367c_setAsicRegBit(0x1dc1, RTL8367C_CFG_SGMII_RXFC_OFFSET
, pPortAbility
->rxpause
)) != RT_ERR_OK
)
1673 if((retVal
= rtl8367c_getAsicRegBit(0x1d11, 6, &sgmiibit
)) != RT_ERR_OK
)
1675 if((retVal
= rtl8367c_getAsicRegBit(0x1d11, 11, &hisgmiibit
)) != RT_ERR_OK
)
1678 if ((sgmiibit
== 1) || (hisgmiibit
== 1))
1680 /*for 1000x/100fx/1000x_100fx, param has to be set to serdes registers*/
1681 if((retVal
= rtl8367c_getAsicReg(0x1d41, ®Value
)) != RT_ERR_OK
)
1684 /*bit5: cfg_mac6_fib =1, bit7: cfg_mac6_fib2=1*/
1685 if((regValue
& 0xa0) == 0xa0)
1687 /* new_cfg_sds_mode */
1688 if((retVal
= rtl8367c_getAsicRegBits(0x1d95, 0x1f00, ®Value2
)) != RT_ERR_OK
)
1692 if(regValue2
== 0x4)
1695 /* new_cfg_sds_mode:reset mode */
1696 if((retVal
= rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK
)
1699 /* Enable new sds mode config */
1700 if((retVal
= rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK
)
1703 /* 0 4 0 bit 12 set 1, bit15~13 = 4*/
1704 if((retVal
= rtl8367c_getAsicSdsReg(0, 4, 0, ®_data
)) != RT_ERR_OK
)
1706 reg_data
&= 0xFFFF0FFF;
1708 if((retVal
= rtl8367c_setAsicSdsReg(0,4,0, reg_data
)) != RT_ERR_OK
)
1711 /* 0 0 2 bit 6 set 1, bit13 set to 0, bit12 nway_en*/
1712 if((retVal
= rtl8367c_getAsicSdsReg(0, 0, 2, ®_data
)) != RT_ERR_OK
)
1714 reg_data
&= 0xFFFFDFFF;
1716 if(pPortAbility
->forcemode
)
1717 reg_data
&= 0xffffefff;
1721 if((retVal
= rtl8367c_setAsicSdsReg(0,0,2, reg_data
)) != RT_ERR_OK
)
1724 /* 0 4 2 bit 8 rx pause, bit7 tx pause*/
1725 if((retVal
= rtl8367c_getAsicSdsReg(0, 4, 2, ®_data
)) != RT_ERR_OK
)
1728 if (pPortAbility
->txpause
)
1731 reg_data
&= (~0x80);
1733 if (pPortAbility
->rxpause
)
1736 reg_data
&= (~0x100);
1738 if((retVal
= rtl8367c_setAsicSdsReg(0,4,2, reg_data
)) != RT_ERR_OK
)
1741 /* 0 4 0 bit 12 set 0*/
1742 if((retVal
= rtl8367c_getAsicSdsReg(0, 4, 0, ®_data
)) != RT_ERR_OK
)
1744 reg_data
&= 0xFFFFEFFF;
1745 if((retVal
= rtl8367c_setAsicSdsReg(0,4,0, reg_data
)) != RT_ERR_OK
)
1748 /*new_cfg_sds_mode=1000x*/
1749 if((retVal
= rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x4)) != RT_ERR_OK
)
1753 else if(regValue2
== 0x5)
1757 if((retVal
= rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK
)
1760 /*cfg_sds_mode_sel_new=1 */
1761 if((retVal
= rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK
)
1764 /* 0 4 0 bit 12 set 1, bit15~13 = 5*/
1765 if((retVal
= rtl8367c_getAsicSdsReg(0, 4, 0, ®_data
)) != RT_ERR_OK
)
1767 reg_data
&= 0xFFFF0FFF;
1769 if((retVal
= rtl8367c_setAsicSdsReg(0,4,0, reg_data
)) != RT_ERR_OK
)
1772 /* 0 0 2 bit 6 set 0, bit13 set to 1, bit12 0*/
1773 if((retVal
= rtl8367c_getAsicSdsReg(0, 0, 2, ®_data
)) != RT_ERR_OK
)
1775 reg_data
&= 0xFFFFFFBF;
1777 reg_data
&= 0xffffefff;
1779 if((retVal
= rtl8367c_setAsicSdsReg(0,0,2, reg_data
)) != RT_ERR_OK
)
1782 /* 0 4 2 bit 8 rx pause, bit7 tx pause*/
1783 if((retVal
= rtl8367c_getAsicSdsReg(0, 4, 2, ®_data
)) != RT_ERR_OK
)
1785 if (pPortAbility
->txpause
)
1788 reg_data
&= (~0x80);
1789 if (pPortAbility
->rxpause
)
1792 reg_data
&= (~0x100);
1793 if((retVal
= rtl8367c_setAsicSdsReg(0,4,2, reg_data
)) != RT_ERR_OK
)
1796 /* 0 4 0 bit 12 set 0*/
1797 if((retVal
= rtl8367c_getAsicSdsReg(0, 4, 0, ®_data
)) != RT_ERR_OK
)
1799 reg_data
&= 0xFFFFEFFF;
1800 if((retVal
= rtl8367c_setAsicSdsReg(0,4,0, reg_data
)) != RT_ERR_OK
)
1802 /* new_cfg_sds_mode=1000x */
1803 if((retVal
= rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x5)) != RT_ERR_OK
)
1807 else if(regValue2
== 0x7)
1811 if((retVal
= rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK
)
1814 if((retVal
= rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK
)
1817 /* 0 4 0 bit 12 set 1, bit15~13 = 4*/
1818 if((retVal
= rtl8367c_getAsicSdsReg(0, 4, 0, ®_data
)) != RT_ERR_OK
)
1820 reg_data
&= 0xFFFF0FFF;
1822 if((retVal
= rtl8367c_setAsicSdsReg(0,4,0, reg_data
)) != RT_ERR_OK
)
1825 /* 0 0 2 bit 6 set 1, bit13 set to 0, bit12 nway_en*/
1826 if((retVal
= rtl8367c_getAsicSdsReg(0, 0, 2, ®_data
)) != RT_ERR_OK
)
1828 reg_data
&= 0xFFFFDFFF;
1830 if(pPortAbility
->forcemode
)
1831 reg_data
&= 0xffffefff;
1835 if((retVal
= rtl8367c_setAsicSdsReg(0,0,2, reg_data
)) != RT_ERR_OK
)
1838 /* 0 4 2 bit 8 rx pause, bit7 tx pause*/
1839 if((retVal
= rtl8367c_getAsicSdsReg(0, 4, 2, ®_data
)) != RT_ERR_OK
)
1841 if (pPortAbility
->txpause
)
1844 reg_data
&= (~0x80);
1845 if (pPortAbility
->rxpause
)
1848 reg_data
&=(~0x100);
1849 if((retVal
= rtl8367c_setAsicSdsReg(0,4,2, reg_data
)) != RT_ERR_OK
)
1852 /* 0 4 0 bit 12 set 0*/
1853 if((retVal
= rtl8367c_getAsicSdsReg(0, 4, 0, ®_data
)) != RT_ERR_OK
)
1855 reg_data
&= 0xFFFFEFFF;
1856 if((retVal
= rtl8367c_setAsicSdsReg(0,4,0, reg_data
)) != RT_ERR_OK
)
1859 /* 0 4 0 bit 12 set 1, bit15~13 = 5*/
1860 if((retVal
= rtl8367c_getAsicSdsReg(0, 4, 0, ®_data
)) != RT_ERR_OK
)
1862 reg_data
&= 0xFFFF0FFF;
1864 if((retVal
= rtl8367c_setAsicSdsReg(0,4,0, reg_data
)) != RT_ERR_OK
)
1867 /* 0 0 2 bit 6 set 0, bit13 set to 1, bit12 0*/
1868 if((retVal
= rtl8367c_getAsicSdsReg(0, 0, 2, ®_data
)) != RT_ERR_OK
)
1870 reg_data
&= 0xFFFFFFBF;
1872 reg_data
&= 0xffffefff;
1874 if((retVal
= rtl8367c_setAsicSdsReg(0,0,2, reg_data
)) != RT_ERR_OK
)
1877 /* 0 4 2 bit 8 rx pause, bit7 tx pause*/
1878 if((retVal
= rtl8367c_getAsicSdsReg(0, 4, 2, ®_data
)) != RT_ERR_OK
)
1880 if (pPortAbility
->txpause
)
1883 reg_data
&= 0xffffff7f;
1884 if (pPortAbility
->rxpause
)
1887 reg_data
&= 0xfffffeff;
1888 if((retVal
= rtl8367c_setAsicSdsReg(0,4,2, reg_data
)) != RT_ERR_OK
)
1891 /* 0 4 0 bit 12 set 0*/
1892 if((retVal
= rtl8367c_getAsicSdsReg(0, 4, 0, ®_data
)) != RT_ERR_OK
)
1894 reg_data
&= 0xFFFFEFFF;
1895 if((retVal
= rtl8367c_setAsicSdsReg(0,4,0, reg_data
)) != RT_ERR_OK
)
1898 if((retVal
= rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x7)) != RT_ERR_OK
)
1903 /*disable force ability --- */
1904 if((retVal
= rtl8367c_setAsicRegBit(0x137c, 12, 0)) != RT_ERR_OK
)
1910 /* new_cfg_sds_mode */
1911 if((retVal
= rtl8367c_getAsicRegBits(0x1d95, 0x1f00, ®Value2
)) != RT_ERR_OK
)
1913 if(regValue2
== 0x2)
1917 if((retVal
= rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK
)
1920 if((retVal
= rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK
)
1923 for(i
=0;i
<0xfff; i
++);
1925 /* 0 2 0 bit 8-9 nway*/
1926 if((retVal
= rtl8367c_getAsicSdsReg(0, 2, 0, ®_data
)) != RT_ERR_OK
)
1928 reg_data
&= 0xfffffcff;
1929 if (pPortAbility
->nway
)
1930 reg_data
&= 0xfffffcff;
1933 if((retVal
= rtl8367c_setAsicSdsReg(0,2,0, reg_data
)) != RT_ERR_OK
)
1936 if((retVal
= rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x2)) != RT_ERR_OK
)
1939 for(i
=0;i
<0xfff; i
++);
1941 if((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_SGMII_FDUP_OFFSET
, pPortAbility
->duplex
)) != RT_ERR_OK
)
1944 if((retVal
= rtl8367c_setAsicRegBits(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_SGMII_SPD_MASK
, pPortAbility
->speed
)) != RT_ERR_OK
)
1947 if((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_SGMII_TXFC_OFFSET
, pPortAbility
->txpause
)) != RT_ERR_OK
)
1950 if((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_SGMII_RXFC_OFFSET
, pPortAbility
->rxpause
)) != RT_ERR_OK
)
1953 if((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_SGMII_LINK_OFFSET
, pPortAbility
->link
)) != RT_ERR_OK
)
1956 /*disable force ability --- */
1957 if((retVal
= rtl8367c_setAsicRegBit(0x137c, 12, 0)) != RT_ERR_OK
)
1961 else if(regValue2
== 0x12)
1965 if((retVal
= rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK
)
1968 if((retVal
= rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK
)
1971 for(i
=0;i
<0xfff; i
++);
1973 /* 0 2 0 bit 8-9 nway*/
1974 if((retVal
= rtl8367c_getAsicSdsReg(0, 2, 0, ®_data
)) != RT_ERR_OK
)
1976 reg_data
&= 0xfffffcff;
1977 if (pPortAbility
->nway
)
1978 reg_data
&= 0xfffffcff;
1981 if((retVal
= rtl8367c_setAsicSdsReg(0,2,0, reg_data
)) != RT_ERR_OK
)
1985 if((retVal
= rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x12)) != RT_ERR_OK
)
1988 for(i
=0;i
<0xfff; i
++);
1990 if((retVal
= rtl8367c_setAsicRegBit(0x1d11, 11, 0x1)) != RT_ERR_OK
)
1993 if((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_SGMII_FDUP_OFFSET
, pPortAbility
->duplex
)) != RT_ERR_OK
)
1996 if((retVal
= rtl8367c_setAsicRegBits(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_SGMII_SPD_MASK
, pPortAbility
->speed
)) != RT_ERR_OK
)
1999 if((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_SGMII_TXFC_OFFSET
, pPortAbility
->txpause
)) != RT_ERR_OK
)
2002 if((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_SGMII_RXFC_OFFSET
, pPortAbility
->rxpause
)) != RT_ERR_OK
)
2005 if((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_SGMII_LINK_OFFSET
, pPortAbility
->link
)) != RT_ERR_OK
)
2008 /*disable force ability --- */
2009 if((retVal
= rtl8367c_setAsicRegBit(0x137c, 12, 0)) != RT_ERR_OK
)
2017 if((retVal
= rtl8367c_getAsicRegBits(0x1d3d, 10, ®Value2
)) != RT_ERR_OK
)
2021 /*ext1_force_ablty*/
2022 if((retVal
= rtl8367c_setAsicRegBit(0x1311, 2, pPortAbility
->duplex
)) != RT_ERR_OK
)
2025 if((retVal
= rtl8367c_setAsicRegBits(0x1311, 0x3, pPortAbility
->speed
)) != RT_ERR_OK
)
2028 if((retVal
= rtl8367c_setAsicRegBit(0x1311, 4, pPortAbility
->link
)) != RT_ERR_OK
)
2031 if((retVal
= rtl8367c_setAsicRegBit(0x1311, 6, pPortAbility
->txpause
)) != RT_ERR_OK
)
2034 if((retVal
= rtl8367c_setAsicRegBit(0x1311, 5, pPortAbility
->rxpause
)) != RT_ERR_OK
)
2037 /*force mode for ext1*/
2038 if((retVal
= rtl8367c_setAsicRegBit(0x1311, 12, pPortAbility
->forcemode
)) != RT_ERR_OK
)
2041 if (pPortAbility
->link
== 1)
2043 if((retVal
= rtl8367c_setAsicRegBit(0x1311, 4, 0)) != RT_ERR_OK
)
2046 if((retVal
= rtl8367c_setAsicRegBit(0x1311, 4, 1)) != RT_ERR_OK
)
2051 if((retVal
= rtl8367c_setAsicRegBits(0x1311, 0x3, 2)) != RT_ERR_OK
)
2055 /*disable force ability --- */
2056 if((retVal
= rtl8367c_setAsicRegBit(0x137c, 12, 0)) != RT_ERR_OK
)
2067 if((retVal
= rtl8367c_getAsicRegBit(0x1d95, 0, &sgmiibit
)) != RT_ERR_OK
)
2071 /*for 1000x/100fx/1000x_100fx, param has to bet set to serdes registers*/
2072 if((retVal
= rtl8367c_getAsicReg(0x1d95, ®Value
)) != RT_ERR_OK
)
2074 /*cfg_mac7_sel_sgmii=1 & cfg_mac7_fib =1*/
2075 if((regValue
& 0x3) == 0x3)
2077 if((retVal
= rtl8367c_getAsicRegBits(0x1d95, 0x1f00, ®Value2
)) != RT_ERR_OK
)
2080 if(regValue2
== 0x4)
2084 if((retVal
= rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK
)
2087 if((retVal
= rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK
)
2090 /* 0 4 0 bit 12 set 1, bit15~13 = 4*/
2091 if((retVal
= rtl8367c_getAsicSdsReg(0, 4, 0, ®_data
)) != RT_ERR_OK
)
2093 reg_data
&= 0xFFFF0FFF;
2095 if((retVal
= rtl8367c_setAsicSdsReg(0,4,0, reg_data
)) != RT_ERR_OK
)
2098 /* 0 0 2 bit 6 set 1, bit13 set to 0, bit12 nway_en*/
2099 if((retVal
= rtl8367c_getAsicSdsReg(0, 0, 2, ®_data
)) != RT_ERR_OK
)
2101 reg_data
&= 0xFFFFDFFF;
2103 if(pPortAbility
->forcemode
)
2104 reg_data
&= 0xffffefff;
2108 if((retVal
= rtl8367c_setAsicSdsReg(0,0,2, reg_data
)) != RT_ERR_OK
)
2111 /* 0 4 2 bit 8 rx pause, bit7 tx pause*/
2112 if((retVal
= rtl8367c_getAsicSdsReg(0, 4, 2, ®_data
)) != RT_ERR_OK
)
2114 if (pPortAbility
->txpause
)
2117 reg_data
&= 0xffffff7f;
2118 if (pPortAbility
->rxpause
)
2121 reg_data
&= 0xfffffeff;
2122 if((retVal
= rtl8367c_setAsicSdsReg(0,4,2, reg_data
)) != RT_ERR_OK
)
2125 /* 0 4 0 bit 12 set 0*/
2126 if((retVal
= rtl8367c_getAsicSdsReg(0, 4, 0, ®_data
)) != RT_ERR_OK
)
2128 reg_data
&= 0xFFFFEFFF;
2129 if((retVal
= rtl8367c_setAsicSdsReg(0,4,0, reg_data
)) != RT_ERR_OK
)
2132 if((retVal
= rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x4)) != RT_ERR_OK
)
2136 else if(regValue2
== 0x5)
2140 if((retVal
= rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK
)
2143 if((retVal
= rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK
)
2146 /* 0 4 0 bit 12 set 1, bit15~13 = 5*/
2147 if((retVal
= rtl8367c_getAsicSdsReg(0, 4, 0, ®_data
)) != RT_ERR_OK
)
2149 reg_data
&= 0xFFFF0FFF;
2151 if((retVal
= rtl8367c_setAsicSdsReg(0,4,0, reg_data
)) != RT_ERR_OK
)
2154 /* 0 0 2 bit 6 set 0, bit13 set to 1, bit12 0*/
2155 if((retVal
= rtl8367c_getAsicSdsReg(0, 0, 2, ®_data
)) != RT_ERR_OK
)
2157 reg_data
&= 0xFFFFFFBF;
2159 reg_data
&= 0xffffefff;
2161 if((retVal
= rtl8367c_setAsicSdsReg(0,0,2, reg_data
)) != RT_ERR_OK
)
2164 /* 0 4 2 bit 8 rx pause, bit7 tx pause*/
2165 if((retVal
= rtl8367c_getAsicSdsReg(0, 4, 2, ®_data
)) != RT_ERR_OK
)
2167 if (pPortAbility
->txpause
)
2170 reg_data
&= 0xffffff7f;
2171 if (pPortAbility
->rxpause
)
2174 reg_data
&= 0xfffffeff;
2175 if((retVal
= rtl8367c_setAsicSdsReg(0,4,2, reg_data
)) != RT_ERR_OK
)
2178 /* 0 4 0 bit 12 set 0*/
2179 if((retVal
= rtl8367c_getAsicSdsReg(0, 4, 0, ®_data
)) != RT_ERR_OK
)
2181 reg_data
&= 0xFFFFEFFF;
2182 if((retVal
= rtl8367c_setAsicSdsReg(0,4,0, reg_data
)) != RT_ERR_OK
)
2185 if((retVal
= rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x5)) != RT_ERR_OK
)
2189 else if(regValue2
== 0x7)
2193 if((retVal
= rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK
)
2196 if((retVal
= rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK
)
2199 /* 0 4 0 bit 12 set 1, bit15~13 = 4*/
2200 if((retVal
= rtl8367c_getAsicSdsReg(0, 4, 0, ®_data
)) != RT_ERR_OK
)
2202 reg_data
&= 0xFFFF0FFF;
2204 if((retVal
= rtl8367c_setAsicSdsReg(0,4,0, reg_data
)) != RT_ERR_OK
)
2207 /* 0 0 2 bit 6 set 1, bit13 set to 0, bit12 nway_en*/
2208 if((retVal
= rtl8367c_getAsicSdsReg(0, 0, 2, ®_data
)) != RT_ERR_OK
)
2210 reg_data
&= 0xFFFFDFFF;
2212 if(pPortAbility
->forcemode
)
2213 reg_data
&= 0xffffefff;
2217 if((retVal
= rtl8367c_setAsicSdsReg(0,0,2, reg_data
)) != RT_ERR_OK
)
2220 /* 0 4 2 bit 8 rx pause, bit7 tx pause*/
2221 if((retVal
= rtl8367c_getAsicSdsReg(0, 4, 2, ®_data
)) != RT_ERR_OK
)
2223 if (pPortAbility
->txpause
)
2226 reg_data
&= 0xffffff7f;
2227 if (pPortAbility
->rxpause
)
2230 reg_data
&= 0xfffffeff;
2231 if((retVal
= rtl8367c_setAsicSdsReg(0,4,2, reg_data
)) != RT_ERR_OK
)
2234 /* 0 4 0 bit 12 set 0*/
2235 if((retVal
= rtl8367c_getAsicSdsReg(0, 4, 0, ®_data
)) != RT_ERR_OK
)
2237 reg_data
&= 0xFFFFEFFF;
2238 if((retVal
= rtl8367c_setAsicSdsReg(0,4,0, reg_data
)) != RT_ERR_OK
)
2241 /* 0 4 0 bit 12 set 1, bit15~13 = 5*/
2242 if((retVal
= rtl8367c_getAsicSdsReg(0, 4, 0, ®_data
)) != RT_ERR_OK
)
2244 reg_data
&= 0xFFFF0FFF;
2246 if((retVal
= rtl8367c_setAsicSdsReg(0,4,0, reg_data
)) != RT_ERR_OK
)
2249 /* 0 0 2 bit 6 set 0, bit13 set to 1, bit12 0*/
2250 if((retVal
= rtl8367c_getAsicSdsReg(0, 0, 2, ®_data
)) != RT_ERR_OK
)
2252 reg_data
&= 0xFFFFFFBF;
2254 reg_data
&= 0xffffefff;
2256 if((retVal
= rtl8367c_setAsicSdsReg(0,0,2, reg_data
)) != RT_ERR_OK
)
2259 /* 0 4 2 bit 8 rx pause, bit7 tx pause*/
2260 if((retVal
= rtl8367c_getAsicSdsReg(0, 4, 2, ®_data
)) != RT_ERR_OK
)
2262 if (pPortAbility
->txpause
)
2265 reg_data
&= 0xffffff7f;
2266 if (pPortAbility
->rxpause
)
2269 reg_data
&= 0xfffffeff;
2270 if((retVal
= rtl8367c_setAsicSdsReg(0,4,2, reg_data
)) != RT_ERR_OK
)
2273 /* 0 4 0 bit 12 set 0*/
2274 if((retVal
= rtl8367c_getAsicSdsReg(0, 4, 0, ®_data
)) != RT_ERR_OK
)
2276 reg_data
&= 0xFFFFEFFF;
2277 if((retVal
= rtl8367c_setAsicSdsReg(0,4,0, reg_data
)) != RT_ERR_OK
)
2280 if((retVal
= rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x7)) != RT_ERR_OK
)
2285 if((retVal
= rtl8367c_setAsicRegBit(0x137d, 12, 0)) != RT_ERR_OK
)
2290 /* new_cfg_sds_mode */
2291 if((retVal
= rtl8367c_getAsicRegBits(0x1d95, 0x1f00, ®Value2
)) != RT_ERR_OK
)
2293 if(regValue2
== 0x2)
2297 if((retVal
= rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK
)
2300 if((retVal
= rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK
)
2303 for(i
=0;i
<0xfff; i
++);
2305 /* 0 2 0 bit 8-9 nway*/
2306 if((retVal
= rtl8367c_getAsicSdsReg(0, 2, 0, ®_data
)) != RT_ERR_OK
)
2308 reg_data
&= 0xfffffcff;
2309 if (pPortAbility
->nway
)
2310 reg_data
&= 0xfffffcff;
2313 if((retVal
= rtl8367c_setAsicSdsReg(0,2,0, reg_data
)) != RT_ERR_OK
)
2316 if((retVal
= rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x2)) != RT_ERR_OK
)
2319 for(i
=0;i
<0xfff; i
++);
2321 if((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_SGMII_FDUP_OFFSET
, pPortAbility
->duplex
)) != RT_ERR_OK
)
2324 if((retVal
= rtl8367c_setAsicRegBits(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_SGMII_SPD_MASK
, pPortAbility
->speed
)) != RT_ERR_OK
)
2327 if((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_SGMII_TXFC_OFFSET
, pPortAbility
->txpause
)) != RT_ERR_OK
)
2330 if((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_SGMII_RXFC_OFFSET
, pPortAbility
->rxpause
)) != RT_ERR_OK
)
2333 if((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_SGMII_LINK_OFFSET
, pPortAbility
->link
)) != RT_ERR_OK
)
2336 if((retVal
= rtl8367c_setAsicRegBit(0x137d, 12, 0)) != RT_ERR_OK
)
2344 /*ext2_force_ablty*/
2345 if((retVal
= rtl8367c_setAsicRegBit(0x13c4, 2, pPortAbility
->duplex
)) != RT_ERR_OK
)
2348 if((retVal
= rtl8367c_setAsicRegBits(0x13c4, 0x3, pPortAbility
->speed
)) != RT_ERR_OK
)
2351 if((retVal
= rtl8367c_setAsicRegBit(0x13c4, 4, pPortAbility
->link
)) != RT_ERR_OK
)
2354 if((retVal
= rtl8367c_setAsicRegBit(0x13c4, 6, pPortAbility
->txpause
)) != RT_ERR_OK
)
2357 if((retVal
= rtl8367c_setAsicRegBit(0x13c4, 5, pPortAbility
->rxpause
)) != RT_ERR_OK
)
2360 /*force mode for ext2*/
2361 if((retVal
= rtl8367c_setAsicRegBit(0x13c4, 12, pPortAbility
->forcemode
)) != RT_ERR_OK
)
2364 if (pPortAbility
->link
== 1)
2366 if((retVal
= rtl8367c_setAsicRegBit(0x13c4, 4, 0)) != RT_ERR_OK
)
2369 if((retVal
= rtl8367c_setAsicRegBit(0x13c4, 4, 1)) != RT_ERR_OK
)
2374 if((retVal
= rtl8367c_setAsicRegBits(0x13c4, 0x3, 2)) != RT_ERR_OK
)
2379 if((retVal
= rtl8367c_getAsicRegBit(0x1d3d, 10, ®_data
)) != RT_ERR_OK
)
2383 if((retVal
= rtl8367c_setAsicRegBit(0x1311, 2, pPortAbility
->duplex
)) != RT_ERR_OK
)
2386 if((retVal
= rtl8367c_setAsicRegBits(0x1311, 0x3, pPortAbility
->speed
)) != RT_ERR_OK
)
2389 if((retVal
= rtl8367c_setAsicRegBit(0x1311, 4, pPortAbility
->link
)) != RT_ERR_OK
)
2392 if((retVal
= rtl8367c_setAsicRegBit(0x1311, 6, pPortAbility
->txpause
)) != RT_ERR_OK
)
2395 if((retVal
= rtl8367c_setAsicRegBit(0x1311, 5, pPortAbility
->rxpause
)) != RT_ERR_OK
)
2398 /*force mode for ext1*/
2399 if((retVal
= rtl8367c_setAsicRegBit(0x1311, 12, pPortAbility
->forcemode
)) != RT_ERR_OK
)
2402 if (pPortAbility
->link
== 1)
2404 if((retVal
= rtl8367c_setAsicRegBit(0x1311, 4, 0)) != RT_ERR_OK
)
2407 if((retVal
= rtl8367c_setAsicRegBit(0x1311, 4, 1)) != RT_ERR_OK
)
2412 if((retVal
= rtl8367c_setAsicRegBits(0x1311, 0x3, 2)) != RT_ERR_OK
)
2420 /*disable force ability --- */
2421 if((retVal
= rtl8367c_setAsicRegBit(0x137d, 12, 0)) != RT_ERR_OK
)
2425 if((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_SGMII_FDUP_OFFSET
, pPortAbility
->duplex
)) != RT_ERR_OK
)
2428 if((retVal
= rtl8367c_setAsicRegBits(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_SGMII_SPD_MASK
, pPortAbility
->speed
)) != RT_ERR_OK
)
2431 if((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_SGMII_TXFC_OFFSET
, pPortAbility
->txpause
)) != RT_ERR_OK
)
2434 if((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_SGMII_RXFC_OFFSET
, pPortAbility
->rxpause
)) != RT_ERR_OK
)
2437 if((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_SGMII_LINK_OFFSET
, pPortAbility
->link
)) != RT_ERR_OK
)
2445 * rtl8367c_getAsicPortForceLinkExt
2447 * Get external interface force linking configuration
2449 * id - external interface id (0~1)
2450 * pPortAbility - port ability configuration
2454 * RT_ERR_OK - Success
2455 * RT_ERR_SMI - SMI access error
2456 * RT_ERR_OUT_OF_RANGE - input parameter out of range
2460 ret_t
rtl8367c_getAsicPortForceLinkExt(rtk_uint32 id
, rtl8367c_port_ability_t
*pPortAbility
)
2462 rtk_uint32 reg_data
, regValue
, type
;
2463 rtk_uint32 sgmiiSel
;
2464 rtk_uint32 hsgmiiSel
;
2467 /* Invalid input parameter */
2468 if(id
>= RTL8367C_EXTNO
)
2469 return RT_ERR_OUT_OF_RANGE
;
2470 /*cfg_magic_id & get chip_id*/
2471 if((retVal
= rtl8367c_setAsicReg(0x13C2, 0x0249)) != RT_ERR_OK
)
2474 if((retVal
= rtl8367c_getAsicReg(0x1300, ®Value
)) != RT_ERR_OK
)
2477 if((retVal
= rtl8367c_setAsicReg(0x13C2, 0x0000)) != RT_ERR_OK
)
2498 return RT_ERR_FAILED
;
2505 if((retVal
= rtl8367c_getAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_MAC8_SEL_SGMII_OFFSET
, &sgmiiSel
)) != RT_ERR_OK
)
2508 if((retVal
= rtl8367c_getAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_MAC8_SEL_HSGMII_OFFSET
, &hsgmiiSel
)) != RT_ERR_OK
)
2511 if( (sgmiiSel
== 1) || (hsgmiiSel
== 1) )
2513 memset(pPortAbility
, 0x00, sizeof(rtl8367c_port_ability_t
));
2514 pPortAbility
->forcemode
= 1;
2516 if((retVal
= rtl8367c_getAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_SGMII_FDUP_OFFSET
, ®_data
)) != RT_ERR_OK
)
2519 pPortAbility
->duplex
= reg_data
;
2521 if((retVal
= rtl8367c_getAsicRegBits(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_SGMII_SPD_MASK
, ®_data
)) != RT_ERR_OK
)
2524 pPortAbility
->speed
= reg_data
;
2526 if((retVal
= rtl8367c_getAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_SGMII_LINK_OFFSET
, ®_data
)) != RT_ERR_OK
)
2529 pPortAbility
->link
= reg_data
;
2531 if((retVal
= rtl8367c_getAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_SGMII_TXFC_OFFSET
, ®_data
)) != RT_ERR_OK
)
2534 pPortAbility
->txpause
= reg_data
;
2536 if((retVal
= rtl8367c_getAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_SGMII_RXFC_OFFSET
, ®_data
)) != RT_ERR_OK
)
2539 pPortAbility
->rxpause
= reg_data
;
2545 if(0 == id
|| 1 == id
)
2546 retVal
= rtl8367c_getAsicReg(RTL8367C_REG_DIGITAL_INTERFACE0_FORCE
+id
, ®_data
);
2548 retVal
= rtl8367c_getAsicReg(RTL8367C_REG_DIGITAL_INTERFACE2_FORCE
, ®_data
);
2550 if(retVal
!= RT_ERR_OK
)
2553 pPortAbility
->forcemode
= (reg_data
>> 12) & 0x0001;
2554 pPortAbility
->mstfault
= (reg_data
>> 9) & 0x0001;
2555 pPortAbility
->mstmode
= (reg_data
>> 8) & 0x0001;
2556 pPortAbility
->nway
= (reg_data
>> 7) & 0x0001;
2557 pPortAbility
->txpause
= (reg_data
>> 6) & 0x0001;
2558 pPortAbility
->rxpause
= (reg_data
>> 5) & 0x0001;
2559 pPortAbility
->link
= (reg_data
>> 4) & 0x0001;
2560 pPortAbility
->duplex
= (reg_data
>> 2) & 0x0001;
2561 pPortAbility
->speed
= reg_data
& 0x0003;
2567 if ((retVal
= rtl8367c_getAsicReg(0x1311, ®_data
))!=RT_ERR_OK
)
2570 pPortAbility
->forcemode
= (reg_data
>> 12) & 1;
2571 pPortAbility
->duplex
= (reg_data
>> 2) & 1;
2572 pPortAbility
->link
= (reg_data
>> 4) & 1;
2573 pPortAbility
->speed
= reg_data
& 3;
2574 pPortAbility
->rxpause
= (reg_data
>> 5) & 1;
2575 pPortAbility
->txpause
= (reg_data
>> 6) & 1;
2579 if ((retVal
= rtl8367c_getAsicReg(0x13c4, ®_data
))!=RT_ERR_OK
)
2582 pPortAbility
->forcemode
= (reg_data
>> 12) & 1;
2583 pPortAbility
->duplex
= (reg_data
>> 2) & 1;
2584 pPortAbility
->link
= (reg_data
>> 4) & 1;
2585 pPortAbility
->speed
= reg_data
& 3;
2586 pPortAbility
->rxpause
= (reg_data
>> 5) & 1;
2587 pPortAbility
->txpause
= (reg_data
>> 6) & 1;
2594 if ((retVal
= rtl8367c_getAsicReg(0x1311, ®_data
))!=RT_ERR_OK
)
2597 pPortAbility
->forcemode
= (reg_data
>> 12) & 1;
2598 pPortAbility
->duplex
= (reg_data
>> 2) & 1;
2599 pPortAbility
->link
= (reg_data
>> 4) & 1;
2600 pPortAbility
->speed
= reg_data
& 3;
2601 pPortAbility
->rxpause
= (reg_data
>> 5) & 1;
2602 pPortAbility
->txpause
= (reg_data
>> 6) & 1;
2606 if ((retVal
= rtl8367c_getAsicReg(0x13c4, ®_data
))!=RT_ERR_OK
)
2609 pPortAbility
->forcemode
= (reg_data
>> 12) & 1;
2610 pPortAbility
->duplex
= (reg_data
>> 2) & 1;
2611 pPortAbility
->link
= (reg_data
>> 4) & 1;
2612 pPortAbility
->speed
= reg_data
& 3;
2613 pPortAbility
->rxpause
= (reg_data
>> 5) & 1;
2614 pPortAbility
->txpause
= (reg_data
>> 6) & 1;
2620 * rtl8367c_setAsicPortExtMode
2622 * Set external interface mode configuration
2624 * id - external interface id (0~2)
2625 * mode - external interface mode
2629 * RT_ERR_OK - Success
2630 * RT_ERR_SMI - SMI access error
2631 * RT_ERR_OUT_OF_RANGE - input parameter out of range
2635 ret_t
rtl8367c_setAsicPortExtMode(rtk_uint32 id
, rtk_uint32 mode
)
2638 rtk_uint32 i
, regValue
, type
, option
,reg_data
;
2640 rtk_uint32 redData
[][2] = { {0x04D7, 0x0480}, {0xF994, 0x0481}, {0x21A2, 0x0482}, {0x6960, 0x0483}, {0x9728, 0x0484}, {0x9D85, 0x0423}, {0xD810, 0x0424}, {0x83F2, 0x002E} };
2641 rtk_uint32 redDataSB
[][2] = { {0x04D7, 0x0480}, {0xF994, 0x0481}, {0x31A2, 0x0482}, {0x6960, 0x0483}, {0x9728, 0x0484}, {0x9D85, 0x0423}, {0xD810, 0x0424}, {0x83F2, 0x002E} };
2642 rtk_uint32 redData1
[][2] = { {0x82F1, 0x0500}, {0xF195, 0x0501}, {0x31A2, 0x0502}, {0x796C, 0x0503}, {0x9728, 0x0504}, {0x9D85, 0x0423}, {0xD810, 0x0424}, {0x0F80, 0x0001}, {0x83F2, 0x002E} };
2643 rtk_uint32 redData5
[][2] = { {0x82F1, 0x0500}, {0xF195, 0x0501}, {0x31A2, 0x0502}, {0x796C, 0x0503}, {0x9728, 0x0504}, {0x9D85, 0x0423}, {0xD810, 0x0424}, {0x0F80, 0x0001}, {0x83F2, 0x002E} };
2644 rtk_uint32 redData6
[][2] = { {0x82F1, 0x0500}, {0xF195, 0x0501}, {0x31A2, 0x0502}, {0x796C, 0x0503}, {0x9728, 0x0504}, {0x9D85, 0x0423}, {0xD810, 0x0424}, {0x0F80, 0x0001}, {0x83F2, 0x002E} };
2645 rtk_uint32 redData8
[][2] = { {0x82F1, 0x0500}, {0xF995, 0x0501}, {0x31A2, 0x0502}, {0x796C, 0x0503}, {0x9728, 0x0504}, {0x9D85, 0x0423}, {0xD810, 0x0424}, {0x0F80, 0x0001}, {0x83F2, 0x002E} };
2646 rtk_uint32 redData9
[][2] = { {0x82F1, 0x0500}, {0xF995, 0x0501}, {0x31A2, 0x0502}, {0x796C, 0x0503}, {0x9728, 0x0504}, {0x9D85, 0x0423}, {0xD810, 0x0424}, {0x0F80, 0x0001}, {0x83F2, 0x002E} };
2647 rtk_uint32 redDataHB
[][2] = { {0x82F0, 0x0500}, {0xF195, 0x0501}, {0x31A2, 0x0502}, {0x7960, 0x0503}, {0x9728, 0x0504}, {0x9D85, 0x0423}, {0xD810, 0x0424}, {0x0F80, 0x0001}, {0x83F2, 0x002E} };
2649 if(id
>= RTL8367C_EXTNO
)
2650 return RT_ERR_OUT_OF_RANGE
;
2653 return RT_ERR_OUT_OF_RANGE
;
2656 if((retVal
= rtl8367c_setAsicReg(0x13C2, 0x0249)) != RT_ERR_OK
)
2659 if((retVal
= rtl8367c_getAsicReg(0x1300, ®Value
)) != RT_ERR_OK
)
2662 if((retVal
= rtl8367c_setAsicReg(0x13C2, 0x0000)) != RT_ERR_OK
)
2683 return RT_ERR_FAILED
;
2689 if((mode
== EXT_1000X_100FX
) || (mode
== EXT_1000X
) || (mode
== EXT_100FX
))
2691 if((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_REG_TO_ECO4
, 5, 1)) != RT_ERR_OK
)
2694 if((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_REG_TO_ECO4
, 7, 1)) != RT_ERR_OK
)
2697 if ((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_CHIP_RESET
, RTL8367C_DW8051_RST_OFFSET
, 1)) != RT_ERR_OK
)
2700 if ((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_MISCELLANEOUS_CONFIGURE0
, RTL8367C_DW8051_EN_OFFSET
, 1)) != RT_ERR_OK
)
2703 if ((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_DW8051_RDY
, RTL8367C_ACS_IROM_ENABLE_OFFSET
, 1)) != RT_ERR_OK
)
2706 if ((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_DW8051_RDY
, RTL8367C_IROM_MSB_OFFSET
, 0)) != RT_ERR_OK
)
2709 if(mode
== EXT_1000X_100FX
)
2711 for(idx
= 0; idx
< FIBER2_AUTO_INIT_SIZE
; idx
++)
2713 if ((retVal
= rtl8367c_setAsicReg(0xE000 + idx
, (rtk_uint32
)Fiber2_Auto
[idx
])) != RT_ERR_OK
)
2718 if(mode
== EXT_1000X
)
2720 for(idx
= 0; idx
< FIBER2_1G_INIT_SIZE
; idx
++)
2722 if ((retVal
= rtl8367c_setAsicReg(0xE000 + idx
, (rtk_uint32
)Fiber2_1G
[idx
])) != RT_ERR_OK
)
2727 if(mode
== EXT_100FX
)
2729 for(idx
= 0; idx
< FIBER2_100M_INIT_SIZE
; idx
++)
2731 if ((retVal
= rtl8367c_setAsicReg(0xE000 + idx
, (rtk_uint32
)Fiber2_100M
[idx
])) != RT_ERR_OK
)
2736 if ((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_DW8051_RDY
, RTL8367C_IROM_MSB_OFFSET
, 0)) != RT_ERR_OK
)
2739 if ((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_DW8051_RDY
, RTL8367C_ACS_IROM_ENABLE_OFFSET
, 0)) != RT_ERR_OK
)
2742 if ((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_CHIP_RESET
, RTL8367C_DW8051_RST_OFFSET
, 0)) != RT_ERR_OK
)
2746 if(mode
== EXT_GMII
)
2748 if( (retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_EXT0_RGMXF
, RTL8367C_EXT0_RGTX_INV_OFFSET
, 1)) != RT_ERR_OK
)
2751 if( (retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_EXT1_RGMXF
, RTL8367C_EXT1_RGTX_INV_OFFSET
, 1)) != RT_ERR_OK
)
2754 if( (retVal
= rtl8367c_setAsicRegBits(RTL8367C_REG_EXT_TXC_DLY
, RTL8367C_EXT1_GMII_TX_DELAY_MASK
, 5)) != RT_ERR_OK
)
2757 if( (retVal
= rtl8367c_setAsicRegBits(RTL8367C_REG_EXT_TXC_DLY
, RTL8367C_EXT0_GMII_TX_DELAY_MASK
, 6)) != RT_ERR_OK
)
2762 if( (mode
== EXT_TMII_MAC
) || (mode
== EXT_TMII_PHY
) )
2764 if( (retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_BYPASS_LINE_RATE
, id
, 1)) != RT_ERR_OK
)
2769 if( (retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_BYPASS_LINE_RATE
, id
, 0)) != RT_ERR_OK
)
2773 if( (mode
== EXT_SGMII
) || (mode
== EXT_HSGMII
) )
2776 return RT_ERR_PORT_ID
;
2778 if((retVal
= rtl8367c_setAsicReg(0x13C0, 0x0249)) != RT_ERR_OK
)
2781 if((retVal
= rtl8367c_getAsicReg(0x13C1, &option
)) != RT_ERR_OK
)
2784 if((retVal
= rtl8367c_setAsicReg(0x13C0, 0x0000)) != RT_ERR_OK
)
2788 if(mode
== EXT_SGMII
)
2792 for(i
= 0; i
<= 7; i
++)
2794 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA
, redData
[i
][0])) != RT_ERR_OK
)
2797 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR
, redData
[i
][1])) != RT_ERR_OK
)
2800 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD
, 0x00C0)) != RT_ERR_OK
)
2806 for(i
= 0; i
<= 7; i
++)
2808 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA
, redDataSB
[i
][0])) != RT_ERR_OK
)
2811 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR
, redDataSB
[i
][1])) != RT_ERR_OK
)
2814 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD
, 0x00C0)) != RT_ERR_OK
)
2820 if(mode
== EXT_HSGMII
)
2824 if( (retVal
= rtl8367c_setAsicReg(0x13c2, 0x0249)) != RT_ERR_OK
)
2827 if( (retVal
= rtl8367c_getAsicReg(0x1301, ®Value
)) != RT_ERR_OK
)
2830 if( (retVal
= rtl8367c_setAsicReg(0x13c2, 0x0000)) != RT_ERR_OK
)
2833 if ( ((regValue
& 0x00F0) >> 4) == 0x0001)
2835 for(i
= 0; i
<= 8; i
++)
2837 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA
, redData1
[i
][0])) != RT_ERR_OK
)
2840 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR
, redData1
[i
][1])) != RT_ERR_OK
)
2843 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD
, 0x00C0)) != RT_ERR_OK
)
2847 else if ( ((regValue
& 0x00F0) >> 4) == 0x0005)
2849 for(i
= 0; i
<= 8; i
++)
2851 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA
, redData5
[i
][0])) != RT_ERR_OK
)
2854 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR
, redData5
[i
][1])) != RT_ERR_OK
)
2857 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD
, 0x00C0)) != RT_ERR_OK
)
2861 else if ( ((regValue
& 0x00F0) >> 4) == 0x0006)
2863 for(i
= 0; i
<= 8; i
++)
2865 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA
, redData6
[i
][0])) != RT_ERR_OK
)
2868 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR
, redData6
[i
][1])) != RT_ERR_OK
)
2871 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD
, 0x00C0)) != RT_ERR_OK
)
2875 else if ( ((regValue
& 0x00F0) >> 4) == 0x0008)
2877 for(i
= 0; i
<= 8; i
++)
2879 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA
, redData8
[i
][0])) != RT_ERR_OK
)
2882 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR
, redData8
[i
][1])) != RT_ERR_OK
)
2885 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD
, 0x00C0)) != RT_ERR_OK
)
2889 else if ( ((regValue
& 0x00F0) >> 4) == 0x0009)
2891 for(i
= 0; i
<= 8; i
++)
2893 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA
, redData9
[i
][0])) != RT_ERR_OK
)
2896 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR
, redData9
[i
][1])) != RT_ERR_OK
)
2899 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD
, 0x00C0)) != RT_ERR_OK
)
2906 for(i
= 0; i
<= 8; i
++)
2908 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA
, redDataHB
[i
][0])) != RT_ERR_OK
)
2911 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR
, redDataHB
[i
][1])) != RT_ERR_OK
)
2914 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD
, 0x00C0)) != RT_ERR_OK
)
2920 /* Only one ext port should care SGMII setting */
2924 if(mode
== EXT_SGMII
)
2926 if( (retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_MAC8_SEL_SGMII_OFFSET
, 1)) != RT_ERR_OK
)
2929 if( (retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_MAC8_SEL_HSGMII_OFFSET
, 0)) != RT_ERR_OK
)
2932 else if(mode
== EXT_HSGMII
)
2934 if( (retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_MAC8_SEL_SGMII_OFFSET
, 0)) != RT_ERR_OK
)
2937 if( (retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_MAC8_SEL_HSGMII_OFFSET
, 1)) != RT_ERR_OK
)
2943 if((mode
!= EXT_1000X_100FX
) && (mode
!= EXT_1000X
) && (mode
!= EXT_100FX
))
2945 if( (retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_MAC8_SEL_SGMII_OFFSET
, 0)) != RT_ERR_OK
)
2948 if( (retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_MAC8_SEL_HSGMII_OFFSET
, 0)) != RT_ERR_OK
)
2954 if(0 == id
|| 1 == id
)
2956 if((retVal
= rtl8367c_setAsicRegBits(RTL8367C_REG_DIGITAL_INTERFACE_SELECT
, RTL8367C_SELECT_GMII_0_MASK
<< (id
* RTL8367C_SELECT_GMII_1_OFFSET
), mode
)) != RT_ERR_OK
)
2961 if((retVal
= rtl8367c_setAsicRegBits(RTL8367C_REG_DIGITAL_INTERFACE_SELECT_1
, RTL8367C_SELECT_GMII_2_MASK
, mode
)) != RT_ERR_OK
)
2965 /* Serdes not reset */
2966 if( (mode
== EXT_SGMII
) || (mode
== EXT_HSGMII
) )
2968 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA
, 0x7106)) != RT_ERR_OK
)
2971 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR
, 0x0003)) != RT_ERR_OK
)
2974 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD
, 0x00C0)) != RT_ERR_OK
)
2978 if( (mode
== EXT_SGMII
) || (mode
== EXT_HSGMII
) )
2980 if ((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_CHIP_RESET
, RTL8367C_DW8051_RST_OFFSET
, 1)) != RT_ERR_OK
)
2983 if ((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_MISCELLANEOUS_CONFIGURE0
, RTL8367C_DW8051_EN_OFFSET
, 1)) != RT_ERR_OK
)
2986 if ((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_DW8051_RDY
, RTL8367C_ACS_IROM_ENABLE_OFFSET
, 1)) != RT_ERR_OK
)
2989 if ((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_DW8051_RDY
, RTL8367C_IROM_MSB_OFFSET
, 0)) != RT_ERR_OK
)
2992 for(idx
= 0; idx
< SGMII_INIT_SIZE
; idx
++)
2994 if ((retVal
= rtl8367c_setAsicReg(0xE000 + idx
, (rtk_uint32
)Sgmii_Init
[idx
])) != RT_ERR_OK
)
2998 if ((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_DW8051_RDY
, RTL8367C_IROM_MSB_OFFSET
, 0)) != RT_ERR_OK
)
3001 if ((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_DW8051_RDY
, RTL8367C_ACS_IROM_ENABLE_OFFSET
, 0)) != RT_ERR_OK
)
3004 if ((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_CHIP_RESET
, RTL8367C_DW8051_RST_OFFSET
, 0)) != RT_ERR_OK
)
3011 if( (mode
== EXT_TMII_MAC
) || (mode
== EXT_TMII_PHY
) )
3013 if( (retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_BYPASS_LINE_RATE
, id
+2, 1)) != RT_ERR_OK
)
3018 if( (retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_BYPASS_LINE_RATE
, id
+2, 0)) != RT_ERR_OK
)
3025 if(mode
== EXT_HSGMII
)
3026 return RT_ERR_PORT_ID
;
3028 if (mode
== EXT_SGMII
)
3030 /*cfg port8 with MII mac mode*/
3031 if ((retVal
= rtl8367c_setAsicRegBits(0x1305, 0xf0, 0)) != RT_ERR_OK
)
3034 /*enable port8 SGMII*/
3035 if ((retVal
= rtl8367c_setAsicRegBit(0x1d92, 14, 1)) != RT_ERR_OK
)
3038 else if (mode
== EXT_1000X
|| mode
== EXT_100FX
|| mode
== EXT_1000X_100FX
)
3040 /*cfg port8 with MII mac mode*/
3041 if ((retVal
= rtl8367c_setAsicRegBits(0x1305, 0xf0, 0)) != RT_ERR_OK
)
3044 /*disable port8 SGMII*/
3045 if ((retVal
= rtl8367c_setAsicRegBit(0x1d92, 14, 0)) != RT_ERR_OK
)
3048 /*set fiber link up*/
3049 if((retVal
= rtl8367c_setAsicRegBit(0x6210, 11, 0)) != RT_ERR_OK
)
3054 /*cfg port8 with MII mac mode*/
3055 if ((retVal
= rtl8367c_setAsicRegBits(0x1305, 0xf0, mode
)) != RT_ERR_OK
)
3058 /*disable port8 SGMII*/
3059 if ((retVal
= rtl8367c_setAsicRegBit(0x1d92, 14, 0)) != RT_ERR_OK
)
3063 if ((retVal
= rtl8367c_setAsicRegBits(0x1d92, 0x1f00, 0x1f)) != RT_ERR_OK
)
3068 if (mode
== EXT_HSGMII
)
3070 if ((retVal
= rtl8367c_setAsicReg(0x130, 7)) != RT_ERR_OK
)
3073 if ((retVal
= rtl8367c_setAsicReg(0x39f, 7)) != RT_ERR_OK
)
3076 if ((retVal
= rtl8367c_setAsicReg(0x3fa, 7)) != RT_ERR_OK
)
3081 if ((retVal
= rtl8367c_setAsicReg(0x130, 1)) != RT_ERR_OK
)
3084 if ((retVal
= rtl8367c_setAsicReg(0x39f, 1)) != RT_ERR_OK
)
3087 if ((retVal
= rtl8367c_setAsicReg(0x3fa, 4)) != RT_ERR_OK
)
3093 if (mode
== EXT_SGMII
)
3095 /*cfg port9 with MII mac mode*/
3096 if ((retVal
= rtl8367c_setAsicRegBits(0x13c3, 0xf, 0)) != RT_ERR_OK
)
3099 /*enable port9 SGMII*/
3100 if ((retVal
= rtl8367c_setAsicRegBit(0x1d92, 6, 1)) != RT_ERR_OK
)
3103 /*disable port9 HSGMII*/
3104 if ((retVal
= rtl8367c_setAsicRegBit(0x1d92, 7, 0)) != RT_ERR_OK
)
3107 else if (mode
== EXT_HSGMII
)
3109 /*cfg port9 with MII mac mode*/
3110 if ((retVal
= rtl8367c_setAsicRegBits(0x13c3, 0xf, 0)) != RT_ERR_OK
)
3113 /*disable port9 SGMII*/
3114 if ((retVal
= rtl8367c_setAsicRegBit(0x1d92, 6, 0)) != RT_ERR_OK
)
3117 /*enable port9 HSGMII*/
3118 if ((retVal
= rtl8367c_setAsicRegBit(0x1d92, 7, 1)) != RT_ERR_OK
)
3121 else if (mode
== EXT_1000X
|| mode
== EXT_100FX
|| mode
== EXT_1000X_100FX
)
3123 /*cfg port9 with MII mac mode*/
3124 if ((retVal
= rtl8367c_setAsicRegBits(0x13c3, 0xf, 0)) != RT_ERR_OK
)
3127 /*disable port9 SGMII*/
3128 if ((retVal
= rtl8367c_setAsicRegBit(0x1d92, 6, 0)) != RT_ERR_OK
)
3131 /*disable port9 HSGMII*/
3132 if ((retVal
= rtl8367c_setAsicRegBit(0x1d92, 7, 0)) != RT_ERR_OK
)
3135 /*set fiber link up*/
3136 if((retVal
= rtl8367c_setAsicRegBit(0x6200, 11, 0)) != RT_ERR_OK
)
3141 /*cfg port9 with MII mac mode*/
3142 if ((retVal
= rtl8367c_setAsicRegBits(0x13c3, 0xf, mode
)) != RT_ERR_OK
)
3145 /*disable port9 SGMII*/
3146 if ((retVal
= rtl8367c_setAsicRegBit(0x1d92, 6, 0)) != RT_ERR_OK
)
3149 /*disable port9 HSGMII*/
3150 if ((retVal
= rtl8367c_setAsicRegBit(0x1d92, 7, 0)) != RT_ERR_OK
)
3154 if ((retVal
= rtl8367c_setAsicRegBits(0x1d92, 0x1f, 0x1f)) != RT_ERR_OK
)
3158 /*SET TO RGMII MODE*/
3159 if (mode
== EXT_RGMII
)
3161 /*disable paral led pad*/
3162 if ((retVal
= rtl8367c_setAsicReg(RTL8367C_REG_PARA_LED_IO_EN3
, 0)) != RT_ERR_OK
)
3165 if ((retVal
= rtl8367c_setAsicReg(RTL8367C_REG_PARA_LED_IO_EN1
, 0)) != RT_ERR_OK
)
3168 if ((retVal
= rtl8367c_setAsicReg(RTL8367C_REG_PARA_LED_IO_EN2
, 0)) != RT_ERR_OK
)
3174 /*1: RGMII1 bias work at 3.3V, 0: RGMII1 bias work at 2.5V*/
3175 if ((retVal
= rtl8367c_setAsicRegBit(0x1303, 9, 1)) != RT_ERR_OK
)
3179 if ((retVal
= rtl8367c_setAsicRegBit(0x1303, 6, 1)) != RT_ERR_OK
)
3183 if ((retVal
= rtl8367c_setAsicRegBit(0x1303, 4, 1)) != RT_ERR_OK
)
3187 if ((retVal
= rtl8367c_setAsicRegBit(0x1303, 1, 0)) != RT_ERR_OK
)
3190 /*EXT1 RGMII TXC delay 2ns*/
3191 if ((retVal
= rtl8367c_setAsicRegBit(0x1307, 3, 1)) != RT_ERR_OK
)
3194 /*cfg_Ext1_rgtxc_dly = 0*/
3195 if ((retVal
= rtl8367c_setAsicRegBits(0x13f9, 0x38, 0)) != RT_ERR_OK
)
3199 if ((retVal
= rtl8367c_setAsicRegBits(0x1307, 0x7, 0)) != RT_ERR_OK
)
3203 if ((retVal
= rtl8367c_setAsicRegBits(0x1304, 0x7000, 4)) != RT_ERR_OK
)
3207 if ((retVal
= rtl8367c_setAsicRegBits(0x13f9, 0x700, 4)) != RT_ERR_OK
)
3212 /*1: RGMII1 bias work at 3.3V, 0: RGMII1 bias work at 2.5V*/
3213 if ((retVal
= rtl8367c_setAsicRegBit(0x1303, 10, 1)) != RT_ERR_OK
)
3217 if ((retVal
= rtl8367c_setAsicRegBit(0x13e2, 2, 1)) != RT_ERR_OK
)
3221 if ((retVal
= rtl8367c_setAsicRegBit(0x13e2, 1, 1)) != RT_ERR_OK
)
3225 if ((retVal
= rtl8367c_setAsicRegBit(0x13e2, 0, 0)) != RT_ERR_OK
)
3228 /*EXT1 RGMII TXC delay 2ns*/
3229 if ((retVal
= rtl8367c_setAsicRegBit(0x13c5, 3, 1)) != RT_ERR_OK
)
3232 /*cfg_Ext1_rgtxc_dly = 0*/
3233 if ((retVal
= rtl8367c_setAsicRegBits(0x13f9, 0x1c0, 0)) != RT_ERR_OK
)
3237 if ((retVal
= rtl8367c_setAsicRegBits(0x13c5, 0x7, 0)) != RT_ERR_OK
)
3241 if ((retVal
= rtl8367c_setAsicRegBits(0x13e2, 0x1c0, 4)) != RT_ERR_OK
)
3245 if ((retVal
= rtl8367c_setAsicRegBits(0x13e2, 0x38, 4)) != RT_ERR_OK
)
3249 else if (mode
== EXT_SGMII
)
3253 /*sds 1 reg 1 page 0x21 write value 0xec91*/
3254 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA
, 0xec91)) != RT_ERR_OK
)
3257 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR
, (0x21<<5) | 1)) != RT_ERR_OK
)
3260 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD
, 0x00C1)) != RT_ERR_OK
)
3263 /*sds 1 reg 5 page 0x24 write value 0x5825*/
3264 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA
, 0x5825)) != RT_ERR_OK
)
3267 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR
, (0x24<<5) | 5)) != RT_ERR_OK
)
3270 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD
, 0x00C1)) != RT_ERR_OK
)
3273 if ((retVal
= rtl8367c_setAsicRegBits(0x1d92, 0x1f00, 2)) != RT_ERR_OK
)
3276 /*?????????????????*/
3281 /*sds 0 reg 0 page 0x28 write value 0x942c*/
3282 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA
, 0x942c)) != RT_ERR_OK
)
3285 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR
, (0x28<<5) | 0)) != RT_ERR_OK
)
3288 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD
, 0x00C0)) != RT_ERR_OK
)
3291 /*sds 0 reg 0 page 0x24 write value 0x942c*/
3292 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA
, 0x942c)) != RT_ERR_OK
)
3295 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR
, (0x24<<5) | 0)) != RT_ERR_OK
)
3298 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD
, 0x00C0)) != RT_ERR_OK
)
3301 /*sds 0 reg 5 page 0x21 write value 0x8dc3*/
3302 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA
, 0x8dc3)) != RT_ERR_OK
)
3305 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR
, (0x21<<5) | 5)) != RT_ERR_OK
)
3308 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD
, 0x00C0)) != RT_ERR_OK
)
3311 if ((retVal
= rtl8367c_setAsicRegBits(0x1d92, 0x1f, 2)) != RT_ERR_OK
)
3314 /*?????????????????*/
3317 else if (mode
== EXT_HSGMII
)
3321 /*sds 0 reg 0 page 0x28 write value 0x942c*/
3322 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA
, 0x942c)) != RT_ERR_OK
)
3325 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR
, (0x28<<5) | 0)) != RT_ERR_OK
)
3328 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD
, 0x00C0)) != RT_ERR_OK
)
3331 /*sds 0 reg 0 page 0x24 write value 0x942c*/
3332 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA
, 0x942c)) != RT_ERR_OK
)
3335 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR
, (0x24<<5) | 0)) != RT_ERR_OK
)
3338 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD
, 0x00C0)) != RT_ERR_OK
)
3341 /*sds 0 reg 5 page 0x21 write value 0x8dc3*/
3342 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA
, 0x8dc3)) != RT_ERR_OK
)
3345 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR
, (0x21<<5) | 5)) != RT_ERR_OK
)
3348 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD
, 0x00C0)) != RT_ERR_OK
)
3352 /* optimizing HISGMII performance while RGMII used & */
3353 /*sds 0 reg 9 page 0x21 write value 0x3931*/
3354 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA
, 0x3931)) != RT_ERR_OK
)
3357 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR
, (0x21<<5)|9) ) != RT_ERR_OK
)
3360 if( (retVal
= rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD
, 0x00C0)) != RT_ERR_OK
)
3364 if ((retVal
= rtl8367c_setAsicRegBits(0x1d92, 0x1f, 0x12)) != RT_ERR_OK
)
3367 /*?????????????????*/
3370 else if (mode
== EXT_1000X
)
3375 if( (retVal
= rtl8367c_setAsicSdsReg(1, 1, 0x21, 0xec91)) != RT_ERR_OK
)
3377 if( (retVal
= rtl8367c_setAsicSdsReg(1, 5, 0x24, 0x5825)) != RT_ERR_OK
)
3379 if ((retVal
= rtl8367c_setAsicRegBits(0x1d92, 0x1f00, 4)) != RT_ERR_OK
)
3382 if ((retVal
= rtl8367c_setAsicRegBits(0x1d92, 0x1f00, 0x1f)) != RT_ERR_OK
)
3385 /*patch speed change sds1 1000M*/
3386 if( (retVal
= rtl8367c_getAsicSdsReg(1, 4, 0, ®Value
)) != RT_ERR_OK
)
3388 regValue
&= 0xFFFF0FFF;
3390 if( (retVal
= rtl8367c_setAsicSdsReg(1, 4, 0, regValue
)) != RT_ERR_OK
)
3393 if( (retVal
= rtl8367c_getAsicSdsReg(1, 0, 2, ®Value
)) != RT_ERR_OK
)
3395 regValue
&= 0xFFFFdFFF;
3397 if( (retVal
= rtl8367c_setAsicSdsReg(1, 0, 2, regValue
)) != RT_ERR_OK
)
3401 if( (retVal
= rtl8367c_getAsicSdsReg(1, 4, 0, ®Value
)) != RT_ERR_OK
)
3403 regValue
&= 0xFFFFEFFF;
3404 if( (retVal
= rtl8367c_setAsicSdsReg(1, 4, 0, regValue
)) != RT_ERR_OK
)
3407 if ((retVal
= rtl8367c_setAsicRegBits(0x1d92, 0x1f00, 4)) != RT_ERR_OK
)
3409 if ((retVal
= rtl8367c_setAsicRegBits(0x1d92, 0x6000, 0)) != RT_ERR_OK
)
3415 if( (retVal
= rtl8367c_setAsicSdsReg(0, 0, 0x28, 0x942c)) != RT_ERR_OK
)
3417 if( (retVal
= rtl8367c_setAsicSdsReg(0, 0, 0x24, 0x942c)) != RT_ERR_OK
)
3419 if( (retVal
= rtl8367c_setAsicSdsReg(0, 5, 0x21, 0x8dc3)) != RT_ERR_OK
)
3422 if ((retVal
= rtl8367c_setAsicRegBits(0x1d92, 0x1f, 4)) != RT_ERR_OK
)
3425 /*patch speed change sds0 1000M*/
3426 if ((retVal
= rtl8367c_setAsicRegBits(0x1d92, 0x1f, 0x1f)) != RT_ERR_OK
)
3429 if( (retVal
= rtl8367c_getAsicSdsReg(0, 4, 0, ®Value
)) != RT_ERR_OK
)
3431 regValue
&= 0xFFFF0FFF;
3433 if( (retVal
= rtl8367c_setAsicSdsReg(0, 4, 0, regValue
)) != RT_ERR_OK
)
3436 if( (retVal
= rtl8367c_getAsicSdsReg(0, 0, 2, ®Value
)) != RT_ERR_OK
)
3438 regValue
&= 0xFFFFDFFF;
3440 if( (retVal
= rtl8367c_setAsicSdsReg(0, 0, 2, regValue
)) != RT_ERR_OK
)
3443 if( (retVal
= rtl8367c_getAsicSdsReg(0, 4, 0, ®Value
)) != RT_ERR_OK
)
3445 regValue
&= 0xFFFFEFFF;
3446 if( (retVal
= rtl8367c_setAsicSdsReg(0, 4, 0, regValue
)) != RT_ERR_OK
)
3449 if ((retVal
= rtl8367c_setAsicRegBits(0x1d92, 0x1f, 4)) != RT_ERR_OK
)
3451 if ((retVal
= rtl8367c_setAsicRegBits(0x1d92, 0xe0, 0)) != RT_ERR_OK
)
3456 else if (mode
== EXT_100FX
)
3460 if( (retVal
= rtl8367c_setAsicSdsReg(1, 1, 0x21, 0xec91)) != RT_ERR_OK
)
3462 if( (retVal
= rtl8367c_setAsicSdsReg(1, 5, 0x24, 0x5825)) != RT_ERR_OK
)
3464 if ((retVal
= rtl8367c_setAsicRegBits(0x1d92, 0x1f00, 5)) != RT_ERR_OK
)
3467 /*patch speed change sds1 100M*/
3468 if ((retVal
= rtl8367c_setAsicRegBits(0x1d92, 0x1f00, 0x1f)) != RT_ERR_OK
)
3470 if( (retVal
= rtl8367c_getAsicSdsReg(1, 4, 0, ®Value
)) != RT_ERR_OK
)
3472 regValue
&= 0xFFFF0FFF;
3474 if( (retVal
= rtl8367c_setAsicSdsReg(1, 4, 0, regValue
)) != RT_ERR_OK
)
3477 if( (retVal
= rtl8367c_getAsicSdsReg(1, 0, 2, ®Value
)) != RT_ERR_OK
)
3479 regValue
&= 0xFFFFFFBF;
3481 if( (retVal
= rtl8367c_setAsicSdsReg(1, 0, 2, regValue
)) != RT_ERR_OK
)
3484 if( (retVal
= rtl8367c_setAsicReg(0x6214, 0x1a0)) != RT_ERR_OK
)
3487 if( (retVal
= rtl8367c_getAsicSdsReg(1, 4, 0, ®Value
)) != RT_ERR_OK
)
3489 regValue
&= 0xFFFFEFFF;
3490 if( (retVal
= rtl8367c_setAsicSdsReg(1, 4, 0, regValue
)) != RT_ERR_OK
)
3493 if ((retVal
= rtl8367c_setAsicRegBits(0x1d92, 0x1f00, 5)) != RT_ERR_OK
)
3495 if ((retVal
= rtl8367c_setAsicRegBits(0x1d92, 0x6000, 0)) != RT_ERR_OK
)
3500 if( (retVal
= rtl8367c_setAsicSdsReg(0, 0, 0x28, 0x942c)) != RT_ERR_OK
)
3502 if( (retVal
= rtl8367c_setAsicSdsReg(0, 0, 0x24, 0x942c)) != RT_ERR_OK
)
3504 if( (retVal
= rtl8367c_setAsicSdsReg(0, 5, 0x21, 0x8dc3)) != RT_ERR_OK
)
3506 if ((retVal
= rtl8367c_setAsicRegBits(0x1d92, 0x1f, 5)) != RT_ERR_OK
)
3509 /*patch speed change sds0 100M*/
3510 if ((retVal
= rtl8367c_setAsicRegBits(0x1d92, 0x1f, 0x1f)) != RT_ERR_OK
)
3513 if( (retVal
= rtl8367c_getAsicSdsReg(0, 4, 0, ®Value
)) != RT_ERR_OK
)
3515 regValue
&= 0xFFFF0FFF;
3517 if( (retVal
= rtl8367c_setAsicSdsReg(0, 4, 0, regValue
)) != RT_ERR_OK
)
3520 if( (retVal
= rtl8367c_getAsicSdsReg(0, 0, 2, ®Value
)) != RT_ERR_OK
)
3522 regValue
&= 0xFFFFFFBF;
3524 if( (retVal
= rtl8367c_setAsicSdsReg(0, 0, 2, regValue
)) != RT_ERR_OK
)
3527 if( (retVal
= rtl8367c_getAsicSdsReg(0, 4, 0, ®Value
)) != RT_ERR_OK
)
3529 regValue
&= 0xFFFFEFFF;
3530 if( (retVal
= rtl8367c_setAsicSdsReg(0, 4, 0, regValue
)) != RT_ERR_OK
)
3533 if ((retVal
= rtl8367c_setAsicRegBits(0x1d92, 0x1f, 5)) != RT_ERR_OK
)
3535 if ((retVal
= rtl8367c_setAsicRegBits(0x1d92, 0xe0, 0)) != RT_ERR_OK
)
3539 else if (mode
== EXT_1000X_100FX
)
3543 if( (retVal
= rtl8367c_setAsicSdsReg(1, 1, 0x21, 0xec91)) != RT_ERR_OK
)
3545 if( (retVal
= rtl8367c_setAsicSdsReg(1, 5, 0x24, 0x5825)) != RT_ERR_OK
)
3547 if( (retVal
= rtl8367c_setAsicSdsReg(1, 13, 0, 0x4616)) != RT_ERR_OK
)
3549 if( (retVal
= rtl8367c_setAsicSdsReg(1, 1, 0, 0xf20)) != RT_ERR_OK
)
3551 if ((retVal
= rtl8367c_setAsicRegBits(0x1d92, 0x1f00, 7)) != RT_ERR_OK
)
3556 if( (retVal
= rtl8367c_setAsicSdsReg(0, 0, 0x28, 0x942c)) != RT_ERR_OK
)
3558 if( (retVal
= rtl8367c_setAsicSdsReg(0, 0, 0x24, 0x942c)) != RT_ERR_OK
)
3560 if( (retVal
= rtl8367c_setAsicSdsReg(0, 5, 0x21, 0x8dc3)) != RT_ERR_OK
)
3562 if( (retVal
= rtl8367c_setAsicSdsReg(0, 13, 0, 0x4616)) != RT_ERR_OK
)
3564 if( (retVal
= rtl8367c_setAsicSdsReg(0, 1, 0, 0xf20)) != RT_ERR_OK
)
3566 if ((retVal
= rtl8367c_setAsicRegBits(0x1d92, 0x1f, 7)) != RT_ERR_OK
)
3575 /*restore patch, by designer. patch Tx FIFO issue, when not HSGMII 2.5G mode
3576 #sds0, page 1, reg 1, bit4=0*/
3577 if( (retVal
= rtl8367c_getAsicSdsReg(0, 1, 1, ®Value
)) != RT_ERR_OK
)
3579 regValue
&= 0xFFFFFFEF;
3580 if( (retVal
= rtl8367c_setAsicSdsReg(0, 1, 1, regValue
)) != RT_ERR_OK
)
3586 /*force port6 linkdown*/
3587 if ((retVal
= rtl8367c_setAsicReg(0x137c, 0x1000)) != RT_ERR_OK
)
3590 if ((retVal
= rtl8367c_getAsicRegBit(0x1d9d, 6, ®_data
)) != RT_ERR_OK
)
3592 while(reg_data
== 0)
3594 if ((retVal
= rtl8367c_getAsicRegBit(0x1d9d, 6, ®_data
)) != RT_ERR_OK
)
3598 if (mode
== EXT_SGMII
)
3600 /* disable mac6 mode_ext1 mode*/
3601 if ((retVal
= rtl8367c_getAsicRegBit(0x1d3d, 10, ®_data
)) != RT_ERR_OK
)
3605 if ((retVal
= rtl8367c_setAsicRegBits(0x1305, 0xf0, 0)) != RT_ERR_OK
)
3608 /*cfg_bypass_line_rate[1]=0*/
3609 if ((retVal
= rtl8367c_setAsicRegBit(0x3f7, 1, 0)) != RT_ERR_OK
)
3614 /*bit5: cfg_mac6_fib=0 & bit7: cfg_mac6_fib2=0*/
3615 if ((retVal
= rtl8367c_setAsicRegBit(0x1d41, 5, 0)) != RT_ERR_OK
)
3617 if ((retVal
= rtl8367c_setAsicRegBit(0x1d41, 7, 0)) != RT_ERR_OK
)
3621 if ((retVal
= rtl8367c_setAsicRegBit(0x1d95, 1, 0)) != RT_ERR_OK
)
3624 /*cfg_mac7_sel_sgmii= 0: MAC7 is not SGMII mode*/
3625 if ((retVal
= rtl8367c_setAsicRegBit(0x1d95, 0, 0)) != RT_ERR_OK
)
3628 /*#cfg_sgmii_link=0*/
3629 if ((retVal
= rtl8367c_setAsicRegBit(0x1d11, 9, 0)) != RT_ERR_OK
)
3632 /*cfg_mac6_sel_hsgmii=0*/
3633 if ((retVal
= rtl8367c_setAsicRegBit(0x1d11, 11, 0)) != RT_ERR_OK
)
3637 /*bit13: cfg_sds_mode_sel_new=1 :Enable new sds mode config method*/
3638 if ((retVal
= rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK
)
3641 /* bit[12:8]: Only valid when cfg_sds_mode_sel_new=1
3642 new_cfg_sds_mode=0x1F (reset mode) */
3643 if ((retVal
= rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK
)
3646 /*cfg_mac6_sel_sgmii= 1*/
3647 if ((retVal
= rtl8367c_setAsicRegBit(0x1d11, 6, 1)) != RT_ERR_OK
)
3650 /* bit[12:8]: Only valid when cfg_sds_mode_sel_new=1
3651 new_cfg_sds_mode=0x12 */
3652 if ((retVal
= rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x2)) != RT_ERR_OK
)
3655 /* MAC link source*/
3656 if ((retVal
= rtl8367c_setAsicRegBit(0x1d95, 2, 0)) != RT_ERR_OK
)
3661 else if (mode
== EXT_HSGMII
)
3664 /*restore patch, by designer. patch Tx FIFO issue, when HSGMII 2.5G mode
3665 #sds0, page 1, reg 1, bit4=1*/
3666 if( (retVal
= rtl8367c_getAsicSdsReg(0, 1, 1, ®Value
)) != RT_ERR_OK
)
3669 if( (retVal
= rtl8367c_setAsicSdsReg(0, 1, 1, regValue
)) != RT_ERR_OK
)
3672 /* mode_ext1 = disable*/
3673 /* disable mac6 mode_ext1 mode*/
3674 if ((retVal
= rtl8367c_getAsicRegBit(0x1d3d, 10, ®_data
)) != RT_ERR_OK
)
3678 if ((retVal
= rtl8367c_setAsicRegBits(0x1305, 0xf0, 0)) != RT_ERR_OK
)
3682 if ((retVal
= rtl8367c_setAsicRegBit(0x3f7, 1, 0)) != RT_ERR_OK
)
3685 /*bit5: cfg_mac6_fib=0 & bit7: cfg_mac6_fib2=0*/
3686 if ((retVal
= rtl8367c_setAsicRegBit(0x1d41, 5, 0)) != RT_ERR_OK
)
3688 if ((retVal
= rtl8367c_setAsicRegBit(0x1d41, 7, 0)) != RT_ERR_OK
)
3692 if ((retVal
= rtl8367c_setAsicRegBit(0x1d95, 1, 0)) != RT_ERR_OK
)
3695 /*cfg_mac7_sel_sgmii= 0*/
3696 if ((retVal
= rtl8367c_setAsicRegBit(0x1d95, 0, 0)) != RT_ERR_OK
)
3699 /*cfg_mac6_sel_sgmii=0*/
3700 if ((retVal
= rtl8367c_setAsicRegBit(0x1d11, 9, 0)) != RT_ERR_OK
)
3703 /*cfg_mac6_sel_hsgmii=1*/
3704 if ((retVal
= rtl8367c_setAsicRegBit(0x1d11, 11, 1)) != RT_ERR_OK
)
3707 /*cfg_mac6_sel_sgmii= 0*/
3708 if ((retVal
= rtl8367c_setAsicRegBit(0x1d11, 6, 0)) != RT_ERR_OK
)
3711 if ((retVal
= rtl8367c_setAsicReg(0xd0,7)) != RT_ERR_OK
)
3713 if ((retVal
= rtl8367c_setAsicReg(0x399, 7)) != RT_ERR_OK
)
3715 if ((retVal
= rtl8367c_setAsicReg(0x3fa, 7)) != RT_ERR_OK
)
3718 /*bit13: cfg_sds_mode_sel_new=1 :Enable new sds mode config method*/
3719 if ((retVal
= rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK
)
3721 /* bit[12:8]: Only valid when cfg_sds_mode_sel_new=1
3722 new_cfg_sds_mode=0x12 */
3723 if ((retVal
= rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x12)) != RT_ERR_OK
)
3726 1: MAC link = SGMII SerDes link
3727 0: MAC link = SGMII config link £¨cfg_sgmii_link£©
3729 if ((retVal
= rtl8367c_setAsicRegBit(0x1d95, 2, 0)) != RT_ERR_OK
)
3733 else if(mode
== EXT_1000X
)
3735 /* 0 2 0 bit 8~9 set 0, force n-way*/
3736 if((retVal
= rtl8367c_getAsicSdsReg(0, 2, 0, ®_data
)) != RT_ERR_OK
)
3738 reg_data
&= 0xFFFFFCFF;
3739 if((retVal
= rtl8367c_setAsicSdsReg(0,2,0, reg_data
)) != RT_ERR_OK
)
3742 /* disable mac6 mode_ext1 mode*/
3743 if ((retVal
= rtl8367c_getAsicRegBit(0x1d3d, 10, ®_data
)) != RT_ERR_OK
)
3747 if ((retVal
= rtl8367c_setAsicRegBits(0x1305, 0xf0, 0)) != RT_ERR_OK
)
3751 if ((retVal
= rtl8367c_setAsicRegBit(0x3f7, 1, 0)) != RT_ERR_OK
)
3754 if ((retVal
= rtl8367c_setAsicReg(0x1d11, 0x1500)) != RT_ERR_OK
)
3757 /*bit13: cfg_sds_mode_sel_new=1 :Enable new sds mode config method
3758 bit[1:0]:cfg_mac7_fib= 0 & cfg_mac7_sel_sgmii=0
3760 if ((retVal
= rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK
)
3762 if ((retVal
= rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK
)
3764 if ((retVal
= rtl8367c_setAsicRegBits(0x1d95, 3, 0)) != RT_ERR_OK
)
3767 /* bit0 :UTP/Fiber auto detect function enable or not, cfg_dis_det=1:disable
3768 bit3:Force UTP/Fiber auto detect function enable or not, cfg_force_auto-detect=1 */
3769 if ((retVal
= rtl8367c_setAsicReg(0x13eb, 0x15bb)) != RT_ERR_OK
)
3772 /*bit3: Serdes force mode:cfg_sds_frc_mode=1
3773 bit[2:0]: Serdes chip mode, cfg_sds_mode=3b'100 (force sds FIB1G mode) */
3774 if ((retVal
= rtl8367c_setAsicReg(0x13e7, 0xc)) != RT_ERR_OK
)
3778 /*bit5: cfg_mac6_fib=1 & bit7: cfg_mac6_fib2=1*/
3779 if ((retVal
= rtl8367c_setAsicRegBit(0x1d41, 5, 1)) != RT_ERR_OK
)
3781 if ((retVal
= rtl8367c_setAsicRegBit(0x1d41, 7, 1)) != RT_ERR_OK
)
3784 /*cfg_mac6_sel_hsgmii=0*/
3785 if ((retVal
= rtl8367c_setAsicRegBit(0x1d11, 11, 0)) != RT_ERR_OK
)
3788 /*cfg_mac6_sel_sgmii= 1*/
3789 if ((retVal
= rtl8367c_setAsicRegBit(0x1d11, 6, 1)) != RT_ERR_OK
)
3792 /* bit[12:8]: Only valid when cfg_sds_mode_sel_new=1
3793 new_cfg_sds_mode=0x4 */
3794 if ((retVal
= rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x4)) != RT_ERR_OK
)
3797 else if(mode
== EXT_100FX
)
3799 /* 0 2 0 bit 8~9 set 0, force n-way*/
3800 if((retVal
= rtl8367c_getAsicSdsReg(0, 2, 0, ®_data
)) != RT_ERR_OK
)
3802 reg_data
&= 0xFFFFFCFF;
3803 if((retVal
= rtl8367c_setAsicSdsReg(0,2,0, reg_data
)) != RT_ERR_OK
)
3806 /* disable mac6 mode_ext1 mode*/
3807 if ((retVal
= rtl8367c_getAsicRegBit(0x1d3d, 10, ®_data
)) != RT_ERR_OK
)
3811 if ((retVal
= rtl8367c_setAsicRegBits(0x1305, 0xf0, 0)) != RT_ERR_OK
)
3815 if ((retVal
= rtl8367c_setAsicRegBit(0x3f7, 1, 0)) != RT_ERR_OK
)
3818 if ((retVal
= rtl8367c_setAsicReg(0x1d11, 0x1500)) != RT_ERR_OK
)
3821 /*bit13: cfg_sds_mode_sel_new=1 :Enable new sds mode config method
3822 bit[1:0]:cfg_mac7_fib= 0 & cfg_mac7_sel_sgmii=0
3824 if ((retVal
= rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK
)
3826 if ((retVal
= rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK
)
3828 if ((retVal
= rtl8367c_setAsicRegBits(0x1d95, 3, 0)) != RT_ERR_OK
)
3831 /* bit0 :UTP/Fiber auto detect function enable or not, cfg_dis_det=1:disable
3832 bit3:Force UTP/Fiber auto detect function enable or not, cfg_force_auto-detect=1 */
3833 if ((retVal
= rtl8367c_setAsicReg(0x13eb, 0x15bb)) != RT_ERR_OK
)
3836 /*!!!!! cfg_sds_frc_mode=1 & cfg_sds_mode=3b'101 (force sds fib100M mode)*/
3837 if ((retVal
= rtl8367c_setAsicReg(0x13e7, 0xc)) != RT_ERR_OK
)
3841 /*bit5: cfg_mac6_fib=1 & bit7: cfg_mac6_fib2=1*/
3842 if ((retVal
= rtl8367c_setAsicRegBit(0x1d41, 5, 1)) != RT_ERR_OK
)
3844 if ((retVal
= rtl8367c_setAsicRegBit(0x1d41, 7, 1)) != RT_ERR_OK
)
3847 /*cfg_mac6_sel_hsgmii=0*/
3848 if ((retVal
= rtl8367c_setAsicRegBit(0x1d11, 11, 0)) != RT_ERR_OK
)
3851 /*cfg_mac6_sel_sgmii= 1*/
3852 if ((retVal
= rtl8367c_setAsicRegBit(0x1d11, 6, 1)) != RT_ERR_OK
)
3855 /* bit[12:8]: Only valid when cfg_sds_mode_sel_new=1
3856 new_cfg_sds_mode=0x5 */
3857 if ((retVal
= rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x5)) != RT_ERR_OK
)
3860 else if(mode
== EXT_1000X_100FX
)
3862 /* 0 2 0 bit 8~9 set 0, force n-way*/
3863 if((retVal
= rtl8367c_getAsicSdsReg(0, 2, 0, ®_data
)) != RT_ERR_OK
)
3865 reg_data
&= 0xFFFFFCFF;
3866 if((retVal
= rtl8367c_setAsicSdsReg(0,2,0, reg_data
)) != RT_ERR_OK
)
3869 /* disable mac6 mode_ext1 mode*/
3870 if ((retVal
= rtl8367c_getAsicRegBit(0x1d3d, 10, ®_data
)) != RT_ERR_OK
)
3874 if ((retVal
= rtl8367c_setAsicRegBits(0x1305, 0xf0, 0)) != RT_ERR_OK
)
3878 if ((retVal
= rtl8367c_setAsicRegBit(0x3f7, 1, 0)) != RT_ERR_OK
)
3881 if ((retVal
= rtl8367c_setAsicReg(0x1d11, 0x1500)) != RT_ERR_OK
)
3884 /*bit13: cfg_sds_mode_sel_new=1 :Enable new sds mode config method
3885 bit[1:0]:cfg_mac7_fib= 0 & cfg_mac7_sel_sgmii=0
3887 if ((retVal
= rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK
)
3889 if ((retVal
= rtl8367c_setAsicRegBit(0x1d95, 13, 0)) != RT_ERR_OK
)
3891 if ((retVal
= rtl8367c_setAsicRegBits(0x1d95, 3, 0)) != RT_ERR_OK
)
3894 /* bit0 :UTP/Fiber auto detect function enable or not, cfg_dis_det=1:disable
3895 bit3:Force UTP/Fiber auto detect function enable or not, cfg_force_auto-detect=1 */
3896 if ((retVal
= rtl8367c_setAsicReg(0x13eb, 0x15bb)) != RT_ERR_OK
)
3899 /*!!!!!! cfg_sds_frc_mode=1 & cfg_sds_mode=3'b111: Fib1G/Fib100M auto detect */
3900 if ((retVal
= rtl8367c_setAsicReg(0x13e7, 0xc)) != RT_ERR_OK
)
3904 /*bit5: cfg_mac6_fib=1 & bit7: cfg_mac6_fib2=1*/
3905 if ((retVal
= rtl8367c_setAsicRegBit(0x1d41, 5, 1)) != RT_ERR_OK
)
3907 if ((retVal
= rtl8367c_setAsicRegBit(0x1d41, 7, 1)) != RT_ERR_OK
)
3910 /*cfg_mac6_sel_hsgmii=0*/
3911 if ((retVal
= rtl8367c_setAsicRegBit(0x1d11, 11, 0)) != RT_ERR_OK
)
3914 /*cfg_mac6_sel_sgmii= 1*/
3915 if ((retVal
= rtl8367c_setAsicRegBit(0x1d11, 6, 1)) != RT_ERR_OK
)
3918 /* bit[12:8]: Only valid when cfg_sds_mode_sel_new=1
3919 new_cfg_sds_mode=0x7 */
3920 if ((retVal
= rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x7)) != RT_ERR_OK
)
3923 else if(mode
< EXT_SGMII
)
3925 if ((retVal
= rtl8367c_setAsicRegBit(0x1d3d, 10, 0)) != RT_ERR_OK
)
3928 if ((retVal
= rtl8367c_setAsicRegBit(0x3f7, 1, 0)) != RT_ERR_OK
)
3931 /* keep default setting, disable mac6 sel SerDes mode,*/
3932 if ((retVal
= rtl8367c_setAsicRegBit(0x1d11, 11, 0)) != RT_ERR_OK
)
3934 if ((retVal
= rtl8367c_setAsicRegBit(0x1d11, 6, 0)) != RT_ERR_OK
)
3937 /*bit5: cfg_mac6_fib=0 & bit7: cfg_mac6_fib2=0*/
3938 if ((retVal
= rtl8367c_setAsicRegBit(0x1d41, 5, 0)) != RT_ERR_OK
)
3940 if ((retVal
= rtl8367c_setAsicRegBit(0x1d41, 7, 0)) != RT_ERR_OK
)
3943 if (mode
< EXT_GMII
)
3946 if ((retVal
= rtl8367c_setAsicRegBits(0x1305, 0xf0, mode
)) != RT_ERR_OK
)
3949 else if(mode
== EXT_RMII_MAC
)
3952 if ((retVal
= rtl8367c_setAsicRegBits(0x1305, 0xf0, 7)) != RT_ERR_OK
)
3955 else if(mode
== EXT_RMII_PHY
)
3957 if ((retVal
= rtl8367c_setAsicRegBits(0x1305, 0xf0, 8)) != RT_ERR_OK
)
3961 if ((mode
== EXT_TMII_MAC
) || (mode
== EXT_TMII_PHY
))
3963 if ((retVal
= rtl8367c_setAsicRegBit(0x3f7, 1, 1)) != RT_ERR_OK
)
3972 /*force port7 linkdown*/
3973 if ((retVal
= rtl8367c_setAsicReg(0x137d, 0x1000)) != RT_ERR_OK
)
3976 if ((retVal
= rtl8367c_getAsicRegBit(0x1d9d, 7, ®_data
)) != RT_ERR_OK
)
3978 while(reg_data
== 0)
3980 if ((retVal
= rtl8367c_getAsicRegBit(0x1d9d, 7, ®_data
)) != RT_ERR_OK
)
3984 if (mode
== EXT_SGMII
)
3986 /*disable mac7 sel ext2 xMII mode*/
3987 if ((retVal
= rtl8367c_setAsicRegBits(0x13c3, 0xf,0)) != RT_ERR_OK
)
3990 /*restore ext2 ability*/
3991 if ((retVal
= rtl8367c_setAsicReg(0x13c4, 0)) != RT_ERR_OK
)
3993 /* disable mac7 mode_ext2 */
3994 if ((retVal
= rtl8367c_setAsicRegBit(0x3f7, 2, 0)) != RT_ERR_OK
)
3997 /*bit5: cfg_mac6_fib=0 & bit7: cfg_mac6_fib2=0*/
3998 if ((retVal
= rtl8367c_setAsicRegBit(0x1d41, 5, 0)) != RT_ERR_OK
)
4000 if ((retVal
= rtl8367c_setAsicRegBit(0x1d41, 7, 0)) != RT_ERR_OK
)
4004 bit0:cfg_mac7_sel_sgmii=0,MAC7 is not SGMII mode
4005 bit1:cfg_mac7_fib= 0 */
4006 if ((retVal
= rtl8367c_setAsicRegBits(0x1d95, 3, 0)) != RT_ERR_OK
)
4009 /*cfg_mac6_sel_hsgmii=0*/
4010 if ((retVal
= rtl8367c_setAsicRegBit(0x1d11, 11, 0)) != RT_ERR_OK
)
4013 /*cfg_mac6_sel_sgmii= 1*/
4014 if ((retVal
= rtl8367c_setAsicRegBit(0x1d11, 6, 0)) != RT_ERR_OK
)
4017 /*Enable new sds mode config method, cfg_sds_mode_sel_new=1*/
4018 if ((retVal
= rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK
)
4021 /* bit[12:8]: Only valid when cfg_sds_mode_sel_new=1
4022 new_cfg_sds_mode=0x1F (reset mode) */
4023 if ((retVal
= rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK
)
4026 /*cfg_mac7_sel_sgmii= 1*/
4027 if ((retVal
= rtl8367c_setAsicRegBit(0x1d95, 0, 1)) != RT_ERR_OK
)
4030 /* bit[12:8]: Only valid when cfg_sds_mode_sel_new=1
4031 new_cfg_sds_mode=0x2 (SGMII mode)*/
4032 if ((retVal
= rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x2)) != RT_ERR_OK
)
4035 /*select MAC link source when port6/7 be set sgmii mode £¨cfg_sgmii_link£©*/
4036 if ((retVal
= rtl8367c_setAsicRegBit(0x1d95, 2, 0)) != RT_ERR_OK
)
4039 else if (mode
== EXT_1000X
)
4041 /* disable mac7 MII/TMM/RMII/GMII/RGMII mode, mode_ext2 = disable */
4042 if ((retVal
= rtl8367c_setAsicRegBits(0x13c3, 0xf, 0)) != RT_ERR_OK
)
4045 /*restore ext2 ability*/
4046 if ((retVal
= rtl8367c_setAsicReg(0x13c4, 0)) != RT_ERR_OK
)
4049 /* 0 2 0 bit 8~9 set 0, force n-way*/
4050 if((retVal
= rtl8367c_getAsicSdsReg(0, 2, 0, ®_data
)) != RT_ERR_OK
)
4052 reg_data
&= 0xFFFFFCFF;
4053 if((retVal
= rtl8367c_setAsicSdsReg(0,2,0, reg_data
)) != RT_ERR_OK
)
4056 /*restore ext2 ability*/
4057 if ((retVal
= rtl8367c_setAsicRegBit(0x3f7, 2, 0)) != RT_ERR_OK
)
4060 /* keep default setting, disable mac6 sel serdes*/
4061 if ((retVal
= rtl8367c_setAsicReg(0x1d11, 0x1500)) != RT_ERR_OK
)
4064 /*Enable new sds mode config method, cfg_sds_mode_sel_new=1*/
4065 if ((retVal
= rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK
)
4068 /* bit[12:8]: Only valid when cfg_sds_mode_sel_new=1
4069 new_cfg_sds_mode=0x1F (reset mode) */
4070 if ((retVal
= rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK
)
4073 /*bit5: cfg_mac6_fib=0 & bit7: cfg_mac6_fib2=0*/
4074 if ((retVal
= rtl8367c_setAsicRegBit(0x1d41, 5, 0)) != RT_ERR_OK
)
4076 if ((retVal
= rtl8367c_setAsicRegBit(0x1d41, 7, 0)) != RT_ERR_OK
)
4079 /*cfg_mac7_sel_sgmii= 1 & cfg_mac7_fib=1*/
4080 if ((retVal
= rtl8367c_setAsicRegBits(0x1d95, 3, 3)) != RT_ERR_OK
)
4083 /*new_cfg_sds_mode=0x4 (FIB1000 mode)*/
4084 if ((retVal
= rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x4)) != RT_ERR_OK
)
4088 else if (mode
== EXT_100FX
)
4090 /* disable mac7 MII/TMM/RMII/GMII/RGMII mode, mode_ext2 = disable */
4091 if ((retVal
= rtl8367c_setAsicRegBits(0x13c3, 0xf, 0)) != RT_ERR_OK
)
4094 /*restore ext2 ability*/
4095 if ((retVal
= rtl8367c_setAsicReg(0x13c4, 0)) != RT_ERR_OK
)
4098 /* 0 2 0 bit 8~9 set 0, force n-way*/
4099 if((retVal
= rtl8367c_getAsicSdsReg(0, 2, 0, ®_data
)) != RT_ERR_OK
)
4101 reg_data
&= 0xFFFFFCFF;
4102 if((retVal
= rtl8367c_setAsicSdsReg(0,2,0, reg_data
)) != RT_ERR_OK
)
4105 /*restore ext2 ability*/
4106 if ((retVal
= rtl8367c_setAsicRegBit(0x3f7, 2, 0)) != RT_ERR_OK
)
4109 /* keep default setting, disable mac6 sel serdes*/
4110 if ((retVal
= rtl8367c_setAsicReg(0x1d11, 0x1500)) != RT_ERR_OK
)
4113 /*Enable new sds mode config method, cfg_sds_mode_sel_new=1*/
4114 if ((retVal
= rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK
)
4117 /* bit[12:8]: Only valid when cfg_sds_mode_sel_new=1
4118 new_cfg_sds_mode=0x1F (reset mode) */
4119 if ((retVal
= rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK
)
4122 /*bit5: cfg_mac6_fib=0 & bit7: cfg_mac6_fib2=0*/
4123 if ((retVal
= rtl8367c_setAsicRegBit(0x1d41, 5, 0)) != RT_ERR_OK
)
4125 if ((retVal
= rtl8367c_setAsicRegBit(0x1d41, 7, 0)) != RT_ERR_OK
)
4128 /*cfg_mac7_sel_sgmii= 1 & cfg_mac7_fib=1*/
4129 if ((retVal
= rtl8367c_setAsicRegBits(0x1d95, 3, 3)) != RT_ERR_OK
)
4132 /* bit[12:8]: Only valid when cfg_sds_mode_sel_new=1
4133 new_cfg_sds_mode=0x5 */
4134 if ((retVal
= rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x5)) != RT_ERR_OK
)
4137 else if (mode
== EXT_1000X_100FX
)
4139 /* disable mac7 MII/TMM/RMII/GMII/RGMII mode, mode_ext2 = disable */
4140 if ((retVal
= rtl8367c_setAsicRegBits(0x13c3, 0xf, 0)) != RT_ERR_OK
)
4143 /*restore ext2 ability*/
4144 if ((retVal
= rtl8367c_setAsicReg(0x13c4, 0)) != RT_ERR_OK
)
4147 /* 0 2 0 bit 8~9 set 0, force n-way*/
4148 if((retVal
= rtl8367c_getAsicSdsReg(0, 2, 0, ®_data
)) != RT_ERR_OK
)
4150 reg_data
&= 0xFFFFFCFF;
4151 if((retVal
= rtl8367c_setAsicSdsReg(0,2,0, reg_data
)) != RT_ERR_OK
)
4154 /*restore ext2 ability*/
4155 if ((retVal
= rtl8367c_setAsicRegBit(0x3f7, 2, 0)) != RT_ERR_OK
)
4158 /* keep default setting, disable mac6 sel serdes*/
4159 if ((retVal
= rtl8367c_setAsicReg(0x1d11, 0x1500)) != RT_ERR_OK
)
4162 /*Enable new sds mode config method, cfg_sds_mode_sel_new=1*/
4163 if ((retVal
= rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK
)
4166 /* bit[12:8]: Only valid when cfg_sds_mode_sel_new=1
4167 new_cfg_sds_mode=0x1F (reset mode) */
4168 if ((retVal
= rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK
)
4171 /*bit5: cfg_mac6_fib=0 & bit7: cfg_mac6_fib2=0*/
4172 if ((retVal
= rtl8367c_setAsicRegBit(0x1d41, 5, 0)) != RT_ERR_OK
)
4174 if ((retVal
= rtl8367c_setAsicRegBit(0x1d41, 7, 0)) != RT_ERR_OK
)
4177 /*cfg_mac7_sel_sgmii= 1 & cfg_mac7_fib=1*/
4178 if ((retVal
= rtl8367c_setAsicRegBits(0x1d95, 3, 3)) != RT_ERR_OK
)
4181 /* bit[12:8]: Only valid when cfg_sds_mode_sel_new=1
4182 new_cfg_sds_mode=0x7 */
4183 if ((retVal
= rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x7)) != RT_ERR_OK
)
4186 else if (mode
< EXT_SGMII
)
4188 if ((retVal
= rtl8367c_setAsicRegBit(0x1d3d, 10, 0)) != RT_ERR_OK
)
4191 if ((retVal
= rtl8367c_setAsicRegBit(0x3f7, 2, 0)) != RT_ERR_OK
)
4194 /* keep default setting, disable mac7 sel SerDes mode*/
4195 if ((retVal
= rtl8367c_setAsicReg(0x1d95, 0x1f00)) != RT_ERR_OK
)
4198 /*cfg_mac7_sel_sgmii= 0 & cfg_mac7_fib=0*/
4199 if ((retVal
= rtl8367c_setAsicRegBits(0x1d95, 3, 0)) != RT_ERR_OK
)
4203 if ((retVal
= rtl8367c_setAsicRegBits(0x13c3, 0xf, mode
)) != RT_ERR_OK
)
4206 if ((mode
== EXT_TMII_MAC
) || (mode
== EXT_TMII_PHY
))
4208 if ((retVal
= rtl8367c_setAsicRegBit(0x3f7, 2, 1)) != RT_ERR_OK
)
4213 else if ((mode
< EXT_END
) && (mode
> EXT_100FX
))
4215 if ((retVal
= rtl8367c_setAsicRegBits(0x13C3, 0xf, 0)) != RT_ERR_OK
)
4218 if ((retVal
= rtl8367c_setAsicRegBit(0x3f7, 2, 0)) != RT_ERR_OK
)
4221 /*cfg_mac7_sel_sgmii= 0 & cfg_mac7_fib=0*/
4222 if ((retVal
= rtl8367c_setAsicRegBits(0x1d95, 3, 0)) != RT_ERR_OK
)
4225 if ((retVal
= rtl8367c_setAsicRegBit(0x1d3d, 10, 1)) != RT_ERR_OK
)
4228 if ((retVal
= rtl8367c_getAsicRegBit(0x1d11, 11, ®_data
)) != RT_ERR_OK
)
4232 if ((retVal
= rtl8367c_setAsicRegBit(0x1d11, 6, 1)) != RT_ERR_OK
)
4237 if (mode
< EXT_RMII_MAC_2
)
4239 if ((retVal
= rtl8367c_setAsicRegBits(0x1305, 0xf0, (mode
-13))) != RT_ERR_OK
)
4244 if ((retVal
= rtl8367c_setAsicRegBits(0x1305, 0xf0, (mode
-12))) != RT_ERR_OK
)
4248 if ((mode
== EXT_TMII_MAC_2
) || (mode
== EXT_TMII_PHY_2
))
4250 if ((retVal
= rtl8367c_setAsicRegBit(0x3f7, 2, 1)) != RT_ERR_OK
)
4261 * rtl8367c_getAsicPortExtMode
4263 * Get external interface mode configuration
4265 * id - external interface id (0~1)
4266 * pMode - external interface mode
4270 * RT_ERR_OK - Success
4271 * RT_ERR_SMI - SMI access error
4272 * RT_ERR_OUT_OF_RANGE - input parameter out of range
4276 ret_t
rtl8367c_getAsicPortExtMode(rtk_uint32 id
, rtk_uint32
*pMode
)
4279 rtk_uint32 regData
, regValue
, type
;
4281 if(id
>= RTL8367C_EXTNO
)
4282 return RT_ERR_OUT_OF_RANGE
;
4283 /*cfg_magic_id & get chip_id*/
4284 if((retVal
= rtl8367c_setAsicReg(0x13C2, 0x0249)) != RT_ERR_OK
)
4287 if((retVal
= rtl8367c_getAsicReg(0x1300, ®Value
)) != RT_ERR_OK
)
4290 if((retVal
= rtl8367c_setAsicReg(0x13C2, 0x0000)) != RT_ERR_OK
)
4311 return RT_ERR_FAILED
;
4320 if( (retVal
= rtl8367c_getAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_MAC8_SEL_SGMII_OFFSET
, ®Data
)) != RT_ERR_OK
)
4329 if( (retVal
= rtl8367c_getAsicRegBit(RTL8367C_REG_SDS_MISC
, RTL8367C_CFG_MAC8_SEL_HSGMII_OFFSET
, ®Data
)) != RT_ERR_OK
)
4334 *pMode
= EXT_HSGMII
;
4339 if(0 == id
|| 1 == id
)
4340 return rtl8367c_getAsicRegBits(RTL8367C_REG_DIGITAL_INTERFACE_SELECT
, RTL8367C_SELECT_GMII_0_MASK
<< (id
* RTL8367C_SELECT_GMII_1_OFFSET
), pMode
);
4342 return rtl8367c_getAsicRegBits(RTL8367C_REG_DIGITAL_INTERFACE_SELECT_1
, RTL8367C_SELECT_GMII_2_MASK
, pMode
);
4349 if ((retVal
= rtl8367c_getAsicReg(0x1d92, ®Data
))!=RT_ERR_OK
)
4352 if (regData
& 0x4000)
4358 else if (((regData
>> 8) & 0x1f) == 4)
4363 else if (((regData
>> 8) & 0x1f) == 5)
4368 else if (((regData
>> 8) & 0x1f) == 7)
4370 *pMode
= EXT_1000X_100FX
;
4374 return rtl8367c_getAsicRegBits(0x1305, 0xf0, pMode
);
4379 if ((retVal
= rtl8367c_getAsicRegBit(0x1d92, 6, ®Data
))!=RT_ERR_OK
)
4388 if ((retVal
= rtl8367c_getAsicRegBit(0x1d92, 7, ®Data
))!=RT_ERR_OK
)
4393 *pMode
= EXT_HSGMII
;
4397 if ((retVal
= rtl8367c_getAsicReg(0x1d92, ®Data
))!=RT_ERR_OK
)
4405 else if (regData
& 0x80)
4407 *pMode
= EXT_HSGMII
;
4410 else if ((regData
& 0x1f) == 4)
4415 else if ((regData
& 0x1f) == 5)
4420 else if ((regData
& 0x1f) == 7)
4422 *pMode
= EXT_1000X_100FX
;
4426 return rtl8367c_getAsicRegBits(0x1305, 0xf, pMode
);
4434 if ((retVal
= rtl8367c_getAsicReg(0x1d95, ®Data
))!=RT_ERR_OK
)
4437 if ((retVal
= rtl8367c_getAsicReg(0x1d41, ®Value
))!=RT_ERR_OK
)
4440 /* bit5: cfg_mac6_fib=1 && bit7: cfg_mac6_fib2 =1 */
4441 if((regValue
& 0xa0) == 0xa0 )
4443 /* new_cfg_sds_mode */
4444 regData
= regData
>> 8;
4445 if((regData
& 0x1f) == 4)
4450 else if((regData
& 0x1f) == 5)
4455 else if((regData
& 0x1f) == 7)
4457 *pMode
= EXT_1000X_100FX
;
4464 if ((retVal
= rtl8367c_getAsicReg(0x1d11, ®Data
))!=RT_ERR_OK
)
4467 /* check cfg_mac6_sel_sgmii */
4468 if((regData
>> 6) & 1)
4473 else if((regData
>> 11) & 1)
4475 *pMode
= EXT_HSGMII
;
4480 /* check port6 MAC mode */
4481 if ((retVal
= rtl8367c_getAsicRegBits(0x1305, 0xf0, ®Data
))!=RT_ERR_OK
)
4486 else if(regData
== 6)
4487 *pMode
= EXT_RMII_MAC
;
4488 else if(regData
== 7)
4489 *pMode
= EXT_RMII_PHY
;
4496 if ((retVal
= rtl8367c_getAsicReg(0x1d95, ®Data
))!=RT_ERR_OK
)
4499 /* bit0: cfg_mac7_sel_sgmii
4501 bit[12:8]: new_cfg_sds_mode*/
4502 if(((regData
& 0x3) == 3) && (((regData
>> 8) & 0x1f) == 0x4))
4507 else if (((regData
& 0x3) == 3) && (((regData
>> 8) & 0x1f) == 0x5))
4512 else if (((regData
& 0x3) == 3) && (((regData
>> 8) & 0x1f) == 0x7))
4514 *pMode
= EXT_1000X_100FX
;
4517 else if(regData
& 1)
4524 /* check port7 MAC mode */
4525 if ((retVal
= rtl8367c_getAsicRegBits(0x13c3, 0xf, ®Data
))!=RT_ERR_OK
)
4539 * rtl8370_setAsicPortEnableAll
4541 * Set ALL ports enable.
4543 * enable - enable all ports.
4547 * RT_ERR_OK - Success
4548 * RT_ERR_SMI - SMI access error
4552 ret_t
rtl8367c_setAsicPortEnableAll(rtk_uint32 enable
)
4555 return RT_ERR_INPUT
;
4557 return rtl8367c_setAsicRegBit(RTL8367C_REG_PHY_AD
, RTL8367C_PDNPHY_OFFSET
, !enable
);
4561 * rtl8367c_getAsicPortEnableAll
4563 * Set ALL ports enable.
4565 * enable - enable all ports.
4569 * RT_ERR_OK - Success
4570 * RT_ERR_SMI - SMI access error
4574 ret_t
rtl8367c_getAsicPortEnableAll(rtk_uint32
*pEnable
)
4579 retVal
= rtl8367c_getAsicRegBit(RTL8367C_REG_PHY_AD
, RTL8367C_PDNPHY_OFFSET
, ®Data
);
4580 if(retVal
!= RT_ERR_OK
)
4591 * rtl8367c_setAsicPortSmallIpg
4593 * Set small ipg egress mode
4595 * port - Physical port number (0~7)
4596 * enable - 0: normal, 1: small
4600 * RT_ERR_OK - Success
4601 * RT_ERR_SMI - SMI access error
4602 * RT_ERR_PORT_ID - Invalid port number
4606 ret_t
rtl8367c_setAsicPortSmallIpg(rtk_uint32 port
, rtk_uint32 enable
)
4608 if(port
>= RTL8367C_PORTNO
)
4609 return RT_ERR_PORT_ID
;
4611 return rtl8367c_setAsicRegBit(RTL8367C_PORT_SMALL_IPG_REG(port
), RTL8367C_PORT0_MISC_CFG_SMALL_TAG_IPG_OFFSET
, enable
);
4615 * rtl8367c_getAsicPortSmallIpg
4617 * Get small ipg egress mode
4619 * port - Physical port number (0~7)
4620 * pEnable - 0: normal, 1: small
4624 * RT_ERR_OK - Success
4625 * RT_ERR_SMI - SMI access error
4626 * RT_ERR_PORT_ID - Invalid port number
4630 ret_t
rtl8367c_getAsicPortSmallIpg(rtk_uint32 port
, rtk_uint32
* pEnable
)
4632 if(port
>= RTL8367C_PORTNO
)
4633 return RT_ERR_PORT_ID
;
4635 return rtl8367c_getAsicRegBit(RTL8367C_PORT_SMALL_IPG_REG(port
), RTL8367C_PORT0_MISC_CFG_SMALL_TAG_IPG_OFFSET
, pEnable
);
4639 * rtl8367c_setAsicPortLoopback
4643 * port - Physical port number (0~7)
4644 * enable - 0: Disable, 1: enable
4648 * RT_ERR_OK - Success
4649 * RT_ERR_SMI - SMI access error
4650 * RT_ERR_PORT_ID - Invalid port number
4654 ret_t
rtl8367c_setAsicPortLoopback(rtk_uint32 port
, rtk_uint32 enable
)
4656 if(port
>= RTL8367C_PORTNO
)
4657 return RT_ERR_PORT_ID
;
4659 return rtl8367c_setAsicRegBit(RTL8367C_PORT_MISC_CFG_REG(port
), RTL8367C_PORT0_MISC_CFG_MAC_LOOPBACK_OFFSET
, enable
);
4663 * rtl8367c_getAsicPortLoopback
4667 * port - Physical port number (0~7)
4669 * pEnable - 0: Disable, 1: enable
4671 * RT_ERR_OK - Success
4672 * RT_ERR_SMI - SMI access error
4673 * RT_ERR_PORT_ID - Invalid port number
4677 ret_t
rtl8367c_getAsicPortLoopback(rtk_uint32 port
, rtk_uint32
*pEnable
)
4679 if(port
>= RTL8367C_PORTNO
)
4680 return RT_ERR_PORT_ID
;
4682 return rtl8367c_getAsicRegBit(RTL8367C_PORT_MISC_CFG_REG(port
), RTL8367C_PORT0_MISC_CFG_MAC_LOOPBACK_OFFSET
, pEnable
);
4686 * rtl8367c_setAsicPortRTCTEnable
4688 * Set RTCT Enable echo response mode
4690 * portmask - Port mask of RTCT enabled (0-4)
4694 * RT_ERR_OK - Success
4695 * RT_ERR_SMI - SMI access error
4696 * RT_ERR_PORT_MASK - Invalid port mask
4698 * RTCT test takes 4.8 seconds at most.
4700 ret_t
rtl8367c_setAsicPortRTCTEnable(rtk_uint32 portmask
)
4706 if((retVal
= rtl8367c_setAsicReg(0x13C2, 0x0249)) != RT_ERR_OK
)
4709 if((retVal
= rtl8367c_getAsicReg(0x1300, ®Data
)) != RT_ERR_OK
)
4712 if( (regData
== 0x0276) || (regData
== 0x0597) )
4713 return RT_ERR_CHIP_NOT_SUPPORTED
;
4715 for(port
= 0; port
<= 10 ; port
++)
4717 if(portmask
& (0x0001 << port
))
4719 if((retVal
= rtl8367c_getAsicPHYOCPReg(port
, 0xa422, ®Data
)) != RT_ERR_OK
)
4723 if((retVal
= rtl8367c_setAsicPHYOCPReg(port
, 0xa422, regData
)) != RT_ERR_OK
)
4726 regData
|= 0x00F2;/*RTCT set to echo response mode*/
4727 if((retVal
= rtl8367c_setAsicPHYOCPReg(port
, 0xa422, regData
)) != RT_ERR_OK
)
4731 if((retVal
= rtl8367c_setAsicPHYOCPReg(port
, 0xa422, regData
)) != RT_ERR_OK
)
4740 * rtl8367c_setAsicPortRTCTDisable
4744 * portmask - Port mask of RTCT enabled (0-4)
4748 * RT_ERR_OK - Success
4749 * RT_ERR_SMI - SMI access error
4750 * RT_ERR_PORT_MASK - Invalid port mask
4752 * RTCT test takes 4.8 seconds at most.
4754 ret_t
rtl8367c_setAsicPortRTCTDisable(rtk_uint32 portmask
)
4760 if((retVal
= rtl8367c_setAsicReg(0x13C2, 0x0249)) != RT_ERR_OK
)
4763 if((retVal
= rtl8367c_getAsicReg(0x1300, ®Data
)) != RT_ERR_OK
)
4766 if( (regData
== 0x0276) || (regData
== 0x0597) )
4767 return RT_ERR_CHIP_NOT_SUPPORTED
;
4769 for(port
= 0; port
<= 10 ; port
++)
4771 if(portmask
& (0x0001 << port
))
4773 if((retVal
= rtl8367c_getAsicPHYOCPReg(port
, 0xa422, ®Data
)) != RT_ERR_OK
)
4777 if((retVal
= rtl8367c_setAsicPHYOCPReg(port
, 0xa422, regData
)) != RT_ERR_OK
)
4781 if((retVal
= rtl8367c_setAsicPHYOCPReg(port
, 0xa422, regData
)) != RT_ERR_OK
)
4785 if((retVal
= rtl8367c_setAsicPHYOCPReg(port
, 0xa422, regData
)) != RT_ERR_OK
)
4795 * rtl8367c_getAsicPortRTCTResult
4799 * port - Port ID of RTCT result
4801 * pResult - The result of port ID
4803 * RT_ERR_OK - Success
4804 * RT_ERR_SMI - SMI access error
4805 * RT_ERR_PORT_MASK - Invalid port mask
4806 * RT_ERR_PHY_RTCT_NOT_FINISH - RTCT test doesn't finish.
4808 * RTCT test takes 4.8 seconds at most.
4809 * If this API returns RT_ERR_PHY_RTCT_NOT_FINISH,
4810 * users should wait a whole then read it again.
4812 ret_t
rtl8367c_getAsicPortRTCTResult(rtk_uint32 port
, rtl8367c_port_rtct_result_t
*pResult
)
4815 rtk_uint32 regData
, finish
= 1;
4817 if((retVal
= rtl8367c_setAsicReg(0x13C2, 0x0249)) != RT_ERR_OK
)
4820 if((retVal
= rtl8367c_getAsicReg(0x1300, ®Data
)) != RT_ERR_OK
)
4823 if( (regData
== 0x6367) )
4825 if((retVal
= rtl8367c_getAsicPHYOCPReg(port
, 0xa422, ®Data
)) != RT_ERR_OK
)
4828 if((regData
& 0x8000) == 0x8000)
4831 if((retVal
= rtl8367c_setAsicPHYOCPReg(port
, 0xa436, 0x802a)) != RT_ERR_OK
)
4834 if((retVal
= rtl8367c_getAsicPHYOCPReg(port
, 0xa438, ®Data
)) != RT_ERR_OK
)
4837 pResult
->channelAOpen
= (regData
== 0x0048) ? 1 : 0;
4838 pResult
->channelAShort
= (regData
== 0x0050) ? 1 : 0;
4839 pResult
->channelAMismatch
= ((regData
== 0x0042) || (regData
== 0x0044)) ? 1 : 0;
4840 pResult
->channelALinedriver
= (regData
== 0x0041) ? 1 : 0;
4843 if((retVal
= rtl8367c_setAsicPHYOCPReg(port
, 0xa436, 0x802e)) != RT_ERR_OK
)
4846 if((retVal
= rtl8367c_getAsicPHYOCPReg(port
, 0xa438, ®Data
)) != RT_ERR_OK
)
4849 pResult
->channelBOpen
= (regData
== 0x0048) ? 1 : 0;
4850 pResult
->channelBShort
= (regData
== 0x0050) ? 1 : 0;
4851 pResult
->channelBMismatch
= ((regData
== 0x0042) || (regData
== 0x0044)) ? 1 : 0;
4852 pResult
->channelBLinedriver
= (regData
== 0x0041) ? 1 : 0;
4855 if((retVal
= rtl8367c_setAsicPHYOCPReg(port
, 0xa436, 0x8032)) != RT_ERR_OK
)
4858 if((retVal
= rtl8367c_getAsicPHYOCPReg(port
, 0xa438, ®Data
)) != RT_ERR_OK
)
4861 pResult
->channelCOpen
= (regData
== 0x0048) ? 1 : 0;
4862 pResult
->channelCShort
= (regData
== 0x0050) ? 1 : 0;
4863 pResult
->channelCMismatch
= ((regData
== 0x0042) || (regData
== 0x0044)) ? 1 : 0;
4864 pResult
->channelCLinedriver
= (regData
== 0x0041) ? 1 : 0;
4867 if((retVal
= rtl8367c_setAsicPHYOCPReg(port
, 0xa436, 0x8036)) != RT_ERR_OK
)
4870 if((retVal
= rtl8367c_getAsicPHYOCPReg(port
, 0xa438, ®Data
)) != RT_ERR_OK
)
4873 pResult
->channelDOpen
= (regData
== 0x0048) ? 1 : 0;
4874 pResult
->channelDShort
= (regData
== 0x0050) ? 1 : 0;
4875 pResult
->channelDMismatch
= ((regData
== 0x0042) || (regData
== 0x0044)) ? 1 : 0;
4876 pResult
->channelDLinedriver
= (regData
== 0x0041) ? 1 : 0;
4878 /* Channel A Length */
4879 if((retVal
= rtl8367c_setAsicPHYOCPReg(port
, 0xa436, 0x802c)) != RT_ERR_OK
)
4882 if((retVal
= rtl8367c_getAsicPHYOCPReg(port
, 0xa438, ®Data
)) != RT_ERR_OK
)
4885 pResult
->channelALen
= (regData
/ 2);
4887 /* Channel B Length */
4888 if((retVal
= rtl8367c_setAsicPHYOCPReg(port
, 0xa436, 0x8030)) != RT_ERR_OK
)
4891 if((retVal
= rtl8367c_getAsicPHYOCPReg(port
, 0xa438, ®Data
)) != RT_ERR_OK
)
4894 pResult
->channelBLen
= (regData
/ 2);
4896 /* Channel C Length */
4897 if((retVal
= rtl8367c_setAsicPHYOCPReg(port
, 0xa436, 0x8034)) != RT_ERR_OK
)
4900 if((retVal
= rtl8367c_getAsicPHYOCPReg(port
, 0xa438, ®Data
)) != RT_ERR_OK
)
4903 pResult
->channelCLen
= (regData
/ 2);
4905 /* Channel D Length */
4906 if((retVal
= rtl8367c_setAsicPHYOCPReg(port
, 0xa436, 0x8038)) != RT_ERR_OK
)
4909 if((retVal
= rtl8367c_getAsicPHYOCPReg(port
, 0xa438, ®Data
)) != RT_ERR_OK
)
4912 pResult
->channelDLen
= (regData
/ 2);
4917 else if(regData
== 0x6368)
4919 if((retVal
= rtl8367c_getAsicPHYOCPReg(port
, 0xa422, ®Data
)) != RT_ERR_OK
)
4922 if((regData
& 0x8000) == 0x8000)
4925 if((retVal
= rtl8367c_setAsicPHYOCPReg(port
, 0xa436, 0x802b)) != RT_ERR_OK
)
4928 if((retVal
= rtl8367c_getAsicPHYOCPReg(port
, 0xa438, ®Data
)) != RT_ERR_OK
)
4931 pResult
->channelAOpen
= (regData
== 0x0048) ? 1 : 0;
4932 pResult
->channelAShort
= (regData
== 0x0050) ? 1 : 0;
4933 pResult
->channelAMismatch
= ((regData
== 0x0042) || (regData
== 0x0044)) ? 1 : 0;
4934 pResult
->channelALinedriver
= (regData
== 0x0041) ? 1 : 0;
4937 if((retVal
= rtl8367c_setAsicPHYOCPReg(port
, 0xa436, 0x802f)) != RT_ERR_OK
)
4940 if((retVal
= rtl8367c_getAsicPHYOCPReg(port
, 0xa438, ®Data
)) != RT_ERR_OK
)
4943 pResult
->channelBOpen
= (regData
== 0x0048) ? 1 : 0;
4944 pResult
->channelBShort
= (regData
== 0x0050) ? 1 : 0;
4945 pResult
->channelBMismatch
= ((regData
== 0x0042) || (regData
== 0x0044)) ? 1 : 0;
4946 pResult
->channelBLinedriver
= (regData
== 0x0041) ? 1 : 0;
4949 if((retVal
= rtl8367c_setAsicPHYOCPReg(port
, 0xa436, 0x8033)) != RT_ERR_OK
)
4952 if((retVal
= rtl8367c_getAsicPHYOCPReg(port
, 0xa438, ®Data
)) != RT_ERR_OK
)
4955 pResult
->channelCOpen
= (regData
== 0x0048) ? 1 : 0;
4956 pResult
->channelCShort
= (regData
== 0x0050) ? 1 : 0;
4957 pResult
->channelCMismatch
= ((regData
== 0x0042) || (regData
== 0x0044)) ? 1 : 0;
4958 pResult
->channelCLinedriver
= (regData
== 0x0041) ? 1 : 0;
4961 if((retVal
= rtl8367c_setAsicPHYOCPReg(port
, 0xa436, 0x8037)) != RT_ERR_OK
)
4964 if((retVal
= rtl8367c_getAsicPHYOCPReg(port
, 0xa438, ®Data
)) != RT_ERR_OK
)
4967 pResult
->channelDOpen
= (regData
== 0x0048) ? 1 : 0;
4968 pResult
->channelDShort
= (regData
== 0x0050) ? 1 : 0;
4969 pResult
->channelDMismatch
= ((regData
== 0x0042) || (regData
== 0x0044)) ? 1 : 0;
4970 pResult
->channelDLinedriver
= (regData
== 0x0041) ? 1 : 0;
4972 /* Channel A Length */
4973 if((retVal
= rtl8367c_setAsicPHYOCPReg(port
, 0xa436, 0x802d)) != RT_ERR_OK
)
4976 if((retVal
= rtl8367c_getAsicPHYOCPReg(port
, 0xa438, ®Data
)) != RT_ERR_OK
)
4979 pResult
->channelALen
= (regData
/ 2);
4981 /* Channel B Length */
4982 if((retVal
= rtl8367c_setAsicPHYOCPReg(port
, 0xa436, 0x8031)) != RT_ERR_OK
)
4985 if((retVal
= rtl8367c_getAsicPHYOCPReg(port
, 0xa438, ®Data
)) != RT_ERR_OK
)
4988 pResult
->channelBLen
= (regData
/ 2);
4990 /* Channel C Length */
4991 if((retVal
= rtl8367c_setAsicPHYOCPReg(port
, 0xa436, 0x8035)) != RT_ERR_OK
)
4994 if((retVal
= rtl8367c_getAsicPHYOCPReg(port
, 0xa438, ®Data
)) != RT_ERR_OK
)
4997 pResult
->channelCLen
= (regData
/ 2);
4999 /* Channel D Length */
5000 if((retVal
= rtl8367c_setAsicPHYOCPReg(port
, 0xa436, 0x8039)) != RT_ERR_OK
)
5003 if((retVal
= rtl8367c_getAsicPHYOCPReg(port
, 0xa438, ®Data
)) != RT_ERR_OK
)
5006 pResult
->channelDLen
= (regData
/ 2);
5012 else if((regData
== 0x6511) || (regData
== 0x0801))
5014 if((retVal
= rtl8367c_getAsicPHYOCPReg(port
, 0xa422, ®Data
)) != RT_ERR_OK
)
5017 if((regData
& 0x8000) == 0x8000)
5020 if((retVal
= rtl8367c_setAsicPHYOCPReg(port
, 0xa436, 0x802a)) != RT_ERR_OK
)
5023 if((retVal
= rtl8367c_getAsicPHYOCPReg(port
, 0xa438, ®Data
)) != RT_ERR_OK
)
5026 pResult
->channelAOpen
= (regData
== 0x0048) ? 1 : 0;
5027 pResult
->channelAShort
= (regData
== 0x0050) ? 1 : 0;
5028 pResult
->channelAMismatch
= ((regData
== 0x0042) || (regData
== 0x0044)) ? 1 : 0;
5029 pResult
->channelALinedriver
= (regData
== 0x0041) ? 1 : 0;
5032 if((retVal
= rtl8367c_setAsicPHYOCPReg(port
, 0xa436, 0x802e)) != RT_ERR_OK
)
5035 if((retVal
= rtl8367c_getAsicPHYOCPReg(port
, 0xa438, ®Data
)) != RT_ERR_OK
)
5038 pResult
->channelBOpen
= (regData
== 0x0048) ? 1 : 0;
5039 pResult
->channelBShort
= (regData
== 0x0050) ? 1 : 0;
5040 pResult
->channelBMismatch
= ((regData
== 0x0042) || (regData
== 0x0044)) ? 1 : 0;
5041 pResult
->channelBLinedriver
= (regData
== 0x0041) ? 1 : 0;
5044 if((retVal
= rtl8367c_setAsicPHYOCPReg(port
, 0xa436, 0x8032)) != RT_ERR_OK
)
5047 if((retVal
= rtl8367c_getAsicPHYOCPReg(port
, 0xa438, ®Data
)) != RT_ERR_OK
)
5050 pResult
->channelCOpen
= (regData
== 0x0048) ? 1 : 0;
5051 pResult
->channelCShort
= (regData
== 0x0050) ? 1 : 0;
5052 pResult
->channelCMismatch
= ((regData
== 0x0042) || (regData
== 0x0044)) ? 1 : 0;
5053 pResult
->channelCLinedriver
= (regData
== 0x0041) ? 1 : 0;
5056 if((retVal
= rtl8367c_setAsicPHYOCPReg(port
, 0xa436, 0x8036)) != RT_ERR_OK
)
5059 if((retVal
= rtl8367c_getAsicPHYOCPReg(port
, 0xa438, ®Data
)) != RT_ERR_OK
)
5062 pResult
->channelDOpen
= (regData
== 0x0048) ? 1 : 0;
5063 pResult
->channelDShort
= (regData
== 0x0050) ? 1 : 0;
5064 pResult
->channelDMismatch
= ((regData
== 0x0042) || (regData
== 0x0044)) ? 1 : 0;
5065 pResult
->channelDLinedriver
= (regData
== 0x0041) ? 1 : 0;
5067 /* Channel A Length */
5068 if((retVal
= rtl8367c_setAsicPHYOCPReg(port
, 0xa436, 0x802c)) != RT_ERR_OK
)
5071 if((retVal
= rtl8367c_getAsicPHYOCPReg(port
, 0xa438, ®Data
)) != RT_ERR_OK
)
5074 pResult
->channelALen
= (regData
/ 2);
5076 /* Channel B Length */
5077 if((retVal
= rtl8367c_setAsicPHYOCPReg(port
, 0xa436, 0x8030)) != RT_ERR_OK
)
5080 if((retVal
= rtl8367c_getAsicPHYOCPReg(port
, 0xa438, ®Data
)) != RT_ERR_OK
)
5083 pResult
->channelBLen
= (regData
/ 2);
5085 /* Channel C Length */
5086 if((retVal
= rtl8367c_setAsicPHYOCPReg(port
, 0xa436, 0x8034)) != RT_ERR_OK
)
5089 if((retVal
= rtl8367c_getAsicPHYOCPReg(port
, 0xa438, ®Data
)) != RT_ERR_OK
)
5092 pResult
->channelCLen
= (regData
/ 2);
5094 /* Channel D Length */
5095 if((retVal
= rtl8367c_setAsicPHYOCPReg(port
, 0xa436, 0x8038)) != RT_ERR_OK
)
5098 if((retVal
= rtl8367c_getAsicPHYOCPReg(port
, 0xa438, ®Data
)) != RT_ERR_OK
)
5101 pResult
->channelDLen
= (regData
/ 2);
5108 return RT_ERR_CHIP_NOT_SUPPORTED
;
5111 return RT_ERR_PHY_RTCT_NOT_FINISH
;
5125 * RT_ERR_OK - Success
5126 * RT_ERR_SMI - SMI access error
5130 ret_t
rtl8367c_sdsReset(rtk_uint32 id
)
5132 rtk_uint32 retVal
, regValue
, state
, i
, option
, running
= 0, retVal2
;
5134 if((retVal
= rtl8367c_setAsicReg(0x13C2, 0x0249)) != RT_ERR_OK
)
5137 if((retVal
= rtl8367c_getAsicReg(0x1300, ®Value
)) != RT_ERR_OK
)
5140 if((retVal
= rtl8367c_setAsicReg(0x13C2, 0x0000)) != RT_ERR_OK
)
5159 return RT_ERR_FAILED
;
5166 if ((retVal
= rtl8367c_getAsicRegBit(0x130c, 5, &running
))!=RT_ERR_OK
)
5171 if ((retVal
= rtl8367c_setAsicRegBit(0x130c, 5, 0))!=RT_ERR_OK
)
5175 retVal
= rtl8367c_setAsicReg(0x6601, 0x0000);
5177 if(retVal
== RT_ERR_OK
)
5178 retVal
= rtl8367c_setAsicReg(0x6602, 0x1401);
5180 if(retVal
== RT_ERR_OK
)
5181 retVal
= rtl8367c_setAsicReg(0x6600, 0x00C0);
5183 if(retVal
== RT_ERR_OK
)
5184 retVal
= rtl8367c_setAsicReg(0x6601, 0x0000);
5186 if(retVal
== RT_ERR_OK
)
5187 retVal
= rtl8367c_setAsicReg(0x6602, 0x1403);
5189 if(retVal
== RT_ERR_OK
)
5190 retVal
= rtl8367c_setAsicReg(0x6600, 0x00C0);
5194 if ((retVal2
= rtl8367c_setAsicRegBit(0x130c, 5, 1))!=RT_ERR_OK
)
5198 if(retVal
!= RT_ERR_OK
)
5202 return RT_ERR_PORT_ID
;
5204 else if(option
== 1)
5208 if((retVal
= rtl8367c_getAsicReg(0x1311, &state
)) != RT_ERR_OK
)
5211 if((retVal
= rtl8367c_setAsicReg(0x1311, 0x66)) != RT_ERR_OK
)
5214 if((retVal
= rtl8367c_setAsicReg(0x1311, 0x1066)) != RT_ERR_OK
)
5219 if((retVal
= rtl8367c_getAsicReg(0x1d9d, ®Value
)) != RT_ERR_OK
)
5221 if((regValue
>> 8) & 1)
5225 for (i
=0; i
<0xffff; i
++);
5227 if((retVal
= rtl8367c_setAsicReg(0x133d, 0x2)) != RT_ERR_OK
)
5230 for (i
=0; i
<0xffff; i
++);
5232 if((retVal
= rtl8367c_setAsicReg(0x6601, 0x0)) != RT_ERR_OK
)
5234 if((retVal
= rtl8367c_setAsicReg(0x6602, 0x1401)) != RT_ERR_OK
)
5236 if((retVal
= rtl8367c_setAsicReg(0x6600, 0xc1)) != RT_ERR_OK
)
5238 if((retVal
= rtl8367c_setAsicReg(0x6601, 0x0)) != RT_ERR_OK
)
5240 if((retVal
= rtl8367c_setAsicReg(0x6602, 0x1403)) != RT_ERR_OK
)
5242 if((retVal
= rtl8367c_setAsicReg(0x6600, 0xc1)) != RT_ERR_OK
)
5245 if((retVal
= rtl8367c_setAsicReg(0x133d, 0x0)) != RT_ERR_OK
)
5248 for (i
=0; i
<0xffff; i
++);
5250 if((retVal
= rtl8367c_setAsicReg(0x1311, state
)) != RT_ERR_OK
)
5257 if((retVal
= rtl8367c_getAsicReg(0x13c4, &state
)) != RT_ERR_OK
)
5260 if((retVal
= rtl8367c_setAsicReg(0x13c4, 0x66)) != RT_ERR_OK
)
5263 if((retVal
= rtl8367c_setAsicReg(0x13c4, 0x1066)) != RT_ERR_OK
)
5268 if((retVal
= rtl8367c_getAsicReg(0x1d9d, ®Value
)) != RT_ERR_OK
)
5270 if((regValue
>> 9) & 1)
5274 for (i
=0; i
<0xffff; i
++);
5276 if((retVal
= rtl8367c_setAsicReg(0x133d, 0x2)) != RT_ERR_OK
)
5279 for (i
=0; i
<0xffff; i
++);
5281 if((retVal
= rtl8367c_setAsicReg(0x6601, 0x0)) != RT_ERR_OK
)
5283 if((retVal
= rtl8367c_setAsicReg(0x6602, 0x1401)) != RT_ERR_OK
)
5285 if((retVal
= rtl8367c_setAsicReg(0x6600, 0xc0)) != RT_ERR_OK
)
5287 if((retVal
= rtl8367c_setAsicReg(0x6601, 0x0)) != RT_ERR_OK
)
5289 if((retVal
= rtl8367c_setAsicReg(0x6602, 0x1403)) != RT_ERR_OK
)
5291 if((retVal
= rtl8367c_setAsicReg(0x6600, 0xc0)) != RT_ERR_OK
)
5294 if((retVal
= rtl8367c_setAsicReg(0x133d, 0x0)) != RT_ERR_OK
)
5297 for (i
=0; i
<0xffff; i
++);
5299 if((retVal
= rtl8367c_setAsicReg(0x13c4, state
)) != RT_ERR_OK
)
5303 return RT_ERR_PORT_ID
;
5305 else if(option
== 2)
5307 if ((retVal
= rtl8367c_getAsicSdsReg(0, 3, 0, ®Value
))!=RT_ERR_OK
)
5310 if ((retVal
= rtl8367c_setAsicSdsReg(0, 3, 0, regValue
))!=RT_ERR_OK
)
5313 for (i
=0; i
<0xffff; i
++);
5315 regValue
&= ~(0x40);
5316 if ((retVal
= rtl8367c_setAsicSdsReg(0, 3, 0, regValue
))!=RT_ERR_OK
)
5325 * rtl8367c_getSdsLinkStatus
5333 * RT_ERR_OK - Success
5334 * RT_ERR_SMI - SMI access error
5338 ret_t
rtl8367c_getSdsLinkStatus(rtk_uint32 ext_id
, rtk_uint32
*pSignalDetect
, rtk_uint32
*pSync
, rtk_uint32
*pLink
)
5340 rtk_uint32 retVal
, regValue
, type
, running
= 0, retVal2
;
5343 if((retVal
= rtl8367c_setAsicReg(0x13C2, 0x0249)) != RT_ERR_OK
)
5346 if((retVal
= rtl8367c_getAsicReg(0x1300, ®Value
)) != RT_ERR_OK
)
5349 if((retVal
= rtl8367c_setAsicReg(0x13C2, 0x0000)) != RT_ERR_OK
)
5368 return RT_ERR_FAILED
;
5375 if ((retVal
= rtl8367c_getAsicRegBit(0x130c, 5, &running
))!=RT_ERR_OK
)
5380 if ((retVal
= rtl8367c_setAsicRegBit(0x130c, 5, 0))!=RT_ERR_OK
)
5384 retVal
= rtl8367c_setAsicReg(0x6601, 0x003D);
5386 if(retVal
== RT_ERR_OK
)
5387 retVal
= rtl8367c_setAsicReg(0x6600, 0x0080);
5389 if(retVal
== RT_ERR_OK
)
5390 retVal
= rtl8367c_getAsicReg(0x6602, ®Value
);
5394 if ((retVal2
= rtl8367c_setAsicRegBit(0x130c, 5, 1))!=RT_ERR_OK
)
5398 if(retVal
!= RT_ERR_OK
)
5401 *pSignalDetect
= (regValue
& 0x0100) ? 1 : 0;
5402 *pSync
= (regValue
& 0x0001) ? 1 : 0;
5403 *pLink
= (regValue
& 0x0010) ? 1 : 0;
5406 return RT_ERR_PORT_ID
;
5412 if ((retVal
= rtl8367c_setAsicReg(0x6601, 0x003D))!=RT_ERR_OK
)
5414 if ((retVal
= rtl8367c_setAsicReg(0x6600, 0x0081))!=RT_ERR_OK
)
5416 if ((retVal
= rtl8367c_getAsicReg(0x6602, ®Value
))!=RT_ERR_OK
)
5419 *pSignalDetect
= (regValue
& 0x0100) ? 1 : 0;
5420 *pSync
= (regValue
& 0x0001) ? 1 : 0;
5421 *pLink
= (regValue
& 0x0010) ? 1 : 0;
5423 else if (2 == ext_id
)
5425 if ((retVal
= rtl8367c_setAsicReg(0x6601, 0x003D))!=RT_ERR_OK
)
5427 if ((retVal
= rtl8367c_setAsicReg(0x6600, 0x0080))!=RT_ERR_OK
)
5429 if ((retVal
= rtl8367c_getAsicReg(0x6602, ®Value
))!=RT_ERR_OK
)
5432 *pSignalDetect
= (regValue
& 0x0100) ? 1 : 0;
5433 *pSync
= (regValue
& 0x0001) ? 1 : 0;
5434 *pLink
= (regValue
& 0x0010) ? 1 : 0;
5437 return RT_ERR_PORT_ID
;
5441 if((retVal
= rtl8367c_getAsicSdsReg(0, 30, 1, ®Value
)) != RT_ERR_OK
)
5443 if((retVal
= rtl8367c_getAsicSdsReg(0, 30, 1, ®Value
)) != RT_ERR_OK
)
5446 *pSignalDetect
= (regValue
& 0x0100) ? 1 : 0;
5447 *pSync
= (regValue
& 0x0001) ? 1 : 0;
5448 *pLink
= (regValue
& 0x0010) ? 1 : 0;
5456 * rtl8367c_setSgmiiNway
5461 * state - SGMII Nway state
5465 * RT_ERR_OK - Success
5466 * RT_ERR_SMI - SMI access error
5470 ret_t
rtl8367c_setSgmiiNway(rtk_uint32 ext_id
, rtk_uint32 state
)
5472 rtk_uint32 retVal
, regValue
, type
, running
= 0, retVal2
;
5474 if((retVal
= rtl8367c_setAsicReg(0x13C2, 0x0249)) != RT_ERR_OK
)
5477 if((retVal
= rtl8367c_getAsicReg(0x1300, ®Value
)) != RT_ERR_OK
)
5480 if((retVal
= rtl8367c_setAsicReg(0x13C2, 0x0000)) != RT_ERR_OK
)
5499 return RT_ERR_FAILED
;
5506 if ((retVal
= rtl8367c_getAsicRegBit(0x130c, 5, &running
))!=RT_ERR_OK
)
5511 if ((retVal
= rtl8367c_setAsicRegBit(0x130c, 5, 0))!=RT_ERR_OK
)
5515 retVal
= rtl8367c_setAsicReg(0x6601, 0x0002);
5517 if(retVal
== RT_ERR_OK
)
5518 retVal
= rtl8367c_setAsicReg(0x6600, 0x0080);
5520 if(retVal
== RT_ERR_OK
)
5521 retVal
= rtl8367c_getAsicReg(0x6602, ®Value
);
5523 if(retVal
== RT_ERR_OK
)
5528 regValue
&= ~0x0200;
5533 if(retVal
== RT_ERR_OK
)
5534 retVal
= rtl8367c_setAsicReg(0x6602, regValue
);
5536 if(retVal
== RT_ERR_OK
)
5537 retVal
= rtl8367c_setAsicReg(0x6601, 0x0002);
5539 if(retVal
== RT_ERR_OK
)
5540 retVal
= rtl8367c_setAsicReg(0x6600, 0x00C0);
5544 if ((retVal2
= rtl8367c_setAsicRegBit(0x130c, 5, 1))!=RT_ERR_OK
)
5548 if(retVal
!= RT_ERR_OK
)
5552 return RT_ERR_PORT_ID
;
5558 if ((retVal
= rtl8367c_setAsicReg(0x6601, 0x0002))!=RT_ERR_OK
)
5560 if ((retVal
= rtl8367c_setAsicReg(0x6600, 0x0081))!=RT_ERR_OK
)
5562 if ((retVal
= rtl8367c_getAsicReg(0x6602, ®Value
))!=RT_ERR_OK
)
5568 regValue
&= ~0x0200;
5572 if ((retVal
= rtl8367c_setAsicReg(0x6602, regValue
))!=RT_ERR_OK
)
5574 if ((retVal
= rtl8367c_setAsicReg(0x6601, 0x0002))!=RT_ERR_OK
)
5576 if ((retVal
= rtl8367c_setAsicReg(0x6600, 0x00C1))!=RT_ERR_OK
)
5579 else if (2 == ext_id
)
5581 if ((retVal
= rtl8367c_setAsicReg(0x6601, 0x0002))!=RT_ERR_OK
)
5583 if ((retVal
= rtl8367c_setAsicReg(0x6600, 0x0080))!=RT_ERR_OK
)
5585 if ((retVal
= rtl8367c_getAsicReg(0x6602, ®Value
))!=RT_ERR_OK
)
5591 regValue
&= ~0x0200;
5595 if ((retVal
= rtl8367c_setAsicReg(0x6602, regValue
))!=RT_ERR_OK
)
5597 if ((retVal
= rtl8367c_setAsicReg(0x6601, 0x0002))!=RT_ERR_OK
)
5599 if ((retVal
= rtl8367c_setAsicReg(0x6600, 0x00C0))!=RT_ERR_OK
)
5603 return RT_ERR_PORT_ID
;
5607 if ((retVal
= rtl8367c_getAsicSdsReg(0, 2, 0, ®Value
))!=RT_ERR_OK
)
5615 if ((retVal
= rtl8367c_setAsicSdsReg(0, 2, 0, regValue
))!=RT_ERR_OK
)
5623 * rtl8367c_getSgmiiNway
5628 * state - SGMII Nway state
5632 * RT_ERR_OK - Success
5633 * RT_ERR_SMI - SMI access error
5637 ret_t
rtl8367c_getSgmiiNway(rtk_uint32 ext_id
, rtk_uint32
*pState
)
5639 rtk_uint32 retVal
, regValue
, type
, running
= 0, retVal2
;
5641 if((retVal
= rtl8367c_setAsicReg(0x13C2, 0x0249)) != RT_ERR_OK
)
5644 if((retVal
= rtl8367c_getAsicReg(0x1300, ®Value
)) != RT_ERR_OK
)
5647 if((retVal
= rtl8367c_setAsicReg(0x13C2, 0x0000)) != RT_ERR_OK
)
5666 return RT_ERR_FAILED
;
5673 if ((retVal
= rtl8367c_getAsicRegBit(0x130c, 5, &running
))!=RT_ERR_OK
)
5678 if ((retVal
= rtl8367c_setAsicRegBit(0x130c, 5, 0))!=RT_ERR_OK
)
5682 retVal
= rtl8367c_setAsicReg(0x6601, 0x0002);
5684 if(retVal
== RT_ERR_OK
)
5685 retVal
= rtl8367c_setAsicReg(0x6600, 0x0080);
5687 if(retVal
== RT_ERR_OK
)
5688 retVal
= rtl8367c_getAsicReg(0x6602, ®Value
);
5692 if ((retVal2
= rtl8367c_setAsicRegBit(0x130c, 5, 1))!=RT_ERR_OK
)
5696 if(retVal
!= RT_ERR_OK
)
5699 if(regValue
& 0x0200)
5705 return RT_ERR_PORT_ID
;
5711 if ((retVal
= rtl8367c_setAsicReg(0x6601, 0x0002))!=RT_ERR_OK
)
5713 if ((retVal
= rtl8367c_setAsicReg(0x6600, 0x0081))!=RT_ERR_OK
)
5715 if ((retVal
= rtl8367c_getAsicReg(0x6602, ®Value
))!=RT_ERR_OK
)
5718 if(regValue
& 0x0200)
5723 else if (2 == ext_id
)
5725 if ((retVal
= rtl8367c_setAsicReg(0x6601, 0x0002))!=RT_ERR_OK
)
5727 if ((retVal
= rtl8367c_setAsicReg(0x6600, 0x0080))!=RT_ERR_OK
)
5729 if ((retVal
= rtl8367c_getAsicReg(0x6602, ®Value
))!=RT_ERR_OK
)
5732 if(regValue
& 0x0200)
5738 return RT_ERR_PORT_ID
;
5742 if ((retVal
= rtl8367c_getAsicSdsReg(0, 2, 0, ®Value
))!=RT_ERR_OK
)
5745 if(regValue
& 0x100)