]>
Commit | Line | Data |
---|---|---|
9e758758 YS |
1 | /* |
2 | * Copyright 2012 Freescale Semiconductor, Inc. | |
3 | * | |
1a459660 | 4 | * SPDX-License-Identifier: GPL-2.0+ |
9e758758 YS |
5 | */ |
6 | ||
7 | #include <common.h> | |
8 | #include <asm/fsl_serdes.h> | |
9 | #include <asm/processor.h> | |
10 | #include <asm/io.h> | |
11 | #include "fsl_corenet2_serdes.h" | |
12 | ||
13 | struct serdes_config { | |
14 | u32 protocol; | |
15 | u8 lanes[SRDS_MAX_LANES]; | |
16 | }; | |
17 | ||
b6240846 | 18 | #ifdef CONFIG_PPC_T4240 |
924859ac | 19 | static const struct serdes_config serdes1_cfg_tbl[] = { |
9e758758 YS |
20 | /* SerDes 1 */ |
21 | {1, {XAUI_FM1_MAC9, XAUI_FM1_MAC9, | |
22 | XAUI_FM1_MAC9, XAUI_FM1_MAC9, | |
23 | XAUI_FM1_MAC10, XAUI_FM1_MAC10, | |
24 | XAUI_FM1_MAC10, XAUI_FM1_MAC10}}, | |
25 | {2, {HIGIG_FM1_MAC9, HIGIG_FM1_MAC9, | |
26 | HIGIG_FM1_MAC9, HIGIG_FM1_MAC9, | |
27 | HIGIG_FM1_MAC10, HIGIG_FM1_MAC10, | |
28 | HIGIG_FM1_MAC10, HIGIG_FM1_MAC10}}, | |
29 | {4, {HIGIG_FM1_MAC9, HIGIG_FM1_MAC9, | |
30 | HIGIG_FM1_MAC9, HIGIG_FM1_MAC9, | |
31 | HIGIG_FM1_MAC10, HIGIG_FM1_MAC10, | |
32 | HIGIG_FM1_MAC10, HIGIG_FM1_MAC10}}, | |
94752f60 SX |
33 | {27, {SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6, |
34 | SGMII_FM1_DTSEC10, SGMII_FM1_DTSEC9, | |
35 | SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2, | |
36 | SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4} }, | |
9e758758 YS |
37 | {28, {SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6, |
38 | SGMII_FM1_DTSEC10, SGMII_FM1_DTSEC9, | |
39 | SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2, | |
40 | SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4}}, | |
94752f60 SX |
41 | {35, {SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6, |
42 | SGMII_FM1_DTSEC10, SGMII_FM1_DTSEC9, | |
43 | SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2, | |
44 | SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4} }, | |
9e758758 YS |
45 | {36, {SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6, |
46 | SGMII_FM1_DTSEC10, SGMII_FM1_DTSEC9, | |
47 | SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2, | |
48 | SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4}}, | |
94752f60 SX |
49 | {37, {NONE, NONE, QSGMII_FM1_B, NONE, |
50 | NONE, NONE, QSGMII_FM1_A, NONE} }, | |
9e758758 YS |
51 | {38, {NONE, NONE, QSGMII_FM1_B, NONE, |
52 | NONE, NONE, QSGMII_FM1_A, NONE}}, | |
94752f60 SX |
53 | {39, {SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6, |
54 | SGMII_FM1_DTSEC10, SGMII_FM1_DTSEC9, | |
55 | NONE, NONE, QSGMII_FM1_A, NONE} }, | |
9e758758 YS |
56 | {40, {SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6, |
57 | SGMII_FM1_DTSEC10, SGMII_FM1_DTSEC9, | |
58 | NONE, NONE, QSGMII_FM1_A, NONE}}, | |
94752f60 SX |
59 | {45, {SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6, |
60 | SGMII_FM1_DTSEC10, SGMII_FM1_DTSEC9, | |
61 | NONE, NONE, QSGMII_FM1_A, NONE} }, | |
9e758758 YS |
62 | {46, {SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6, |
63 | SGMII_FM1_DTSEC10, SGMII_FM1_DTSEC9, | |
64 | NONE, NONE, QSGMII_FM1_A, NONE}}, | |
94752f60 SX |
65 | {47, {SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6, |
66 | SGMII_FM1_DTSEC10, SGMII_FM1_DTSEC9, | |
67 | NONE, NONE, QSGMII_FM1_A, NONE} }, | |
9e758758 YS |
68 | {48, {SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6, |
69 | SGMII_FM1_DTSEC10, SGMII_FM1_DTSEC9, | |
70 | NONE, NONE, QSGMII_FM1_A, NONE}}, | |
71 | {} | |
72 | }; | |
924859ac | 73 | static const struct serdes_config serdes2_cfg_tbl[] = { |
9e758758 YS |
74 | /* SerDes 2 */ |
75 | {1, {XAUI_FM2_MAC9, XAUI_FM2_MAC9, | |
76 | XAUI_FM2_MAC9, XAUI_FM2_MAC9, | |
77 | XAUI_FM2_MAC10, XAUI_FM2_MAC10, | |
78 | XAUI_FM2_MAC10, XAUI_FM2_MAC10}}, | |
79 | {2, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, | |
80 | HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, | |
81 | HIGIG_FM2_MAC10, HIGIG_FM2_MAC10, | |
82 | HIGIG_FM2_MAC10, HIGIG_FM2_MAC10}}, | |
83 | {4, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, | |
84 | HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, | |
85 | HIGIG_FM2_MAC10, HIGIG_FM2_MAC10, | |
86 | HIGIG_FM2_MAC10, HIGIG_FM2_MAC10}}, | |
94752f60 SX |
87 | {6, {XAUI_FM2_MAC9, XAUI_FM2_MAC9, |
88 | XAUI_FM2_MAC9, XAUI_FM2_MAC9, | |
89 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
90 | SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} }, | |
9e758758 YS |
91 | {7, {XAUI_FM2_MAC9, XAUI_FM2_MAC9, |
92 | XAUI_FM2_MAC9, XAUI_FM2_MAC9, | |
93 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
94 | SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4}}, | |
94752f60 SX |
95 | {12, {XAUI_FM2_MAC9, XAUI_FM2_MAC9, |
96 | XAUI_FM2_MAC9, XAUI_FM2_MAC9, | |
97 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
98 | SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} }, | |
9e758758 YS |
99 | {13, {XAUI_FM2_MAC9, XAUI_FM2_MAC9, |
100 | XAUI_FM2_MAC9, XAUI_FM2_MAC9, | |
101 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
102 | SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4}}, | |
103 | {14, {XAUI_FM2_MAC9, XAUI_FM2_MAC9, | |
104 | XAUI_FM2_MAC9, XAUI_FM2_MAC9, | |
105 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
106 | SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4}}, | |
94752f60 SX |
107 | {15, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, |
108 | HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, | |
109 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
110 | SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} }, | |
9e758758 YS |
111 | {16, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, |
112 | HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, | |
113 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
114 | SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4}}, | |
94752f60 SX |
115 | {21, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, |
116 | HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, | |
117 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
118 | SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} }, | |
9e758758 YS |
119 | {22, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, |
120 | HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, | |
121 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
122 | SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4}}, | |
123 | {23, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, | |
124 | HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, | |
125 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
126 | SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4}}, | |
94752f60 SX |
127 | {24, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, |
128 | HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, | |
129 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
130 | SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} }, | |
9e758758 YS |
131 | {25, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, |
132 | HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, | |
133 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
134 | SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4}}, | |
135 | {26, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, | |
136 | HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, | |
137 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
138 | SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4}}, | |
94752f60 SX |
139 | {27, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6, |
140 | SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9, | |
141 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
142 | SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} }, | |
9e758758 YS |
143 | {28, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6, |
144 | SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9, | |
145 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
146 | SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4}}, | |
94752f60 SX |
147 | {35, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6, |
148 | SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9, | |
149 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
150 | SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} }, | |
9e758758 YS |
151 | {36, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6, |
152 | SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9, | |
153 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
154 | SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4}}, | |
94752f60 SX |
155 | {37, {NONE, NONE, QSGMII_FM2_B, NONE, |
156 | NONE, NONE, QSGMII_FM2_A, NONE} }, | |
9e758758 | 157 | {38, {NONE, NONE, QSGMII_FM2_B, NONE, |
1c68d01e | 158 | NONE, NONE, QSGMII_FM2_A, NONE} }, |
94752f60 SX |
159 | {39, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6, |
160 | SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9, | |
161 | NONE, NONE, QSGMII_FM2_A, NONE} }, | |
9e758758 YS |
162 | {40, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6, |
163 | SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9, | |
1c68d01e | 164 | NONE, NONE, QSGMII_FM2_A, NONE} }, |
94752f60 SX |
165 | {45, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6, |
166 | SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9, | |
167 | NONE, NONE, QSGMII_FM2_A, NONE} }, | |
9e758758 YS |
168 | {46, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6, |
169 | SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9, | |
1c68d01e | 170 | NONE, NONE, QSGMII_FM2_A, NONE} }, |
94752f60 SX |
171 | {47, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6, |
172 | SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9, | |
173 | NONE, NONE, QSGMII_FM2_A, NONE} }, | |
9e758758 YS |
174 | {48, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6, |
175 | SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9, | |
1c68d01e | 176 | NONE, NONE, QSGMII_FM2_A, NONE} }, |
94752f60 SX |
177 | {49, {XAUI_FM2_MAC9, XAUI_FM2_MAC9, |
178 | XAUI_FM2_MAC9, XAUI_FM2_MAC9, | |
179 | NONE, NONE, QSGMII_FM2_A, NONE} }, | |
9e758758 YS |
180 | {50, {XAUI_FM2_MAC9, XAUI_FM2_MAC9, |
181 | XAUI_FM2_MAC9, XAUI_FM2_MAC9, | |
1c68d01e | 182 | NONE, NONE, QSGMII_FM2_A, NONE} }, |
94752f60 SX |
183 | {51, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, |
184 | HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, | |
185 | NONE, NONE, QSGMII_FM2_A, NONE} }, | |
9e758758 YS |
186 | {52, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, |
187 | HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, | |
1c68d01e | 188 | NONE, NONE, QSGMII_FM2_A, NONE} }, |
94752f60 SX |
189 | {53, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, |
190 | HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, | |
191 | NONE, NONE, QSGMII_FM2_A, NONE} }, | |
9e758758 YS |
192 | {54, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, |
193 | HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, | |
1c68d01e | 194 | NONE, NONE, QSGMII_FM2_A, NONE} }, |
94752f60 SX |
195 | {55, {XFI_FM1_MAC9, XFI_FM1_MAC10, |
196 | XFI_FM2_MAC10, XFI_FM2_MAC9, | |
197 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
198 | SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} }, | |
9e758758 YS |
199 | {56, {XFI_FM1_MAC9, XFI_FM1_MAC10, |
200 | XFI_FM2_MAC10, XFI_FM2_MAC9, | |
201 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
202 | SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4}}, | |
203 | {57, {XFI_FM1_MAC9, XFI_FM1_MAC10, | |
204 | XFI_FM2_MAC10, XFI_FM2_MAC9, | |
205 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
206 | SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4}}, | |
207 | {} | |
208 | }; | |
924859ac | 209 | static const struct serdes_config serdes3_cfg_tbl[] = { |
9e758758 | 210 | /* SerDes 3 */ |
94752f60 | 211 | {1, {PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1} }, |
9e758758 | 212 | {2, {PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1}}, |
94752f60 | 213 | {3, {PCIE1, PCIE1, PCIE1, PCIE1, PCIE2, PCIE2, PCIE2, PCIE2} }, |
9e758758 | 214 | {4, {PCIE1, PCIE1, PCIE1, PCIE1, PCIE2, PCIE2, PCIE2, PCIE2}}, |
94752f60 | 215 | {5, {PCIE1, PCIE1, PCIE1, PCIE1, SRIO1, SRIO1, SRIO1, SRIO1} }, |
9e758758 | 216 | {6, {PCIE1, PCIE1, PCIE1, PCIE1, SRIO1, SRIO1, SRIO1, SRIO1}}, |
4bf7f908 SX |
217 | {7, {PCIE1, PCIE1, PCIE1, PCIE1, SRIO1, SRIO1, SRIO1, SRIO1} }, |
218 | {8, {PCIE1, PCIE1, PCIE1, PCIE1, SRIO1, SRIO1, SRIO1, SRIO1} }, | |
9e758758 YS |
219 | {9, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN, |
220 | INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN}}, | |
221 | {10, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN, | |
222 | INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN}}, | |
94752f60 SX |
223 | {11, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN, |
224 | PCIE2, PCIE2, PCIE2, PCIE2} }, | |
9e758758 YS |
225 | {12, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN, |
226 | PCIE2, PCIE2, PCIE2, PCIE2}}, | |
94752f60 SX |
227 | {13, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN, |
228 | PCIE2, PCIE2, PCIE2, PCIE2} }, | |
9e758758 YS |
229 | {14, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN, |
230 | PCIE2, PCIE2, PCIE2, PCIE2}}, | |
94752f60 SX |
231 | {15, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN, |
232 | SRIO1, SRIO1, SRIO1, SRIO1} }, | |
9e758758 YS |
233 | {16, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN, |
234 | SRIO1, SRIO1, SRIO1, SRIO1}}, | |
235 | {17, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN, | |
236 | SRIO1, SRIO1, SRIO1, SRIO1}}, | |
94752f60 SX |
237 | {18, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN, |
238 | SRIO1, SRIO1, SRIO1, SRIO1} }, | |
9e758758 YS |
239 | {19, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN, |
240 | SRIO1, SRIO1, SRIO1, SRIO1}}, | |
241 | {20, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN, | |
242 | SRIO1, SRIO1, SRIO1, SRIO1}}, | |
243 | {} | |
244 | }; | |
924859ac | 245 | static const struct serdes_config serdes4_cfg_tbl[] = { |
9e758758 | 246 | /* SerDes 4 */ |
94752f60 | 247 | {1, {PCIE3, PCIE3, PCIE3, PCIE3, PCIE3, PCIE3, PCIE3, PCIE3} }, |
9e758758 | 248 | {2, {PCIE3, PCIE3, PCIE3, PCIE3, PCIE3, PCIE3, PCIE3, PCIE3}}, |
94752f60 | 249 | {3, {PCIE3, PCIE3, PCIE3, PCIE3, PCIE4, PCIE4, PCIE4, PCIE4} }, |
9e758758 | 250 | {4, {PCIE3, PCIE3, PCIE3, PCIE3, PCIE4, PCIE4, PCIE4, PCIE4}}, |
94752f60 | 251 | {5, {PCIE3, PCIE3, PCIE3, PCIE3, SRIO2, SRIO2, SRIO2, SRIO2} }, |
9e758758 | 252 | {6, {PCIE3, PCIE3, PCIE3, PCIE3, SRIO2, SRIO2, SRIO2, SRIO2}}, |
94752f60 | 253 | {7, {PCIE3, PCIE3, PCIE3, PCIE3, SRIO2, SRIO2, SRIO2, SRIO2} }, |
9e758758 | 254 | {8, {PCIE3, PCIE3, PCIE3, PCIE3, SRIO2, SRIO2, SRIO2, SRIO2}}, |
94752f60 | 255 | {9, {PCIE3, PCIE3, PCIE3, PCIE3, PCIE4, PCIE4, SATA1, SATA2} }, |
f9772444 | 256 | {10, {PCIE3, PCIE3, PCIE3, PCIE3, PCIE4, PCIE4, SATA1, SATA2} }, |
94752f60 | 257 | {11, {PCIE3, PCIE3, PCIE3, PCIE3, AURORA, AURORA, SATA1, SATA2} }, |
f9772444 | 258 | {12, {PCIE3, PCIE3, PCIE3, PCIE3, AURORA, AURORA, SATA1, SATA2} }, |
94752f60 | 259 | {13, {PCIE3, PCIE3, PCIE3, PCIE3, AURORA, AURORA, SRIO2, SRIO2} }, |
9e758758 | 260 | {14, {PCIE3, PCIE3, PCIE3, PCIE3, AURORA, AURORA, SRIO2, SRIO2}}, |
94752f60 | 261 | {15, {PCIE3, PCIE3, PCIE3, PCIE3, AURORA, AURORA, SRIO2, SRIO2} }, |
9e758758 YS |
262 | {16, {PCIE3, PCIE3, PCIE3, PCIE3, AURORA, AURORA, SRIO2, SRIO2}}, |
263 | {18, {PCIE3, PCIE3, PCIE3, PCIE3, AURORA, AURORA, AURORA, AURORA}}, | |
264 | {} | |
265 | }; | |
652a7bbd | 266 | #elif defined(CONFIG_ARCH_T4160) || defined(CONFIG_PPC_T4080) |
b6240846 YS |
267 | static const struct serdes_config serdes1_cfg_tbl[] = { |
268 | /* SerDes 1 */ | |
4bf7f908 | 269 | {1, {NONE, NONE, NONE, NONE, |
b6240846 YS |
270 | XAUI_FM1_MAC10, XAUI_FM1_MAC10, |
271 | XAUI_FM1_MAC10, XAUI_FM1_MAC10} }, | |
4bf7f908 | 272 | {2, {NONE, NONE, NONE, NONE, |
b6240846 YS |
273 | HIGIG_FM1_MAC10, HIGIG_FM1_MAC10, |
274 | HIGIG_FM1_MAC10, HIGIG_FM1_MAC10} }, | |
4bf7f908 | 275 | {4, {NONE, NONE, NONE, NONE, |
b6240846 YS |
276 | HIGIG_FM1_MAC10, HIGIG_FM1_MAC10, |
277 | HIGIG_FM1_MAC10, HIGIG_FM1_MAC10} }, | |
4bf7f908 | 278 | {27, {NONE, NONE, NONE, NONE, |
94752f60 SX |
279 | SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2, |
280 | SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4} }, | |
4bf7f908 | 281 | {28, {NONE, NONE, NONE, NONE, |
b6240846 YS |
282 | SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2, |
283 | SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4} }, | |
4bf7f908 | 284 | {35, {NONE, NONE, NONE, NONE, |
94752f60 SX |
285 | SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2, |
286 | SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4} }, | |
4bf7f908 | 287 | {36, {NONE, NONE, NONE, NONE, |
b6240846 YS |
288 | SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2, |
289 | SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4} }, | |
4bf7f908 | 290 | {37, {NONE, NONE, NONE, NONE, |
94752f60 | 291 | NONE, NONE, QSGMII_FM1_A, NONE} }, |
4bf7f908 | 292 | {38, {NONE, NONE, NONE, NONE, |
b6240846 YS |
293 | NONE, NONE, QSGMII_FM1_A, NONE} }, |
294 | {} | |
295 | }; | |
296 | static const struct serdes_config serdes2_cfg_tbl[] = { | |
297 | /* SerDes 2 */ | |
94752f60 SX |
298 | {6, {XAUI_FM2_MAC9, XAUI_FM2_MAC9, |
299 | XAUI_FM2_MAC9, XAUI_FM2_MAC9, | |
300 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
301 | SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} }, | |
b6240846 YS |
302 | {7, {XAUI_FM2_MAC9, XAUI_FM2_MAC9, |
303 | XAUI_FM2_MAC9, XAUI_FM2_MAC9, | |
304 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
305 | SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} }, | |
94752f60 SX |
306 | {12, {XAUI_FM2_MAC9, XAUI_FM2_MAC9, |
307 | XAUI_FM2_MAC9, XAUI_FM2_MAC9, | |
308 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
309 | SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} }, | |
b6240846 YS |
310 | {13, {XAUI_FM2_MAC9, XAUI_FM2_MAC9, |
311 | XAUI_FM2_MAC9, XAUI_FM2_MAC9, | |
312 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
313 | SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} }, | |
94752f60 SX |
314 | {15, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, |
315 | HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, | |
316 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
317 | SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} }, | |
b6240846 YS |
318 | {16, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, |
319 | HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, | |
320 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
321 | SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} }, | |
94752f60 SX |
322 | {21, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, |
323 | HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, | |
324 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
325 | SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} }, | |
b6240846 YS |
326 | {22, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, |
327 | HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, | |
328 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
329 | SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} }, | |
94752f60 SX |
330 | {24, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, |
331 | HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, | |
332 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
333 | SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} }, | |
b6240846 YS |
334 | {25, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, |
335 | HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, | |
336 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
337 | SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} }, | |
338 | {26, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, | |
339 | HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, | |
340 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
341 | NONE, NONE} }, | |
94752f60 SX |
342 | {27, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6, |
343 | SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9, | |
344 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
345 | SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} }, | |
b6240846 YS |
346 | {28, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6, |
347 | SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9, | |
348 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
349 | SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} }, | |
94752f60 SX |
350 | {35, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6, |
351 | SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9, | |
352 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
353 | SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} }, | |
b6240846 YS |
354 | {36, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6, |
355 | SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9, | |
356 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
357 | SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} }, | |
94752f60 | 358 | {37, {NONE, NONE, QSGMII_FM2_B, NONE, |
4bf7f908 | 359 | NONE, NONE, QSGMII_FM2_A, NONE} }, |
b6240846 | 360 | {38, {NONE, NONE, QSGMII_FM2_B, NONE, |
4bf7f908 | 361 | NONE, NONE, QSGMII_FM2_A, NONE} }, |
94752f60 SX |
362 | {39, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6, |
363 | SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9, | |
4bf7f908 | 364 | NONE, NONE, QSGMII_FM2_A, NONE} }, |
b6240846 YS |
365 | {40, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6, |
366 | SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9, | |
4bf7f908 | 367 | NONE, NONE, QSGMII_FM2_A, NONE} }, |
94752f60 SX |
368 | {45, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6, |
369 | SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9, | |
4bf7f908 | 370 | NONE, NONE, QSGMII_FM2_A, NONE} }, |
b6240846 YS |
371 | {46, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6, |
372 | SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9, | |
4bf7f908 | 373 | NONE, NONE, QSGMII_FM2_A, NONE} }, |
94752f60 SX |
374 | {47, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6, |
375 | SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9, | |
4bf7f908 | 376 | NONE, NONE, QSGMII_FM2_A, NONE} }, |
b6240846 YS |
377 | {48, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6, |
378 | SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9, | |
4bf7f908 | 379 | NONE, NONE, QSGMII_FM2_A, NONE} }, |
94752f60 SX |
380 | {49, {XAUI_FM2_MAC9, XAUI_FM2_MAC9, |
381 | XAUI_FM2_MAC9, XAUI_FM2_MAC9, | |
4bf7f908 | 382 | NONE, NONE, QSGMII_FM2_A, NONE} }, |
b6240846 YS |
383 | {50, {XAUI_FM2_MAC9, XAUI_FM2_MAC9, |
384 | XAUI_FM2_MAC9, XAUI_FM2_MAC9, | |
4bf7f908 | 385 | NONE, NONE, QSGMII_FM2_A, NONE} }, |
94752f60 SX |
386 | {51, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, |
387 | HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, | |
4bf7f908 | 388 | NONE, NONE, QSGMII_FM2_A, NONE} }, |
b6240846 YS |
389 | {52, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, |
390 | HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, | |
4bf7f908 | 391 | NONE, NONE, QSGMII_FM2_A, NONE} }, |
94752f60 SX |
392 | {53, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, |
393 | HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, | |
4bf7f908 | 394 | NONE, NONE, QSGMII_FM2_A, NONE} }, |
b6240846 YS |
395 | {54, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, |
396 | HIGIG_FM2_MAC9, HIGIG_FM2_MAC9, | |
4bf7f908 | 397 | NONE, NONE, QSGMII_FM2_A, NONE} }, |
94752f60 SX |
398 | {55, {NONE, XFI_FM1_MAC10, |
399 | XFI_FM2_MAC10, NONE, | |
400 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
401 | SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} }, | |
b6240846 YS |
402 | {56, {NONE, XFI_FM1_MAC10, |
403 | XFI_FM2_MAC10, NONE, | |
404 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
405 | SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} }, | |
406 | {57, {NONE, XFI_FM1_MAC10, | |
407 | XFI_FM2_MAC10, NONE, | |
408 | SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2, | |
409 | NONE, NONE} }, | |
410 | {} | |
411 | }; | |
412 | static const struct serdes_config serdes3_cfg_tbl[] = { | |
413 | /* SerDes 3 */ | |
94752f60 | 414 | {1, {PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1} }, |
b6240846 | 415 | {2, {PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1} }, |
94752f60 | 416 | {3, {PCIE1, PCIE1, PCIE1, PCIE1, PCIE2, PCIE2, PCIE2, PCIE2} }, |
b6240846 | 417 | {4, {PCIE1, PCIE1, PCIE1, PCIE1, PCIE2, PCIE2, PCIE2, PCIE2} }, |
94752f60 | 418 | {5, {PCIE1, PCIE1, PCIE1, PCIE1, SRIO1, SRIO1, SRIO1, SRIO1} }, |
b6240846 | 419 | {6, {PCIE1, PCIE1, PCIE1, PCIE1, SRIO1, SRIO1, SRIO1, SRIO1} }, |
4bf7f908 SX |
420 | {7, {PCIE1, PCIE1, PCIE1, PCIE1, SRIO1, SRIO1, SRIO1, SRIO1} }, |
421 | {8, {PCIE1, PCIE1, PCIE1, PCIE1, SRIO1, SRIO1, SRIO1, SRIO1} }, | |
b6240846 YS |
422 | {9, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN, |
423 | INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN} }, | |
424 | {10, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN, | |
425 | INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN} }, | |
4bf7f908 | 426 | {11, {NONE, NONE, NONE, NONE, |
94752f60 | 427 | PCIE2, PCIE2, PCIE2, PCIE2} }, |
4bf7f908 | 428 | {12, {NONE, NONE, NONE, NONE, |
b6240846 | 429 | PCIE2, PCIE2, PCIE2, PCIE2} }, |
94752f60 SX |
430 | {13, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN, |
431 | PCIE2, PCIE2, PCIE2, PCIE2} }, | |
b6240846 YS |
432 | {14, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN, |
433 | PCIE2, PCIE2, PCIE2, PCIE2} }, | |
4bf7f908 | 434 | {15, {NONE, NONE, NONE, NONE, |
94752f60 | 435 | SRIO1, SRIO1, SRIO1, SRIO1} }, |
4bf7f908 | 436 | {16, {NONE, NONE, NONE, NONE, |
b6240846 | 437 | SRIO1, SRIO1, SRIO1, SRIO1} }, |
4bf7f908 | 438 | {17, {NONE, NONE, NONE, NONE, |
b6240846 | 439 | SRIO1, SRIO1, SRIO1, SRIO1} }, |
94752f60 SX |
440 | {18, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN, |
441 | SRIO1, SRIO1, SRIO1, SRIO1} }, | |
b6240846 YS |
442 | {19, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN, |
443 | SRIO1, SRIO1, SRIO1, SRIO1} }, | |
444 | {20, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN, | |
4bf7f908 | 445 | SRIO1, SRIO1, SRIO1, SRIO1} }, |
b6240846 YS |
446 | {} |
447 | }; | |
448 | static const struct serdes_config serdes4_cfg_tbl[] = { | |
449 | /* SerDes 4 */ | |
4bf7f908 SX |
450 | {3, {NONE, NONE, NONE, NONE, PCIE4, PCIE4, PCIE4, PCIE4} }, |
451 | {4, {NONE, NONE, NONE, NONE, PCIE4, PCIE4, PCIE4, PCIE4} }, | |
452 | {5, {NONE, NONE, NONE, NONE, SRIO2, SRIO2, SRIO2, SRIO2} }, | |
453 | {6, {NONE, NONE, NONE, NONE, SRIO2, SRIO2, SRIO2, SRIO2} }, | |
454 | {7, {NONE, NONE, NONE, NONE, SRIO2, SRIO2, SRIO2, SRIO2} }, | |
455 | {8, {NONE, NONE, NONE, NONE, SRIO2, SRIO2, SRIO2, SRIO2} }, | |
456 | {9, {NONE, NONE, NONE, NONE, PCIE4, PCIE4, SATA1, SATA2} }, | |
457 | {10, {NONE, NONE, NONE, NONE, PCIE4, PCIE4, SATA1, SATA2} }, | |
458 | {11, {NONE, NONE, NONE, NONE, AURORA, AURORA, SATA1, SATA2} }, | |
459 | {12, {NONE, NONE, NONE, NONE, AURORA, AURORA, SATA1, SATA2} }, | |
460 | {13, {NONE, NONE, NONE, NONE, AURORA, AURORA, SRIO2, SRIO2} }, | |
461 | {14, {NONE, NONE, NONE, NONE, AURORA, AURORA, SRIO2, SRIO2} }, | |
462 | {15, {NONE, NONE, NONE, NONE, AURORA, AURORA, SRIO2, SRIO2} }, | |
463 | {16, {NONE, NONE, NONE, NONE, AURORA, AURORA, SRIO2, SRIO2} }, | |
464 | {18, {NONE, NONE, NONE, NONE, AURORA, AURORA, AURORA, AURORA} }, | |
b6240846 YS |
465 | {} |
466 | } | |
467 | ; | |
468 | #else | |
469 | #error "Need to define SerDes protocol" | |
470 | #endif | |
924859ac | 471 | static const struct serdes_config *serdes_cfg_tbl[] = { |
9e758758 YS |
472 | serdes1_cfg_tbl, |
473 | serdes2_cfg_tbl, | |
474 | serdes3_cfg_tbl, | |
475 | serdes4_cfg_tbl, | |
476 | }; | |
477 | ||
478 | enum srds_prtcl serdes_get_prtcl(int serdes, int cfg, int lane) | |
479 | { | |
924859ac | 480 | const struct serdes_config *ptr; |
9e758758 YS |
481 | |
482 | if (serdes >= ARRAY_SIZE(serdes_cfg_tbl)) | |
483 | return 0; | |
484 | ||
485 | ptr = serdes_cfg_tbl[serdes]; | |
486 | while (ptr->protocol) { | |
487 | if (ptr->protocol == cfg) | |
488 | return ptr->lanes[lane]; | |
489 | ptr++; | |
490 | } | |
491 | return 0; | |
492 | } | |
493 | ||
494 | int is_serdes_prtcl_valid(int serdes, u32 prtcl) | |
495 | { | |
496 | int i; | |
924859ac | 497 | const struct serdes_config *ptr; |
9e758758 YS |
498 | |
499 | if (serdes >= ARRAY_SIZE(serdes_cfg_tbl)) | |
500 | return 0; | |
501 | ||
502 | ptr = serdes_cfg_tbl[serdes]; | |
503 | while (ptr->protocol) { | |
504 | if (ptr->protocol == prtcl) | |
505 | break; | |
506 | ptr++; | |
507 | } | |
508 | ||
509 | if (!ptr->protocol) | |
510 | return 0; | |
511 | ||
512 | for (i = 0; i < SRDS_MAX_LANES; i++) { | |
513 | if (ptr->lanes[i] != NONE) | |
514 | return 1; | |
515 | } | |
516 | ||
517 | return 0; | |
518 | } |