19f3183d2SMingkai Hu /* 29f3183d2SMingkai Hu * Copyright 2015 Freescale Semiconductor, Inc. 39f3183d2SMingkai Hu * 49f3183d2SMingkai Hu * SPDX-License-Identifier: GPL-2.0+ 59f3183d2SMingkai Hu */ 69f3183d2SMingkai Hu 79f3183d2SMingkai Hu #ifndef __FSL_SERDES_H__ 89f3183d2SMingkai Hu #define __FSL_SERDES_H__ 99f3183d2SMingkai Hu 109f3183d2SMingkai Hu #include <config.h> 119f3183d2SMingkai Hu 12*4a3ab193SYork Sun #ifdef CONFIG_ARCH_LS2080A 139f3183d2SMingkai Hu enum srds_prtcl { 1471fe2225SHou Zhiqiang /* 1571fe2225SHou Zhiqiang * Nobody will check whether the device 'NONE' has been configured, 1671fe2225SHou Zhiqiang * So use it to indicate if the serdes_prtcl_map has been initialized. 1771fe2225SHou Zhiqiang */ 189f3183d2SMingkai Hu NONE = 0, 199f3183d2SMingkai Hu PCIE1, 209f3183d2SMingkai Hu PCIE2, 219f3183d2SMingkai Hu PCIE3, 229f3183d2SMingkai Hu PCIE4, 239f3183d2SMingkai Hu SATA1, 249f3183d2SMingkai Hu SATA2, 259f3183d2SMingkai Hu XAUI1, 269f3183d2SMingkai Hu XAUI2, 279f3183d2SMingkai Hu XFI1, 289f3183d2SMingkai Hu XFI2, 299f3183d2SMingkai Hu XFI3, 309f3183d2SMingkai Hu XFI4, 319f3183d2SMingkai Hu XFI5, 329f3183d2SMingkai Hu XFI6, 339f3183d2SMingkai Hu XFI7, 349f3183d2SMingkai Hu XFI8, 359f3183d2SMingkai Hu SGMII1, 369f3183d2SMingkai Hu SGMII2, 379f3183d2SMingkai Hu SGMII3, 389f3183d2SMingkai Hu SGMII4, 399f3183d2SMingkai Hu SGMII5, 409f3183d2SMingkai Hu SGMII6, 419f3183d2SMingkai Hu SGMII7, 429f3183d2SMingkai Hu SGMII8, 439f3183d2SMingkai Hu SGMII9, 449f3183d2SMingkai Hu SGMII10, 459f3183d2SMingkai Hu SGMII11, 469f3183d2SMingkai Hu SGMII12, 479f3183d2SMingkai Hu SGMII13, 489f3183d2SMingkai Hu SGMII14, 499f3183d2SMingkai Hu SGMII15, 509f3183d2SMingkai Hu SGMII16, 511b7dba99SPrabhakar Kushwaha QSGMII_A, 521b7dba99SPrabhakar Kushwaha QSGMII_B, 531b7dba99SPrabhakar Kushwaha QSGMII_C, 541b7dba99SPrabhakar Kushwaha QSGMII_D, 559f3183d2SMingkai Hu SERDES_PRCTL_COUNT 569f3183d2SMingkai Hu }; 579f3183d2SMingkai Hu 589f3183d2SMingkai Hu enum srds { 599f3183d2SMingkai Hu FSL_SRDS_1 = 0, 609f3183d2SMingkai Hu FSL_SRDS_2 = 1, 619f3183d2SMingkai Hu }; 6222a44d08SPrabhakar Kushwaha #elif defined(CONFIG_FSL_LSCH2) 638281c58fSMingkai Hu enum srds_prtcl { 6471fe2225SHou Zhiqiang /* 6571fe2225SHou Zhiqiang * Nobody will check whether the device 'NONE' has been configured, 6671fe2225SHou Zhiqiang * So use it to indicate if the serdes_prtcl_map has been initialized. 6771fe2225SHou Zhiqiang */ 688281c58fSMingkai Hu NONE = 0, 698281c58fSMingkai Hu PCIE1, 708281c58fSMingkai Hu PCIE2, 718281c58fSMingkai Hu PCIE3, 728281c58fSMingkai Hu PCIE4, 738281c58fSMingkai Hu SATA1, 748281c58fSMingkai Hu SATA2, 758281c58fSMingkai Hu SRIO1, 768281c58fSMingkai Hu SRIO2, 778281c58fSMingkai Hu SGMII_FM1_DTSEC1, 788281c58fSMingkai Hu SGMII_FM1_DTSEC2, 798281c58fSMingkai Hu SGMII_FM1_DTSEC3, 808281c58fSMingkai Hu SGMII_FM1_DTSEC4, 818281c58fSMingkai Hu SGMII_FM1_DTSEC5, 828281c58fSMingkai Hu SGMII_FM1_DTSEC6, 838281c58fSMingkai Hu SGMII_FM1_DTSEC9, 848281c58fSMingkai Hu SGMII_FM1_DTSEC10, 858281c58fSMingkai Hu SGMII_FM2_DTSEC1, 868281c58fSMingkai Hu SGMII_FM2_DTSEC2, 878281c58fSMingkai Hu SGMII_FM2_DTSEC3, 888281c58fSMingkai Hu SGMII_FM2_DTSEC4, 898281c58fSMingkai Hu SGMII_FM2_DTSEC5, 908281c58fSMingkai Hu SGMII_FM2_DTSEC6, 918281c58fSMingkai Hu SGMII_FM2_DTSEC9, 928281c58fSMingkai Hu SGMII_FM2_DTSEC10, 938281c58fSMingkai Hu SGMII_TSEC1, 948281c58fSMingkai Hu SGMII_TSEC2, 958281c58fSMingkai Hu SGMII_TSEC3, 968281c58fSMingkai Hu SGMII_TSEC4, 978281c58fSMingkai Hu XAUI_FM1, 988281c58fSMingkai Hu XAUI_FM2, 998281c58fSMingkai Hu AURORA, 1008281c58fSMingkai Hu CPRI1, 1018281c58fSMingkai Hu CPRI2, 1028281c58fSMingkai Hu CPRI3, 1038281c58fSMingkai Hu CPRI4, 1048281c58fSMingkai Hu CPRI5, 1058281c58fSMingkai Hu CPRI6, 1068281c58fSMingkai Hu CPRI7, 1078281c58fSMingkai Hu CPRI8, 1088281c58fSMingkai Hu XAUI_FM1_MAC9, 1098281c58fSMingkai Hu XAUI_FM1_MAC10, 1108281c58fSMingkai Hu XAUI_FM2_MAC9, 1118281c58fSMingkai Hu XAUI_FM2_MAC10, 1128281c58fSMingkai Hu HIGIG_FM1_MAC9, 1138281c58fSMingkai Hu HIGIG_FM1_MAC10, 1148281c58fSMingkai Hu HIGIG_FM2_MAC9, 1158281c58fSMingkai Hu HIGIG_FM2_MAC10, 1168281c58fSMingkai Hu QSGMII_FM1_A, /* A indicates MACs 1,2,5,6 */ 1178281c58fSMingkai Hu QSGMII_FM1_B, /* B indicates MACs 5,6,9,10 */ 1188281c58fSMingkai Hu QSGMII_FM2_A, 1198281c58fSMingkai Hu QSGMII_FM2_B, 1208281c58fSMingkai Hu XFI_FM1_MAC1, 1218281c58fSMingkai Hu XFI_FM1_MAC2, 1228281c58fSMingkai Hu XFI_FM1_MAC9, 1238281c58fSMingkai Hu XFI_FM1_MAC10, 1248281c58fSMingkai Hu XFI_FM2_MAC9, 1258281c58fSMingkai Hu XFI_FM2_MAC10, 1268281c58fSMingkai Hu INTERLAKEN, 1278281c58fSMingkai Hu QSGMII_SW1_A, /* Indicates ports on L2 Switch */ 1288281c58fSMingkai Hu QSGMII_SW1_B, 1298281c58fSMingkai Hu SGMII_2500_FM1_DTSEC1, 1308281c58fSMingkai Hu SGMII_2500_FM1_DTSEC2, 1318281c58fSMingkai Hu SGMII_2500_FM1_DTSEC3, 1328281c58fSMingkai Hu SGMII_2500_FM1_DTSEC4, 1338281c58fSMingkai Hu SGMII_2500_FM1_DTSEC5, 1348281c58fSMingkai Hu SGMII_2500_FM1_DTSEC6, 1358281c58fSMingkai Hu SGMII_2500_FM1_DTSEC9, 1368281c58fSMingkai Hu SGMII_2500_FM1_DTSEC10, 1378281c58fSMingkai Hu SGMII_2500_FM2_DTSEC1, 1388281c58fSMingkai Hu SGMII_2500_FM2_DTSEC2, 1398281c58fSMingkai Hu SGMII_2500_FM2_DTSEC3, 1408281c58fSMingkai Hu SGMII_2500_FM2_DTSEC4, 1418281c58fSMingkai Hu SGMII_2500_FM2_DTSEC5, 1428281c58fSMingkai Hu SGMII_2500_FM2_DTSEC6, 1438281c58fSMingkai Hu SGMII_2500_FM2_DTSEC9, 1448281c58fSMingkai Hu SGMII_2500_FM2_DTSEC10, 145b7f2bbffSPrabhakar Kushwaha TX_CLK, 1468281c58fSMingkai Hu SERDES_PRCTL_COUNT 1478281c58fSMingkai Hu }; 1488281c58fSMingkai Hu 1498281c58fSMingkai Hu enum srds { 1508281c58fSMingkai Hu FSL_SRDS_1 = 0, 151da4d620cSQianyu Gong FSL_SRDS_2 = 1, 1528281c58fSMingkai Hu }; 1538281c58fSMingkai Hu 1549f3183d2SMingkai Hu #endif 1559f3183d2SMingkai Hu 1569f3183d2SMingkai Hu int is_serdes_configured(enum srds_prtcl device); 1579f3183d2SMingkai Hu void fsl_serdes_init(void); 1589f3183d2SMingkai Hu int serdes_get_first_lane(u32 sd, enum srds_prtcl device); 1599f3183d2SMingkai Hu enum srds_prtcl serdes_get_prtcl(int serdes, int cfg, int lane); 1609f3183d2SMingkai Hu int is_serdes_prtcl_valid(int serdes, u32 prtcl); 1619f3183d2SMingkai Hu 162b528b937SMingkai Hu #ifdef CONFIG_FSL_LSCH2 1638281c58fSMingkai Hu const char *serdes_clock_to_string(u32 clock); 1648281c58fSMingkai Hu int get_serdes_protocol(void); 165031acdbaSHou Zhiqiang #ifdef CONFIG_SYS_HAS_SERDES 166031acdbaSHou Zhiqiang /* Get the volt of SVDD in unit mV */ 167031acdbaSHou Zhiqiang int get_serdes_volt(void); 168031acdbaSHou Zhiqiang /* Set the volt of SVDD in unit mV */ 169031acdbaSHou Zhiqiang int set_serdes_volt(int svdd); 170031acdbaSHou Zhiqiang /* The target volt of SVDD in unit mV */ 171031acdbaSHou Zhiqiang int setup_serdes_volt(u32 svdd); 172031acdbaSHou Zhiqiang #endif 1738281c58fSMingkai Hu #endif 1748281c58fSMingkai Hu 1759f3183d2SMingkai Hu #endif /* __FSL_SERDES_H__ */ 176