mediatek: add support for rtl8367c
[openwrt/staging/jow.git] / target / linux / mediatek / files-5.4 / drivers / net / phy / rtk / rtl8367c / rtl8367c_asicdrv_port.c
1 /*
2 * Copyright (C) 2013 Realtek Semiconductor Corp.
3 * All Rights Reserved.
4 *
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
9 *
10 * $Revision: 76333 $
11 * $Date: 2017-03-09 09:33:15 +0800 (ι€±ε››, 09 δΈ‰ζœˆ 2017) $
12 *
13 * Purpose : RTL8367C switch high-level API for RTL8367C
14 * Feature : Port security related functions
15 *
16 */
17
18 #include <rtl8367c_asicdrv_port.h>
19
20 #include <string.h>
21
22
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,};
280
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,};
537
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,};
794
795
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,};
946
947
948 /* Function Name:
949 * rtl8367c_setAsicPortUnknownDaBehavior
950 * Description:
951 * Set UNDA behavior
952 * Input:
953 * port - port ID
954 * behavior - 0: flooding to unknwon DA portmask; 1: drop; 2:trap; 3: flooding
955 * Output:
956 * None
957 * Return:
958 * RT_ERR_OK - Success
959 * RT_ERR_SMI - SMI access error
960 * RT_ERR_NOT_ALLOWED - Invalid behavior
961 * Note:
962 * None
963 */
964 ret_t rtl8367c_setAsicPortUnknownDaBehavior(rtk_uint32 port, rtk_uint32 behavior)
965 {
966 if(port >= RTL8367C_PORTNO)
967 return RT_ERR_PORT_ID;
968
969 if(behavior >= L2_UNDA_BEHAVE_END)
970 return RT_ERR_NOT_ALLOWED;
971
972 if(port < 8)
973 return rtl8367c_setAsicRegBits(RTL8367C_REG_UNKNOWN_UNICAST_DA_PORT_BEHAVE, RTL8367C_Port0_ACTION_MASK << (port * 2), behavior);
974 else
975 return rtl8367c_setAsicRegBits(RTL8367C_REG_UNKNOWN_UNICAST_DA_PORT_BEHAVE_EXT, RTL8367C_PORT8_ACTION_MASK << ((port-8) * 2), behavior);
976 }
977 /* Function Name:
978 * rtl8367c_getAsicPortUnknownDaBehavior
979 * Description:
980 * Get UNDA behavior
981 * Input:
982 * port - port ID
983 * Output:
984 * pBehavior - 0: flooding to unknwon DA portmask; 1: drop; 2:trap; 3: flooding
985 * Return:
986 * RT_ERR_OK - Success
987 * RT_ERR_SMI - SMI access error
988 * Note:
989 * None
990 */
991 ret_t rtl8367c_getAsicPortUnknownDaBehavior(rtk_uint32 port, rtk_uint32 *pBehavior)
992 {
993 if(port >= RTL8367C_PORTNO)
994 return RT_ERR_PORT_ID;
995
996 if(port < 8)
997 return rtl8367c_getAsicRegBits(RTL8367C_REG_UNKNOWN_UNICAST_DA_PORT_BEHAVE, RTL8367C_Port0_ACTION_MASK << (port * 2), pBehavior);
998 else
999 return rtl8367c_getAsicRegBits(RTL8367C_REG_UNKNOWN_UNICAST_DA_PORT_BEHAVE_EXT, RTL8367C_PORT8_ACTION_MASK << ((port-8) * 2), pBehavior);
1000 }
1001 /* Function Name:
1002 * rtl8367c_setAsicPortUnknownSaBehavior
1003 * Description:
1004 * Set UNSA behavior
1005 * Input:
1006 * behavior - 0: flooding; 1: drop; 2:trap
1007 * Output:
1008 * None
1009 * Return:
1010 * RT_ERR_OK - Success
1011 * RT_ERR_SMI - SMI access error
1012 * RT_ERR_NOT_ALLOWED - Invalid behavior
1013 * Note:
1014 * None
1015 */
1016 ret_t rtl8367c_setAsicPortUnknownSaBehavior(rtk_uint32 behavior)
1017 {
1018 if(behavior >= L2_BEHAVE_SA_END)
1019 return RT_ERR_NOT_ALLOWED;
1020
1021 return rtl8367c_setAsicRegBits(RTL8367C_PORT_SECURIT_CTRL_REG, RTL8367C_UNKNOWN_SA_BEHAVE_MASK, behavior);
1022 }
1023 /* Function Name:
1024 * rtl8367c_getAsicPortUnknownSaBehavior
1025 * Description:
1026 * Get UNSA behavior
1027 * Input:
1028 * pBehavior - 0: flooding; 1: drop; 2:trap
1029 * Output:
1030 * None
1031 * Return:
1032 * RT_ERR_OK - Success
1033 * RT_ERR_SMI - SMI access error
1034 * Note:
1035 * None
1036 */
1037 ret_t rtl8367c_getAsicPortUnknownSaBehavior(rtk_uint32 *pBehavior)
1038 {
1039 return rtl8367c_getAsicRegBits(RTL8367C_PORT_SECURIT_CTRL_REG, RTL8367C_UNKNOWN_SA_BEHAVE_MASK, pBehavior);
1040 }
1041 /* Function Name:
1042 * rtl8367c_setAsicPortUnmatchedSaBehavior
1043 * Description:
1044 * Set Unmatched SA behavior
1045 * Input:
1046 * behavior - 0: flooding; 1: drop; 2:trap
1047 * Output:
1048 * None
1049 * Return:
1050 * RT_ERR_OK - Success
1051 * RT_ERR_SMI - SMI access error
1052 * RT_ERR_NOT_ALLOWED - Invalid behavior
1053 * Note:
1054 * None
1055 */
1056 ret_t rtl8367c_setAsicPortUnmatchedSaBehavior(rtk_uint32 behavior)
1057 {
1058 if(behavior >= L2_BEHAVE_SA_END)
1059 return RT_ERR_NOT_ALLOWED;
1060
1061 return rtl8367c_setAsicRegBits(RTL8367C_PORT_SECURIT_CTRL_REG, RTL8367C_UNMATCHED_SA_BEHAVE_MASK, behavior);
1062 }
1063 /* Function Name:
1064 * rtl8367c_getAsicPortUnmatchedSaBehavior
1065 * Description:
1066 * Get Unmatched SA behavior
1067 * Input:
1068 * pBehavior - 0: flooding; 1: drop; 2:trap
1069 * Output:
1070 * None
1071 * Return:
1072 * RT_ERR_OK - Success
1073 * RT_ERR_SMI - SMI access error
1074 * Note:
1075 * None
1076 */
1077 ret_t rtl8367c_getAsicPortUnmatchedSaBehavior(rtk_uint32 *pBehavior)
1078 {
1079 return rtl8367c_getAsicRegBits(RTL8367C_PORT_SECURIT_CTRL_REG, RTL8367C_UNMATCHED_SA_BEHAVE_MASK, pBehavior);
1080 }
1081
1082 /* Function Name:
1083 * rtl8367c_setAsicPortUnmatchedSaMoving
1084 * Description:
1085 * Set Unmatched SA moving state
1086 * Input:
1087 * port - Port ID
1088 * enabled - 0: can't move to new port; 1: can move to new port
1089 * Output:
1090 * None
1091 * Return:
1092 * RT_ERR_OK - Success
1093 * RT_ERR_SMI - SMI access error
1094 * RT_ERR_PORT_ID - Error Port ID
1095 * Note:
1096 * None
1097 */
1098 ret_t rtl8367c_setAsicPortUnmatchedSaMoving(rtk_uint32 port, rtk_uint32 enabled)
1099 {
1100 if(port >= RTL8367C_PORTNO)
1101 return RT_ERR_PORT_ID;
1102
1103 return rtl8367c_setAsicRegBit(RTL8367C_REG_L2_SA_MOVING_FORBID, port, (enabled == 1) ? 0 : 1);
1104 }
1105
1106 /* Function Name:
1107 * rtl8367c_getAsicPortUnmatchedSaMoving
1108 * Description:
1109 * Get Unmatched SA moving state
1110 * Input:
1111 * port - Port ID
1112 * Output:
1113 * pEnabled - 0: can't move to new port; 1: can move to new port
1114 * Return:
1115 * RT_ERR_OK - Success
1116 * RT_ERR_SMI - SMI access error
1117 * RT_ERR_PORT_ID - Error Port ID
1118 * Note:
1119 * None
1120 */
1121 ret_t rtl8367c_getAsicPortUnmatchedSaMoving(rtk_uint32 port, rtk_uint32 *pEnabled)
1122 {
1123 rtk_uint32 data;
1124 ret_t retVal;
1125
1126 if(port >= RTL8367C_PORTNO)
1127 return RT_ERR_PORT_ID;
1128
1129 if((retVal = rtl8367c_getAsicRegBit(RTL8367C_REG_L2_SA_MOVING_FORBID, port, &data)) != RT_ERR_OK)
1130 return retVal;
1131
1132 *pEnabled = (data == 1) ? 0 : 1;
1133 return RT_ERR_OK;
1134 }
1135
1136 /* Function Name:
1137 * rtl8367c_setAsicPortUnknownDaFloodingPortmask
1138 * Description:
1139 * Set UNDA flooding portmask
1140 * Input:
1141 * portmask - portmask(0~0xFF)
1142 * Output:
1143 * None
1144 * Return:
1145 * RT_ERR_OK - Success
1146 * RT_ERR_SMI - SMI access error
1147 * RT_ERR_PORT_MASK - Invalid portmask
1148 * Note:
1149 * None
1150 */
1151 ret_t rtl8367c_setAsicPortUnknownDaFloodingPortmask(rtk_uint32 portmask)
1152 {
1153 if(portmask > RTL8367C_PORTMASK)
1154 return RT_ERR_PORT_MASK;
1155
1156 return rtl8367c_setAsicReg(RTL8367C_UNUCAST_FLOADING_PMSK_REG, portmask);
1157 }
1158 /* Function Name:
1159 * rtl8367c_getAsicPortUnknownDaFloodingPortmask
1160 * Description:
1161 * Get UNDA flooding portmask
1162 * Input:
1163 * pPortmask - portmask(0~0xFF)
1164 * Output:
1165 * None
1166 * Return:
1167 * RT_ERR_OK - Success
1168 * RT_ERR_SMI - SMI access error
1169 * Note:
1170 * None
1171 */
1172 ret_t rtl8367c_getAsicPortUnknownDaFloodingPortmask(rtk_uint32 *pPortmask)
1173 {
1174 return rtl8367c_getAsicReg(RTL8367C_UNUCAST_FLOADING_PMSK_REG, pPortmask);
1175 }
1176 /* Function Name:
1177 * rtl8367c_setAsicPortUnknownMulticastFloodingPortmask
1178 * Description:
1179 * Set UNMC flooding portmask
1180 * Input:
1181 * portmask - portmask(0~0xFF)
1182 * Output:
1183 * None
1184 * Return:
1185 * RT_ERR_OK - Success
1186 * RT_ERR_SMI - SMI access error
1187 * RT_ERR_PORT_MASK - Invalid portmask
1188 * Note:
1189 * None
1190 */
1191 ret_t rtl8367c_setAsicPortUnknownMulticastFloodingPortmask(rtk_uint32 portmask)
1192 {
1193 if(portmask > RTL8367C_PORTMASK)
1194 return RT_ERR_PORT_MASK;
1195
1196 return rtl8367c_setAsicReg(RTL8367C_UNMCAST_FLOADING_PMSK_REG, portmask);
1197 }
1198 /* Function Name:
1199 * rtl8367c_getAsicPortUnknownMulticastFloodingPortmask
1200 * Description:
1201 * Get UNMC flooding portmask
1202 * Input:
1203 * pPortmask - portmask(0~0xFF)
1204 * Output:
1205 * None
1206 * Return:
1207 * RT_ERR_OK - Success
1208 * RT_ERR_SMI - SMI access error
1209 * Note:
1210 * None
1211 */
1212 ret_t rtl8367c_getAsicPortUnknownMulticastFloodingPortmask(rtk_uint32 *pPortmask)
1213 {
1214 return rtl8367c_getAsicReg(RTL8367C_UNMCAST_FLOADING_PMSK_REG, pPortmask);
1215 }
1216 /* Function Name:
1217 * rtl8367c_setAsicPortBcastFloodingPortmask
1218 * Description:
1219 * Set Bcast flooding portmask
1220 * Input:
1221 * portmask - portmask(0~0xFF)
1222 * Output:
1223 * None
1224 * Return:
1225 * RT_ERR_OK - Success
1226 * RT_ERR_SMI - SMI access error
1227 * RT_ERR_PORT_MASK - Invalid portmask
1228 * Note:
1229 * None
1230 */
1231 ret_t rtl8367c_setAsicPortBcastFloodingPortmask(rtk_uint32 portmask)
1232 {
1233 if(portmask > RTL8367C_PORTMASK)
1234 return RT_ERR_PORT_MASK;
1235
1236 return rtl8367c_setAsicReg(RTL8367C_BCAST_FLOADING_PMSK_REG, portmask);
1237 }
1238 /* Function Name:
1239 * rtl8367c_getAsicPortBcastFloodingPortmask
1240 * Description:
1241 * Get Bcast flooding portmask
1242 * Input:
1243 * pPortmask - portmask(0~0xFF)
1244 * Output:
1245 * None
1246 * Return:
1247 * RT_ERR_OK - Success
1248 * RT_ERR_SMI - SMI access error
1249 * Note:
1250 * None
1251 */
1252 ret_t rtl8367c_getAsicPortBcastFloodingPortmask(rtk_uint32 *pPortmask)
1253 {
1254 return rtl8367c_getAsicReg(RTL8367C_BCAST_FLOADING_PMSK_REG, pPortmask);
1255 }
1256 /* Function Name:
1257 * rtl8367c_setAsicPortBlockSpa
1258 * Description:
1259 * Set disabling blocking frame if source port and destination port are the same
1260 * Input:
1261 * port - Physical port number (0~7)
1262 * permit - 0: block; 1: permit
1263 * Output:
1264 * None
1265 * Return:
1266 * RT_ERR_OK - Success
1267 * RT_ERR_SMI - SMI access error
1268 * RT_ERR_PORT_ID - Invalid port number
1269 * Note:
1270 * None
1271 */
1272 ret_t rtl8367c_setAsicPortBlockSpa(rtk_uint32 port, rtk_uint32 permit)
1273 {
1274 if(port >= RTL8367C_PORTNO)
1275 return RT_ERR_PORT_ID;
1276
1277 return rtl8367c_setAsicRegBit(RTL8367C_SOURCE_PORT_BLOCK_REG, port, permit);
1278 }
1279 /* Function Name:
1280 * rtl8367c_getAsicPortBlockSpa
1281 * Description:
1282 * Get disabling blocking frame if source port and destination port are the same
1283 * Input:
1284 * port - Physical port number (0~7)
1285 * pPermit - 0: block; 1: permit
1286 * Output:
1287 * None
1288 * Return:
1289 * RT_ERR_OK - Success
1290 * RT_ERR_SMI - SMI access error
1291 * RT_ERR_PORT_ID - Invalid port number
1292 * Note:
1293 * None
1294 */
1295 ret_t rtl8367c_getAsicPortBlockSpa(rtk_uint32 port, rtk_uint32* pPermit)
1296 {
1297 if(port >= RTL8367C_PORTNO)
1298 return RT_ERR_PORT_ID;
1299
1300 return rtl8367c_getAsicRegBit(RTL8367C_SOURCE_PORT_BLOCK_REG, port, pPermit);
1301 }
1302 /* Function Name:
1303 * rtl8367c_setAsicPortDos
1304 * Description:
1305 * Set DOS function
1306 * Input:
1307 * type - DOS type
1308 * drop - 0: permit; 1: drop
1309 * Output:
1310 * None
1311 * Return:
1312 * RT_ERR_OK - Success
1313 * RT_ERR_SMI - SMI access error
1314 * RT_ERR_OUT_OF_RANGE - Invalid payload index
1315 * Note:
1316 * None
1317 */
1318 ret_t rtl8367c_setAsicPortDos(rtk_uint32 type, rtk_uint32 drop)
1319 {
1320 if(type >= DOS_END)
1321 return RT_ERR_OUT_OF_RANGE;
1322
1323 return rtl8367c_setAsicRegBit(RTL8367C_REG_DOS_CFG, RTL8367C_DROP_DAEQSA_OFFSET + type, drop);
1324 }
1325 /* Function Name:
1326 * rtl8367c_getAsicPortDos
1327 * Description:
1328 * Get DOS function
1329 * Input:
1330 * type - DOS type
1331 * pDrop - 0: permit; 1: drop
1332 * Output:
1333 * None
1334 * Return:
1335 * RT_ERR_OK - Success
1336 * RT_ERR_SMI - SMI access error
1337 * RT_ERR_OUT_OF_RANGE - Invalid payload index
1338 * Note:
1339 * None
1340 */
1341 ret_t rtl8367c_getAsicPortDos(rtk_uint32 type, rtk_uint32* pDrop)
1342 {
1343 if(type >= DOS_END)
1344 return RT_ERR_OUT_OF_RANGE;
1345
1346 return rtl8367c_getAsicRegBit(RTL8367C_REG_DOS_CFG, RTL8367C_DROP_DAEQSA_OFFSET + type,pDrop);
1347 }
1348 /* Function Name:
1349 * rtl8367c_setAsicPortForceLink
1350 * Description:
1351 * Set port force linking configuration
1352 * Input:
1353 * port - Physical port number (0~7)
1354 * pPortAbility - port ability configuration
1355 * Output:
1356 * None
1357 * Return:
1358 * RT_ERR_OK - Success
1359 * RT_ERR_SMI - SMI access error
1360 * RT_ERR_PORT_ID - Invalid port number
1361 * Note:
1362 * None
1363 */
1364 ret_t rtl8367c_setAsicPortForceLink(rtk_uint32 port, rtl8367c_port_ability_t *pPortAbility)
1365 {
1366 rtk_uint32 regData = 0;
1367
1368 /* Invalid input parameter */
1369 if(port >= RTL8367C_PORTNO)
1370 return RT_ERR_PORT_ID;
1371
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;
1381
1382 return rtl8367c_setAsicReg(RTL8367C_REG_MAC0_FORCE_SELECT+port, regData);
1383 }
1384 /* Function Name:
1385 * rtl8367c_getAsicPortForceLink
1386 * Description:
1387 * Get port force linking configuration
1388 * Input:
1389 * port - Physical port number (0~7)
1390 * pPortAbility - port ability configuration
1391 * Output:
1392 * None
1393 * Return:
1394 * RT_ERR_OK - Success
1395 * RT_ERR_SMI - SMI access error
1396 * RT_ERR_PORT_ID - Invalid port number
1397 * Note:
1398 * None
1399 */
1400 ret_t rtl8367c_getAsicPortForceLink(rtk_uint32 port, rtl8367c_port_ability_t *pPortAbility)
1401 {
1402 ret_t retVal;
1403 rtk_uint32 regData;
1404
1405 /* Invalid input parameter */
1406 if(port >= RTL8367C_PORTNO)
1407 return RT_ERR_PORT_ID;
1408
1409 retVal = rtl8367c_getAsicReg(RTL8367C_REG_MAC0_FORCE_SELECT + port, &regData);
1410 if(retVal != RT_ERR_OK)
1411 return retVal;
1412
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;
1422
1423 return RT_ERR_OK;
1424 }
1425 /* Function Name:
1426 * rtl8367c_getAsicPortStatus
1427 * Description:
1428 * Get port link status
1429 * Input:
1430 * port - Physical port number (0~7)
1431 * pPortAbility - port ability configuration
1432 * Output:
1433 * None
1434 * Return:
1435 * RT_ERR_OK - Success
1436 * RT_ERR_SMI - SMI access error
1437 * RT_ERR_PORT_ID - Invalid port number
1438 * Note:
1439 * None
1440 */
1441 ret_t rtl8367c_getAsicPortStatus(rtk_uint32 port, rtl8367c_port_status_t *pPortStatus)
1442 {
1443 ret_t retVal;
1444 rtk_uint32 regData;
1445
1446 /* Invalid input parameter */
1447 if(port >= RTL8367C_PORTNO)
1448 return RT_ERR_PORT_ID;
1449
1450 retVal = rtl8367c_getAsicReg(RTL8367C_REG_PORT0_STATUS+port,&regData);
1451 if(retVal != RT_ERR_OK)
1452 return retVal;
1453
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;
1464
1465 return RT_ERR_OK;
1466 }
1467 /* Function Name:
1468 * rtl8367c_setAsicPortForceLinkExt
1469 * Description:
1470 * Set external interface force linking configuration
1471 * Input:
1472 * id - external interface id (0~2)
1473 * portAbility - port ability configuration
1474 * Output:
1475 * None
1476 * Return:
1477 * RT_ERR_OK - Success
1478 * RT_ERR_SMI - SMI access error
1479 * RT_ERR_OUT_OF_RANGE - input parameter out of range
1480 * Note:
1481 * None
1482 */
1483 ret_t rtl8367c_setAsicPortForceLinkExt(rtk_uint32 id, rtl8367c_port_ability_t *pPortAbility)
1484 {
1485 rtk_uint32 retVal, regValue, regValue2, type, sgmiibit, hisgmiibit;
1486 rtk_uint32 reg_data = 0;
1487 rtk_uint32 i = 0;
1488
1489 /* Invalid input parameter */
1490 if(id >= RTL8367C_EXTNO)
1491 return RT_ERR_OUT_OF_RANGE;
1492
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;
1502
1503 if((retVal = rtl8367c_setAsicReg(0x13C2, 0x0249)) != RT_ERR_OK)
1504 return retVal;
1505 /*get chip ID */
1506 if((retVal = rtl8367c_getAsicReg(0x1300, &regValue)) != RT_ERR_OK)
1507 return retVal;
1508
1509 if((retVal = rtl8367c_setAsicReg(0x13C2, 0x0000)) != RT_ERR_OK)
1510 return retVal;
1511
1512 type = 0;
1513
1514 switch (regValue)
1515 {
1516 case 0x0276:
1517 case 0x0597:
1518 case 0x6367:
1519 type = 1;
1520 break;
1521 case 0x0652:
1522 case 0x6368:
1523 type = 2;
1524 break;
1525 case 0x0801:
1526 case 0x6511:
1527 type = 3;
1528 break;
1529 default:
1530 return RT_ERR_FAILED;
1531 }
1532
1533 if (1 == type)
1534 {
1535 if(1 == id)
1536 {
1537 if ((retVal = rtl8367c_getAsicReg(RTL8367C_REG_REG_TO_ECO4, &regValue)) != RT_ERR_OK)
1538 return retVal;
1539
1540 if((regValue & (0x0001 << 5)) && (regValue & (0x0001 << 7)))
1541 {
1542 return RT_ERR_OK;
1543 }
1544
1545 if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_FDUP_OFFSET, pPortAbility->duplex)) != RT_ERR_OK)
1546 return retVal;
1547
1548 if((retVal = rtl8367c_setAsicRegBits(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_SPD_MASK, pPortAbility->speed)) != RT_ERR_OK)
1549 return retVal;
1550
1551 if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_LINK_OFFSET, pPortAbility->link)) != RT_ERR_OK)
1552 return retVal;
1553
1554 if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_TXFC_OFFSET, pPortAbility->txpause)) != RT_ERR_OK)
1555 return retVal;
1556
1557 if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_RXFC_OFFSET, pPortAbility->rxpause)) != RT_ERR_OK)
1558 return retVal;
1559 }
1560
1561 if(0 == id || 1 == id)
1562 return rtl8367c_setAsicReg(RTL8367C_REG_DIGITAL_INTERFACE0_FORCE + id, reg_data);
1563 else
1564 return rtl8367c_setAsicReg(RTL8367C_REG_DIGITAL_INTERFACE2_FORCE, reg_data);
1565 }
1566 else if (2 == type)
1567 {
1568 if (1 == id)
1569 {
1570 if((retVal = rtl8367c_setAsicRegBit(0x1311, 2, pPortAbility->duplex)) != RT_ERR_OK)
1571 return retVal;
1572
1573 if((retVal = rtl8367c_setAsicRegBits(0x1311, 0x3, pPortAbility->speed)) != RT_ERR_OK)
1574 return retVal;
1575
1576 if((retVal = rtl8367c_setAsicRegBit(0x1311, 4, pPortAbility->link)) != RT_ERR_OK)
1577 return retVal;
1578
1579 if((retVal = rtl8367c_setAsicRegBit(0x1311, 6, pPortAbility->txpause)) != RT_ERR_OK)
1580 return retVal;
1581
1582 if((retVal = rtl8367c_setAsicRegBit(0x1311, 5, pPortAbility->rxpause)) != RT_ERR_OK)
1583 return retVal;
1584
1585 if((retVal = rtl8367c_setAsicRegBit(0x1311, 12, pPortAbility->forcemode)) != RT_ERR_OK)
1586 return retVal;
1587
1588 if (pPortAbility->link == 1)
1589 {
1590 if((retVal = rtl8367c_setAsicRegBit(0x1311, 4, 0)) != RT_ERR_OK)
1591 return retVal;
1592
1593 if((retVal = rtl8367c_setAsicRegBit(0x1311, 4, 1)) != RT_ERR_OK)
1594 return retVal;
1595 }
1596 else
1597 {
1598 if((retVal = rtl8367c_setAsicRegBits(0x1311, 0x3, 2)) != RT_ERR_OK)
1599 return retVal;
1600 }
1601
1602
1603 if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_FDUP_OFFSET, pPortAbility->duplex)) != RT_ERR_OK)
1604 return retVal;
1605
1606 if((retVal = rtl8367c_setAsicRegBits(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_SPD_MASK, pPortAbility->speed)) != RT_ERR_OK)
1607 return retVal;
1608
1609 if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_LINK_OFFSET, pPortAbility->link)) != RT_ERR_OK)
1610 return retVal;
1611
1612 if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_TXFC_OFFSET, pPortAbility->txpause)) != RT_ERR_OK)
1613 return retVal;
1614
1615 if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_RXFC_OFFSET, pPortAbility->rxpause)) != RT_ERR_OK)
1616 return retVal;
1617 }
1618 else if (2 == id)
1619 {
1620 if((retVal = rtl8367c_setAsicRegBit(0x13c4, 2, pPortAbility->duplex)) != RT_ERR_OK)
1621 return retVal;
1622
1623 if((retVal = rtl8367c_setAsicRegBits(0x13c4, 0x3, pPortAbility->speed)) != RT_ERR_OK)
1624 return retVal;
1625
1626 if((retVal = rtl8367c_setAsicRegBit(0x13c4, 4, pPortAbility->link)) != RT_ERR_OK)
1627 return retVal;
1628
1629 if((retVal = rtl8367c_setAsicRegBit(0x13c4, 6, pPortAbility->txpause)) != RT_ERR_OK)
1630 return retVal;
1631
1632 if((retVal = rtl8367c_setAsicRegBit(0x13c4, 5, pPortAbility->rxpause)) != RT_ERR_OK)
1633 return retVal;
1634
1635 if((retVal = rtl8367c_setAsicRegBit(0x13c4, 12, pPortAbility->forcemode)) != RT_ERR_OK)
1636 return retVal;
1637
1638 if (pPortAbility->link == 1)
1639 {
1640 if((retVal = rtl8367c_setAsicRegBit(0x13c4, 4, 0)) != RT_ERR_OK)
1641 return retVal;
1642
1643 if((retVal = rtl8367c_setAsicRegBit(0x13c4, 4, 1)) != RT_ERR_OK)
1644 return retVal;
1645 }
1646 else
1647 {
1648 if((retVal = rtl8367c_setAsicRegBits(0x13c4, 0x3, 2)) != RT_ERR_OK)
1649 return retVal;
1650 }
1651
1652 if((retVal = rtl8367c_setAsicRegBit(0x1dc1, RTL8367C_CFG_SGMII_FDUP_OFFSET, pPortAbility->duplex)) != RT_ERR_OK)
1653 return retVal;
1654
1655 if((retVal = rtl8367c_setAsicRegBits(0x1dc1, RTL8367C_CFG_SGMII_SPD_MASK, pPortAbility->speed)) != RT_ERR_OK)
1656 return retVal;
1657
1658 if((retVal = rtl8367c_setAsicRegBit(0x1dc1, RTL8367C_CFG_SGMII_LINK_OFFSET, pPortAbility->link)) != RT_ERR_OK)
1659 return retVal;
1660
1661 if((retVal = rtl8367c_setAsicRegBit(0x1dc1, RTL8367C_CFG_SGMII_TXFC_OFFSET, pPortAbility->txpause)) != RT_ERR_OK)
1662 return retVal;
1663
1664 if((retVal = rtl8367c_setAsicRegBit(0x1dc1, RTL8367C_CFG_SGMII_RXFC_OFFSET, pPortAbility->rxpause)) != RT_ERR_OK)
1665 return retVal;
1666 }
1667
1668 }
1669 else if(3 == type)
1670 {
1671 if(1 == id)
1672 {
1673 if((retVal = rtl8367c_getAsicRegBit(0x1d11, 6, &sgmiibit)) != RT_ERR_OK)
1674 return retVal;
1675 if((retVal = rtl8367c_getAsicRegBit(0x1d11, 11, &hisgmiibit)) != RT_ERR_OK)
1676 return retVal;
1677
1678 if ((sgmiibit == 1) || (hisgmiibit == 1))
1679 {
1680 /*for 1000x/100fx/1000x_100fx, param has to be set to serdes registers*/
1681 if((retVal = rtl8367c_getAsicReg(0x1d41, &regValue)) != RT_ERR_OK)
1682 return retVal;
1683
1684 /*bit5: cfg_mac6_fib =1, bit7: cfg_mac6_fib2=1*/
1685 if((regValue & 0xa0) == 0xa0)
1686 {
1687 /* new_cfg_sds_mode */
1688 if((retVal = rtl8367c_getAsicRegBits(0x1d95, 0x1f00, &regValue2)) != RT_ERR_OK)
1689 return retVal;
1690
1691 /*1000X*/
1692 if(regValue2 == 0x4)
1693 {
1694 #if 0
1695 /* new_cfg_sds_mode:reset mode */
1696 if((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK)
1697 return retVal;
1698 #endif
1699 /* Enable new sds mode config */
1700 if((retVal = rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK)
1701 return retVal;
1702
1703 /* 0 4 0 bit 12 set 1, bit15~13 = 4*/
1704 if((retVal = rtl8367c_getAsicSdsReg(0, 4, 0, &reg_data)) != RT_ERR_OK)
1705 return retVal;
1706 reg_data &= 0xFFFF0FFF;
1707 reg_data |= 0x9000;
1708 if((retVal = rtl8367c_setAsicSdsReg(0,4,0, reg_data)) != RT_ERR_OK)
1709 return retVal;
1710
1711 /* 0 0 2 bit 6 set 1, bit13 set to 0, bit12 nway_en*/
1712 if((retVal = rtl8367c_getAsicSdsReg(0, 0, 2, &reg_data)) != RT_ERR_OK)
1713 return retVal;
1714 reg_data &= 0xFFFFDFFF;
1715 reg_data |= 0x40;
1716 if(pPortAbility->forcemode)
1717 reg_data &= 0xffffefff;
1718 else
1719 reg_data |= 0x1000;
1720
1721 if((retVal = rtl8367c_setAsicSdsReg(0,0,2, reg_data)) != RT_ERR_OK)
1722 return retVal;
1723
1724 /* 0 4 2 bit 8 rx pause, bit7 tx pause*/
1725 if((retVal = rtl8367c_getAsicSdsReg(0, 4, 2, &reg_data)) != RT_ERR_OK)
1726 return retVal;
1727
1728 if (pPortAbility->txpause)
1729 reg_data |= 0x80;
1730 else
1731 reg_data &= (~0x80);
1732
1733 if (pPortAbility->rxpause)
1734 reg_data |= 0x100;
1735 else
1736 reg_data &= (~0x100);
1737
1738 if((retVal = rtl8367c_setAsicSdsReg(0,4,2, reg_data)) != RT_ERR_OK)
1739 return retVal;
1740
1741 /* 0 4 0 bit 12 set 0*/
1742 if((retVal = rtl8367c_getAsicSdsReg(0, 4, 0, &reg_data)) != RT_ERR_OK)
1743 return retVal;
1744 reg_data &= 0xFFFFEFFF;
1745 if((retVal = rtl8367c_setAsicSdsReg(0,4,0, reg_data)) != RT_ERR_OK)
1746 return retVal;
1747
1748 /*new_cfg_sds_mode=1000x*/
1749 if((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x4)) != RT_ERR_OK)
1750 return retVal;
1751
1752 }
1753 else if(regValue2 == 0x5)
1754 {
1755 #if 0
1756 /*100FX*/
1757 if((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK)
1758 return retVal;
1759 #endif
1760 /*cfg_sds_mode_sel_new=1 */
1761 if((retVal = rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK)
1762 return retVal;
1763
1764 /* 0 4 0 bit 12 set 1, bit15~13 = 5*/
1765 if((retVal = rtl8367c_getAsicSdsReg(0, 4, 0, &reg_data)) != RT_ERR_OK)
1766 return retVal;
1767 reg_data &= 0xFFFF0FFF;
1768 reg_data |= 0xB000;
1769 if((retVal = rtl8367c_setAsicSdsReg(0,4,0, reg_data)) != RT_ERR_OK)
1770 return retVal;
1771
1772 /* 0 0 2 bit 6 set 0, bit13 set to 1, bit12 0*/
1773 if((retVal = rtl8367c_getAsicSdsReg(0, 0, 2, &reg_data)) != RT_ERR_OK)
1774 return retVal;
1775 reg_data &= 0xFFFFFFBF;
1776 reg_data |= 0x2000;
1777 reg_data &= 0xffffefff;
1778
1779 if((retVal = rtl8367c_setAsicSdsReg(0,0,2, reg_data)) != RT_ERR_OK)
1780 return retVal;
1781
1782 /* 0 4 2 bit 8 rx pause, bit7 tx pause*/
1783 if((retVal = rtl8367c_getAsicSdsReg(0, 4, 2, &reg_data)) != RT_ERR_OK)
1784 return retVal;
1785 if (pPortAbility->txpause)
1786 reg_data |= 0x80;
1787 else
1788 reg_data &= (~0x80);
1789 if (pPortAbility->rxpause)
1790 reg_data |= 0x100;
1791 else
1792 reg_data &= (~0x100);
1793 if((retVal = rtl8367c_setAsicSdsReg(0,4,2, reg_data)) != RT_ERR_OK)
1794 return retVal;
1795
1796 /* 0 4 0 bit 12 set 0*/
1797 if((retVal = rtl8367c_getAsicSdsReg(0, 4, 0, &reg_data)) != RT_ERR_OK)
1798 return retVal;
1799 reg_data &= 0xFFFFEFFF;
1800 if((retVal = rtl8367c_setAsicSdsReg(0,4,0, reg_data)) != RT_ERR_OK)
1801 return retVal;
1802 /* new_cfg_sds_mode=1000x */
1803 if((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x5)) != RT_ERR_OK)
1804 return retVal;
1805
1806 }
1807 else if(regValue2 == 0x7)
1808 {
1809 #if 0
1810 /*100FX*/
1811 if((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK)
1812 return retVal;
1813 #endif
1814 if((retVal = rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK)
1815 return retVal;
1816
1817 /* 0 4 0 bit 12 set 1, bit15~13 = 4*/
1818 if((retVal = rtl8367c_getAsicSdsReg(0, 4, 0, &reg_data)) != RT_ERR_OK)
1819 return retVal;
1820 reg_data &= 0xFFFF0FFF;
1821 reg_data |= 0x9000;
1822 if((retVal = rtl8367c_setAsicSdsReg(0,4,0, reg_data)) != RT_ERR_OK)
1823 return retVal;
1824
1825 /* 0 0 2 bit 6 set 1, bit13 set to 0, bit12 nway_en*/
1826 if((retVal = rtl8367c_getAsicSdsReg(0, 0, 2, &reg_data)) != RT_ERR_OK)
1827 return retVal;
1828 reg_data &= 0xFFFFDFFF;
1829 reg_data |= 0x40;
1830 if(pPortAbility->forcemode)
1831 reg_data &= 0xffffefff;
1832 else
1833 reg_data |= 0x1000;
1834
1835 if((retVal = rtl8367c_setAsicSdsReg(0,0,2, reg_data)) != RT_ERR_OK)
1836 return retVal;
1837
1838 /* 0 4 2 bit 8 rx pause, bit7 tx pause*/
1839 if((retVal = rtl8367c_getAsicSdsReg(0, 4, 2, &reg_data)) != RT_ERR_OK)
1840 return retVal;
1841 if (pPortAbility->txpause)
1842 reg_data |= 0x80;
1843 else
1844 reg_data &= (~0x80);
1845 if (pPortAbility->rxpause)
1846 reg_data |= 0x100;
1847 else
1848 reg_data &=(~0x100);
1849 if((retVal = rtl8367c_setAsicSdsReg(0,4,2, reg_data)) != RT_ERR_OK)
1850 return retVal;
1851
1852 /* 0 4 0 bit 12 set 0*/
1853 if((retVal = rtl8367c_getAsicSdsReg(0, 4, 0, &reg_data)) != RT_ERR_OK)
1854 return retVal;
1855 reg_data &= 0xFFFFEFFF;
1856 if((retVal = rtl8367c_setAsicSdsReg(0,4,0, reg_data)) != RT_ERR_OK)
1857 return retVal;
1858
1859 /* 0 4 0 bit 12 set 1, bit15~13 = 5*/
1860 if((retVal = rtl8367c_getAsicSdsReg(0, 4, 0, &reg_data)) != RT_ERR_OK)
1861 return retVal;
1862 reg_data &= 0xFFFF0FFF;
1863 reg_data |= 0xB000;
1864 if((retVal = rtl8367c_setAsicSdsReg(0,4,0, reg_data)) != RT_ERR_OK)
1865 return retVal;
1866
1867 /* 0 0 2 bit 6 set 0, bit13 set to 1, bit12 0*/
1868 if((retVal = rtl8367c_getAsicSdsReg(0, 0, 2, &reg_data)) != RT_ERR_OK)
1869 return retVal;
1870 reg_data &= 0xFFFFFFBF;
1871 reg_data |= 0x2000;
1872 reg_data &= 0xffffefff;
1873
1874 if((retVal = rtl8367c_setAsicSdsReg(0,0,2, reg_data)) != RT_ERR_OK)
1875 return retVal;
1876
1877 /* 0 4 2 bit 8 rx pause, bit7 tx pause*/
1878 if((retVal = rtl8367c_getAsicSdsReg(0, 4, 2, &reg_data)) != RT_ERR_OK)
1879 return retVal;
1880 if (pPortAbility->txpause)
1881 reg_data |= 0x80;
1882 else
1883 reg_data &= 0xffffff7f;
1884 if (pPortAbility->rxpause)
1885 reg_data |= 0x100;
1886 else
1887 reg_data &= 0xfffffeff;
1888 if((retVal = rtl8367c_setAsicSdsReg(0,4,2, reg_data)) != RT_ERR_OK)
1889 return retVal;
1890
1891 /* 0 4 0 bit 12 set 0*/
1892 if((retVal = rtl8367c_getAsicSdsReg(0, 4, 0, &reg_data)) != RT_ERR_OK)
1893 return retVal;
1894 reg_data &= 0xFFFFEFFF;
1895 if((retVal = rtl8367c_setAsicSdsReg(0,4,0, reg_data)) != RT_ERR_OK)
1896 return retVal;
1897 /*sds_mode:*/
1898 if((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x7)) != RT_ERR_OK)
1899 return retVal;
1900
1901 }
1902
1903 /*disable force ability --- */
1904 if((retVal = rtl8367c_setAsicRegBit(0x137c, 12, 0)) != RT_ERR_OK)
1905 return retVal;
1906 return RT_ERR_OK;
1907
1908 }
1909
1910 /* new_cfg_sds_mode */
1911 if((retVal = rtl8367c_getAsicRegBits(0x1d95, 0x1f00, &regValue2)) != RT_ERR_OK)
1912 return retVal;
1913 if(regValue2 == 0x2)
1914 {
1915 #if 0
1916 /*SGMII*/
1917 if((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK)
1918 return retVal;
1919 #endif
1920 if((retVal = rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK)
1921 return retVal;
1922
1923 for(i=0;i<0xfff; i++);
1924
1925 /* 0 2 0 bit 8-9 nway*/
1926 if((retVal = rtl8367c_getAsicSdsReg(0, 2, 0, &reg_data)) != RT_ERR_OK)
1927 return retVal;
1928 reg_data &= 0xfffffcff;
1929 if (pPortAbility->nway)
1930 reg_data &= 0xfffffcff;
1931 else
1932 reg_data |= 0x100;
1933 if((retVal = rtl8367c_setAsicSdsReg(0,2,0, reg_data)) != RT_ERR_OK)
1934 return retVal;
1935
1936 if((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x2)) != RT_ERR_OK)
1937 return retVal;
1938
1939 for(i=0;i<0xfff; i++);
1940
1941 if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_FDUP_OFFSET, pPortAbility->duplex)) != RT_ERR_OK)
1942 return retVal;
1943
1944 if((retVal = rtl8367c_setAsicRegBits(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_SPD_MASK, pPortAbility->speed)) != RT_ERR_OK)
1945 return retVal;
1946
1947 if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_TXFC_OFFSET, pPortAbility->txpause)) != RT_ERR_OK)
1948 return retVal;
1949
1950 if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_RXFC_OFFSET, pPortAbility->rxpause)) != RT_ERR_OK)
1951 return retVal;
1952
1953 if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_LINK_OFFSET, pPortAbility->link)) != RT_ERR_OK)
1954 return retVal;
1955
1956 /*disable force ability --- */
1957 if((retVal = rtl8367c_setAsicRegBit(0x137c, 12, 0)) != RT_ERR_OK)
1958 return retVal;
1959 return RT_ERR_OK;
1960 }
1961 else if(regValue2 == 0x12)
1962 {
1963 #if 0
1964 /*HiSGMII*/
1965 if((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK)
1966 return retVal;
1967 #endif
1968 if((retVal = rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK)
1969 return retVal;
1970
1971 for(i=0;i<0xfff; i++);
1972
1973 /* 0 2 0 bit 8-9 nway*/
1974 if((retVal = rtl8367c_getAsicSdsReg(0, 2, 0, &reg_data)) != RT_ERR_OK)
1975 return retVal;
1976 reg_data &= 0xfffffcff;
1977 if (pPortAbility->nway)
1978 reg_data &= 0xfffffcff;
1979 else
1980 reg_data |= 0x100;
1981 if((retVal = rtl8367c_setAsicSdsReg(0,2,0, reg_data)) != RT_ERR_OK)
1982 return retVal;
1983
1984
1985 if((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x12)) != RT_ERR_OK)
1986 return retVal;
1987
1988 for(i=0;i<0xfff; i++);
1989
1990 if((retVal = rtl8367c_setAsicRegBit(0x1d11, 11, 0x1)) != RT_ERR_OK)
1991 return retVal;
1992
1993 if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_FDUP_OFFSET, pPortAbility->duplex)) != RT_ERR_OK)
1994 return retVal;
1995
1996 if((retVal = rtl8367c_setAsicRegBits(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_SPD_MASK, pPortAbility->speed)) != RT_ERR_OK)
1997 return retVal;
1998
1999 if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_TXFC_OFFSET, pPortAbility->txpause)) != RT_ERR_OK)
2000 return retVal;
2001
2002 if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_RXFC_OFFSET, pPortAbility->rxpause)) != RT_ERR_OK)
2003 return retVal;
2004
2005 if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_LINK_OFFSET, pPortAbility->link)) != RT_ERR_OK)
2006 return retVal;
2007
2008 /*disable force ability --- */
2009 if((retVal = rtl8367c_setAsicRegBit(0x137c, 12, 0)) != RT_ERR_OK)
2010 return retVal;
2011 return RT_ERR_OK;
2012
2013 }
2014 }
2015 else
2016 {
2017 if((retVal = rtl8367c_getAsicRegBits(0x1d3d, 10, &regValue2)) != RT_ERR_OK)
2018 return retVal;
2019 if (regValue2 == 0)
2020 {
2021 /*ext1_force_ablty*/
2022 if((retVal = rtl8367c_setAsicRegBit(0x1311, 2, pPortAbility->duplex)) != RT_ERR_OK)
2023 return retVal;
2024
2025 if((retVal = rtl8367c_setAsicRegBits(0x1311, 0x3, pPortAbility->speed)) != RT_ERR_OK)
2026 return retVal;
2027
2028 if((retVal = rtl8367c_setAsicRegBit(0x1311, 4, pPortAbility->link)) != RT_ERR_OK)
2029 return retVal;
2030
2031 if((retVal = rtl8367c_setAsicRegBit(0x1311, 6, pPortAbility->txpause)) != RT_ERR_OK)
2032 return retVal;
2033
2034 if((retVal = rtl8367c_setAsicRegBit(0x1311, 5, pPortAbility->rxpause)) != RT_ERR_OK)
2035 return retVal;
2036
2037 /*force mode for ext1*/
2038 if((retVal = rtl8367c_setAsicRegBit(0x1311, 12, pPortAbility->forcemode)) != RT_ERR_OK)
2039 return retVal;
2040
2041 if (pPortAbility->link == 1)
2042 {
2043 if((retVal = rtl8367c_setAsicRegBit(0x1311, 4, 0)) != RT_ERR_OK)
2044 return retVal;
2045
2046 if((retVal = rtl8367c_setAsicRegBit(0x1311, 4, 1)) != RT_ERR_OK)
2047 return retVal;
2048 }
2049 else
2050 {
2051 if((retVal = rtl8367c_setAsicRegBits(0x1311, 0x3, 2)) != RT_ERR_OK)
2052 return retVal;
2053 }
2054
2055 /*disable force ability --- */
2056 if((retVal = rtl8367c_setAsicRegBit(0x137c, 12, 0)) != RT_ERR_OK)
2057 return retVal;
2058 return RT_ERR_OK;
2059 }
2060 }
2061
2062
2063 }
2064 else if (2 == id)
2065 {
2066
2067 if((retVal = rtl8367c_getAsicRegBit(0x1d95, 0, &sgmiibit)) != RT_ERR_OK)
2068 return retVal;
2069 if (sgmiibit == 1)
2070 {
2071 /*for 1000x/100fx/1000x_100fx, param has to bet set to serdes registers*/
2072 if((retVal = rtl8367c_getAsicReg(0x1d95, &regValue)) != RT_ERR_OK)
2073 return retVal;
2074 /*cfg_mac7_sel_sgmii=1 & cfg_mac7_fib =1*/
2075 if((regValue & 0x3) == 0x3)
2076 {
2077 if((retVal = rtl8367c_getAsicRegBits(0x1d95, 0x1f00, &regValue2)) != RT_ERR_OK)
2078 return retVal;
2079
2080 if(regValue2 == 0x4)
2081 {
2082 /*1000X*/
2083 #if 0
2084 if((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK)
2085 return retVal;
2086 #endif
2087 if((retVal = rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK)
2088 return retVal;
2089
2090 /* 0 4 0 bit 12 set 1, bit15~13 = 4*/
2091 if((retVal = rtl8367c_getAsicSdsReg(0, 4, 0, &reg_data)) != RT_ERR_OK)
2092 return retVal;
2093 reg_data &= 0xFFFF0FFF;
2094 reg_data |= 0x9000;
2095 if((retVal = rtl8367c_setAsicSdsReg(0,4,0, reg_data)) != RT_ERR_OK)
2096 return retVal;
2097
2098 /* 0 0 2 bit 6 set 1, bit13 set to 0, bit12 nway_en*/
2099 if((retVal = rtl8367c_getAsicSdsReg(0, 0, 2, &reg_data)) != RT_ERR_OK)
2100 return retVal;
2101 reg_data &= 0xFFFFDFFF;
2102 reg_data |= 0x40;
2103 if(pPortAbility->forcemode)
2104 reg_data &= 0xffffefff;
2105 else
2106 reg_data |= 0x1000;
2107
2108 if((retVal = rtl8367c_setAsicSdsReg(0,0,2, reg_data)) != RT_ERR_OK)
2109 return retVal;
2110
2111 /* 0 4 2 bit 8 rx pause, bit7 tx pause*/
2112 if((retVal = rtl8367c_getAsicSdsReg(0, 4, 2, &reg_data)) != RT_ERR_OK)
2113 return retVal;
2114 if (pPortAbility->txpause)
2115 reg_data |= 0x80;
2116 else
2117 reg_data &= 0xffffff7f;
2118 if (pPortAbility->rxpause)
2119 reg_data |= 0x100;
2120 else
2121 reg_data &= 0xfffffeff;
2122 if((retVal = rtl8367c_setAsicSdsReg(0,4,2, reg_data)) != RT_ERR_OK)
2123 return retVal;
2124
2125 /* 0 4 0 bit 12 set 0*/
2126 if((retVal = rtl8367c_getAsicSdsReg(0, 4, 0, &reg_data)) != RT_ERR_OK)
2127 return retVal;
2128 reg_data &= 0xFFFFEFFF;
2129 if((retVal = rtl8367c_setAsicSdsReg(0,4,0, reg_data)) != RT_ERR_OK)
2130 return retVal;
2131
2132 if((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x4)) != RT_ERR_OK)
2133 return retVal;
2134
2135 }
2136 else if(regValue2 == 0x5)
2137 {
2138 /*100FX*/
2139 #if 0
2140 if((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK)
2141 return retVal;
2142 #endif
2143 if((retVal = rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK)
2144 return retVal;
2145
2146 /* 0 4 0 bit 12 set 1, bit15~13 = 5*/
2147 if((retVal = rtl8367c_getAsicSdsReg(0, 4, 0, &reg_data)) != RT_ERR_OK)
2148 return retVal;
2149 reg_data &= 0xFFFF0FFF;
2150 reg_data |= 0xB000;
2151 if((retVal = rtl8367c_setAsicSdsReg(0,4,0, reg_data)) != RT_ERR_OK)
2152 return retVal;
2153
2154 /* 0 0 2 bit 6 set 0, bit13 set to 1, bit12 0*/
2155 if((retVal = rtl8367c_getAsicSdsReg(0, 0, 2, &reg_data)) != RT_ERR_OK)
2156 return retVal;
2157 reg_data &= 0xFFFFFFBF;
2158 reg_data |= 0x2000;
2159 reg_data &= 0xffffefff;
2160
2161 if((retVal = rtl8367c_setAsicSdsReg(0,0,2, reg_data)) != RT_ERR_OK)
2162 return retVal;
2163
2164 /* 0 4 2 bit 8 rx pause, bit7 tx pause*/
2165 if((retVal = rtl8367c_getAsicSdsReg(0, 4, 2, &reg_data)) != RT_ERR_OK)
2166 return retVal;
2167 if (pPortAbility->txpause)
2168 reg_data |= 0x80;
2169 else
2170 reg_data &= 0xffffff7f;
2171 if (pPortAbility->rxpause)
2172 reg_data |= 0x100;
2173 else
2174 reg_data &= 0xfffffeff;
2175 if((retVal = rtl8367c_setAsicSdsReg(0,4,2, reg_data)) != RT_ERR_OK)
2176 return retVal;
2177
2178 /* 0 4 0 bit 12 set 0*/
2179 if((retVal = rtl8367c_getAsicSdsReg(0, 4, 0, &reg_data)) != RT_ERR_OK)
2180 return retVal;
2181 reg_data &= 0xFFFFEFFF;
2182 if((retVal = rtl8367c_setAsicSdsReg(0,4,0, reg_data)) != RT_ERR_OK)
2183 return retVal;
2184
2185 if((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x5)) != RT_ERR_OK)
2186 return retVal;
2187
2188 }
2189 else if(regValue2 == 0x7)
2190 {
2191 /*100FX*/
2192 #if 0
2193 if((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK)
2194 return retVal;
2195 #endif
2196 if((retVal = rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK)
2197 return retVal;
2198
2199 /* 0 4 0 bit 12 set 1, bit15~13 = 4*/
2200 if((retVal = rtl8367c_getAsicSdsReg(0, 4, 0, &reg_data)) != RT_ERR_OK)
2201 return retVal;
2202 reg_data &= 0xFFFF0FFF;
2203 reg_data |= 0x9000;
2204 if((retVal = rtl8367c_setAsicSdsReg(0,4,0, reg_data)) != RT_ERR_OK)
2205 return retVal;
2206
2207 /* 0 0 2 bit 6 set 1, bit13 set to 0, bit12 nway_en*/
2208 if((retVal = rtl8367c_getAsicSdsReg(0, 0, 2, &reg_data)) != RT_ERR_OK)
2209 return retVal;
2210 reg_data &= 0xFFFFDFFF;
2211 reg_data |= 0x40;
2212 if(pPortAbility->forcemode)
2213 reg_data &= 0xffffefff;
2214 else
2215 reg_data |= 0x1000;
2216
2217 if((retVal = rtl8367c_setAsicSdsReg(0,0,2, reg_data)) != RT_ERR_OK)
2218 return retVal;
2219
2220 /* 0 4 2 bit 8 rx pause, bit7 tx pause*/
2221 if((retVal = rtl8367c_getAsicSdsReg(0, 4, 2, &reg_data)) != RT_ERR_OK)
2222 return retVal;
2223 if (pPortAbility->txpause)
2224 reg_data |= 0x80;
2225 else
2226 reg_data &= 0xffffff7f;
2227 if (pPortAbility->rxpause)
2228 reg_data |= 0x100;
2229 else
2230 reg_data &= 0xfffffeff;
2231 if((retVal = rtl8367c_setAsicSdsReg(0,4,2, reg_data)) != RT_ERR_OK)
2232 return retVal;
2233
2234 /* 0 4 0 bit 12 set 0*/
2235 if((retVal = rtl8367c_getAsicSdsReg(0, 4, 0, &reg_data)) != RT_ERR_OK)
2236 return retVal;
2237 reg_data &= 0xFFFFEFFF;
2238 if((retVal = rtl8367c_setAsicSdsReg(0,4,0, reg_data)) != RT_ERR_OK)
2239 return retVal;
2240
2241 /* 0 4 0 bit 12 set 1, bit15~13 = 5*/
2242 if((retVal = rtl8367c_getAsicSdsReg(0, 4, 0, &reg_data)) != RT_ERR_OK)
2243 return retVal;
2244 reg_data &= 0xFFFF0FFF;
2245 reg_data |= 0xB000;
2246 if((retVal = rtl8367c_setAsicSdsReg(0,4,0, reg_data)) != RT_ERR_OK)
2247 return retVal;
2248
2249 /* 0 0 2 bit 6 set 0, bit13 set to 1, bit12 0*/
2250 if((retVal = rtl8367c_getAsicSdsReg(0, 0, 2, &reg_data)) != RT_ERR_OK)
2251 return retVal;
2252 reg_data &= 0xFFFFFFBF;
2253 reg_data |= 0x2000;
2254 reg_data &= 0xffffefff;
2255
2256 if((retVal = rtl8367c_setAsicSdsReg(0,0,2, reg_data)) != RT_ERR_OK)
2257 return retVal;
2258
2259 /* 0 4 2 bit 8 rx pause, bit7 tx pause*/
2260 if((retVal = rtl8367c_getAsicSdsReg(0, 4, 2, &reg_data)) != RT_ERR_OK)
2261 return retVal;
2262 if (pPortAbility->txpause)
2263 reg_data |= 0x80;
2264 else
2265 reg_data &= 0xffffff7f;
2266 if (pPortAbility->rxpause)
2267 reg_data |= 0x100;
2268 else
2269 reg_data &= 0xfffffeff;
2270 if((retVal = rtl8367c_setAsicSdsReg(0,4,2, reg_data)) != RT_ERR_OK)
2271 return retVal;
2272
2273 /* 0 4 0 bit 12 set 0*/
2274 if((retVal = rtl8367c_getAsicSdsReg(0, 4, 0, &reg_data)) != RT_ERR_OK)
2275 return retVal;
2276 reg_data &= 0xFFFFEFFF;
2277 if((retVal = rtl8367c_setAsicSdsReg(0,4,0, reg_data)) != RT_ERR_OK)
2278 return retVal;
2279
2280 if((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x7)) != RT_ERR_OK)
2281 return retVal;
2282
2283 }
2284
2285 if((retVal = rtl8367c_setAsicRegBit(0x137d, 12, 0)) != RT_ERR_OK)
2286 return retVal;
2287 return RT_ERR_OK;
2288
2289 }
2290 /* new_cfg_sds_mode */
2291 if((retVal = rtl8367c_getAsicRegBits(0x1d95, 0x1f00, &regValue2)) != RT_ERR_OK)
2292 return retVal;
2293 if(regValue2 == 0x2)
2294 {
2295 /*SGMII*/
2296 #if 0
2297 if((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK)
2298 return retVal;
2299 #endif
2300 if((retVal = rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK)
2301 return retVal;
2302
2303 for(i=0;i<0xfff; i++);
2304
2305 /* 0 2 0 bit 8-9 nway*/
2306 if((retVal = rtl8367c_getAsicSdsReg(0, 2, 0, &reg_data)) != RT_ERR_OK)
2307 return retVal;
2308 reg_data &= 0xfffffcff;
2309 if (pPortAbility->nway)
2310 reg_data &= 0xfffffcff;
2311 else
2312 reg_data |= 0x100;
2313 if((retVal = rtl8367c_setAsicSdsReg(0,2,0, reg_data)) != RT_ERR_OK)
2314 return retVal;
2315
2316 if((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x2)) != RT_ERR_OK)
2317 return retVal;
2318
2319 for(i=0;i<0xfff; i++);
2320
2321 if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_FDUP_OFFSET, pPortAbility->duplex)) != RT_ERR_OK)
2322 return retVal;
2323
2324 if((retVal = rtl8367c_setAsicRegBits(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_SPD_MASK, pPortAbility->speed)) != RT_ERR_OK)
2325 return retVal;
2326
2327 if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_TXFC_OFFSET, pPortAbility->txpause)) != RT_ERR_OK)
2328 return retVal;
2329
2330 if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_RXFC_OFFSET, pPortAbility->rxpause)) != RT_ERR_OK)
2331 return retVal;
2332
2333 if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_LINK_OFFSET, pPortAbility->link)) != RT_ERR_OK)
2334 return retVal;
2335
2336 if((retVal = rtl8367c_setAsicRegBit(0x137d, 12, 0)) != RT_ERR_OK)
2337 return retVal;
2338 return RT_ERR_OK;
2339 }
2340 }
2341 else
2342 {
2343
2344 /*ext2_force_ablty*/
2345 if((retVal = rtl8367c_setAsicRegBit(0x13c4, 2, pPortAbility->duplex)) != RT_ERR_OK)
2346 return retVal;
2347
2348 if((retVal = rtl8367c_setAsicRegBits(0x13c4, 0x3, pPortAbility->speed)) != RT_ERR_OK)
2349 return retVal;
2350
2351 if((retVal = rtl8367c_setAsicRegBit(0x13c4, 4, pPortAbility->link)) != RT_ERR_OK)
2352 return retVal;
2353
2354 if((retVal = rtl8367c_setAsicRegBit(0x13c4, 6, pPortAbility->txpause)) != RT_ERR_OK)
2355 return retVal;
2356
2357 if((retVal = rtl8367c_setAsicRegBit(0x13c4, 5, pPortAbility->rxpause)) != RT_ERR_OK)
2358 return retVal;
2359
2360 /*force mode for ext2*/
2361 if((retVal = rtl8367c_setAsicRegBit(0x13c4, 12, pPortAbility->forcemode)) != RT_ERR_OK)
2362 return retVal;
2363
2364 if (pPortAbility->link == 1)
2365 {
2366 if((retVal = rtl8367c_setAsicRegBit(0x13c4, 4, 0)) != RT_ERR_OK)
2367 return retVal;
2368
2369 if((retVal = rtl8367c_setAsicRegBit(0x13c4, 4, 1)) != RT_ERR_OK)
2370 return retVal;
2371 }
2372 else
2373 {
2374 if((retVal = rtl8367c_setAsicRegBits(0x13c4, 0x3, 2)) != RT_ERR_OK)
2375 return retVal;
2376 }
2377
2378
2379 if((retVal = rtl8367c_getAsicRegBit(0x1d3d, 10, &reg_data)) != RT_ERR_OK)
2380 return retVal;
2381 if(reg_data == 1)
2382 {
2383 if((retVal = rtl8367c_setAsicRegBit(0x1311, 2, pPortAbility->duplex)) != RT_ERR_OK)
2384 return retVal;
2385
2386 if((retVal = rtl8367c_setAsicRegBits(0x1311, 0x3, pPortAbility->speed)) != RT_ERR_OK)
2387 return retVal;
2388
2389 if((retVal = rtl8367c_setAsicRegBit(0x1311, 4, pPortAbility->link)) != RT_ERR_OK)
2390 return retVal;
2391
2392 if((retVal = rtl8367c_setAsicRegBit(0x1311, 6, pPortAbility->txpause)) != RT_ERR_OK)
2393 return retVal;
2394
2395 if((retVal = rtl8367c_setAsicRegBit(0x1311, 5, pPortAbility->rxpause)) != RT_ERR_OK)
2396 return retVal;
2397
2398 /*force mode for ext1*/
2399 if((retVal = rtl8367c_setAsicRegBit(0x1311, 12, pPortAbility->forcemode)) != RT_ERR_OK)
2400 return retVal;
2401
2402 if (pPortAbility->link == 1)
2403 {
2404 if((retVal = rtl8367c_setAsicRegBit(0x1311, 4, 0)) != RT_ERR_OK)
2405 return retVal;
2406
2407 if((retVal = rtl8367c_setAsicRegBit(0x1311, 4, 1)) != RT_ERR_OK)
2408 return retVal;
2409 }
2410 else
2411 {
2412 if((retVal = rtl8367c_setAsicRegBits(0x1311, 0x3, 2)) != RT_ERR_OK)
2413 return retVal;
2414 }
2415 }
2416
2417
2418 }
2419
2420 /*disable force ability --- */
2421 if((retVal = rtl8367c_setAsicRegBit(0x137d, 12, 0)) != RT_ERR_OK)
2422 return retVal;
2423 }
2424 #if 0
2425 if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_FDUP_OFFSET, pPortAbility->duplex)) != RT_ERR_OK)
2426 return retVal;
2427
2428 if((retVal = rtl8367c_setAsicRegBits(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_SPD_MASK, pPortAbility->speed)) != RT_ERR_OK)
2429 return retVal;
2430
2431 if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_TXFC_OFFSET, pPortAbility->txpause)) != RT_ERR_OK)
2432 return retVal;
2433
2434 if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_RXFC_OFFSET, pPortAbility->rxpause)) != RT_ERR_OK)
2435 return retVal;
2436
2437 if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_LINK_OFFSET, pPortAbility->link)) != RT_ERR_OK)
2438 return retVal;
2439 #endif
2440 }
2441
2442 return RT_ERR_OK;
2443 }
2444 /* Function Name:
2445 * rtl8367c_getAsicPortForceLinkExt
2446 * Description:
2447 * Get external interface force linking configuration
2448 * Input:
2449 * id - external interface id (0~1)
2450 * pPortAbility - port ability configuration
2451 * Output:
2452 * None
2453 * Return:
2454 * RT_ERR_OK - Success
2455 * RT_ERR_SMI - SMI access error
2456 * RT_ERR_OUT_OF_RANGE - input parameter out of range
2457 * Note:
2458 * None
2459 */
2460 ret_t rtl8367c_getAsicPortForceLinkExt(rtk_uint32 id, rtl8367c_port_ability_t *pPortAbility)
2461 {
2462 rtk_uint32 reg_data, regValue, type;
2463 rtk_uint32 sgmiiSel;
2464 rtk_uint32 hsgmiiSel;
2465 ret_t retVal;
2466
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)
2472 return retVal;
2473
2474 if((retVal = rtl8367c_getAsicReg(0x1300, &regValue)) != RT_ERR_OK)
2475 return retVal;
2476
2477 if((retVal = rtl8367c_setAsicReg(0x13C2, 0x0000)) != RT_ERR_OK)
2478 return retVal;
2479
2480 type = 0;
2481
2482 switch (regValue)
2483 {
2484 case 0x0276:
2485 case 0x0597:
2486 case 0x6367:
2487 type = 1;
2488 break;
2489 case 0x0652:
2490 case 0x6368:
2491 type = 2;
2492 break;
2493 case 0x0801:
2494 case 0x6511:
2495 type = 3;
2496 break;
2497 default:
2498 return RT_ERR_FAILED;
2499 }
2500
2501 if (1 == type)
2502 {
2503 if(1 == id)
2504 {
2505 if((retVal = rtl8367c_getAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_MAC8_SEL_SGMII_OFFSET, &sgmiiSel)) != RT_ERR_OK)
2506 return retVal;
2507
2508 if((retVal = rtl8367c_getAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_MAC8_SEL_HSGMII_OFFSET, &hsgmiiSel)) != RT_ERR_OK)
2509 return retVal;
2510
2511 if( (sgmiiSel == 1) || (hsgmiiSel == 1) )
2512 {
2513 memset(pPortAbility, 0x00, sizeof(rtl8367c_port_ability_t));
2514 pPortAbility->forcemode = 1;
2515
2516 if((retVal = rtl8367c_getAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_FDUP_OFFSET, &reg_data)) != RT_ERR_OK)
2517 return retVal;
2518
2519 pPortAbility->duplex = reg_data;
2520
2521 if((retVal = rtl8367c_getAsicRegBits(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_SPD_MASK, &reg_data)) != RT_ERR_OK)
2522 return retVal;
2523
2524 pPortAbility->speed = reg_data;
2525
2526 if((retVal = rtl8367c_getAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_LINK_OFFSET, &reg_data)) != RT_ERR_OK)
2527 return retVal;
2528
2529 pPortAbility->link = reg_data;
2530
2531 if((retVal = rtl8367c_getAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_TXFC_OFFSET, &reg_data)) != RT_ERR_OK)
2532 return retVal;
2533
2534 pPortAbility->txpause = reg_data;
2535
2536 if((retVal = rtl8367c_getAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_SGMII_RXFC_OFFSET, &reg_data)) != RT_ERR_OK)
2537 return retVal;
2538
2539 pPortAbility->rxpause = reg_data;
2540
2541 return RT_ERR_OK;
2542 }
2543 }
2544
2545 if(0 == id || 1 == id)
2546 retVal = rtl8367c_getAsicReg(RTL8367C_REG_DIGITAL_INTERFACE0_FORCE+id, &reg_data);
2547 else
2548 retVal = rtl8367c_getAsicReg(RTL8367C_REG_DIGITAL_INTERFACE2_FORCE, &reg_data);
2549
2550 if(retVal != RT_ERR_OK)
2551 return retVal;
2552
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;
2562 }
2563 else if (2 == type)
2564 {
2565 if (id == 1)
2566 {
2567 if ((retVal = rtl8367c_getAsicReg(0x1311, &reg_data))!=RT_ERR_OK)
2568 return retVal;
2569
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;
2576 }
2577 else if (2 == id)
2578 {
2579 if ((retVal = rtl8367c_getAsicReg(0x13c4, &reg_data))!=RT_ERR_OK)
2580 return retVal;
2581
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;
2588 }
2589 }
2590 else if (3 == type)
2591 {
2592 if (id == 1)
2593 {
2594 if ((retVal = rtl8367c_getAsicReg(0x1311, &reg_data))!=RT_ERR_OK)
2595 return retVal;
2596
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;
2603 }
2604 else if (2 == id)
2605 {
2606 if ((retVal = rtl8367c_getAsicReg(0x13c4, &reg_data))!=RT_ERR_OK)
2607 return retVal;
2608
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;
2615 }
2616 }
2617 return RT_ERR_OK;
2618 }
2619 /* Function Name:
2620 * rtl8367c_setAsicPortExtMode
2621 * Description:
2622 * Set external interface mode configuration
2623 * Input:
2624 * id - external interface id (0~2)
2625 * mode - external interface mode
2626 * Output:
2627 * None
2628 * Return:
2629 * RT_ERR_OK - Success
2630 * RT_ERR_SMI - SMI access error
2631 * RT_ERR_OUT_OF_RANGE - input parameter out of range
2632 * Note:
2633 * None
2634 */
2635 ret_t rtl8367c_setAsicPortExtMode(rtk_uint32 id, rtk_uint32 mode)
2636 {
2637 ret_t retVal;
2638 rtk_uint32 i, regValue, type, option,reg_data;
2639 rtk_uint32 idx;
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} };
2648
2649 if(id >= RTL8367C_EXTNO)
2650 return RT_ERR_OUT_OF_RANGE;
2651
2652 if(mode >= EXT_END)
2653 return RT_ERR_OUT_OF_RANGE;
2654
2655 /* magic number*/
2656 if((retVal = rtl8367c_setAsicReg(0x13C2, 0x0249)) != RT_ERR_OK)
2657 return retVal;
2658 /* Chip num */
2659 if((retVal = rtl8367c_getAsicReg(0x1300, &regValue)) != RT_ERR_OK)
2660 return retVal;
2661
2662 if((retVal = rtl8367c_setAsicReg(0x13C2, 0x0000)) != RT_ERR_OK)
2663 return retVal;
2664
2665 type = 0;
2666
2667 switch (regValue)
2668 {
2669 case 0x0276:
2670 case 0x0597:
2671 case 0x6367:
2672 type = 1;
2673 break;
2674 case 0x0652:
2675 case 0x6368:
2676 type = 2;
2677 break;
2678 case 0x0801:
2679 case 0x6511:
2680 type = 3;
2681 break;
2682 default:
2683 return RT_ERR_FAILED;
2684 }
2685
2686
2687 if (1==type)
2688 {
2689 if((mode == EXT_1000X_100FX) || (mode == EXT_1000X) || (mode == EXT_100FX))
2690 {
2691 if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_REG_TO_ECO4, 5, 1)) != RT_ERR_OK)
2692 return retVal;
2693
2694 if((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_REG_TO_ECO4, 7, 1)) != RT_ERR_OK)
2695 return retVal;
2696
2697 if ((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_CHIP_RESET, RTL8367C_DW8051_RST_OFFSET, 1)) != RT_ERR_OK)
2698 return retVal;
2699
2700 if ((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_MISCELLANEOUS_CONFIGURE0, RTL8367C_DW8051_EN_OFFSET, 1)) != RT_ERR_OK)
2701 return retVal;
2702
2703 if ((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_DW8051_RDY, RTL8367C_ACS_IROM_ENABLE_OFFSET, 1)) != RT_ERR_OK)
2704 return retVal;
2705
2706 if ((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_DW8051_RDY, RTL8367C_IROM_MSB_OFFSET, 0)) != RT_ERR_OK)
2707 return retVal;
2708
2709 if(mode == EXT_1000X_100FX)
2710 {
2711 for(idx = 0; idx < FIBER2_AUTO_INIT_SIZE; idx++)
2712 {
2713 if ((retVal = rtl8367c_setAsicReg(0xE000 + idx, (rtk_uint32)Fiber2_Auto[idx])) != RT_ERR_OK)
2714 return retVal;
2715 }
2716 }
2717
2718 if(mode == EXT_1000X)
2719 {
2720 for(idx = 0; idx < FIBER2_1G_INIT_SIZE; idx++)
2721 {
2722 if ((retVal = rtl8367c_setAsicReg(0xE000 + idx, (rtk_uint32)Fiber2_1G[idx])) != RT_ERR_OK)
2723 return retVal;
2724 }
2725 }
2726
2727 if(mode == EXT_100FX)
2728 {
2729 for(idx = 0; idx < FIBER2_100M_INIT_SIZE; idx++)
2730 {
2731 if ((retVal = rtl8367c_setAsicReg(0xE000 + idx, (rtk_uint32)Fiber2_100M[idx])) != RT_ERR_OK)
2732 return retVal;
2733 }
2734 }
2735
2736 if ((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_DW8051_RDY, RTL8367C_IROM_MSB_OFFSET, 0)) != RT_ERR_OK)
2737 return retVal;
2738
2739 if ((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_DW8051_RDY, RTL8367C_ACS_IROM_ENABLE_OFFSET, 0)) != RT_ERR_OK)
2740 return retVal;
2741
2742 if ((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_CHIP_RESET, RTL8367C_DW8051_RST_OFFSET, 0)) != RT_ERR_OK)
2743 return retVal;
2744 }
2745
2746 if(mode == EXT_GMII)
2747 {
2748 if( (retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_EXT0_RGMXF, RTL8367C_EXT0_RGTX_INV_OFFSET, 1)) != RT_ERR_OK)
2749 return retVal;
2750
2751 if( (retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_EXT1_RGMXF, RTL8367C_EXT1_RGTX_INV_OFFSET, 1)) != RT_ERR_OK)
2752 return retVal;
2753
2754 if( (retVal = rtl8367c_setAsicRegBits(RTL8367C_REG_EXT_TXC_DLY, RTL8367C_EXT1_GMII_TX_DELAY_MASK, 5)) != RT_ERR_OK)
2755 return retVal;
2756
2757 if( (retVal = rtl8367c_setAsicRegBits(RTL8367C_REG_EXT_TXC_DLY, RTL8367C_EXT0_GMII_TX_DELAY_MASK, 6)) != RT_ERR_OK)
2758 return retVal;
2759 }
2760
2761 /* Serdes reset */
2762 if( (mode == EXT_TMII_MAC) || (mode == EXT_TMII_PHY) )
2763 {
2764 if( (retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_BYPASS_LINE_RATE, id, 1)) != RT_ERR_OK)
2765 return retVal;
2766 }
2767 else
2768 {
2769 if( (retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_BYPASS_LINE_RATE, id, 0)) != RT_ERR_OK)
2770 return retVal;
2771 }
2772
2773 if( (mode == EXT_SGMII) || (mode == EXT_HSGMII) )
2774 {
2775 if(id != 1)
2776 return RT_ERR_PORT_ID;
2777
2778 if((retVal = rtl8367c_setAsicReg(0x13C0, 0x0249)) != RT_ERR_OK)
2779 return retVal;
2780
2781 if((retVal = rtl8367c_getAsicReg(0x13C1, &option)) != RT_ERR_OK)
2782 return retVal;
2783
2784 if((retVal = rtl8367c_setAsicReg(0x13C0, 0x0000)) != RT_ERR_OK)
2785 return retVal;
2786 }
2787
2788 if(mode == EXT_SGMII)
2789 {
2790 if(option == 0)
2791 {
2792 for(i = 0; i <= 7; i++)
2793 {
2794 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, redData[i][0])) != RT_ERR_OK)
2795 return retVal;
2796
2797 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, redData[i][1])) != RT_ERR_OK)
2798 return retVal;
2799
2800 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != RT_ERR_OK)
2801 return retVal;
2802 }
2803 }
2804 else
2805 {
2806 for(i = 0; i <= 7; i++)
2807 {
2808 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, redDataSB[i][0])) != RT_ERR_OK)
2809 return retVal;
2810
2811 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, redDataSB[i][1])) != RT_ERR_OK)
2812 return retVal;
2813
2814 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != RT_ERR_OK)
2815 return retVal;
2816 }
2817 }
2818 }
2819
2820 if(mode == EXT_HSGMII)
2821 {
2822 if(option == 0)
2823 {
2824 if( (retVal = rtl8367c_setAsicReg(0x13c2, 0x0249)) != RT_ERR_OK)
2825 return retVal;
2826
2827 if( (retVal = rtl8367c_getAsicReg(0x1301, &regValue)) != RT_ERR_OK)
2828 return retVal;
2829
2830 if( (retVal = rtl8367c_setAsicReg(0x13c2, 0x0000)) != RT_ERR_OK)
2831 return retVal;
2832
2833 if ( ((regValue & 0x00F0) >> 4) == 0x0001)
2834 {
2835 for(i = 0; i <= 8; i++)
2836 {
2837 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, redData1[i][0])) != RT_ERR_OK)
2838 return retVal;
2839
2840 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, redData1[i][1])) != RT_ERR_OK)
2841 return retVal;
2842
2843 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != RT_ERR_OK)
2844 return retVal;
2845 }
2846 }
2847 else if ( ((regValue & 0x00F0) >> 4) == 0x0005)
2848 {
2849 for(i = 0; i <= 8; i++)
2850 {
2851 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, redData5[i][0])) != RT_ERR_OK)
2852 return retVal;
2853
2854 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, redData5[i][1])) != RT_ERR_OK)
2855 return retVal;
2856
2857 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != RT_ERR_OK)
2858 return retVal;
2859 }
2860 }
2861 else if ( ((regValue & 0x00F0) >> 4) == 0x0006)
2862 {
2863 for(i = 0; i <= 8; i++)
2864 {
2865 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, redData6[i][0])) != RT_ERR_OK)
2866 return retVal;
2867
2868 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, redData6[i][1])) != RT_ERR_OK)
2869 return retVal;
2870
2871 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != RT_ERR_OK)
2872 return retVal;
2873 }
2874 }
2875 else if ( ((regValue & 0x00F0) >> 4) == 0x0008)
2876 {
2877 for(i = 0; i <= 8; i++)
2878 {
2879 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, redData8[i][0])) != RT_ERR_OK)
2880 return retVal;
2881
2882 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, redData8[i][1])) != RT_ERR_OK)
2883 return retVal;
2884
2885 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != RT_ERR_OK)
2886 return retVal;
2887 }
2888 }
2889 else if ( ((regValue & 0x00F0) >> 4) == 0x0009)
2890 {
2891 for(i = 0; i <= 8; i++)
2892 {
2893 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, redData9[i][0])) != RT_ERR_OK)
2894 return retVal;
2895
2896 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, redData9[i][1])) != RT_ERR_OK)
2897 return retVal;
2898
2899 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != RT_ERR_OK)
2900 return retVal;
2901 }
2902 }
2903 }
2904 else
2905 {
2906 for(i = 0; i <= 8; i++)
2907 {
2908 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, redDataHB[i][0])) != RT_ERR_OK)
2909 return retVal;
2910
2911 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, redDataHB[i][1])) != RT_ERR_OK)
2912 return retVal;
2913
2914 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != RT_ERR_OK)
2915 return retVal;
2916 }
2917 }
2918 }
2919
2920 /* Only one ext port should care SGMII setting */
2921 if(id == 1)
2922 {
2923
2924 if(mode == EXT_SGMII)
2925 {
2926 if( (retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_MAC8_SEL_SGMII_OFFSET, 1)) != RT_ERR_OK)
2927 return retVal;
2928
2929 if( (retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_MAC8_SEL_HSGMII_OFFSET, 0)) != RT_ERR_OK)
2930 return retVal;
2931 }
2932 else if(mode == EXT_HSGMII)
2933 {
2934 if( (retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_MAC8_SEL_SGMII_OFFSET, 0)) != RT_ERR_OK)
2935 return retVal;
2936
2937 if( (retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_MAC8_SEL_HSGMII_OFFSET, 1)) != RT_ERR_OK)
2938 return retVal;
2939 }
2940 else
2941 {
2942
2943 if((mode != EXT_1000X_100FX) && (mode != EXT_1000X) && (mode != EXT_100FX))
2944 {
2945 if( (retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_MAC8_SEL_SGMII_OFFSET, 0)) != RT_ERR_OK)
2946 return retVal;
2947
2948 if( (retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_MAC8_SEL_HSGMII_OFFSET, 0)) != RT_ERR_OK)
2949 return retVal;
2950 }
2951 }
2952 }
2953
2954 if(0 == id || 1 == id)
2955 {
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)
2957 return retVal;
2958 }
2959 else
2960 {
2961 if((retVal = rtl8367c_setAsicRegBits(RTL8367C_REG_DIGITAL_INTERFACE_SELECT_1, RTL8367C_SELECT_GMII_2_MASK, mode)) != RT_ERR_OK)
2962 return retVal;
2963 }
2964
2965 /* Serdes not reset */
2966 if( (mode == EXT_SGMII) || (mode == EXT_HSGMII) )
2967 {
2968 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, 0x7106)) != RT_ERR_OK)
2969 return retVal;
2970
2971 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, 0x0003)) != RT_ERR_OK)
2972 return retVal;
2973
2974 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != RT_ERR_OK)
2975 return retVal;
2976 }
2977
2978 if( (mode == EXT_SGMII) || (mode == EXT_HSGMII) )
2979 {
2980 if ((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_CHIP_RESET, RTL8367C_DW8051_RST_OFFSET, 1)) != RT_ERR_OK)
2981 return retVal;
2982
2983 if ((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_MISCELLANEOUS_CONFIGURE0, RTL8367C_DW8051_EN_OFFSET, 1)) != RT_ERR_OK)
2984 return retVal;
2985
2986 if ((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_DW8051_RDY, RTL8367C_ACS_IROM_ENABLE_OFFSET, 1)) != RT_ERR_OK)
2987 return retVal;
2988
2989 if ((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_DW8051_RDY, RTL8367C_IROM_MSB_OFFSET, 0)) != RT_ERR_OK)
2990 return retVal;
2991
2992 for(idx = 0; idx < SGMII_INIT_SIZE; idx++)
2993 {
2994 if ((retVal = rtl8367c_setAsicReg(0xE000 + idx, (rtk_uint32)Sgmii_Init[idx])) != RT_ERR_OK)
2995 return retVal;
2996 }
2997
2998 if ((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_DW8051_RDY, RTL8367C_IROM_MSB_OFFSET, 0)) != RT_ERR_OK)
2999 return retVal;
3000
3001 if ((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_DW8051_RDY, RTL8367C_ACS_IROM_ENABLE_OFFSET, 0)) != RT_ERR_OK)
3002 return retVal;
3003
3004 if ((retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_CHIP_RESET, RTL8367C_DW8051_RST_OFFSET, 0)) != RT_ERR_OK)
3005 return retVal;
3006 }
3007 }
3008 else if (2 == type)
3009 {
3010 /* Serdes reset */
3011 if( (mode == EXT_TMII_MAC) || (mode == EXT_TMII_PHY) )
3012 {
3013 if( (retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_BYPASS_LINE_RATE, id+2, 1)) != RT_ERR_OK)
3014 return retVal;
3015 }
3016 else
3017 {
3018 if( (retVal = rtl8367c_setAsicRegBit(RTL8367C_REG_BYPASS_LINE_RATE, id+2, 0)) != RT_ERR_OK)
3019 return retVal;
3020 }
3021
3022 /*set MAC mode*/
3023 if (id == 1)
3024 {
3025 if(mode == EXT_HSGMII)
3026 return RT_ERR_PORT_ID;
3027
3028 if (mode == EXT_SGMII)
3029 {
3030 /*cfg port8 with MII mac mode*/
3031 if ((retVal = rtl8367c_setAsicRegBits(0x1305, 0xf0, 0)) != RT_ERR_OK)
3032 return retVal;
3033
3034 /*enable port8 SGMII*/
3035 if ((retVal = rtl8367c_setAsicRegBit(0x1d92, 14, 1)) != RT_ERR_OK)
3036 return retVal;
3037 }
3038 else if (mode == EXT_1000X || mode == EXT_100FX || mode == EXT_1000X_100FX)
3039 {
3040 /*cfg port8 with MII mac mode*/
3041 if ((retVal = rtl8367c_setAsicRegBits(0x1305, 0xf0, 0)) != RT_ERR_OK)
3042 return retVal;
3043
3044 /*disable port8 SGMII*/
3045 if ((retVal = rtl8367c_setAsicRegBit(0x1d92, 14, 0)) != RT_ERR_OK)
3046 return retVal;
3047
3048 /*set fiber link up*/
3049 if((retVal = rtl8367c_setAsicRegBit(0x6210, 11, 0)) != RT_ERR_OK)
3050 return retVal;
3051 }
3052 else
3053 {
3054 /*cfg port8 with MII mac mode*/
3055 if ((retVal = rtl8367c_setAsicRegBits(0x1305, 0xf0, mode)) != RT_ERR_OK)
3056 return retVal;
3057
3058 /*disable port8 SGMII*/
3059 if ((retVal = rtl8367c_setAsicRegBit(0x1d92, 14, 0)) != RT_ERR_OK)
3060 return retVal;
3061 }
3062 /*disable SDS 1*/
3063 if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f00, 0x1f)) != RT_ERR_OK)
3064 return retVal;
3065 }
3066 else if(id == 2)
3067 {
3068 if (mode == EXT_HSGMII)
3069 {
3070 if ((retVal = rtl8367c_setAsicReg(0x130, 7)) != RT_ERR_OK)
3071 return retVal;
3072
3073 if ((retVal = rtl8367c_setAsicReg(0x39f, 7)) != RT_ERR_OK)
3074 return retVal;
3075
3076 if ((retVal = rtl8367c_setAsicReg(0x3fa, 7)) != RT_ERR_OK)
3077 return retVal;
3078 }
3079 else
3080 {
3081 if ((retVal = rtl8367c_setAsicReg(0x130, 1)) != RT_ERR_OK)
3082 return retVal;
3083
3084 if ((retVal = rtl8367c_setAsicReg(0x39f, 1)) != RT_ERR_OK)
3085 return retVal;
3086
3087 if ((retVal = rtl8367c_setAsicReg(0x3fa, 4)) != RT_ERR_OK)
3088 return retVal;
3089
3090 }
3091
3092
3093 if (mode == EXT_SGMII)
3094 {
3095 /*cfg port9 with MII mac mode*/
3096 if ((retVal = rtl8367c_setAsicRegBits(0x13c3, 0xf, 0)) != RT_ERR_OK)
3097 return retVal;
3098
3099 /*enable port9 SGMII*/
3100 if ((retVal = rtl8367c_setAsicRegBit(0x1d92, 6, 1)) != RT_ERR_OK)
3101 return retVal;
3102
3103 /*disable port9 HSGMII*/
3104 if ((retVal = rtl8367c_setAsicRegBit(0x1d92, 7, 0)) != RT_ERR_OK)
3105 return retVal;
3106 }
3107 else if (mode == EXT_HSGMII)
3108 {
3109 /*cfg port9 with MII mac mode*/
3110 if ((retVal = rtl8367c_setAsicRegBits(0x13c3, 0xf, 0)) != RT_ERR_OK)
3111 return retVal;
3112
3113 /*disable port9 SGMII*/
3114 if ((retVal = rtl8367c_setAsicRegBit(0x1d92, 6, 0)) != RT_ERR_OK)
3115 return retVal;
3116
3117 /*enable port9 HSGMII*/
3118 if ((retVal = rtl8367c_setAsicRegBit(0x1d92, 7, 1)) != RT_ERR_OK)
3119 return retVal;
3120 }
3121 else if (mode == EXT_1000X || mode == EXT_100FX || mode == EXT_1000X_100FX)
3122 {
3123 /*cfg port9 with MII mac mode*/
3124 if ((retVal = rtl8367c_setAsicRegBits(0x13c3, 0xf, 0)) != RT_ERR_OK)
3125 return retVal;
3126
3127 /*disable port9 SGMII*/
3128 if ((retVal = rtl8367c_setAsicRegBit(0x1d92, 6, 0)) != RT_ERR_OK)
3129 return retVal;
3130
3131 /*disable port9 HSGMII*/
3132 if ((retVal = rtl8367c_setAsicRegBit(0x1d92, 7, 0)) != RT_ERR_OK)
3133 return retVal;
3134
3135 /*set fiber link up*/
3136 if((retVal = rtl8367c_setAsicRegBit(0x6200, 11, 0)) != RT_ERR_OK)
3137 return retVal;
3138 }
3139 else
3140 {
3141 /*cfg port9 with MII mac mode*/
3142 if ((retVal = rtl8367c_setAsicRegBits(0x13c3, 0xf, mode)) != RT_ERR_OK)
3143 return retVal;
3144
3145 /*disable port9 SGMII*/
3146 if ((retVal = rtl8367c_setAsicRegBit(0x1d92, 6, 0)) != RT_ERR_OK)
3147 return retVal;
3148
3149 /*disable port9 HSGMII*/
3150 if ((retVal = rtl8367c_setAsicRegBit(0x1d92, 7, 0)) != RT_ERR_OK)
3151 return retVal;
3152 }
3153 /*disable SDS 0*/
3154 if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f, 0x1f)) != RT_ERR_OK)
3155 return retVal;
3156 }
3157
3158 /*SET TO RGMII MODE*/
3159 if (mode == EXT_RGMII)
3160 {
3161 /*disable paral led pad*/
3162 if ((retVal = rtl8367c_setAsicReg(RTL8367C_REG_PARA_LED_IO_EN3, 0)) != RT_ERR_OK)
3163 return retVal;
3164
3165 if ((retVal = rtl8367c_setAsicReg(RTL8367C_REG_PARA_LED_IO_EN1, 0)) != RT_ERR_OK)
3166 return retVal;
3167
3168 if ((retVal = rtl8367c_setAsicReg(RTL8367C_REG_PARA_LED_IO_EN2, 0)) != RT_ERR_OK)
3169 return retVal;
3170
3171 /*set MAC8 mode*/
3172 if (id == 1)
3173 {
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)
3176 return retVal;
3177
3178 /*drving 1*/
3179 if ((retVal = rtl8367c_setAsicRegBit(0x1303, 6, 1)) != RT_ERR_OK)
3180 return retVal;
3181
3182 /*drving 1*/
3183 if ((retVal = rtl8367c_setAsicRegBit(0x1303, 4, 1)) != RT_ERR_OK)
3184 return retVal;
3185
3186 /*show rate = 0*/
3187 if ((retVal = rtl8367c_setAsicRegBit(0x1303, 1, 0)) != RT_ERR_OK)
3188 return retVal;
3189
3190 /*EXT1 RGMII TXC delay 2ns*/
3191 if ((retVal = rtl8367c_setAsicRegBit(0x1307, 3, 1)) != RT_ERR_OK)
3192 return retVal;
3193
3194 /*cfg_Ext1_rgtxc_dly = 0*/
3195 if ((retVal = rtl8367c_setAsicRegBits(0x13f9, 0x38, 0)) != RT_ERR_OK)
3196 return retVal;
3197
3198 /*RXDLY = 0*/
3199 if ((retVal = rtl8367c_setAsicRegBits(0x1307, 0x7, 0)) != RT_ERR_OK)
3200 return retVal;
3201
3202 /*cfg_rg1_dn = 4*/
3203 if ((retVal = rtl8367c_setAsicRegBits(0x1304, 0x7000, 4)) != RT_ERR_OK)
3204 return retVal;
3205
3206 /*cfg_rg1_dp = 4*/
3207 if ((retVal = rtl8367c_setAsicRegBits(0x13f9, 0x700, 4)) != RT_ERR_OK)
3208 return retVal;
3209 }
3210 else if (id == 2)
3211 {
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)
3214 return retVal;
3215
3216 /*drving 1*/
3217 if ((retVal = rtl8367c_setAsicRegBit(0x13e2, 2, 1)) != RT_ERR_OK)
3218 return retVal;
3219
3220 /*drving 1*/
3221 if ((retVal = rtl8367c_setAsicRegBit(0x13e2, 1, 1)) != RT_ERR_OK)
3222 return retVal;
3223
3224 /*show rate = 0*/
3225 if ((retVal = rtl8367c_setAsicRegBit(0x13e2, 0, 0)) != RT_ERR_OK)
3226 return retVal;
3227
3228 /*EXT1 RGMII TXC delay 2ns*/
3229 if ((retVal = rtl8367c_setAsicRegBit(0x13c5, 3, 1)) != RT_ERR_OK)
3230 return retVal;
3231
3232 /*cfg_Ext1_rgtxc_dly = 0*/
3233 if ((retVal = rtl8367c_setAsicRegBits(0x13f9, 0x1c0, 0)) != RT_ERR_OK)
3234 return retVal;
3235
3236 /*RXDLY = 0*/
3237 if ((retVal = rtl8367c_setAsicRegBits(0x13c5, 0x7, 0)) != RT_ERR_OK)
3238 return retVal;
3239
3240 /*cfg_rg1_dn = 4*/
3241 if ((retVal = rtl8367c_setAsicRegBits(0x13e2, 0x1c0, 4)) != RT_ERR_OK)
3242 return retVal;
3243
3244 /*cfg_rg1_dp = 4*/
3245 if ((retVal = rtl8367c_setAsicRegBits(0x13e2, 0x38, 4)) != RT_ERR_OK)
3246 return retVal;
3247 }
3248 }
3249 else if (mode == EXT_SGMII)
3250 {
3251 if (id == 1)
3252 {
3253 /*sds 1 reg 1 page 0x21 write value 0xec91*/
3254 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, 0xec91)) != RT_ERR_OK)
3255 return retVal;
3256
3257 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, (0x21<<5) | 1)) != RT_ERR_OK)
3258 return retVal;
3259
3260 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C1)) != RT_ERR_OK)
3261 return retVal;
3262
3263 /*sds 1 reg 5 page 0x24 write value 0x5825*/
3264 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, 0x5825)) != RT_ERR_OK)
3265 return retVal;
3266
3267 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, (0x24<<5) | 5)) != RT_ERR_OK)
3268 return retVal;
3269
3270 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C1)) != RT_ERR_OK)
3271 return retVal;
3272
3273 if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f00, 2)) != RT_ERR_OK)
3274 return retVal;
3275
3276 /*?????????????????*/
3277
3278 }
3279 else if (id == 2)
3280 {
3281 /*sds 0 reg 0 page 0x28 write value 0x942c*/
3282 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, 0x942c)) != RT_ERR_OK)
3283 return retVal;
3284
3285 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, (0x28<<5) | 0)) != RT_ERR_OK)
3286 return retVal;
3287
3288 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != RT_ERR_OK)
3289 return retVal;
3290
3291 /*sds 0 reg 0 page 0x24 write value 0x942c*/
3292 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, 0x942c)) != RT_ERR_OK)
3293 return retVal;
3294
3295 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, (0x24<<5) | 0)) != RT_ERR_OK)
3296 return retVal;
3297
3298 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != RT_ERR_OK)
3299 return retVal;
3300
3301 /*sds 0 reg 5 page 0x21 write value 0x8dc3*/
3302 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, 0x8dc3)) != RT_ERR_OK)
3303 return retVal;
3304
3305 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, (0x21<<5) | 5)) != RT_ERR_OK)
3306 return retVal;
3307
3308 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != RT_ERR_OK)
3309 return retVal;
3310
3311 if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f, 2)) != RT_ERR_OK)
3312 return retVal;
3313
3314 /*?????????????????*/
3315 }
3316 }
3317 else if (mode == EXT_HSGMII)
3318 {
3319 if (id == 2)
3320 {
3321 /*sds 0 reg 0 page 0x28 write value 0x942c*/
3322 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, 0x942c)) != RT_ERR_OK)
3323 return retVal;
3324
3325 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, (0x28<<5) | 0)) != RT_ERR_OK)
3326 return retVal;
3327
3328 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != RT_ERR_OK)
3329 return retVal;
3330
3331 /*sds 0 reg 0 page 0x24 write value 0x942c*/
3332 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, 0x942c)) != RT_ERR_OK)
3333 return retVal;
3334
3335 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, (0x24<<5) | 0)) != RT_ERR_OK)
3336 return retVal;
3337
3338 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != RT_ERR_OK)
3339 return retVal;
3340
3341 /*sds 0 reg 5 page 0x21 write value 0x8dc3*/
3342 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_DATA, 0x8dc3)) != RT_ERR_OK)
3343 return retVal;
3344
3345 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, (0x21<<5) | 5)) != RT_ERR_OK)
3346 return retVal;
3347
3348 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != RT_ERR_OK)
3349 return retVal;
3350
3351
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)
3355 return retVal;
3356
3357 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_ADR, (0x21<<5)|9) ) != RT_ERR_OK)
3358 return retVal;
3359
3360 if( (retVal = rtl8367c_setAsicReg(RTL8367C_REG_SDS_INDACS_CMD, 0x00C0)) != RT_ERR_OK)
3361 return retVal;
3362
3363
3364 if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f, 0x12)) != RT_ERR_OK)
3365 return retVal;
3366
3367 /*?????????????????*/
3368 }
3369 }
3370 else if (mode == EXT_1000X)
3371 {
3372 if (id == 1)
3373 {
3374
3375 if( (retVal = rtl8367c_setAsicSdsReg(1, 1, 0x21, 0xec91)) != RT_ERR_OK)
3376 return retVal;
3377 if( (retVal = rtl8367c_setAsicSdsReg(1, 5, 0x24, 0x5825)) != RT_ERR_OK)
3378 return retVal;
3379 if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f00, 4)) != RT_ERR_OK)
3380 return retVal;
3381
3382 if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f00, 0x1f)) != RT_ERR_OK)
3383 return retVal;
3384
3385 /*patch speed change sds1 1000M*/
3386 if( (retVal = rtl8367c_getAsicSdsReg(1, 4, 0, &regValue)) != RT_ERR_OK)
3387 return retVal;
3388 regValue &= 0xFFFF0FFF;
3389 regValue |= 0x9000;
3390 if( (retVal = rtl8367c_setAsicSdsReg(1, 4, 0, regValue)) != RT_ERR_OK)
3391 return retVal;
3392
3393 if( (retVal = rtl8367c_getAsicSdsReg(1, 0, 2, &regValue)) != RT_ERR_OK)
3394 return retVal;
3395 regValue &= 0xFFFFdFFF;
3396 regValue |= 0x40;
3397 if( (retVal = rtl8367c_setAsicSdsReg(1, 0, 2, regValue)) != RT_ERR_OK)
3398 return retVal;
3399
3400
3401 if( (retVal = rtl8367c_getAsicSdsReg(1, 4, 0, &regValue)) != RT_ERR_OK)
3402 return retVal;
3403 regValue &= 0xFFFFEFFF;
3404 if( (retVal = rtl8367c_setAsicSdsReg(1, 4, 0, regValue)) != RT_ERR_OK)
3405 return retVal;
3406
3407 if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f00, 4)) != RT_ERR_OK)
3408 return retVal;
3409 if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x6000, 0)) != RT_ERR_OK)
3410 return retVal;
3411
3412 }
3413 else if (id == 2)
3414 {
3415 if( (retVal = rtl8367c_setAsicSdsReg(0, 0, 0x28, 0x942c)) != RT_ERR_OK)
3416 return retVal;
3417 if( (retVal = rtl8367c_setAsicSdsReg(0, 0, 0x24, 0x942c)) != RT_ERR_OK)
3418 return retVal;
3419 if( (retVal = rtl8367c_setAsicSdsReg(0, 5, 0x21, 0x8dc3)) != RT_ERR_OK)
3420 return retVal;
3421
3422 if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f, 4)) != RT_ERR_OK)
3423 return retVal;
3424
3425 /*patch speed change sds0 1000M*/
3426 if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f, 0x1f)) != RT_ERR_OK)
3427 return retVal;
3428
3429 if( (retVal = rtl8367c_getAsicSdsReg(0, 4, 0, &regValue)) != RT_ERR_OK)
3430 return retVal;
3431 regValue &= 0xFFFF0FFF;
3432 regValue |= 0x9000;
3433 if( (retVal = rtl8367c_setAsicSdsReg(0, 4, 0, regValue)) != RT_ERR_OK)
3434 return retVal;
3435
3436 if( (retVal = rtl8367c_getAsicSdsReg(0, 0, 2, &regValue)) != RT_ERR_OK)
3437 return retVal;
3438 regValue &= 0xFFFFDFFF;
3439 regValue |= 0x40;
3440 if( (retVal = rtl8367c_setAsicSdsReg(0, 0, 2, regValue)) != RT_ERR_OK)
3441 return retVal;
3442
3443 if( (retVal = rtl8367c_getAsicSdsReg(0, 4, 0, &regValue)) != RT_ERR_OK)
3444 return retVal;
3445 regValue &= 0xFFFFEFFF;
3446 if( (retVal = rtl8367c_setAsicSdsReg(0, 4, 0, regValue)) != RT_ERR_OK)
3447 return retVal;
3448
3449 if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f, 4)) != RT_ERR_OK)
3450 return retVal;
3451 if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0xe0, 0)) != RT_ERR_OK)
3452 return retVal;
3453
3454 }
3455 }
3456 else if (mode == EXT_100FX)
3457 {
3458 if (id == 1)
3459 {
3460 if( (retVal = rtl8367c_setAsicSdsReg(1, 1, 0x21, 0xec91)) != RT_ERR_OK)
3461 return retVal;
3462 if( (retVal = rtl8367c_setAsicSdsReg(1, 5, 0x24, 0x5825)) != RT_ERR_OK)
3463 return retVal;
3464 if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f00, 5)) != RT_ERR_OK)
3465 return retVal;
3466
3467 /*patch speed change sds1 100M*/
3468 if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f00, 0x1f)) != RT_ERR_OK)
3469 return retVal;
3470 if( (retVal = rtl8367c_getAsicSdsReg(1, 4, 0, &regValue)) != RT_ERR_OK)
3471 return retVal;
3472 regValue &= 0xFFFF0FFF;
3473 regValue |= 0xb000;
3474 if( (retVal = rtl8367c_setAsicSdsReg(1, 4, 0, regValue)) != RT_ERR_OK)
3475 return retVal;
3476
3477 if( (retVal = rtl8367c_getAsicSdsReg(1, 0, 2, &regValue)) != RT_ERR_OK)
3478 return retVal;
3479 regValue &= 0xFFFFFFBF;
3480 regValue |= 0x2000;
3481 if( (retVal = rtl8367c_setAsicSdsReg(1, 0, 2, regValue)) != RT_ERR_OK)
3482 return retVal;
3483 #if 0
3484 if( (retVal = rtl8367c_setAsicReg(0x6214, 0x1a0)) != RT_ERR_OK)
3485 return retVal;
3486 #endif
3487 if( (retVal = rtl8367c_getAsicSdsReg(1, 4, 0, &regValue)) != RT_ERR_OK)
3488 return retVal;
3489 regValue &= 0xFFFFEFFF;
3490 if( (retVal = rtl8367c_setAsicSdsReg(1, 4, 0, regValue)) != RT_ERR_OK)
3491 return retVal;
3492
3493 if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f00, 5)) != RT_ERR_OK)
3494 return retVal;
3495 if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x6000, 0)) != RT_ERR_OK)
3496 return retVal;
3497 }
3498 else if (id == 2)
3499 {
3500 if( (retVal = rtl8367c_setAsicSdsReg(0, 0, 0x28, 0x942c)) != RT_ERR_OK)
3501 return retVal;
3502 if( (retVal = rtl8367c_setAsicSdsReg(0, 0, 0x24, 0x942c)) != RT_ERR_OK)
3503 return retVal;
3504 if( (retVal = rtl8367c_setAsicSdsReg(0, 5, 0x21, 0x8dc3)) != RT_ERR_OK)
3505 return retVal;
3506 if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f, 5)) != RT_ERR_OK)
3507 return retVal;
3508
3509 /*patch speed change sds0 100M*/
3510 if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f, 0x1f)) != RT_ERR_OK)
3511 return retVal;
3512
3513 if( (retVal = rtl8367c_getAsicSdsReg(0, 4, 0, &regValue)) != RT_ERR_OK)
3514 return retVal;
3515 regValue &= 0xFFFF0FFF;
3516 regValue |= 0xb000;
3517 if( (retVal = rtl8367c_setAsicSdsReg(0, 4, 0, regValue)) != RT_ERR_OK)
3518 return retVal;
3519
3520 if( (retVal = rtl8367c_getAsicSdsReg(0, 0, 2, &regValue)) != RT_ERR_OK)
3521 return retVal;
3522 regValue &= 0xFFFFFFBF;
3523 regValue |= 0x2000;
3524 if( (retVal = rtl8367c_setAsicSdsReg(0, 0, 2, regValue)) != RT_ERR_OK)
3525 return retVal;
3526
3527 if( (retVal = rtl8367c_getAsicSdsReg(0, 4, 0, &regValue)) != RT_ERR_OK)
3528 return retVal;
3529 regValue &= 0xFFFFEFFF;
3530 if( (retVal = rtl8367c_setAsicSdsReg(0, 4, 0, regValue)) != RT_ERR_OK)
3531 return retVal;
3532
3533 if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f, 5)) != RT_ERR_OK)
3534 return retVal;
3535 if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0xe0, 0)) != RT_ERR_OK)
3536 return retVal;
3537 }
3538 }
3539 else if (mode == EXT_1000X_100FX)
3540 {
3541 if (id == 1)
3542 {
3543 if( (retVal = rtl8367c_setAsicSdsReg(1, 1, 0x21, 0xec91)) != RT_ERR_OK)
3544 return retVal;
3545 if( (retVal = rtl8367c_setAsicSdsReg(1, 5, 0x24, 0x5825)) != RT_ERR_OK)
3546 return retVal;
3547 if( (retVal = rtl8367c_setAsicSdsReg(1, 13, 0, 0x4616)) != RT_ERR_OK)
3548 return retVal;
3549 if( (retVal = rtl8367c_setAsicSdsReg(1, 1, 0, 0xf20)) != RT_ERR_OK)
3550 return retVal;
3551 if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f00, 7)) != RT_ERR_OK)
3552 return retVal;
3553 }
3554 else if (id == 2)
3555 {
3556 if( (retVal = rtl8367c_setAsicSdsReg(0, 0, 0x28, 0x942c)) != RT_ERR_OK)
3557 return retVal;
3558 if( (retVal = rtl8367c_setAsicSdsReg(0, 0, 0x24, 0x942c)) != RT_ERR_OK)
3559 return retVal;
3560 if( (retVal = rtl8367c_setAsicSdsReg(0, 5, 0x21, 0x8dc3)) != RT_ERR_OK)
3561 return retVal;
3562 if( (retVal = rtl8367c_setAsicSdsReg(0, 13, 0, 0x4616)) != RT_ERR_OK)
3563 return retVal;
3564 if( (retVal = rtl8367c_setAsicSdsReg(0, 1, 0, 0xf20)) != RT_ERR_OK)
3565 return retVal;
3566 if ((retVal = rtl8367c_setAsicRegBits(0x1d92, 0x1f, 7)) != RT_ERR_OK)
3567 return retVal;
3568 }
3569 }
3570
3571 }
3572 else if (3 == type)
3573 {
3574
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, &regValue)) != RT_ERR_OK)
3578 return retVal;
3579 regValue &= 0xFFFFFFEF;
3580 if( (retVal = rtl8367c_setAsicSdsReg(0, 1, 1, regValue)) != RT_ERR_OK)
3581 return retVal;
3582
3583 /*set for mac 6*/
3584 if (1 == id)
3585 {
3586 /*force port6 linkdown*/
3587 if ((retVal = rtl8367c_setAsicReg(0x137c, 0x1000)) != RT_ERR_OK)
3588 return retVal;
3589
3590 if ((retVal = rtl8367c_getAsicRegBit(0x1d9d, 6, &reg_data)) != RT_ERR_OK)
3591 return retVal;
3592 while(reg_data == 0)
3593 {
3594 if ((retVal = rtl8367c_getAsicRegBit(0x1d9d, 6, &reg_data)) != RT_ERR_OK)
3595 return retVal;
3596 }
3597
3598 if (mode == EXT_SGMII)
3599 {
3600 /* disable mac6 mode_ext1 mode*/
3601 if ((retVal = rtl8367c_getAsicRegBit(0x1d3d, 10, &reg_data)) != RT_ERR_OK)
3602 return retVal;
3603 if(reg_data == 0)
3604 {
3605 if ((retVal = rtl8367c_setAsicRegBits(0x1305, 0xf0, 0)) != RT_ERR_OK)
3606 return retVal;
3607 }
3608 /*cfg_bypass_line_rate[1]=0*/
3609 if ((retVal = rtl8367c_setAsicRegBit(0x3f7, 1, 0)) != RT_ERR_OK)
3610 return retVal;
3611
3612
3613
3614 /*bit5: cfg_mac6_fib=0 & bit7: cfg_mac6_fib2=0*/
3615 if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 5, 0)) != RT_ERR_OK)
3616 return retVal;
3617 if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 7, 0)) != RT_ERR_OK)
3618 return retVal;
3619
3620 /*cfg_mac7_fib=0*/
3621 if ((retVal = rtl8367c_setAsicRegBit(0x1d95, 1, 0)) != RT_ERR_OK)
3622 return retVal;
3623
3624 /*cfg_mac7_sel_sgmii= 0: MAC7 is not SGMII mode*/
3625 if ((retVal = rtl8367c_setAsicRegBit(0x1d95, 0, 0)) != RT_ERR_OK)
3626 return retVal;
3627
3628 /*#cfg_sgmii_link=0*/
3629 if ((retVal = rtl8367c_setAsicRegBit(0x1d11, 9, 0)) != RT_ERR_OK)
3630 return retVal;
3631
3632 /*cfg_mac6_sel_hsgmii=0*/
3633 if ((retVal = rtl8367c_setAsicRegBit(0x1d11, 11, 0)) != RT_ERR_OK)
3634 return retVal;
3635
3636
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)
3639 return retVal;
3640
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)
3644 return retVal;
3645
3646 /*cfg_mac6_sel_sgmii= 1*/
3647 if ((retVal = rtl8367c_setAsicRegBit(0x1d11, 6, 1)) != RT_ERR_OK)
3648 return retVal;
3649
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)
3653 return retVal;
3654
3655 /* MAC link source*/
3656 if ((retVal = rtl8367c_setAsicRegBit(0x1d95, 2, 0)) != RT_ERR_OK)
3657 return retVal;
3658
3659
3660 }
3661 else if (mode == EXT_HSGMII)
3662 {
3663
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, &regValue)) != RT_ERR_OK)
3667 return retVal;
3668 regValue |= 0x10;
3669 if( (retVal = rtl8367c_setAsicSdsReg(0, 1, 1, regValue)) != RT_ERR_OK)
3670 return retVal;
3671
3672 /* mode_ext1 = disable*/
3673 /* disable mac6 mode_ext1 mode*/
3674 if ((retVal = rtl8367c_getAsicRegBit(0x1d3d, 10, &reg_data)) != RT_ERR_OK)
3675 return retVal;
3676 if(reg_data == 0)
3677 {
3678 if ((retVal = rtl8367c_setAsicRegBits(0x1305, 0xf0, 0)) != RT_ERR_OK)
3679 return retVal;
3680 }
3681
3682 if ((retVal = rtl8367c_setAsicRegBit(0x3f7, 1, 0)) != RT_ERR_OK)
3683 return retVal;
3684
3685 /*bit5: cfg_mac6_fib=0 & bit7: cfg_mac6_fib2=0*/
3686 if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 5, 0)) != RT_ERR_OK)
3687 return retVal;
3688 if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 7, 0)) != RT_ERR_OK)
3689 return retVal;
3690
3691 /*cfg_mac7_fib=0*/
3692 if ((retVal = rtl8367c_setAsicRegBit(0x1d95, 1, 0)) != RT_ERR_OK)
3693 return retVal;
3694
3695 /*cfg_mac7_sel_sgmii= 0*/
3696 if ((retVal = rtl8367c_setAsicRegBit(0x1d95, 0, 0)) != RT_ERR_OK)
3697 return retVal;
3698
3699 /*cfg_mac6_sel_sgmii=0*/
3700 if ((retVal = rtl8367c_setAsicRegBit(0x1d11, 9, 0)) != RT_ERR_OK)
3701 return retVal;
3702
3703 /*cfg_mac6_sel_hsgmii=1*/
3704 if ((retVal = rtl8367c_setAsicRegBit(0x1d11, 11, 1)) != RT_ERR_OK)
3705 return retVal;
3706
3707 /*cfg_mac6_sel_sgmii= 0*/
3708 if ((retVal = rtl8367c_setAsicRegBit(0x1d11, 6, 0)) != RT_ERR_OK)
3709 return retVal;
3710
3711 if ((retVal = rtl8367c_setAsicReg(0xd0,7)) != RT_ERR_OK)
3712 return retVal;
3713 if ((retVal = rtl8367c_setAsicReg(0x399, 7)) != RT_ERR_OK)
3714 return retVal;
3715 if ((retVal = rtl8367c_setAsicReg(0x3fa, 7)) != RT_ERR_OK)
3716 return retVal;
3717
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)
3720 return retVal;
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)
3724 return retVal;
3725 /*
3726 1: MAC link = SGMII SerDes link
3727 0: MAC link = SGMII config link £¨cfg_sgmii_link£©
3728 */
3729 if ((retVal = rtl8367c_setAsicRegBit(0x1d95, 2, 0)) != RT_ERR_OK)
3730 return retVal;
3731
3732 }
3733 else if(mode == EXT_1000X)
3734 {
3735 /* 0 2 0 bit 8~9 set 0, force n-way*/
3736 if((retVal = rtl8367c_getAsicSdsReg(0, 2, 0, &reg_data)) != RT_ERR_OK)
3737 return retVal;
3738 reg_data &= 0xFFFFFCFF;
3739 if((retVal = rtl8367c_setAsicSdsReg(0,2,0, reg_data)) != RT_ERR_OK)
3740 return retVal;
3741
3742 /* disable mac6 mode_ext1 mode*/
3743 if ((retVal = rtl8367c_getAsicRegBit(0x1d3d, 10, &reg_data)) != RT_ERR_OK)
3744 return retVal;
3745 if(reg_data == 0)
3746 {
3747 if ((retVal = rtl8367c_setAsicRegBits(0x1305, 0xf0, 0)) != RT_ERR_OK)
3748 return retVal;
3749 }
3750
3751 if ((retVal = rtl8367c_setAsicRegBit(0x3f7, 1, 0)) != RT_ERR_OK)
3752 return retVal;
3753
3754 if ((retVal = rtl8367c_setAsicReg(0x1d11, 0x1500)) != RT_ERR_OK)
3755 return retVal;
3756
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
3759 */
3760 if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK)
3761 return retVal;
3762 if ((retVal = rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK)
3763 return retVal;
3764 if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 3, 0)) != RT_ERR_OK)
3765 return retVal;
3766
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)
3770 return retVal;
3771
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)
3775 return retVal;
3776
3777
3778 /*bit5: cfg_mac6_fib=1 & bit7: cfg_mac6_fib2=1*/
3779 if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 5, 1)) != RT_ERR_OK)
3780 return retVal;
3781 if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 7, 1)) != RT_ERR_OK)
3782 return retVal;
3783
3784 /*cfg_mac6_sel_hsgmii=0*/
3785 if ((retVal = rtl8367c_setAsicRegBit(0x1d11, 11, 0)) != RT_ERR_OK)
3786 return retVal;
3787
3788 /*cfg_mac6_sel_sgmii= 1*/
3789 if ((retVal = rtl8367c_setAsicRegBit(0x1d11, 6, 1)) != RT_ERR_OK)
3790 return retVal;
3791
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)
3795 return retVal;
3796 }
3797 else if(mode == EXT_100FX)
3798 {
3799 /* 0 2 0 bit 8~9 set 0, force n-way*/
3800 if((retVal = rtl8367c_getAsicSdsReg(0, 2, 0, &reg_data)) != RT_ERR_OK)
3801 return retVal;
3802 reg_data &= 0xFFFFFCFF;
3803 if((retVal = rtl8367c_setAsicSdsReg(0,2,0, reg_data)) != RT_ERR_OK)
3804 return retVal;
3805
3806 /* disable mac6 mode_ext1 mode*/
3807 if ((retVal = rtl8367c_getAsicRegBit(0x1d3d, 10, &reg_data)) != RT_ERR_OK)
3808 return retVal;
3809 if(reg_data == 0)
3810 {
3811 if ((retVal = rtl8367c_setAsicRegBits(0x1305, 0xf0, 0)) != RT_ERR_OK)
3812 return retVal;
3813 }
3814
3815 if ((retVal = rtl8367c_setAsicRegBit(0x3f7, 1, 0)) != RT_ERR_OK)
3816 return retVal;
3817
3818 if ((retVal = rtl8367c_setAsicReg(0x1d11, 0x1500)) != RT_ERR_OK)
3819 return retVal;
3820
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
3823 */
3824 if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK)
3825 return retVal;
3826 if ((retVal = rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK)
3827 return retVal;
3828 if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 3, 0)) != RT_ERR_OK)
3829 return retVal;
3830
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)
3834 return retVal;
3835
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)
3838 return retVal;
3839
3840
3841 /*bit5: cfg_mac6_fib=1 & bit7: cfg_mac6_fib2=1*/
3842 if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 5, 1)) != RT_ERR_OK)
3843 return retVal;
3844 if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 7, 1)) != RT_ERR_OK)
3845 return retVal;
3846
3847 /*cfg_mac6_sel_hsgmii=0*/
3848 if ((retVal = rtl8367c_setAsicRegBit(0x1d11, 11, 0)) != RT_ERR_OK)
3849 return retVal;
3850
3851 /*cfg_mac6_sel_sgmii= 1*/
3852 if ((retVal = rtl8367c_setAsicRegBit(0x1d11, 6, 1)) != RT_ERR_OK)
3853 return retVal;
3854
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)
3858 return retVal;
3859 }
3860 else if(mode == EXT_1000X_100FX)
3861 {
3862 /* 0 2 0 bit 8~9 set 0, force n-way*/
3863 if((retVal = rtl8367c_getAsicSdsReg(0, 2, 0, &reg_data)) != RT_ERR_OK)
3864 return retVal;
3865 reg_data &= 0xFFFFFCFF;
3866 if((retVal = rtl8367c_setAsicSdsReg(0,2,0, reg_data)) != RT_ERR_OK)
3867 return retVal;
3868
3869 /* disable mac6 mode_ext1 mode*/
3870 if ((retVal = rtl8367c_getAsicRegBit(0x1d3d, 10, &reg_data)) != RT_ERR_OK)
3871 return retVal;
3872 if(reg_data == 0)
3873 {
3874 if ((retVal = rtl8367c_setAsicRegBits(0x1305, 0xf0, 0)) != RT_ERR_OK)
3875 return retVal;
3876 }
3877
3878 if ((retVal = rtl8367c_setAsicRegBit(0x3f7, 1, 0)) != RT_ERR_OK)
3879 return retVal;
3880
3881 if ((retVal = rtl8367c_setAsicReg(0x1d11, 0x1500)) != RT_ERR_OK)
3882 return retVal;
3883
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
3886 */
3887 if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x1f)) != RT_ERR_OK)
3888 return retVal;
3889 if ((retVal = rtl8367c_setAsicRegBit(0x1d95, 13, 0)) != RT_ERR_OK)
3890 return retVal;
3891 if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 3, 0)) != RT_ERR_OK)
3892 return retVal;
3893
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)
3897 return retVal;
3898
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)
3901 return retVal;
3902
3903
3904 /*bit5: cfg_mac6_fib=1 & bit7: cfg_mac6_fib2=1*/
3905 if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 5, 1)) != RT_ERR_OK)
3906 return retVal;
3907 if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 7, 1)) != RT_ERR_OK)
3908 return retVal;
3909
3910 /*cfg_mac6_sel_hsgmii=0*/
3911 if ((retVal = rtl8367c_setAsicRegBit(0x1d11, 11, 0)) != RT_ERR_OK)
3912 return retVal;
3913
3914 /*cfg_mac6_sel_sgmii= 1*/
3915 if ((retVal = rtl8367c_setAsicRegBit(0x1d11, 6, 1)) != RT_ERR_OK)
3916 return retVal;
3917
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)
3921 return retVal;
3922 }
3923 else if(mode < EXT_SGMII)
3924 {
3925 if ((retVal = rtl8367c_setAsicRegBit(0x1d3d, 10, 0)) != RT_ERR_OK)
3926 return retVal;
3927
3928 if ((retVal = rtl8367c_setAsicRegBit(0x3f7, 1, 0)) != RT_ERR_OK)
3929 return retVal;
3930
3931 /* keep default setting, disable mac6 sel SerDes mode,*/
3932 if ((retVal = rtl8367c_setAsicRegBit(0x1d11, 11, 0)) != RT_ERR_OK)
3933 return retVal;
3934 if ((retVal = rtl8367c_setAsicRegBit(0x1d11, 6, 0)) != RT_ERR_OK)
3935 return retVal;
3936
3937 /*bit5: cfg_mac6_fib=0 & bit7: cfg_mac6_fib2=0*/
3938 if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 5, 0)) != RT_ERR_OK)
3939 return retVal;
3940 if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 7, 0)) != RT_ERR_OK)
3941 return retVal;
3942
3943 if (mode < EXT_GMII)
3944 {
3945 /* set mac6 mode*/
3946 if ((retVal = rtl8367c_setAsicRegBits(0x1305, 0xf0, mode)) != RT_ERR_OK)
3947 return retVal;
3948 }
3949 else if(mode == EXT_RMII_MAC)
3950 {
3951 /*!!!!!!*/
3952 if ((retVal = rtl8367c_setAsicRegBits(0x1305, 0xf0, 7)) != RT_ERR_OK)
3953 return retVal;
3954 }
3955 else if(mode == EXT_RMII_PHY)
3956 {
3957 if ((retVal = rtl8367c_setAsicRegBits(0x1305, 0xf0, 8)) != RT_ERR_OK)
3958 return retVal;
3959 }
3960
3961 if ((mode == EXT_TMII_MAC) || (mode == EXT_TMII_PHY))
3962 {
3963 if ((retVal = rtl8367c_setAsicRegBit(0x3f7, 1, 1)) != RT_ERR_OK)
3964 return retVal;
3965 }
3966 }
3967
3968 }
3969 else if (2 == id)
3970 {
3971
3972 /*force port7 linkdown*/
3973 if ((retVal = rtl8367c_setAsicReg(0x137d, 0x1000)) != RT_ERR_OK)
3974 return retVal;
3975
3976 if ((retVal = rtl8367c_getAsicRegBit(0x1d9d, 7, &reg_data)) != RT_ERR_OK)
3977 return retVal;
3978 while(reg_data == 0)
3979 {
3980 if ((retVal = rtl8367c_getAsicRegBit(0x1d9d, 7, &reg_data)) != RT_ERR_OK)
3981 return retVal;
3982 }
3983
3984 if (mode == EXT_SGMII)
3985 {
3986 /*disable mac7 sel ext2 xMII mode*/
3987 if ((retVal = rtl8367c_setAsicRegBits(0x13c3, 0xf,0)) != RT_ERR_OK)
3988 return retVal;
3989
3990 /*restore ext2 ability*/
3991 if ((retVal = rtl8367c_setAsicReg(0x13c4, 0)) != RT_ERR_OK)
3992 return retVal;
3993 /* disable mac7 mode_ext2 */
3994 if ((retVal = rtl8367c_setAsicRegBit(0x3f7, 2, 0)) != RT_ERR_OK)
3995 return retVal;
3996
3997 /*bit5: cfg_mac6_fib=0 & bit7: cfg_mac6_fib2=0*/
3998 if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 5, 0)) != RT_ERR_OK)
3999 return retVal;
4000 if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 7, 0)) != RT_ERR_OK)
4001 return retVal;
4002
4003 /*
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)
4007 return retVal;
4008
4009 /*cfg_mac6_sel_hsgmii=0*/
4010 if ((retVal = rtl8367c_setAsicRegBit(0x1d11, 11, 0)) != RT_ERR_OK)
4011 return retVal;
4012
4013 /*cfg_mac6_sel_sgmii= 1*/
4014 if ((retVal = rtl8367c_setAsicRegBit(0x1d11, 6, 0)) != RT_ERR_OK)
4015 return retVal;
4016
4017 /*Enable new sds mode config method, cfg_sds_mode_sel_new=1*/
4018 if ((retVal = rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK)
4019 return retVal;
4020
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)
4024 return retVal;
4025
4026 /*cfg_mac7_sel_sgmii= 1*/
4027 if ((retVal = rtl8367c_setAsicRegBit(0x1d95, 0, 1)) != RT_ERR_OK)
4028 return retVal;
4029
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)
4033 return retVal;
4034
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)
4037 return retVal;
4038 }
4039 else if (mode == EXT_1000X)
4040 {
4041 /* disable mac7 MII/TMM/RMII/GMII/RGMII mode, mode_ext2 = disable */
4042 if ((retVal = rtl8367c_setAsicRegBits(0x13c3, 0xf, 0)) != RT_ERR_OK)
4043 return retVal;
4044
4045 /*restore ext2 ability*/
4046 if ((retVal = rtl8367c_setAsicReg(0x13c4, 0)) != RT_ERR_OK)
4047 return retVal;
4048
4049 /* 0 2 0 bit 8~9 set 0, force n-way*/
4050 if((retVal = rtl8367c_getAsicSdsReg(0, 2, 0, &reg_data)) != RT_ERR_OK)
4051 return retVal;
4052 reg_data &= 0xFFFFFCFF;
4053 if((retVal = rtl8367c_setAsicSdsReg(0,2,0, reg_data)) != RT_ERR_OK)
4054 return retVal;
4055
4056 /*restore ext2 ability*/
4057 if ((retVal = rtl8367c_setAsicRegBit(0x3f7, 2, 0)) != RT_ERR_OK)
4058 return retVal;
4059
4060 /* keep default setting, disable mac6 sel serdes*/
4061 if ((retVal = rtl8367c_setAsicReg(0x1d11, 0x1500)) != RT_ERR_OK)
4062 return retVal;
4063
4064 /*Enable new sds mode config method, cfg_sds_mode_sel_new=1*/
4065 if ((retVal = rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK)
4066 return retVal;
4067
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)
4071 return retVal;
4072
4073 /*bit5: cfg_mac6_fib=0 & bit7: cfg_mac6_fib2=0*/
4074 if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 5, 0)) != RT_ERR_OK)
4075 return retVal;
4076 if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 7, 0)) != RT_ERR_OK)
4077 return retVal;
4078
4079 /*cfg_mac7_sel_sgmii= 1 & cfg_mac7_fib=1*/
4080 if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 3, 3)) != RT_ERR_OK)
4081 return retVal;
4082
4083 /*new_cfg_sds_mode=0x4 (FIB1000 mode)*/
4084 if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 0x1f00, 0x4)) != RT_ERR_OK)
4085 return retVal;
4086
4087 }
4088 else if (mode == EXT_100FX)
4089 {
4090 /* disable mac7 MII/TMM/RMII/GMII/RGMII mode, mode_ext2 = disable */
4091 if ((retVal = rtl8367c_setAsicRegBits(0x13c3, 0xf, 0)) != RT_ERR_OK)
4092 return retVal;
4093
4094 /*restore ext2 ability*/
4095 if ((retVal = rtl8367c_setAsicReg(0x13c4, 0)) != RT_ERR_OK)
4096 return retVal;
4097
4098 /* 0 2 0 bit 8~9 set 0, force n-way*/
4099 if((retVal = rtl8367c_getAsicSdsReg(0, 2, 0, &reg_data)) != RT_ERR_OK)
4100 return retVal;
4101 reg_data &= 0xFFFFFCFF;
4102 if((retVal = rtl8367c_setAsicSdsReg(0,2,0, reg_data)) != RT_ERR_OK)
4103 return retVal;
4104
4105 /*restore ext2 ability*/
4106 if ((retVal = rtl8367c_setAsicRegBit(0x3f7, 2, 0)) != RT_ERR_OK)
4107 return retVal;
4108
4109 /* keep default setting, disable mac6 sel serdes*/
4110 if ((retVal = rtl8367c_setAsicReg(0x1d11, 0x1500)) != RT_ERR_OK)
4111 return retVal;
4112
4113 /*Enable new sds mode config method, cfg_sds_mode_sel_new=1*/
4114 if ((retVal = rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK)
4115 return retVal;
4116
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)
4120 return retVal;
4121
4122 /*bit5: cfg_mac6_fib=0 & bit7: cfg_mac6_fib2=0*/
4123 if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 5, 0)) != RT_ERR_OK)
4124 return retVal;
4125 if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 7, 0)) != RT_ERR_OK)
4126 return retVal;
4127
4128 /*cfg_mac7_sel_sgmii= 1 & cfg_mac7_fib=1*/
4129 if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 3, 3)) != RT_ERR_OK)
4130 return retVal;
4131
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)
4135 return retVal;
4136 }
4137 else if (mode == EXT_1000X_100FX)
4138 {
4139 /* disable mac7 MII/TMM/RMII/GMII/RGMII mode, mode_ext2 = disable */
4140 if ((retVal = rtl8367c_setAsicRegBits(0x13c3, 0xf, 0)) != RT_ERR_OK)
4141 return retVal;
4142
4143 /*restore ext2 ability*/
4144 if ((retVal = rtl8367c_setAsicReg(0x13c4, 0)) != RT_ERR_OK)
4145 return retVal;
4146
4147 /* 0 2 0 bit 8~9 set 0, force n-way*/
4148 if((retVal = rtl8367c_getAsicSdsReg(0, 2, 0, &reg_data)) != RT_ERR_OK)
4149 return retVal;
4150 reg_data &= 0xFFFFFCFF;
4151 if((retVal = rtl8367c_setAsicSdsReg(0,2,0, reg_data)) != RT_ERR_OK)
4152 return retVal;
4153
4154 /*restore ext2 ability*/
4155 if ((retVal = rtl8367c_setAsicRegBit(0x3f7, 2, 0)) != RT_ERR_OK)
4156 return retVal;
4157
4158 /* keep default setting, disable mac6 sel serdes*/
4159 if ((retVal = rtl8367c_setAsicReg(0x1d11, 0x1500)) != RT_ERR_OK)
4160 return retVal;
4161
4162 /*Enable new sds mode config method, cfg_sds_mode_sel_new=1*/
4163 if ((retVal = rtl8367c_setAsicRegBit(0x1d95, 13, 1)) != RT_ERR_OK)
4164 return retVal;
4165
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)
4169 return retVal;
4170
4171 /*bit5: cfg_mac6_fib=0 & bit7: cfg_mac6_fib2=0*/
4172 if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 5, 0)) != RT_ERR_OK)
4173 return retVal;
4174 if ((retVal = rtl8367c_setAsicRegBit(0x1d41, 7, 0)) != RT_ERR_OK)
4175 return retVal;
4176
4177 /*cfg_mac7_sel_sgmii= 1 & cfg_mac7_fib=1*/
4178 if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 3, 3)) != RT_ERR_OK)
4179 return retVal;
4180
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)
4184 return retVal;
4185 }
4186 else if (mode < EXT_SGMII)
4187 {
4188 if ((retVal = rtl8367c_setAsicRegBit(0x1d3d, 10, 0)) != RT_ERR_OK)
4189 return retVal;
4190
4191 if ((retVal = rtl8367c_setAsicRegBit(0x3f7, 2, 0)) != RT_ERR_OK)
4192 return retVal;
4193
4194 /* keep default setting, disable mac7 sel SerDes mode*/
4195 if ((retVal = rtl8367c_setAsicReg(0x1d95, 0x1f00)) != RT_ERR_OK)
4196 return retVal;
4197
4198 /*cfg_mac7_sel_sgmii= 0 & cfg_mac7_fib=0*/
4199 if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 3, 0)) != RT_ERR_OK)
4200 return retVal;
4201
4202 /* set port7 mode*/
4203 if ((retVal = rtl8367c_setAsicRegBits(0x13c3, 0xf, mode)) != RT_ERR_OK)
4204 return retVal;
4205
4206 if ((mode == EXT_TMII_MAC) || (mode == EXT_TMII_PHY))
4207 {
4208 if ((retVal = rtl8367c_setAsicRegBit(0x3f7, 2, 1)) != RT_ERR_OK)
4209 return retVal;
4210 }
4211
4212 }
4213 else if ((mode < EXT_END) && (mode > EXT_100FX))
4214 {
4215 if ((retVal = rtl8367c_setAsicRegBits(0x13C3, 0xf, 0)) != RT_ERR_OK)
4216 return retVal;
4217
4218 if ((retVal = rtl8367c_setAsicRegBit(0x3f7, 2, 0)) != RT_ERR_OK)
4219 return retVal;
4220
4221 /*cfg_mac7_sel_sgmii= 0 & cfg_mac7_fib=0*/
4222 if ((retVal = rtl8367c_setAsicRegBits(0x1d95, 3, 0)) != RT_ERR_OK)
4223 return retVal;
4224
4225 if ((retVal = rtl8367c_setAsicRegBit(0x1d3d, 10, 1)) != RT_ERR_OK)
4226 return retVal;
4227
4228 if ((retVal = rtl8367c_getAsicRegBit(0x1d11, 11, &reg_data)) != RT_ERR_OK)
4229 return retVal;
4230 if(reg_data == 0)
4231 {
4232 if ((retVal = rtl8367c_setAsicRegBit(0x1d11, 6, 1)) != RT_ERR_OK)
4233 return retVal;
4234 }
4235
4236 /* set port7 mode*/
4237 if (mode < EXT_RMII_MAC_2)
4238 {
4239 if ((retVal = rtl8367c_setAsicRegBits(0x1305, 0xf0, (mode-13))) != RT_ERR_OK)
4240 return retVal;
4241 }
4242 else
4243 {
4244 if ((retVal = rtl8367c_setAsicRegBits(0x1305, 0xf0, (mode-12))) != RT_ERR_OK)
4245 return retVal;
4246 }
4247
4248 if ((mode == EXT_TMII_MAC_2) || (mode == EXT_TMII_PHY_2))
4249 {
4250 if ((retVal = rtl8367c_setAsicRegBit(0x3f7, 2, 1)) != RT_ERR_OK)
4251 return retVal;
4252 }
4253 }
4254
4255 }
4256
4257 }
4258 return RT_ERR_OK;
4259 }
4260 /* Function Name:
4261 * rtl8367c_getAsicPortExtMode
4262 * Description:
4263 * Get external interface mode configuration
4264 * Input:
4265 * id - external interface id (0~1)
4266 * pMode - external interface mode
4267 * Output:
4268 * None
4269 * Return:
4270 * RT_ERR_OK - Success
4271 * RT_ERR_SMI - SMI access error
4272 * RT_ERR_OUT_OF_RANGE - input parameter out of range
4273 * Note:
4274 * None
4275 */
4276 ret_t rtl8367c_getAsicPortExtMode(rtk_uint32 id, rtk_uint32 *pMode)
4277 {
4278 ret_t retVal;
4279 rtk_uint32 regData, regValue, type;
4280
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)
4285 return retVal;
4286
4287 if((retVal = rtl8367c_getAsicReg(0x1300, &regValue)) != RT_ERR_OK)
4288 return retVal;
4289
4290 if((retVal = rtl8367c_setAsicReg(0x13C2, 0x0000)) != RT_ERR_OK)
4291 return retVal;
4292
4293 type = 0;
4294
4295 switch (regValue)
4296 {
4297 case 0x0276:
4298 case 0x0597:
4299 case 0x6367:
4300 type = 1;
4301 break;
4302 case 0x0652:
4303 case 0x6368:
4304 type = 2;
4305 break;
4306 case 0x0801:
4307 case 0x6511:
4308 type = 3;
4309 break;
4310 default:
4311 return RT_ERR_FAILED;
4312 }
4313
4314
4315 if (1 == type)
4316 {
4317
4318 if (1 == id)
4319 {
4320 if( (retVal = rtl8367c_getAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_MAC8_SEL_SGMII_OFFSET, &regData)) != RT_ERR_OK)
4321 return retVal;
4322
4323 if(1 == regData)
4324 {
4325 *pMode = EXT_SGMII;
4326 return RT_ERR_OK;
4327 }
4328
4329 if( (retVal = rtl8367c_getAsicRegBit(RTL8367C_REG_SDS_MISC, RTL8367C_CFG_MAC8_SEL_HSGMII_OFFSET, &regData)) != RT_ERR_OK)
4330 return retVal;
4331
4332 if(1 == regData)
4333 {
4334 *pMode = EXT_HSGMII;
4335 return RT_ERR_OK;
4336 }
4337 }
4338
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);
4341 else
4342 return rtl8367c_getAsicRegBits(RTL8367C_REG_DIGITAL_INTERFACE_SELECT_1, RTL8367C_SELECT_GMII_2_MASK, pMode);
4343
4344 }
4345 else if (2 == type)
4346 {
4347 if (1 == id)
4348 {
4349 if ((retVal = rtl8367c_getAsicReg(0x1d92, &regData))!=RT_ERR_OK)
4350 return retVal;
4351
4352 if (regData & 0x4000)
4353 {
4354 *pMode = EXT_SGMII;
4355 return RT_ERR_OK;
4356 }
4357
4358 else if (((regData >> 8) & 0x1f) == 4)
4359 {
4360 *pMode = EXT_1000X;
4361 return RT_ERR_OK;
4362 }
4363 else if (((regData >> 8) & 0x1f) == 5)
4364 {
4365 *pMode = EXT_100FX;
4366 return RT_ERR_OK;
4367 }
4368 else if (((regData >> 8) & 0x1f) == 7)
4369 {
4370 *pMode = EXT_1000X_100FX;
4371 return RT_ERR_OK;
4372 }
4373
4374 return rtl8367c_getAsicRegBits(0x1305, 0xf0, pMode);
4375 }
4376 else if (2 == id)
4377 {
4378 #if 0
4379 if ((retVal = rtl8367c_getAsicRegBit(0x1d92, 6, &regData))!=RT_ERR_OK)
4380 return retVal;
4381
4382 if (regData == 1)
4383 {
4384 *pMode = EXT_SGMII;
4385 return RT_ERR_OK;
4386 }
4387
4388 if ((retVal = rtl8367c_getAsicRegBit(0x1d92, 7, &regData))!=RT_ERR_OK)
4389 return retVal;
4390
4391 if (regData == 1)
4392 {
4393 *pMode = EXT_HSGMII;
4394 return RT_ERR_OK;
4395 }
4396 #endif
4397 if ((retVal = rtl8367c_getAsicReg(0x1d92, &regData))!=RT_ERR_OK)
4398 return retVal;
4399
4400 if (regData & 0x40)
4401 {
4402 *pMode = EXT_SGMII;
4403 return RT_ERR_OK;
4404 }
4405 else if (regData & 0x80)
4406 {
4407 *pMode = EXT_HSGMII;
4408 return RT_ERR_OK;
4409 }
4410 else if ((regData & 0x1f) == 4)
4411 {
4412 *pMode = EXT_1000X;
4413 return RT_ERR_OK;
4414 }
4415 else if ((regData & 0x1f) == 5)
4416 {
4417 *pMode = EXT_100FX;
4418 return RT_ERR_OK;
4419 }
4420 else if ((regData & 0x1f) == 7)
4421 {
4422 *pMode = EXT_1000X_100FX;
4423 return RT_ERR_OK;
4424 }
4425
4426 return rtl8367c_getAsicRegBits(0x1305, 0xf, pMode);
4427 }
4428 }
4429 else if(3 == type)
4430 {
4431 if (1 == id)
4432 {
4433 /* SDS_CFG_NEW */
4434 if ((retVal = rtl8367c_getAsicReg(0x1d95, &regData))!=RT_ERR_OK)
4435 return retVal;
4436
4437 if ((retVal = rtl8367c_getAsicReg(0x1d41, &regValue))!=RT_ERR_OK)
4438 return retVal;
4439
4440 /* bit5: cfg_mac6_fib=1 && bit7: cfg_mac6_fib2 =1 */
4441 if((regValue & 0xa0) == 0xa0 )
4442 {
4443 /* new_cfg_sds_mode */
4444 regData = regData >> 8;
4445 if((regData & 0x1f) == 4)
4446 {
4447 *pMode = EXT_1000X;
4448 return RT_ERR_OK;
4449 }
4450 else if((regData & 0x1f) == 5)
4451 {
4452 *pMode = EXT_100FX;
4453 return RT_ERR_OK;
4454 }
4455 else if((regData & 0x1f) == 7)
4456 {
4457 *pMode = EXT_1000X_100FX;
4458 return RT_ERR_OK;
4459 }
4460
4461 }
4462
4463
4464 if ((retVal = rtl8367c_getAsicReg(0x1d11, &regData))!=RT_ERR_OK)
4465 return retVal;
4466
4467 /* check cfg_mac6_sel_sgmii */
4468 if((regData >> 6) & 1)
4469 {
4470 *pMode = EXT_SGMII;
4471 return RT_ERR_OK;
4472 }
4473 else if((regData >> 11) & 1)
4474 {
4475 *pMode = EXT_HSGMII;
4476 return RT_ERR_OK;
4477 }
4478 else
4479 {
4480 /* check port6 MAC mode */
4481 if ((retVal = rtl8367c_getAsicRegBits(0x1305, 0xf0, &regData))!=RT_ERR_OK)
4482 return retVal;
4483
4484 if(regData < 6)
4485 *pMode = regData;
4486 else if(regData == 6)
4487 *pMode = EXT_RMII_MAC;
4488 else if(regData == 7)
4489 *pMode = EXT_RMII_PHY;
4490
4491 return RT_ERR_OK;
4492 }
4493 }
4494 else if (2 == id)
4495 {
4496 if ((retVal = rtl8367c_getAsicReg(0x1d95, &regData))!=RT_ERR_OK)
4497 return retVal;
4498
4499 /* bit0: cfg_mac7_sel_sgmii
4500 bit1: cfg_mac7_fib
4501 bit[12:8]: new_cfg_sds_mode*/
4502 if(((regData & 0x3) == 3) && (((regData >> 8) & 0x1f) == 0x4))
4503 {
4504 *pMode = EXT_1000X;
4505 return RT_ERR_OK;
4506 }
4507 else if (((regData & 0x3) == 3) && (((regData >> 8) & 0x1f) == 0x5))
4508 {
4509 *pMode = EXT_100FX;
4510 return RT_ERR_OK;
4511 }
4512 else if (((regData & 0x3) == 3) && (((regData >> 8) & 0x1f) == 0x7))
4513 {
4514 *pMode = EXT_1000X_100FX;
4515 return RT_ERR_OK;
4516 }
4517 else if(regData & 1)
4518 {
4519 *pMode = EXT_SGMII;
4520 return RT_ERR_OK;
4521 }
4522 else
4523 {
4524 /* check port7 MAC mode */
4525 if ((retVal = rtl8367c_getAsicRegBits(0x13c3, 0xf, &regData))!=RT_ERR_OK)
4526 return retVal;
4527
4528 *pMode = regData;
4529
4530 return RT_ERR_OK;
4531 }
4532 }
4533 }
4534
4535 return RT_ERR_OK;
4536 }
4537
4538 /* Function Name:
4539 * rtl8370_setAsicPortEnableAll
4540 * Description:
4541 * Set ALL ports enable.
4542 * Input:
4543 * enable - enable all ports.
4544 * Output:
4545 * None
4546 * Return:
4547 * RT_ERR_OK - Success
4548 * RT_ERR_SMI - SMI access error
4549 * Note:
4550 * None
4551 */
4552 ret_t rtl8367c_setAsicPortEnableAll(rtk_uint32 enable)
4553 {
4554 if(enable >= 2)
4555 return RT_ERR_INPUT;
4556
4557 return rtl8367c_setAsicRegBit(RTL8367C_REG_PHY_AD, RTL8367C_PDNPHY_OFFSET, !enable);
4558 }
4559
4560 /* Function Name:
4561 * rtl8367c_getAsicPortEnableAll
4562 * Description:
4563 * Set ALL ports enable.
4564 * Input:
4565 * enable - enable all ports.
4566 * Output:
4567 * None
4568 * Return:
4569 * RT_ERR_OK - Success
4570 * RT_ERR_SMI - SMI access error
4571 * Note:
4572 * None
4573 */
4574 ret_t rtl8367c_getAsicPortEnableAll(rtk_uint32 *pEnable)
4575 {
4576 ret_t retVal;
4577 rtk_uint32 regData;
4578
4579 retVal = rtl8367c_getAsicRegBit(RTL8367C_REG_PHY_AD, RTL8367C_PDNPHY_OFFSET, &regData);
4580 if(retVal != RT_ERR_OK)
4581 return retVal;
4582
4583 if (regData==0)
4584 *pEnable = 1;
4585 else
4586 *pEnable = 0;
4587
4588 return RT_ERR_OK;
4589 }
4590 /* Function Name:
4591 * rtl8367c_setAsicPortSmallIpg
4592 * Description:
4593 * Set small ipg egress mode
4594 * Input:
4595 * port - Physical port number (0~7)
4596 * enable - 0: normal, 1: small
4597 * Output:
4598 * None
4599 * Return:
4600 * RT_ERR_OK - Success
4601 * RT_ERR_SMI - SMI access error
4602 * RT_ERR_PORT_ID - Invalid port number
4603 * Note:
4604 * None
4605 */
4606 ret_t rtl8367c_setAsicPortSmallIpg(rtk_uint32 port, rtk_uint32 enable)
4607 {
4608 if(port >= RTL8367C_PORTNO)
4609 return RT_ERR_PORT_ID;
4610
4611 return rtl8367c_setAsicRegBit(RTL8367C_PORT_SMALL_IPG_REG(port), RTL8367C_PORT0_MISC_CFG_SMALL_TAG_IPG_OFFSET, enable);
4612 }
4613
4614 /* Function Name:
4615 * rtl8367c_getAsicPortSmallIpg
4616 * Description:
4617 * Get small ipg egress mode
4618 * Input:
4619 * port - Physical port number (0~7)
4620 * pEnable - 0: normal, 1: small
4621 * Output:
4622 * None
4623 * Return:
4624 * RT_ERR_OK - Success
4625 * RT_ERR_SMI - SMI access error
4626 * RT_ERR_PORT_ID - Invalid port number
4627 * Note:
4628 * None
4629 */
4630 ret_t rtl8367c_getAsicPortSmallIpg(rtk_uint32 port, rtk_uint32* pEnable)
4631 {
4632 if(port >= RTL8367C_PORTNO)
4633 return RT_ERR_PORT_ID;
4634
4635 return rtl8367c_getAsicRegBit(RTL8367C_PORT_SMALL_IPG_REG(port), RTL8367C_PORT0_MISC_CFG_SMALL_TAG_IPG_OFFSET, pEnable);
4636 }
4637
4638 /* Function Name:
4639 * rtl8367c_setAsicPortLoopback
4640 * Description:
4641 * Set MAC loopback
4642 * Input:
4643 * port - Physical port number (0~7)
4644 * enable - 0: Disable, 1: enable
4645 * Output:
4646 * None
4647 * Return:
4648 * RT_ERR_OK - Success
4649 * RT_ERR_SMI - SMI access error
4650 * RT_ERR_PORT_ID - Invalid port number
4651 * Note:
4652 * None
4653 */
4654 ret_t rtl8367c_setAsicPortLoopback(rtk_uint32 port, rtk_uint32 enable)
4655 {
4656 if(port >= RTL8367C_PORTNO)
4657 return RT_ERR_PORT_ID;
4658
4659 return rtl8367c_setAsicRegBit(RTL8367C_PORT_MISC_CFG_REG(port), RTL8367C_PORT0_MISC_CFG_MAC_LOOPBACK_OFFSET, enable);
4660 }
4661
4662 /* Function Name:
4663 * rtl8367c_getAsicPortLoopback
4664 * Description:
4665 * Set MAC loopback
4666 * Input:
4667 * port - Physical port number (0~7)
4668 * Output:
4669 * pEnable - 0: Disable, 1: enable
4670 * Return:
4671 * RT_ERR_OK - Success
4672 * RT_ERR_SMI - SMI access error
4673 * RT_ERR_PORT_ID - Invalid port number
4674 * Note:
4675 * None
4676 */
4677 ret_t rtl8367c_getAsicPortLoopback(rtk_uint32 port, rtk_uint32 *pEnable)
4678 {
4679 if(port >= RTL8367C_PORTNO)
4680 return RT_ERR_PORT_ID;
4681
4682 return rtl8367c_getAsicRegBit(RTL8367C_PORT_MISC_CFG_REG(port), RTL8367C_PORT0_MISC_CFG_MAC_LOOPBACK_OFFSET, pEnable);
4683 }
4684
4685 /* Function Name:
4686 * rtl8367c_setAsicPortRTCTEnable
4687 * Description:
4688 * Set RTCT Enable echo response mode
4689 * Input:
4690 * portmask - Port mask of RTCT enabled (0-4)
4691 * Output:
4692 * None.
4693 * Return:
4694 * RT_ERR_OK - Success
4695 * RT_ERR_SMI - SMI access error
4696 * RT_ERR_PORT_MASK - Invalid port mask
4697 * Note:
4698 * RTCT test takes 4.8 seconds at most.
4699 */
4700 ret_t rtl8367c_setAsicPortRTCTEnable(rtk_uint32 portmask)
4701 {
4702 ret_t retVal;
4703 rtk_uint32 regData;
4704 rtk_uint32 port;
4705
4706 if((retVal = rtl8367c_setAsicReg(0x13C2, 0x0249)) != RT_ERR_OK)
4707 return retVal;
4708
4709 if((retVal = rtl8367c_getAsicReg(0x1300, &regData)) != RT_ERR_OK)
4710 return retVal;
4711
4712 if( (regData == 0x0276) || (regData == 0x0597) )
4713 return RT_ERR_CHIP_NOT_SUPPORTED;
4714
4715 for(port = 0; port <= 10 ; port++)
4716 {
4717 if(portmask & (0x0001 << port))
4718 {
4719 if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa422, &regData)) != RT_ERR_OK)
4720 return retVal;
4721
4722 regData &= 0x7FFF;
4723 if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa422, regData)) != RT_ERR_OK)
4724 return retVal;
4725
4726 regData |= 0x00F2;/*RTCT set to echo response mode*/
4727 if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa422, regData)) != RT_ERR_OK)
4728 return retVal;
4729
4730 regData |= 0x0001;
4731 if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa422, regData)) != RT_ERR_OK)
4732 return retVal;
4733 }
4734 }
4735
4736 return RT_ERR_OK;
4737 }
4738
4739 /* Function Name:
4740 * rtl8367c_setAsicPortRTCTDisable
4741 * Description:
4742 * Set RTCT Disable
4743 * Input:
4744 * portmask - Port mask of RTCT enabled (0-4)
4745 * Output:
4746 * None.
4747 * Return:
4748 * RT_ERR_OK - Success
4749 * RT_ERR_SMI - SMI access error
4750 * RT_ERR_PORT_MASK - Invalid port mask
4751 * Note:
4752 * RTCT test takes 4.8 seconds at most.
4753 */
4754 ret_t rtl8367c_setAsicPortRTCTDisable(rtk_uint32 portmask)
4755 {
4756 ret_t retVal;
4757 rtk_uint32 regData;
4758 rtk_uint32 port;
4759
4760 if((retVal = rtl8367c_setAsicReg(0x13C2, 0x0249)) != RT_ERR_OK)
4761 return retVal;
4762
4763 if((retVal = rtl8367c_getAsicReg(0x1300, &regData)) != RT_ERR_OK)
4764 return retVal;
4765
4766 if( (regData == 0x0276) || (regData == 0x0597) )
4767 return RT_ERR_CHIP_NOT_SUPPORTED;
4768
4769 for(port = 0; port <= 10 ; port++)
4770 {
4771 if(portmask & (0x0001 << port))
4772 {
4773 if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa422, &regData)) != RT_ERR_OK)
4774 return retVal;
4775
4776 regData &= 0x7FFF;
4777 if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa422, regData)) != RT_ERR_OK)
4778 return retVal;
4779
4780 regData |= 0x00F0;
4781 if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa422, regData)) != RT_ERR_OK)
4782 return retVal;
4783
4784 regData &= ~0x0001;
4785 if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa422, regData)) != RT_ERR_OK)
4786 return retVal;
4787 }
4788 }
4789
4790 return RT_ERR_OK;
4791 }
4792
4793
4794 /* Function Name:
4795 * rtl8367c_getAsicPortRTCTResult
4796 * Description:
4797 * Get RTCT result
4798 * Input:
4799 * port - Port ID of RTCT result
4800 * Output:
4801 * pResult - The result of port ID
4802 * Return:
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.
4807 * Note:
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.
4811 */
4812 ret_t rtl8367c_getAsicPortRTCTResult(rtk_uint32 port, rtl8367c_port_rtct_result_t *pResult)
4813 {
4814 ret_t retVal;
4815 rtk_uint32 regData, finish = 1;
4816
4817 if((retVal = rtl8367c_setAsicReg(0x13C2, 0x0249)) != RT_ERR_OK)
4818 return retVal;
4819
4820 if((retVal = rtl8367c_getAsicReg(0x1300, &regData)) != RT_ERR_OK)
4821 return retVal;
4822
4823 if( (regData == 0x6367) )
4824 {
4825 if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa422, &regData)) != RT_ERR_OK)
4826 return retVal;
4827
4828 if((regData & 0x8000) == 0x8000)
4829 {
4830 /* Channel A */
4831 if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x802a)) != RT_ERR_OK)
4832 return retVal;
4833
4834 if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, &regData)) != RT_ERR_OK)
4835 return retVal;
4836
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;
4841
4842 /* Channel B */
4843 if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x802e)) != RT_ERR_OK)
4844 return retVal;
4845
4846 if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, &regData)) != RT_ERR_OK)
4847 return retVal;
4848
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;
4853
4854 /* Channel C */
4855 if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x8032)) != RT_ERR_OK)
4856 return retVal;
4857
4858 if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, &regData)) != RT_ERR_OK)
4859 return retVal;
4860
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;
4865
4866 /* Channel D */
4867 if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x8036)) != RT_ERR_OK)
4868 return retVal;
4869
4870 if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, &regData)) != RT_ERR_OK)
4871 return retVal;
4872
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;
4877
4878 /* Channel A Length */
4879 if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x802c)) != RT_ERR_OK)
4880 return retVal;
4881
4882 if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, &regData)) != RT_ERR_OK)
4883 return retVal;
4884
4885 pResult->channelALen = (regData / 2);
4886
4887 /* Channel B Length */
4888 if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x8030)) != RT_ERR_OK)
4889 return retVal;
4890
4891 if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, &regData)) != RT_ERR_OK)
4892 return retVal;
4893
4894 pResult->channelBLen = (regData / 2);
4895
4896 /* Channel C Length */
4897 if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x8034)) != RT_ERR_OK)
4898 return retVal;
4899
4900 if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, &regData)) != RT_ERR_OK)
4901 return retVal;
4902
4903 pResult->channelCLen = (regData / 2);
4904
4905 /* Channel D Length */
4906 if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x8038)) != RT_ERR_OK)
4907 return retVal;
4908
4909 if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, &regData)) != RT_ERR_OK)
4910 return retVal;
4911
4912 pResult->channelDLen = (regData / 2);
4913 }
4914 else
4915 finish = 0;
4916 }
4917 else if(regData == 0x6368)
4918 {
4919 if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa422, &regData)) != RT_ERR_OK)
4920 return retVal;
4921
4922 if((regData & 0x8000) == 0x8000)
4923 {
4924 /* Channel A */
4925 if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x802b)) != RT_ERR_OK)
4926 return retVal;
4927
4928 if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, &regData)) != RT_ERR_OK)
4929 return retVal;
4930
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;
4935
4936 /* Channel B */
4937 if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x802f)) != RT_ERR_OK)
4938 return retVal;
4939
4940 if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, &regData)) != RT_ERR_OK)
4941 return retVal;
4942
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;
4947
4948 /* Channel C */
4949 if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x8033)) != RT_ERR_OK)
4950 return retVal;
4951
4952 if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, &regData)) != RT_ERR_OK)
4953 return retVal;
4954
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;
4959
4960 /* Channel D */
4961 if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x8037)) != RT_ERR_OK)
4962 return retVal;
4963
4964 if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, &regData)) != RT_ERR_OK)
4965 return retVal;
4966
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;
4971
4972 /* Channel A Length */
4973 if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x802d)) != RT_ERR_OK)
4974 return retVal;
4975
4976 if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, &regData)) != RT_ERR_OK)
4977 return retVal;
4978
4979 pResult->channelALen = (regData / 2);
4980
4981 /* Channel B Length */
4982 if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x8031)) != RT_ERR_OK)
4983 return retVal;
4984
4985 if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, &regData)) != RT_ERR_OK)
4986 return retVal;
4987
4988 pResult->channelBLen = (regData / 2);
4989
4990 /* Channel C Length */
4991 if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x8035)) != RT_ERR_OK)
4992 return retVal;
4993
4994 if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, &regData)) != RT_ERR_OK)
4995 return retVal;
4996
4997 pResult->channelCLen = (regData / 2);
4998
4999 /* Channel D Length */
5000 if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x8039)) != RT_ERR_OK)
5001 return retVal;
5002
5003 if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, &regData)) != RT_ERR_OK)
5004 return retVal;
5005
5006 pResult->channelDLen = (regData / 2);
5007 }
5008 else
5009 finish = 0;
5010
5011 }
5012 else if((regData == 0x6511) || (regData == 0x0801))
5013 {
5014 if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa422, &regData)) != RT_ERR_OK)
5015 return retVal;
5016
5017 if((regData & 0x8000) == 0x8000)
5018 {
5019 /* Channel A */
5020 if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x802a)) != RT_ERR_OK)
5021 return retVal;
5022
5023 if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, &regData)) != RT_ERR_OK)
5024 return retVal;
5025
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;
5030
5031 /* Channel B */
5032 if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x802e)) != RT_ERR_OK)
5033 return retVal;
5034
5035 if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, &regData)) != RT_ERR_OK)
5036 return retVal;
5037
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;
5042
5043 /* Channel C */
5044 if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x8032)) != RT_ERR_OK)
5045 return retVal;
5046
5047 if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, &regData)) != RT_ERR_OK)
5048 return retVal;
5049
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;
5054
5055 /* Channel D */
5056 if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x8036)) != RT_ERR_OK)
5057 return retVal;
5058
5059 if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, &regData)) != RT_ERR_OK)
5060 return retVal;
5061
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;
5066
5067 /* Channel A Length */
5068 if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x802c)) != RT_ERR_OK)
5069 return retVal;
5070
5071 if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, &regData)) != RT_ERR_OK)
5072 return retVal;
5073
5074 pResult->channelALen = (regData / 2);
5075
5076 /* Channel B Length */
5077 if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x8030)) != RT_ERR_OK)
5078 return retVal;
5079
5080 if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, &regData)) != RT_ERR_OK)
5081 return retVal;
5082
5083 pResult->channelBLen = (regData / 2);
5084
5085 /* Channel C Length */
5086 if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x8034)) != RT_ERR_OK)
5087 return retVal;
5088
5089 if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, &regData)) != RT_ERR_OK)
5090 return retVal;
5091
5092 pResult->channelCLen = (regData / 2);
5093
5094 /* Channel D Length */
5095 if((retVal = rtl8367c_setAsicPHYOCPReg(port, 0xa436, 0x8038)) != RT_ERR_OK)
5096 return retVal;
5097
5098 if((retVal = rtl8367c_getAsicPHYOCPReg(port, 0xa438, &regData)) != RT_ERR_OK)
5099 return retVal;
5100
5101 pResult->channelDLen = (regData / 2);
5102 }
5103 else
5104 finish = 0;
5105
5106 }
5107 else
5108 return RT_ERR_CHIP_NOT_SUPPORTED;
5109
5110 if(finish == 0)
5111 return RT_ERR_PHY_RTCT_NOT_FINISH;
5112 else
5113 return RT_ERR_OK;
5114 }
5115
5116 /* Function Name:
5117 * rtl8367c_sdsReset
5118 * Description:
5119 * Reset Serdes
5120 * Input:
5121 * id - EXT ID
5122 * Output:
5123 * None.
5124 * Return:
5125 * RT_ERR_OK - Success
5126 * RT_ERR_SMI - SMI access error
5127 * Note:
5128 * None.
5129 */
5130 ret_t rtl8367c_sdsReset(rtk_uint32 id)
5131 {
5132 rtk_uint32 retVal, regValue, state, i, option, running = 0, retVal2;
5133
5134 if((retVal = rtl8367c_setAsicReg(0x13C2, 0x0249)) != RT_ERR_OK)
5135 return retVal;
5136
5137 if((retVal = rtl8367c_getAsicReg(0x1300, &regValue)) != RT_ERR_OK)
5138 return retVal;
5139
5140 if((retVal = rtl8367c_setAsicReg(0x13C2, 0x0000)) != RT_ERR_OK)
5141 return retVal;
5142
5143 switch (regValue)
5144 {
5145 case 0x0276:
5146 case 0x0597:
5147 case 0x6367:
5148 option = 0;
5149 break;
5150 case 0x0652:
5151 case 0x6368:
5152 option = 1;
5153 break;
5154 case 0x0801:
5155 case 0x6511:
5156 option = 2;
5157 break;
5158 default:
5159 return RT_ERR_FAILED;
5160 }
5161
5162 if(option == 0)
5163 {
5164 if (1 == id)
5165 {
5166 if ((retVal = rtl8367c_getAsicRegBit(0x130c, 5, &running))!=RT_ERR_OK)
5167 return retVal;
5168
5169 if(running == 1)
5170 {
5171 if ((retVal = rtl8367c_setAsicRegBit(0x130c, 5, 0))!=RT_ERR_OK)
5172 return retVal;
5173 }
5174
5175 retVal = rtl8367c_setAsicReg(0x6601, 0x0000);
5176
5177 if(retVal == RT_ERR_OK)
5178 retVal = rtl8367c_setAsicReg(0x6602, 0x1401);
5179
5180 if(retVal == RT_ERR_OK)
5181 retVal = rtl8367c_setAsicReg(0x6600, 0x00C0);
5182
5183 if(retVal == RT_ERR_OK)
5184 retVal = rtl8367c_setAsicReg(0x6601, 0x0000);
5185
5186 if(retVal == RT_ERR_OK)
5187 retVal = rtl8367c_setAsicReg(0x6602, 0x1403);
5188
5189 if(retVal == RT_ERR_OK)
5190 retVal = rtl8367c_setAsicReg(0x6600, 0x00C0);
5191
5192 if(running == 1)
5193 {
5194 if ((retVal2 = rtl8367c_setAsicRegBit(0x130c, 5, 1))!=RT_ERR_OK)
5195 return retVal2;
5196 }
5197
5198 if(retVal != RT_ERR_OK)
5199 return retVal;
5200 }
5201 else
5202 return RT_ERR_PORT_ID;
5203 }
5204 else if(option == 1)
5205 {
5206 if (1 == id)
5207 {
5208 if((retVal = rtl8367c_getAsicReg(0x1311, &state)) != RT_ERR_OK)
5209 return retVal;
5210
5211 if((retVal = rtl8367c_setAsicReg(0x1311, 0x66)) != RT_ERR_OK)
5212 return retVal;
5213
5214 if((retVal = rtl8367c_setAsicReg(0x1311, 0x1066)) != RT_ERR_OK)
5215 return retVal;
5216
5217 while(1)
5218 {
5219 if((retVal = rtl8367c_getAsicReg(0x1d9d, &regValue)) != RT_ERR_OK)
5220 return retVal;
5221 if((regValue >> 8) & 1)
5222 break;
5223 }
5224
5225 for (i=0; i<0xffff; i++);
5226
5227 if((retVal = rtl8367c_setAsicReg(0x133d, 0x2)) != RT_ERR_OK)
5228 return retVal;
5229
5230 for (i=0; i<0xffff; i++);
5231
5232 if((retVal = rtl8367c_setAsicReg(0x6601, 0x0)) != RT_ERR_OK)
5233 return retVal;
5234 if((retVal = rtl8367c_setAsicReg(0x6602, 0x1401)) != RT_ERR_OK)
5235 return retVal;
5236 if((retVal = rtl8367c_setAsicReg(0x6600, 0xc1)) != RT_ERR_OK)
5237 return retVal;
5238 if((retVal = rtl8367c_setAsicReg(0x6601, 0x0)) != RT_ERR_OK)
5239 return retVal;
5240 if((retVal = rtl8367c_setAsicReg(0x6602, 0x1403)) != RT_ERR_OK)
5241 return retVal;
5242 if((retVal = rtl8367c_setAsicReg(0x6600, 0xc1)) != RT_ERR_OK)
5243 return retVal;
5244
5245 if((retVal = rtl8367c_setAsicReg(0x133d, 0x0)) != RT_ERR_OK)
5246 return retVal;
5247
5248 for (i=0; i<0xffff; i++);
5249
5250 if((retVal = rtl8367c_setAsicReg(0x1311, state)) != RT_ERR_OK)
5251 return retVal;
5252
5253
5254 }
5255 else if (2== id)
5256 {
5257 if((retVal = rtl8367c_getAsicReg(0x13c4, &state)) != RT_ERR_OK)
5258 return retVal;
5259
5260 if((retVal = rtl8367c_setAsicReg(0x13c4, 0x66)) != RT_ERR_OK)
5261 return retVal;
5262
5263 if((retVal = rtl8367c_setAsicReg(0x13c4, 0x1066)) != RT_ERR_OK)
5264 return retVal;
5265
5266 while(1)
5267 {
5268 if((retVal = rtl8367c_getAsicReg(0x1d9d, &regValue)) != RT_ERR_OK)
5269 return retVal;
5270 if((regValue >> 9) & 1)
5271 break;
5272 }
5273
5274 for (i=0; i<0xffff; i++);
5275
5276 if((retVal = rtl8367c_setAsicReg(0x133d, 0x2)) != RT_ERR_OK)
5277 return retVal;
5278
5279 for (i=0; i<0xffff; i++);
5280
5281 if((retVal = rtl8367c_setAsicReg(0x6601, 0x0)) != RT_ERR_OK)
5282 return retVal;
5283 if((retVal = rtl8367c_setAsicReg(0x6602, 0x1401)) != RT_ERR_OK)
5284 return retVal;
5285 if((retVal = rtl8367c_setAsicReg(0x6600, 0xc0)) != RT_ERR_OK)
5286 return retVal;
5287 if((retVal = rtl8367c_setAsicReg(0x6601, 0x0)) != RT_ERR_OK)
5288 return retVal;
5289 if((retVal = rtl8367c_setAsicReg(0x6602, 0x1403)) != RT_ERR_OK)
5290 return retVal;
5291 if((retVal = rtl8367c_setAsicReg(0x6600, 0xc0)) != RT_ERR_OK)
5292 return retVal;
5293
5294 if((retVal = rtl8367c_setAsicReg(0x133d, 0x0)) != RT_ERR_OK)
5295 return retVal;
5296
5297 for (i=0; i<0xffff; i++);
5298
5299 if((retVal = rtl8367c_setAsicReg(0x13c4, state)) != RT_ERR_OK)
5300 return retVal;
5301 }
5302 else
5303 return RT_ERR_PORT_ID;
5304 }
5305 else if(option == 2)
5306 {
5307 if ((retVal = rtl8367c_getAsicSdsReg(0, 3, 0, &regValue))!=RT_ERR_OK)
5308 return retVal;
5309 regValue |= 0x40;
5310 if ((retVal = rtl8367c_setAsicSdsReg(0, 3, 0, regValue))!=RT_ERR_OK)
5311 return retVal;
5312
5313 for (i=0; i<0xffff; i++);
5314
5315 regValue &= ~(0x40);
5316 if ((retVal = rtl8367c_setAsicSdsReg(0, 3, 0, regValue))!=RT_ERR_OK)
5317 return retVal;
5318
5319 }
5320
5321 return RT_ERR_OK;
5322 }
5323
5324 /* Function Name:
5325 * rtl8367c_getSdsLinkStatus
5326 * Description:
5327 * Get SGMII status
5328 * Input:
5329 * id - EXT ID
5330 * Output:
5331 * None.
5332 * Return:
5333 * RT_ERR_OK - Success
5334 * RT_ERR_SMI - SMI access error
5335 * Note:
5336 * None.
5337 */
5338 ret_t rtl8367c_getSdsLinkStatus(rtk_uint32 ext_id, rtk_uint32 *pSignalDetect, rtk_uint32 *pSync, rtk_uint32 *pLink)
5339 {
5340 rtk_uint32 retVal, regValue, type, running = 0, retVal2;
5341
5342
5343 if((retVal = rtl8367c_setAsicReg(0x13C2, 0x0249)) != RT_ERR_OK)
5344 return retVal;
5345
5346 if((retVal = rtl8367c_getAsicReg(0x1300, &regValue)) != RT_ERR_OK)
5347 return retVal;
5348
5349 if((retVal = rtl8367c_setAsicReg(0x13C2, 0x0000)) != RT_ERR_OK)
5350 return retVal;
5351
5352 switch (regValue)
5353 {
5354 case 0x0276:
5355 case 0x0597:
5356 case 0x6367:
5357 type = 0;
5358 break;
5359 case 0x0652:
5360 case 0x6368:
5361 type = 1;
5362 break;
5363 case 0x0801:
5364 case 0x6511:
5365 type = 2;
5366 break;
5367 default:
5368 return RT_ERR_FAILED;
5369 }
5370
5371 if(type == 0)
5372 {
5373 if (1 == ext_id)
5374 {
5375 if ((retVal = rtl8367c_getAsicRegBit(0x130c, 5, &running))!=RT_ERR_OK)
5376 return retVal;
5377
5378 if(running == 1)
5379 {
5380 if ((retVal = rtl8367c_setAsicRegBit(0x130c, 5, 0))!=RT_ERR_OK)
5381 return retVal;
5382 }
5383
5384 retVal = rtl8367c_setAsicReg(0x6601, 0x003D);
5385
5386 if(retVal == RT_ERR_OK)
5387 retVal = rtl8367c_setAsicReg(0x6600, 0x0080);
5388
5389 if(retVal == RT_ERR_OK)
5390 retVal = rtl8367c_getAsicReg(0x6602, &regValue);
5391
5392 if(running == 1)
5393 {
5394 if ((retVal2 = rtl8367c_setAsicRegBit(0x130c, 5, 1))!=RT_ERR_OK)
5395 return retVal2;
5396 }
5397
5398 if(retVal != RT_ERR_OK)
5399 return retVal;
5400
5401 *pSignalDetect = (regValue & 0x0100) ? 1 : 0;
5402 *pSync = (regValue & 0x0001) ? 1 : 0;
5403 *pLink = (regValue & 0x0010) ? 1 : 0;
5404 }
5405 else
5406 return RT_ERR_PORT_ID;
5407 }
5408 else if(type == 1)
5409 {
5410 if (1 == ext_id)
5411 {
5412 if ((retVal = rtl8367c_setAsicReg(0x6601, 0x003D))!=RT_ERR_OK)
5413 return retVal;
5414 if ((retVal = rtl8367c_setAsicReg(0x6600, 0x0081))!=RT_ERR_OK)
5415 return retVal;
5416 if ((retVal = rtl8367c_getAsicReg(0x6602, &regValue))!=RT_ERR_OK)
5417 return retVal;
5418
5419 *pSignalDetect = (regValue & 0x0100) ? 1 : 0;
5420 *pSync = (regValue & 0x0001) ? 1 : 0;
5421 *pLink = (regValue & 0x0010) ? 1 : 0;
5422 }
5423 else if (2 == ext_id)
5424 {
5425 if ((retVal = rtl8367c_setAsicReg(0x6601, 0x003D))!=RT_ERR_OK)
5426 return retVal;
5427 if ((retVal = rtl8367c_setAsicReg(0x6600, 0x0080))!=RT_ERR_OK)
5428 return retVal;
5429 if ((retVal = rtl8367c_getAsicReg(0x6602, &regValue))!=RT_ERR_OK)
5430 return retVal;
5431
5432 *pSignalDetect = (regValue & 0x0100) ? 1 : 0;
5433 *pSync = (regValue & 0x0001) ? 1 : 0;
5434 *pLink = (regValue & 0x0010) ? 1 : 0;
5435 }
5436 else
5437 return RT_ERR_PORT_ID;
5438 }
5439 else if(type == 2)
5440 {
5441 if((retVal = rtl8367c_getAsicSdsReg(0, 30, 1, &regValue)) != RT_ERR_OK)
5442 return retVal;
5443 if((retVal = rtl8367c_getAsicSdsReg(0, 30, 1, &regValue)) != RT_ERR_OK)
5444 return retVal;
5445
5446 *pSignalDetect = (regValue & 0x0100) ? 1 : 0;
5447 *pSync = (regValue & 0x0001) ? 1 : 0;
5448 *pLink = (regValue & 0x0010) ? 1 : 0;
5449
5450 }
5451
5452 return RT_ERR_OK;
5453 }
5454
5455 /* Function Name:
5456 * rtl8367c_setSgmiiNway
5457 * Description:
5458 * Set SGMII Nway
5459 * Input:
5460 * ext_id - EXT ID
5461 * state - SGMII Nway state
5462 * Output:
5463 * None.
5464 * Return:
5465 * RT_ERR_OK - Success
5466 * RT_ERR_SMI - SMI access error
5467 * Note:
5468 * None.
5469 */
5470 ret_t rtl8367c_setSgmiiNway(rtk_uint32 ext_id, rtk_uint32 state)
5471 {
5472 rtk_uint32 retVal, regValue, type, running = 0, retVal2;
5473
5474 if((retVal = rtl8367c_setAsicReg(0x13C2, 0x0249)) != RT_ERR_OK)
5475 return retVal;
5476
5477 if((retVal = rtl8367c_getAsicReg(0x1300, &regValue)) != RT_ERR_OK)
5478 return retVal;
5479
5480 if((retVal = rtl8367c_setAsicReg(0x13C2, 0x0000)) != RT_ERR_OK)
5481 return retVal;
5482
5483 switch (regValue)
5484 {
5485 case 0x0276:
5486 case 0x0597:
5487 case 0x6367:
5488 type = 0;
5489 break;
5490 case 0x0652:
5491 case 0x6368:
5492 type = 1;
5493 break;
5494 case 0x0801:
5495 case 0x6511:
5496 type = 2;
5497 break;
5498 default:
5499 return RT_ERR_FAILED;
5500 }
5501
5502 if(type == 0)
5503 {
5504 if (1 == ext_id)
5505 {
5506 if ((retVal = rtl8367c_getAsicRegBit(0x130c, 5, &running))!=RT_ERR_OK)
5507 return retVal;
5508
5509 if(running == 1)
5510 {
5511 if ((retVal = rtl8367c_setAsicRegBit(0x130c, 5, 0))!=RT_ERR_OK)
5512 return retVal;
5513 }
5514
5515 retVal = rtl8367c_setAsicReg(0x6601, 0x0002);
5516
5517 if(retVal == RT_ERR_OK)
5518 retVal = rtl8367c_setAsicReg(0x6600, 0x0080);
5519
5520 if(retVal == RT_ERR_OK)
5521 retVal = rtl8367c_getAsicReg(0x6602, &regValue);
5522
5523 if(retVal == RT_ERR_OK)
5524 {
5525 if(state)
5526 regValue |= 0x0200;
5527 else
5528 regValue &= ~0x0200;
5529
5530 regValue |= 0x0100;
5531 }
5532
5533 if(retVal == RT_ERR_OK)
5534 retVal = rtl8367c_setAsicReg(0x6602, regValue);
5535
5536 if(retVal == RT_ERR_OK)
5537 retVal = rtl8367c_setAsicReg(0x6601, 0x0002);
5538
5539 if(retVal == RT_ERR_OK)
5540 retVal = rtl8367c_setAsicReg(0x6600, 0x00C0);
5541
5542 if(running == 1)
5543 {
5544 if ((retVal2 = rtl8367c_setAsicRegBit(0x130c, 5, 1))!=RT_ERR_OK)
5545 return retVal2;
5546 }
5547
5548 if(retVal != RT_ERR_OK)
5549 return retVal;
5550 }
5551 else
5552 return RT_ERR_PORT_ID;
5553 }
5554 else if(type == 1)
5555 {
5556 if (1 == ext_id)
5557 {
5558 if ((retVal = rtl8367c_setAsicReg(0x6601, 0x0002))!=RT_ERR_OK)
5559 return retVal;
5560 if ((retVal = rtl8367c_setAsicReg(0x6600, 0x0081))!=RT_ERR_OK)
5561 return retVal;
5562 if ((retVal = rtl8367c_getAsicReg(0x6602, &regValue))!=RT_ERR_OK)
5563 return retVal;
5564
5565 if(state)
5566 regValue |= 0x0200;
5567 else
5568 regValue &= ~0x0200;
5569
5570 regValue |= 0x0100;
5571
5572 if ((retVal = rtl8367c_setAsicReg(0x6602, regValue))!=RT_ERR_OK)
5573 return retVal;
5574 if ((retVal = rtl8367c_setAsicReg(0x6601, 0x0002))!=RT_ERR_OK)
5575 return retVal;
5576 if ((retVal = rtl8367c_setAsicReg(0x6600, 0x00C1))!=RT_ERR_OK)
5577 return retVal;
5578 }
5579 else if (2 == ext_id)
5580 {
5581 if ((retVal = rtl8367c_setAsicReg(0x6601, 0x0002))!=RT_ERR_OK)
5582 return retVal;
5583 if ((retVal = rtl8367c_setAsicReg(0x6600, 0x0080))!=RT_ERR_OK)
5584 return retVal;
5585 if ((retVal = rtl8367c_getAsicReg(0x6602, &regValue))!=RT_ERR_OK)
5586 return retVal;
5587
5588 if(state)
5589 regValue |= 0x0200;
5590 else
5591 regValue &= ~0x0200;
5592
5593 regValue |= 0x0100;
5594
5595 if ((retVal = rtl8367c_setAsicReg(0x6602, regValue))!=RT_ERR_OK)
5596 return retVal;
5597 if ((retVal = rtl8367c_setAsicReg(0x6601, 0x0002))!=RT_ERR_OK)
5598 return retVal;
5599 if ((retVal = rtl8367c_setAsicReg(0x6600, 0x00C0))!=RT_ERR_OK)
5600 return retVal;
5601 }
5602 else
5603 return RT_ERR_PORT_ID;
5604 }
5605 else if(type == 2)
5606 {
5607 if ((retVal = rtl8367c_getAsicSdsReg(0, 2, 0, &regValue))!=RT_ERR_OK)
5608 return retVal;
5609
5610 if(state & 1)
5611 regValue &= ~0x100;
5612 else
5613 regValue |= 0x100;
5614
5615 if ((retVal = rtl8367c_setAsicSdsReg(0, 2, 0, regValue))!=RT_ERR_OK)
5616 return retVal;
5617 }
5618
5619 return RT_ERR_OK;
5620 }
5621
5622 /* Function Name:
5623 * rtl8367c_getSgmiiNway
5624 * Description:
5625 * Get SGMII Nway
5626 * Input:
5627 * ext_id - EXT ID
5628 * state - SGMII Nway state
5629 * Output:
5630 * None.
5631 * Return:
5632 * RT_ERR_OK - Success
5633 * RT_ERR_SMI - SMI access error
5634 * Note:
5635 * None.
5636 */
5637 ret_t rtl8367c_getSgmiiNway(rtk_uint32 ext_id, rtk_uint32 *pState)
5638 {
5639 rtk_uint32 retVal, regValue, type, running = 0, retVal2;
5640
5641 if((retVal = rtl8367c_setAsicReg(0x13C2, 0x0249)) != RT_ERR_OK)
5642 return retVal;
5643
5644 if((retVal = rtl8367c_getAsicReg(0x1300, &regValue)) != RT_ERR_OK)
5645 return retVal;
5646
5647 if((retVal = rtl8367c_setAsicReg(0x13C2, 0x0000)) != RT_ERR_OK)
5648 return retVal;
5649
5650 switch (regValue)
5651 {
5652 case 0x0276:
5653 case 0x0597:
5654 case 0x6367:
5655 type = 0;
5656 break;
5657 case 0x0652:
5658 case 0x6368:
5659 type = 1;
5660 break;
5661 case 0x0801:
5662 case 0x6511:
5663 type = 2;
5664 break;
5665 default:
5666 return RT_ERR_FAILED;
5667 }
5668
5669 if(type == 0)
5670 {
5671 if (1 == ext_id)
5672 {
5673 if ((retVal = rtl8367c_getAsicRegBit(0x130c, 5, &running))!=RT_ERR_OK)
5674 return retVal;
5675
5676 if(running == 1)
5677 {
5678 if ((retVal = rtl8367c_setAsicRegBit(0x130c, 5, 0))!=RT_ERR_OK)
5679 return retVal;
5680 }
5681
5682 retVal = rtl8367c_setAsicReg(0x6601, 0x0002);
5683
5684 if(retVal == RT_ERR_OK)
5685 retVal = rtl8367c_setAsicReg(0x6600, 0x0080);
5686
5687 if(retVal == RT_ERR_OK)
5688 retVal = rtl8367c_getAsicReg(0x6602, &regValue);
5689
5690 if(running == 1)
5691 {
5692 if ((retVal2 = rtl8367c_setAsicRegBit(0x130c, 5, 1))!=RT_ERR_OK)
5693 return retVal2;
5694 }
5695
5696 if(retVal != RT_ERR_OK)
5697 return retVal;
5698
5699 if(regValue & 0x0200)
5700 *pState = 1;
5701 else
5702 *pState = 0;
5703 }
5704 else
5705 return RT_ERR_PORT_ID;
5706 }
5707 else if(type == 1)
5708 {
5709 if (1 == ext_id)
5710 {
5711 if ((retVal = rtl8367c_setAsicReg(0x6601, 0x0002))!=RT_ERR_OK)
5712 return retVal;
5713 if ((retVal = rtl8367c_setAsicReg(0x6600, 0x0081))!=RT_ERR_OK)
5714 return retVal;
5715 if ((retVal = rtl8367c_getAsicReg(0x6602, &regValue))!=RT_ERR_OK)
5716 return retVal;
5717
5718 if(regValue & 0x0200)
5719 *pState = 1;
5720 else
5721 *pState = 0;
5722 }
5723 else if (2 == ext_id)
5724 {
5725 if ((retVal = rtl8367c_setAsicReg(0x6601, 0x0002))!=RT_ERR_OK)
5726 return retVal;
5727 if ((retVal = rtl8367c_setAsicReg(0x6600, 0x0080))!=RT_ERR_OK)
5728 return retVal;
5729 if ((retVal = rtl8367c_getAsicReg(0x6602, &regValue))!=RT_ERR_OK)
5730 return retVal;
5731
5732 if(regValue & 0x0200)
5733 *pState = 1;
5734 else
5735 *pState = 0;
5736 }
5737 else
5738 return RT_ERR_PORT_ID;
5739 }
5740 else if(type == 2)
5741 {
5742 if ((retVal = rtl8367c_getAsicSdsReg(0, 2, 0, &regValue))!=RT_ERR_OK)
5743 return retVal;
5744
5745 if(regValue & 0x100)
5746 *pState = 0;
5747 else
5748 *pState = 1;
5749 }
5750
5751 return RT_ERR_OK;
5752 }