1 /* 2 * Copyright 2010 Freescale Semiconductor, Inc. 3 * 4 * SPDX-License-Identifier: GPL-2.0+ 5 */ 6 7 #ifndef __FSL_SERDES_H 8 #define __FSL_SERDES_H 9 10 #include <config.h> 11 12 enum srds_prtcl { 13 /* 14 * Nobody will check whether the device 'NONE' has been configured, 15 * So use it to indicate if the serdes_prtcl_map has been initialized. 16 */ 17 NONE = 0, 18 PCIE1, 19 PCIE2, 20 PCIE3, 21 PCIE4, 22 SATA1, 23 SATA2, 24 SRIO1, 25 SRIO2, 26 SGMII_FM1_DTSEC1, 27 SGMII_FM1_DTSEC2, 28 SGMII_FM1_DTSEC3, 29 SGMII_FM1_DTSEC4, 30 SGMII_FM1_DTSEC5, 31 SGMII_FM1_DTSEC6, 32 SGMII_FM1_DTSEC9, 33 SGMII_FM1_DTSEC10, 34 SGMII_FM2_DTSEC1, 35 SGMII_FM2_DTSEC2, 36 SGMII_FM2_DTSEC3, 37 SGMII_FM2_DTSEC4, 38 SGMII_FM2_DTSEC5, 39 SGMII_FM2_DTSEC6, 40 SGMII_FM2_DTSEC9, 41 SGMII_FM2_DTSEC10, 42 SGMII_TSEC1, 43 SGMII_TSEC2, 44 SGMII_TSEC3, 45 SGMII_TSEC4, 46 XAUI_FM1, 47 XAUI_FM2, 48 AURORA, 49 CPRI1, 50 CPRI2, 51 CPRI3, 52 CPRI4, 53 CPRI5, 54 CPRI6, 55 CPRI7, 56 CPRI8, 57 XAUI_FM1_MAC9, 58 XAUI_FM1_MAC10, 59 XAUI_FM2_MAC9, 60 XAUI_FM2_MAC10, 61 HIGIG_FM1_MAC9, 62 HIGIG_FM1_MAC10, 63 HIGIG_FM2_MAC9, 64 HIGIG_FM2_MAC10, 65 QSGMII_FM1_A, /* A indicates MACs 1-4 */ 66 QSGMII_FM1_B, /* B indicates MACs 5,6,9,10 */ 67 QSGMII_FM2_A, 68 QSGMII_FM2_B, 69 XFI_FM1_MAC1, 70 XFI_FM1_MAC2, 71 XFI_FM1_MAC9, 72 XFI_FM1_MAC10, 73 XFI_FM2_MAC9, 74 XFI_FM2_MAC10, 75 INTERLAKEN, 76 QSGMII_SW1_A, /* Indicates ports on L2 Switch */ 77 QSGMII_SW1_B, 78 SGMII_2500_FM1_DTSEC1, 79 SGMII_2500_FM1_DTSEC2, 80 SGMII_2500_FM1_DTSEC3, 81 SGMII_2500_FM1_DTSEC4, 82 SGMII_2500_FM1_DTSEC5, 83 SGMII_2500_FM1_DTSEC6, 84 SGMII_2500_FM1_DTSEC9, 85 SGMII_2500_FM1_DTSEC10, 86 SGMII_2500_FM2_DTSEC1, 87 SGMII_2500_FM2_DTSEC2, 88 SGMII_2500_FM2_DTSEC3, 89 SGMII_2500_FM2_DTSEC4, 90 SGMII_2500_FM2_DTSEC5, 91 SGMII_2500_FM2_DTSEC6, 92 SGMII_2500_FM2_DTSEC9, 93 SGMII_2500_FM2_DTSEC10, 94 SGMII_SW1_MAC1, 95 SGMII_SW1_MAC2, 96 SGMII_SW1_MAC3, 97 SGMII_SW1_MAC4, 98 SGMII_SW1_MAC5, 99 SGMII_SW1_MAC6, 100 SERDES_PRCTL_COUNT /* Keep this item the last one */ 101 }; 102 103 enum srds { 104 FSL_SRDS_1 = 0, 105 FSL_SRDS_2 = 1, 106 FSL_SRDS_3 = 2, 107 FSL_SRDS_4 = 3, 108 }; 109 110 int is_serdes_configured(enum srds_prtcl device); 111 void fsl_serdes_init(void); 112 const char *serdes_clock_to_string(u32 clock); 113 114 #ifdef CONFIG_FSL_CORENET 115 #ifdef CONFIG_SYS_FSL_QORIQ_CHASSIS2 116 int serdes_get_first_lane(u32 sd, enum srds_prtcl device); 117 enum srds_prtcl serdes_get_prtcl(int serdes, int cfg, int lane); 118 #else 119 int serdes_get_first_lane(enum srds_prtcl device); 120 #endif 121 #ifdef CONFIG_SYS_P4080_ERRATUM_SERDES9 122 void serdes_reset_rx(enum srds_prtcl device); 123 #endif 124 #endif 125 126 #endif /* __FSL_SERDES_H */ 127