19e758758SYork Sun /*
29e758758SYork Sun * Copyright 2012 Freescale Semiconductor, Inc.
39e758758SYork Sun *
41a459660SWolfgang Denk * SPDX-License-Identifier: GPL-2.0+
59e758758SYork Sun */
69e758758SYork Sun
79e758758SYork Sun #include <common.h>
89e758758SYork Sun #include <asm/fsl_serdes.h>
99e758758SYork Sun #include <asm/processor.h>
109e758758SYork Sun #include <asm/io.h>
119e758758SYork Sun #include "fsl_corenet2_serdes.h"
129e758758SYork Sun
139e758758SYork Sun struct serdes_config {
149e758758SYork Sun u32 protocol;
159e758758SYork Sun u8 lanes[SRDS_MAX_LANES];
169e758758SYork Sun };
179e758758SYork Sun
1826bc57daSYork Sun #ifdef CONFIG_ARCH_T4240
19924859acSYork Sun static const struct serdes_config serdes1_cfg_tbl[] = {
209e758758SYork Sun /* SerDes 1 */
219e758758SYork Sun {1, {XAUI_FM1_MAC9, XAUI_FM1_MAC9,
229e758758SYork Sun XAUI_FM1_MAC9, XAUI_FM1_MAC9,
239e758758SYork Sun XAUI_FM1_MAC10, XAUI_FM1_MAC10,
249e758758SYork Sun XAUI_FM1_MAC10, XAUI_FM1_MAC10}},
259e758758SYork Sun {2, {HIGIG_FM1_MAC9, HIGIG_FM1_MAC9,
269e758758SYork Sun HIGIG_FM1_MAC9, HIGIG_FM1_MAC9,
279e758758SYork Sun HIGIG_FM1_MAC10, HIGIG_FM1_MAC10,
289e758758SYork Sun HIGIG_FM1_MAC10, HIGIG_FM1_MAC10}},
299e758758SYork Sun {4, {HIGIG_FM1_MAC9, HIGIG_FM1_MAC9,
309e758758SYork Sun HIGIG_FM1_MAC9, HIGIG_FM1_MAC9,
319e758758SYork Sun HIGIG_FM1_MAC10, HIGIG_FM1_MAC10,
329e758758SYork Sun HIGIG_FM1_MAC10, HIGIG_FM1_MAC10}},
3394752f60SShaohui Xie {27, {SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6,
3494752f60SShaohui Xie SGMII_FM1_DTSEC10, SGMII_FM1_DTSEC9,
3594752f60SShaohui Xie SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
3694752f60SShaohui Xie SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4} },
379e758758SYork Sun {28, {SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6,
389e758758SYork Sun SGMII_FM1_DTSEC10, SGMII_FM1_DTSEC9,
399e758758SYork Sun SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
409e758758SYork Sun SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4}},
4194752f60SShaohui Xie {35, {SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6,
4294752f60SShaohui Xie SGMII_FM1_DTSEC10, SGMII_FM1_DTSEC9,
4394752f60SShaohui Xie SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
4494752f60SShaohui Xie SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4} },
459e758758SYork Sun {36, {SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6,
469e758758SYork Sun SGMII_FM1_DTSEC10, SGMII_FM1_DTSEC9,
479e758758SYork Sun SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
489e758758SYork Sun SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4}},
4994752f60SShaohui Xie {37, {NONE, NONE, QSGMII_FM1_B, NONE,
5094752f60SShaohui Xie NONE, NONE, QSGMII_FM1_A, NONE} },
519e758758SYork Sun {38, {NONE, NONE, QSGMII_FM1_B, NONE,
529e758758SYork Sun NONE, NONE, QSGMII_FM1_A, NONE}},
5394752f60SShaohui Xie {39, {SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6,
5494752f60SShaohui Xie SGMII_FM1_DTSEC10, SGMII_FM1_DTSEC9,
5594752f60SShaohui Xie NONE, NONE, QSGMII_FM1_A, NONE} },
569e758758SYork Sun {40, {SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6,
579e758758SYork Sun SGMII_FM1_DTSEC10, SGMII_FM1_DTSEC9,
589e758758SYork Sun NONE, NONE, QSGMII_FM1_A, NONE}},
5994752f60SShaohui Xie {45, {SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6,
6094752f60SShaohui Xie SGMII_FM1_DTSEC10, SGMII_FM1_DTSEC9,
6194752f60SShaohui Xie NONE, NONE, QSGMII_FM1_A, NONE} },
629e758758SYork Sun {46, {SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6,
639e758758SYork Sun SGMII_FM1_DTSEC10, SGMII_FM1_DTSEC9,
649e758758SYork Sun NONE, NONE, QSGMII_FM1_A, NONE}},
6594752f60SShaohui Xie {47, {SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6,
6694752f60SShaohui Xie SGMII_FM1_DTSEC10, SGMII_FM1_DTSEC9,
6794752f60SShaohui Xie NONE, NONE, QSGMII_FM1_A, NONE} },
689e758758SYork Sun {48, {SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6,
699e758758SYork Sun SGMII_FM1_DTSEC10, SGMII_FM1_DTSEC9,
709e758758SYork Sun NONE, NONE, QSGMII_FM1_A, NONE}},
719e758758SYork Sun {}
729e758758SYork Sun };
73924859acSYork Sun static const struct serdes_config serdes2_cfg_tbl[] = {
749e758758SYork Sun /* SerDes 2 */
759e758758SYork Sun {1, {XAUI_FM2_MAC9, XAUI_FM2_MAC9,
769e758758SYork Sun XAUI_FM2_MAC9, XAUI_FM2_MAC9,
779e758758SYork Sun XAUI_FM2_MAC10, XAUI_FM2_MAC10,
789e758758SYork Sun XAUI_FM2_MAC10, XAUI_FM2_MAC10}},
799e758758SYork Sun {2, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
809e758758SYork Sun HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
819e758758SYork Sun HIGIG_FM2_MAC10, HIGIG_FM2_MAC10,
829e758758SYork Sun HIGIG_FM2_MAC10, HIGIG_FM2_MAC10}},
839e758758SYork Sun {4, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
849e758758SYork Sun HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
859e758758SYork Sun HIGIG_FM2_MAC10, HIGIG_FM2_MAC10,
869e758758SYork Sun HIGIG_FM2_MAC10, HIGIG_FM2_MAC10}},
8794752f60SShaohui Xie {6, {XAUI_FM2_MAC9, XAUI_FM2_MAC9,
8894752f60SShaohui Xie XAUI_FM2_MAC9, XAUI_FM2_MAC9,
8994752f60SShaohui Xie SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
9094752f60SShaohui Xie SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} },
919e758758SYork Sun {7, {XAUI_FM2_MAC9, XAUI_FM2_MAC9,
929e758758SYork Sun XAUI_FM2_MAC9, XAUI_FM2_MAC9,
939e758758SYork Sun SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
949e758758SYork Sun SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4}},
9594752f60SShaohui Xie {12, {XAUI_FM2_MAC9, XAUI_FM2_MAC9,
9694752f60SShaohui Xie XAUI_FM2_MAC9, XAUI_FM2_MAC9,
9794752f60SShaohui Xie SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
9894752f60SShaohui Xie SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} },
999e758758SYork Sun {13, {XAUI_FM2_MAC9, XAUI_FM2_MAC9,
1009e758758SYork Sun XAUI_FM2_MAC9, XAUI_FM2_MAC9,
1019e758758SYork Sun SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
1029e758758SYork Sun SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4}},
1039e758758SYork Sun {14, {XAUI_FM2_MAC9, XAUI_FM2_MAC9,
1049e758758SYork Sun XAUI_FM2_MAC9, XAUI_FM2_MAC9,
1059e758758SYork Sun SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
1069e758758SYork Sun SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4}},
10794752f60SShaohui Xie {15, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
10894752f60SShaohui Xie HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
10994752f60SShaohui Xie SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
11094752f60SShaohui Xie SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} },
1119e758758SYork Sun {16, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
1129e758758SYork Sun HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
1139e758758SYork Sun SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
1149e758758SYork Sun SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4}},
11594752f60SShaohui Xie {21, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
11694752f60SShaohui Xie HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
11794752f60SShaohui Xie SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
11894752f60SShaohui Xie SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} },
1199e758758SYork Sun {22, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
1209e758758SYork Sun HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
1219e758758SYork Sun SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
1229e758758SYork Sun SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4}},
1239e758758SYork Sun {23, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
1249e758758SYork Sun HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
1259e758758SYork Sun SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
1269e758758SYork Sun SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4}},
12794752f60SShaohui Xie {24, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
12894752f60SShaohui Xie HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
12994752f60SShaohui Xie SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
13094752f60SShaohui Xie SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} },
1319e758758SYork Sun {25, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
1329e758758SYork Sun HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
1339e758758SYork Sun SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
1349e758758SYork Sun SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4}},
1359e758758SYork Sun {26, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
1369e758758SYork Sun HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
1379e758758SYork Sun SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
1389e758758SYork Sun SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4}},
13994752f60SShaohui Xie {27, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6,
14094752f60SShaohui Xie SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9,
14194752f60SShaohui Xie SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
14294752f60SShaohui Xie SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} },
1439e758758SYork Sun {28, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6,
1449e758758SYork Sun SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9,
1459e758758SYork Sun SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
1469e758758SYork Sun SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4}},
14794752f60SShaohui Xie {35, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6,
14894752f60SShaohui Xie SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9,
14994752f60SShaohui Xie SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
15094752f60SShaohui Xie SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} },
1519e758758SYork Sun {36, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6,
1529e758758SYork Sun SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9,
1539e758758SYork Sun SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
1549e758758SYork Sun SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4}},
15594752f60SShaohui Xie {37, {NONE, NONE, QSGMII_FM2_B, NONE,
15694752f60SShaohui Xie NONE, NONE, QSGMII_FM2_A, NONE} },
1579e758758SYork Sun {38, {NONE, NONE, QSGMII_FM2_B, NONE,
1581c68d01eSShaohui Xie NONE, NONE, QSGMII_FM2_A, NONE} },
15994752f60SShaohui Xie {39, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6,
16094752f60SShaohui Xie SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9,
16194752f60SShaohui Xie NONE, NONE, QSGMII_FM2_A, NONE} },
1629e758758SYork Sun {40, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6,
1639e758758SYork Sun SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9,
1641c68d01eSShaohui Xie NONE, NONE, QSGMII_FM2_A, NONE} },
16594752f60SShaohui Xie {45, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6,
16694752f60SShaohui Xie SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9,
16794752f60SShaohui Xie NONE, NONE, QSGMII_FM2_A, NONE} },
1689e758758SYork Sun {46, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6,
1699e758758SYork Sun SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9,
1701c68d01eSShaohui Xie NONE, NONE, QSGMII_FM2_A, NONE} },
17194752f60SShaohui Xie {47, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6,
17294752f60SShaohui Xie SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9,
17394752f60SShaohui Xie NONE, NONE, QSGMII_FM2_A, NONE} },
1749e758758SYork Sun {48, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6,
1759e758758SYork Sun SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9,
1761c68d01eSShaohui Xie NONE, NONE, QSGMII_FM2_A, NONE} },
17794752f60SShaohui Xie {49, {XAUI_FM2_MAC9, XAUI_FM2_MAC9,
17894752f60SShaohui Xie XAUI_FM2_MAC9, XAUI_FM2_MAC9,
17994752f60SShaohui Xie NONE, NONE, QSGMII_FM2_A, NONE} },
1809e758758SYork Sun {50, {XAUI_FM2_MAC9, XAUI_FM2_MAC9,
1819e758758SYork Sun XAUI_FM2_MAC9, XAUI_FM2_MAC9,
1821c68d01eSShaohui Xie NONE, NONE, QSGMII_FM2_A, NONE} },
18394752f60SShaohui Xie {51, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
18494752f60SShaohui Xie HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
18594752f60SShaohui Xie NONE, NONE, QSGMII_FM2_A, NONE} },
1869e758758SYork Sun {52, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
1879e758758SYork Sun HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
1881c68d01eSShaohui Xie NONE, NONE, QSGMII_FM2_A, NONE} },
18994752f60SShaohui Xie {53, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
19094752f60SShaohui Xie HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
19194752f60SShaohui Xie NONE, NONE, QSGMII_FM2_A, NONE} },
1929e758758SYork Sun {54, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
1939e758758SYork Sun HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
1941c68d01eSShaohui Xie NONE, NONE, QSGMII_FM2_A, NONE} },
19594752f60SShaohui Xie {55, {XFI_FM1_MAC9, XFI_FM1_MAC10,
19694752f60SShaohui Xie XFI_FM2_MAC10, XFI_FM2_MAC9,
19794752f60SShaohui Xie SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
19894752f60SShaohui Xie SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} },
1999e758758SYork Sun {56, {XFI_FM1_MAC9, XFI_FM1_MAC10,
2009e758758SYork Sun XFI_FM2_MAC10, XFI_FM2_MAC9,
2019e758758SYork Sun SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
2029e758758SYork Sun SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4}},
2039e758758SYork Sun {57, {XFI_FM1_MAC9, XFI_FM1_MAC10,
2049e758758SYork Sun XFI_FM2_MAC10, XFI_FM2_MAC9,
2059e758758SYork Sun SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
2069e758758SYork Sun SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4}},
2079e758758SYork Sun {}
2089e758758SYork Sun };
209924859acSYork Sun static const struct serdes_config serdes3_cfg_tbl[] = {
2109e758758SYork Sun /* SerDes 3 */
21194752f60SShaohui Xie {1, {PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1} },
2129e758758SYork Sun {2, {PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1}},
21394752f60SShaohui Xie {3, {PCIE1, PCIE1, PCIE1, PCIE1, PCIE2, PCIE2, PCIE2, PCIE2} },
2149e758758SYork Sun {4, {PCIE1, PCIE1, PCIE1, PCIE1, PCIE2, PCIE2, PCIE2, PCIE2}},
21594752f60SShaohui Xie {5, {PCIE1, PCIE1, PCIE1, PCIE1, SRIO1, SRIO1, SRIO1, SRIO1} },
2169e758758SYork Sun {6, {PCIE1, PCIE1, PCIE1, PCIE1, SRIO1, SRIO1, SRIO1, SRIO1}},
2174bf7f908SShaohui Xie {7, {PCIE1, PCIE1, PCIE1, PCIE1, SRIO1, SRIO1, SRIO1, SRIO1} },
2184bf7f908SShaohui Xie {8, {PCIE1, PCIE1, PCIE1, PCIE1, SRIO1, SRIO1, SRIO1, SRIO1} },
2199e758758SYork Sun {9, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN,
2209e758758SYork Sun INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN}},
2219e758758SYork Sun {10, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN,
2229e758758SYork Sun INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN}},
22394752f60SShaohui Xie {11, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN,
22494752f60SShaohui Xie PCIE2, PCIE2, PCIE2, PCIE2} },
2259e758758SYork Sun {12, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN,
2269e758758SYork Sun PCIE2, PCIE2, PCIE2, PCIE2}},
22794752f60SShaohui Xie {13, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN,
22894752f60SShaohui Xie PCIE2, PCIE2, PCIE2, PCIE2} },
2299e758758SYork Sun {14, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN,
2309e758758SYork Sun PCIE2, PCIE2, PCIE2, PCIE2}},
23194752f60SShaohui Xie {15, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN,
23294752f60SShaohui Xie SRIO1, SRIO1, SRIO1, SRIO1} },
2339e758758SYork Sun {16, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN,
2349e758758SYork Sun SRIO1, SRIO1, SRIO1, SRIO1}},
2359e758758SYork Sun {17, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN,
2369e758758SYork Sun SRIO1, SRIO1, SRIO1, SRIO1}},
23794752f60SShaohui Xie {18, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN,
23894752f60SShaohui Xie SRIO1, SRIO1, SRIO1, SRIO1} },
2399e758758SYork Sun {19, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN,
2409e758758SYork Sun SRIO1, SRIO1, SRIO1, SRIO1}},
2419e758758SYork Sun {20, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN,
2429e758758SYork Sun SRIO1, SRIO1, SRIO1, SRIO1}},
2439e758758SYork Sun {}
2449e758758SYork Sun };
245924859acSYork Sun static const struct serdes_config serdes4_cfg_tbl[] = {
2469e758758SYork Sun /* SerDes 4 */
24794752f60SShaohui Xie {1, {PCIE3, PCIE3, PCIE3, PCIE3, PCIE3, PCIE3, PCIE3, PCIE3} },
2489e758758SYork Sun {2, {PCIE3, PCIE3, PCIE3, PCIE3, PCIE3, PCIE3, PCIE3, PCIE3}},
24994752f60SShaohui Xie {3, {PCIE3, PCIE3, PCIE3, PCIE3, PCIE4, PCIE4, PCIE4, PCIE4} },
2509e758758SYork Sun {4, {PCIE3, PCIE3, PCIE3, PCIE3, PCIE4, PCIE4, PCIE4, PCIE4}},
25194752f60SShaohui Xie {5, {PCIE3, PCIE3, PCIE3, PCIE3, SRIO2, SRIO2, SRIO2, SRIO2} },
2529e758758SYork Sun {6, {PCIE3, PCIE3, PCIE3, PCIE3, SRIO2, SRIO2, SRIO2, SRIO2}},
25394752f60SShaohui Xie {7, {PCIE3, PCIE3, PCIE3, PCIE3, SRIO2, SRIO2, SRIO2, SRIO2} },
2549e758758SYork Sun {8, {PCIE3, PCIE3, PCIE3, PCIE3, SRIO2, SRIO2, SRIO2, SRIO2}},
25594752f60SShaohui Xie {9, {PCIE3, PCIE3, PCIE3, PCIE3, PCIE4, PCIE4, SATA1, SATA2} },
256f9772444SRoy Zang {10, {PCIE3, PCIE3, PCIE3, PCIE3, PCIE4, PCIE4, SATA1, SATA2} },
25794752f60SShaohui Xie {11, {PCIE3, PCIE3, PCIE3, PCIE3, AURORA, AURORA, SATA1, SATA2} },
258f9772444SRoy Zang {12, {PCIE3, PCIE3, PCIE3, PCIE3, AURORA, AURORA, SATA1, SATA2} },
25994752f60SShaohui Xie {13, {PCIE3, PCIE3, PCIE3, PCIE3, AURORA, AURORA, SRIO2, SRIO2} },
2609e758758SYork Sun {14, {PCIE3, PCIE3, PCIE3, PCIE3, AURORA, AURORA, SRIO2, SRIO2}},
26194752f60SShaohui Xie {15, {PCIE3, PCIE3, PCIE3, PCIE3, AURORA, AURORA, SRIO2, SRIO2} },
2629e758758SYork Sun {16, {PCIE3, PCIE3, PCIE3, PCIE3, AURORA, AURORA, SRIO2, SRIO2}},
2639e758758SYork Sun {18, {PCIE3, PCIE3, PCIE3, PCIE3, AURORA, AURORA, AURORA, AURORA}},
2649e758758SYork Sun {}
2659e758758SYork Sun };
266*cdb72c52SYork Sun #elif defined(CONFIG_ARCH_T4160)
267b6240846SYork Sun static const struct serdes_config serdes1_cfg_tbl[] = {
268b6240846SYork Sun /* SerDes 1 */
2694bf7f908SShaohui Xie {1, {NONE, NONE, NONE, NONE,
270b6240846SYork Sun XAUI_FM1_MAC10, XAUI_FM1_MAC10,
271b6240846SYork Sun XAUI_FM1_MAC10, XAUI_FM1_MAC10} },
2724bf7f908SShaohui Xie {2, {NONE, NONE, NONE, NONE,
273b6240846SYork Sun HIGIG_FM1_MAC10, HIGIG_FM1_MAC10,
274b6240846SYork Sun HIGIG_FM1_MAC10, HIGIG_FM1_MAC10} },
2754bf7f908SShaohui Xie {4, {NONE, NONE, NONE, NONE,
276b6240846SYork Sun HIGIG_FM1_MAC10, HIGIG_FM1_MAC10,
277b6240846SYork Sun HIGIG_FM1_MAC10, HIGIG_FM1_MAC10} },
2784bf7f908SShaohui Xie {27, {NONE, NONE, NONE, NONE,
27994752f60SShaohui Xie SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
28094752f60SShaohui Xie SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4} },
2814bf7f908SShaohui Xie {28, {NONE, NONE, NONE, NONE,
282b6240846SYork Sun SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
283b6240846SYork Sun SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4} },
2844bf7f908SShaohui Xie {35, {NONE, NONE, NONE, NONE,
28594752f60SShaohui Xie SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
28694752f60SShaohui Xie SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4} },
2874bf7f908SShaohui Xie {36, {NONE, NONE, NONE, NONE,
288b6240846SYork Sun SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
289b6240846SYork Sun SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4} },
2904bf7f908SShaohui Xie {37, {NONE, NONE, NONE, NONE,
29194752f60SShaohui Xie NONE, NONE, QSGMII_FM1_A, NONE} },
2924bf7f908SShaohui Xie {38, {NONE, NONE, NONE, NONE,
293b6240846SYork Sun NONE, NONE, QSGMII_FM1_A, NONE} },
294b6240846SYork Sun {}
295b6240846SYork Sun };
296b6240846SYork Sun static const struct serdes_config serdes2_cfg_tbl[] = {
297b6240846SYork Sun /* SerDes 2 */
29894752f60SShaohui Xie {6, {XAUI_FM2_MAC9, XAUI_FM2_MAC9,
29994752f60SShaohui Xie XAUI_FM2_MAC9, XAUI_FM2_MAC9,
30094752f60SShaohui Xie SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
30194752f60SShaohui Xie SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} },
302b6240846SYork Sun {7, {XAUI_FM2_MAC9, XAUI_FM2_MAC9,
303b6240846SYork Sun XAUI_FM2_MAC9, XAUI_FM2_MAC9,
304b6240846SYork Sun SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
305b6240846SYork Sun SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} },
30694752f60SShaohui Xie {12, {XAUI_FM2_MAC9, XAUI_FM2_MAC9,
30794752f60SShaohui Xie XAUI_FM2_MAC9, XAUI_FM2_MAC9,
30894752f60SShaohui Xie SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
30994752f60SShaohui Xie SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} },
310b6240846SYork Sun {13, {XAUI_FM2_MAC9, XAUI_FM2_MAC9,
311b6240846SYork Sun XAUI_FM2_MAC9, XAUI_FM2_MAC9,
312b6240846SYork Sun SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
313b6240846SYork Sun SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} },
31494752f60SShaohui Xie {15, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
31594752f60SShaohui Xie HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
31694752f60SShaohui Xie SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
31794752f60SShaohui Xie SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} },
318b6240846SYork Sun {16, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
319b6240846SYork Sun HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
320b6240846SYork Sun SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
321b6240846SYork Sun SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} },
32294752f60SShaohui Xie {21, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
32394752f60SShaohui Xie HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
32494752f60SShaohui Xie SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
32594752f60SShaohui Xie SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} },
326b6240846SYork Sun {22, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
327b6240846SYork Sun HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
328b6240846SYork Sun SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
329b6240846SYork Sun SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} },
33094752f60SShaohui Xie {24, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
33194752f60SShaohui Xie HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
33294752f60SShaohui Xie SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
33394752f60SShaohui Xie SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} },
334b6240846SYork Sun {25, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
335b6240846SYork Sun HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
336b6240846SYork Sun SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
337b6240846SYork Sun SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} },
338b6240846SYork Sun {26, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
339b6240846SYork Sun HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
340b6240846SYork Sun SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
341b6240846SYork Sun NONE, NONE} },
34294752f60SShaohui Xie {27, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6,
34394752f60SShaohui Xie SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9,
34494752f60SShaohui Xie SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
34594752f60SShaohui Xie SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} },
346b6240846SYork Sun {28, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6,
347b6240846SYork Sun SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9,
348b6240846SYork Sun SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
349b6240846SYork Sun SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} },
35094752f60SShaohui Xie {35, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6,
35194752f60SShaohui Xie SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9,
35294752f60SShaohui Xie SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
35394752f60SShaohui Xie SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} },
354b6240846SYork Sun {36, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6,
355b6240846SYork Sun SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9,
356b6240846SYork Sun SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
357b6240846SYork Sun SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} },
35894752f60SShaohui Xie {37, {NONE, NONE, QSGMII_FM2_B, NONE,
3594bf7f908SShaohui Xie NONE, NONE, QSGMII_FM2_A, NONE} },
360b6240846SYork Sun {38, {NONE, NONE, QSGMII_FM2_B, NONE,
3614bf7f908SShaohui Xie NONE, NONE, QSGMII_FM2_A, NONE} },
36294752f60SShaohui Xie {39, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6,
36394752f60SShaohui Xie SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9,
3644bf7f908SShaohui Xie NONE, NONE, QSGMII_FM2_A, NONE} },
365b6240846SYork Sun {40, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6,
366b6240846SYork Sun SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9,
3674bf7f908SShaohui Xie NONE, NONE, QSGMII_FM2_A, NONE} },
36894752f60SShaohui Xie {45, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6,
36994752f60SShaohui Xie SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9,
3704bf7f908SShaohui Xie NONE, NONE, QSGMII_FM2_A, NONE} },
371b6240846SYork Sun {46, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6,
372b6240846SYork Sun SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9,
3734bf7f908SShaohui Xie NONE, NONE, QSGMII_FM2_A, NONE} },
37494752f60SShaohui Xie {47, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6,
37594752f60SShaohui Xie SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9,
3764bf7f908SShaohui Xie NONE, NONE, QSGMII_FM2_A, NONE} },
377b6240846SYork Sun {48, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6,
378b6240846SYork Sun SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9,
3794bf7f908SShaohui Xie NONE, NONE, QSGMII_FM2_A, NONE} },
38094752f60SShaohui Xie {49, {XAUI_FM2_MAC9, XAUI_FM2_MAC9,
38194752f60SShaohui Xie XAUI_FM2_MAC9, XAUI_FM2_MAC9,
3824bf7f908SShaohui Xie NONE, NONE, QSGMII_FM2_A, NONE} },
383b6240846SYork Sun {50, {XAUI_FM2_MAC9, XAUI_FM2_MAC9,
384b6240846SYork Sun XAUI_FM2_MAC9, XAUI_FM2_MAC9,
3854bf7f908SShaohui Xie NONE, NONE, QSGMII_FM2_A, NONE} },
38694752f60SShaohui Xie {51, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
38794752f60SShaohui Xie HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
3884bf7f908SShaohui Xie NONE, NONE, QSGMII_FM2_A, NONE} },
389b6240846SYork Sun {52, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
390b6240846SYork Sun HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
3914bf7f908SShaohui Xie NONE, NONE, QSGMII_FM2_A, NONE} },
39294752f60SShaohui Xie {53, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
39394752f60SShaohui Xie HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
3944bf7f908SShaohui Xie NONE, NONE, QSGMII_FM2_A, NONE} },
395b6240846SYork Sun {54, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
396b6240846SYork Sun HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
3974bf7f908SShaohui Xie NONE, NONE, QSGMII_FM2_A, NONE} },
39894752f60SShaohui Xie {55, {NONE, XFI_FM1_MAC10,
39994752f60SShaohui Xie XFI_FM2_MAC10, NONE,
40094752f60SShaohui Xie SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
40194752f60SShaohui Xie SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} },
402b6240846SYork Sun {56, {NONE, XFI_FM1_MAC10,
403b6240846SYork Sun XFI_FM2_MAC10, NONE,
404b6240846SYork Sun SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
405b6240846SYork Sun SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} },
406b6240846SYork Sun {57, {NONE, XFI_FM1_MAC10,
407b6240846SYork Sun XFI_FM2_MAC10, NONE,
408b6240846SYork Sun SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
409b6240846SYork Sun NONE, NONE} },
410b6240846SYork Sun {}
411b6240846SYork Sun };
412b6240846SYork Sun static const struct serdes_config serdes3_cfg_tbl[] = {
413b6240846SYork Sun /* SerDes 3 */
41494752f60SShaohui Xie {1, {PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1} },
415b6240846SYork Sun {2, {PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1} },
41694752f60SShaohui Xie {3, {PCIE1, PCIE1, PCIE1, PCIE1, PCIE2, PCIE2, PCIE2, PCIE2} },
417b6240846SYork Sun {4, {PCIE1, PCIE1, PCIE1, PCIE1, PCIE2, PCIE2, PCIE2, PCIE2} },
41894752f60SShaohui Xie {5, {PCIE1, PCIE1, PCIE1, PCIE1, SRIO1, SRIO1, SRIO1, SRIO1} },
419b6240846SYork Sun {6, {PCIE1, PCIE1, PCIE1, PCIE1, SRIO1, SRIO1, SRIO1, SRIO1} },
4204bf7f908SShaohui Xie {7, {PCIE1, PCIE1, PCIE1, PCIE1, SRIO1, SRIO1, SRIO1, SRIO1} },
4214bf7f908SShaohui Xie {8, {PCIE1, PCIE1, PCIE1, PCIE1, SRIO1, SRIO1, SRIO1, SRIO1} },
422b6240846SYork Sun {9, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN,
423b6240846SYork Sun INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN} },
424b6240846SYork Sun {10, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN,
425b6240846SYork Sun INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN} },
4264bf7f908SShaohui Xie {11, {NONE, NONE, NONE, NONE,
42794752f60SShaohui Xie PCIE2, PCIE2, PCIE2, PCIE2} },
4284bf7f908SShaohui Xie {12, {NONE, NONE, NONE, NONE,
429b6240846SYork Sun PCIE2, PCIE2, PCIE2, PCIE2} },
43094752f60SShaohui Xie {13, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN,
43194752f60SShaohui Xie PCIE2, PCIE2, PCIE2, PCIE2} },
432b6240846SYork Sun {14, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN,
433b6240846SYork Sun PCIE2, PCIE2, PCIE2, PCIE2} },
4344bf7f908SShaohui Xie {15, {NONE, NONE, NONE, NONE,
43594752f60SShaohui Xie SRIO1, SRIO1, SRIO1, SRIO1} },
4364bf7f908SShaohui Xie {16, {NONE, NONE, NONE, NONE,
437b6240846SYork Sun SRIO1, SRIO1, SRIO1, SRIO1} },
4384bf7f908SShaohui Xie {17, {NONE, NONE, NONE, NONE,
439b6240846SYork Sun SRIO1, SRIO1, SRIO1, SRIO1} },
44094752f60SShaohui Xie {18, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN,
44194752f60SShaohui Xie SRIO1, SRIO1, SRIO1, SRIO1} },
442b6240846SYork Sun {19, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN,
443b6240846SYork Sun SRIO1, SRIO1, SRIO1, SRIO1} },
444b6240846SYork Sun {20, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN,
4454bf7f908SShaohui Xie SRIO1, SRIO1, SRIO1, SRIO1} },
446b6240846SYork Sun {}
447b6240846SYork Sun };
448b6240846SYork Sun static const struct serdes_config serdes4_cfg_tbl[] = {
449b6240846SYork Sun /* SerDes 4 */
4504bf7f908SShaohui Xie {3, {NONE, NONE, NONE, NONE, PCIE4, PCIE4, PCIE4, PCIE4} },
4514bf7f908SShaohui Xie {4, {NONE, NONE, NONE, NONE, PCIE4, PCIE4, PCIE4, PCIE4} },
4524bf7f908SShaohui Xie {5, {NONE, NONE, NONE, NONE, SRIO2, SRIO2, SRIO2, SRIO2} },
4534bf7f908SShaohui Xie {6, {NONE, NONE, NONE, NONE, SRIO2, SRIO2, SRIO2, SRIO2} },
4544bf7f908SShaohui Xie {7, {NONE, NONE, NONE, NONE, SRIO2, SRIO2, SRIO2, SRIO2} },
4554bf7f908SShaohui Xie {8, {NONE, NONE, NONE, NONE, SRIO2, SRIO2, SRIO2, SRIO2} },
4564bf7f908SShaohui Xie {9, {NONE, NONE, NONE, NONE, PCIE4, PCIE4, SATA1, SATA2} },
4574bf7f908SShaohui Xie {10, {NONE, NONE, NONE, NONE, PCIE4, PCIE4, SATA1, SATA2} },
4584bf7f908SShaohui Xie {11, {NONE, NONE, NONE, NONE, AURORA, AURORA, SATA1, SATA2} },
4594bf7f908SShaohui Xie {12, {NONE, NONE, NONE, NONE, AURORA, AURORA, SATA1, SATA2} },
4604bf7f908SShaohui Xie {13, {NONE, NONE, NONE, NONE, AURORA, AURORA, SRIO2, SRIO2} },
4614bf7f908SShaohui Xie {14, {NONE, NONE, NONE, NONE, AURORA, AURORA, SRIO2, SRIO2} },
4624bf7f908SShaohui Xie {15, {NONE, NONE, NONE, NONE, AURORA, AURORA, SRIO2, SRIO2} },
4634bf7f908SShaohui Xie {16, {NONE, NONE, NONE, NONE, AURORA, AURORA, SRIO2, SRIO2} },
4644bf7f908SShaohui Xie {18, {NONE, NONE, NONE, NONE, AURORA, AURORA, AURORA, AURORA} },
465b6240846SYork Sun {}
466b6240846SYork Sun }
467b6240846SYork Sun ;
468b6240846SYork Sun #else
469b6240846SYork Sun #error "Need to define SerDes protocol"
470b6240846SYork Sun #endif
471924859acSYork Sun static const struct serdes_config *serdes_cfg_tbl[] = {
4729e758758SYork Sun serdes1_cfg_tbl,
4739e758758SYork Sun serdes2_cfg_tbl,
4749e758758SYork Sun serdes3_cfg_tbl,
4759e758758SYork Sun serdes4_cfg_tbl,
4769e758758SYork Sun };
4779e758758SYork Sun
serdes_get_prtcl(int serdes,int cfg,int lane)4789e758758SYork Sun enum srds_prtcl serdes_get_prtcl(int serdes, int cfg, int lane)
4799e758758SYork Sun {
480924859acSYork Sun const struct serdes_config *ptr;
4819e758758SYork Sun
4829e758758SYork Sun if (serdes >= ARRAY_SIZE(serdes_cfg_tbl))
4839e758758SYork Sun return 0;
4849e758758SYork Sun
4859e758758SYork Sun ptr = serdes_cfg_tbl[serdes];
4869e758758SYork Sun while (ptr->protocol) {
4879e758758SYork Sun if (ptr->protocol == cfg)
4889e758758SYork Sun return ptr->lanes[lane];
4899e758758SYork Sun ptr++;
4909e758758SYork Sun }
4919e758758SYork Sun return 0;
4929e758758SYork Sun }
4939e758758SYork Sun
is_serdes_prtcl_valid(int serdes,u32 prtcl)4949e758758SYork Sun int is_serdes_prtcl_valid(int serdes, u32 prtcl)
4959e758758SYork Sun {
4969e758758SYork Sun int i;
497924859acSYork Sun const struct serdes_config *ptr;
4989e758758SYork Sun
4999e758758SYork Sun if (serdes >= ARRAY_SIZE(serdes_cfg_tbl))
5009e758758SYork Sun return 0;
5019e758758SYork Sun
5029e758758SYork Sun ptr = serdes_cfg_tbl[serdes];
5039e758758SYork Sun while (ptr->protocol) {
5049e758758SYork Sun if (ptr->protocol == prtcl)
5059e758758SYork Sun break;
5069e758758SYork Sun ptr++;
5079e758758SYork Sun }
5089e758758SYork Sun
5099e758758SYork Sun if (!ptr->protocol)
5109e758758SYork Sun return 0;
5119e758758SYork Sun
5129e758758SYork Sun for (i = 0; i < SRDS_MAX_LANES; i++) {
5139e758758SYork Sun if (ptr->lanes[i] != NONE)
5149e758758SYork Sun return 1;
5159e758758SYork Sun }
5169e758758SYork Sun
5179e758758SYork Sun return 0;
5189e758758SYork Sun }
519