fsl_serdes.h 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. /* SPDX-License-Identifier: GPL-2.0+ */
  2. /*
  3. * Copyright 2015 Freescale Semiconductor, Inc.
  4. */
  5. #ifndef __FSL_SERDES_H__
  6. #define __FSL_SERDES_H__
  7. #include <config.h>
  8. #ifdef CONFIG_FSL_LSCH3
  9. enum srds_prtcl {
  10. /*
  11. * Nobody will check whether the device 'NONE' has been configured,
  12. * So use it to indicate if the serdes_prtcl_map has been initialized.
  13. */
  14. NONE = 0,
  15. PCIE1,
  16. PCIE2,
  17. PCIE3,
  18. PCIE4,
  19. SATA1,
  20. SATA2,
  21. XAUI1,
  22. XAUI2,
  23. XFI1,
  24. XFI2,
  25. XFI3,
  26. XFI4,
  27. XFI5,
  28. XFI6,
  29. XFI7,
  30. XFI8,
  31. SGMII1,
  32. SGMII2,
  33. SGMII3,
  34. SGMII4,
  35. SGMII5,
  36. SGMII6,
  37. SGMII7,
  38. SGMII8,
  39. SGMII9,
  40. SGMII10,
  41. SGMII11,
  42. SGMII12,
  43. SGMII13,
  44. SGMII14,
  45. SGMII15,
  46. SGMII16,
  47. QSGMII_A,
  48. QSGMII_B,
  49. QSGMII_C,
  50. QSGMII_D,
  51. SERDES_PRCTL_COUNT
  52. };
  53. enum srds {
  54. FSL_SRDS_1 = 0,
  55. FSL_SRDS_2 = 1,
  56. };
  57. #elif defined(CONFIG_FSL_LSCH2)
  58. enum srds_prtcl {
  59. /*
  60. * Nobody will check whether the device 'NONE' has been configured,
  61. * So use it to indicate if the serdes_prtcl_map has been initialized.
  62. */
  63. NONE = 0,
  64. PCIE1,
  65. PCIE2,
  66. PCIE3,
  67. PCIE4,
  68. SATA1,
  69. SATA2,
  70. SRIO1,
  71. SRIO2,
  72. SGMII_FM1_DTSEC1,
  73. SGMII_FM1_DTSEC2,
  74. SGMII_FM1_DTSEC3,
  75. SGMII_FM1_DTSEC4,
  76. SGMII_FM1_DTSEC5,
  77. SGMII_FM1_DTSEC6,
  78. SGMII_FM1_DTSEC9,
  79. SGMII_FM1_DTSEC10,
  80. SGMII_FM2_DTSEC1,
  81. SGMII_FM2_DTSEC2,
  82. SGMII_FM2_DTSEC3,
  83. SGMII_FM2_DTSEC4,
  84. SGMII_FM2_DTSEC5,
  85. SGMII_FM2_DTSEC6,
  86. SGMII_FM2_DTSEC9,
  87. SGMII_FM2_DTSEC10,
  88. SGMII_TSEC1,
  89. SGMII_TSEC2,
  90. SGMII_TSEC3,
  91. SGMII_TSEC4,
  92. XAUI_FM1,
  93. XAUI_FM2,
  94. AURORA,
  95. CPRI1,
  96. CPRI2,
  97. CPRI3,
  98. CPRI4,
  99. CPRI5,
  100. CPRI6,
  101. CPRI7,
  102. CPRI8,
  103. XAUI_FM1_MAC9,
  104. XAUI_FM1_MAC10,
  105. XAUI_FM2_MAC9,
  106. XAUI_FM2_MAC10,
  107. HIGIG_FM1_MAC9,
  108. HIGIG_FM1_MAC10,
  109. HIGIG_FM2_MAC9,
  110. HIGIG_FM2_MAC10,
  111. QSGMII_FM1_A, /* A indicates MACs 1,2,5,6 */
  112. QSGMII_FM1_B, /* B indicates MACs 5,6,9,10 */
  113. QSGMII_FM2_A,
  114. QSGMII_FM2_B,
  115. XFI_FM1_MAC1,
  116. XFI_FM1_MAC2,
  117. XFI_FM1_MAC9,
  118. XFI_FM1_MAC10,
  119. XFI_FM2_MAC9,
  120. XFI_FM2_MAC10,
  121. INTERLAKEN,
  122. QSGMII_SW1_A, /* Indicates ports on L2 Switch */
  123. QSGMII_SW1_B,
  124. SGMII_2500_FM1_DTSEC1,
  125. SGMII_2500_FM1_DTSEC2,
  126. SGMII_2500_FM1_DTSEC3,
  127. SGMII_2500_FM1_DTSEC4,
  128. SGMII_2500_FM1_DTSEC5,
  129. SGMII_2500_FM1_DTSEC6,
  130. SGMII_2500_FM1_DTSEC9,
  131. SGMII_2500_FM1_DTSEC10,
  132. SGMII_2500_FM2_DTSEC1,
  133. SGMII_2500_FM2_DTSEC2,
  134. SGMII_2500_FM2_DTSEC3,
  135. SGMII_2500_FM2_DTSEC4,
  136. SGMII_2500_FM2_DTSEC5,
  137. SGMII_2500_FM2_DTSEC6,
  138. SGMII_2500_FM2_DTSEC9,
  139. SGMII_2500_FM2_DTSEC10,
  140. TX_CLK,
  141. SERDES_PRCTL_COUNT
  142. };
  143. enum srds {
  144. FSL_SRDS_1 = 0,
  145. FSL_SRDS_2 = 1,
  146. };
  147. #endif
  148. int is_serdes_configured(enum srds_prtcl device);
  149. void fsl_serdes_init(void);
  150. int serdes_get_first_lane(u32 sd, enum srds_prtcl device);
  151. enum srds_prtcl serdes_get_prtcl(int serdes, int cfg, int lane);
  152. int is_serdes_prtcl_valid(int serdes, u32 prtcl);
  153. int serdes_get_number(int serdes, int cfg);
  154. void fsl_rgmii_init(void);
  155. #ifdef CONFIG_FSL_LSCH2
  156. const char *serdes_clock_to_string(u32 clock);
  157. int get_serdes_protocol(void);
  158. #endif
  159. #ifdef CONFIG_SYS_HAS_SERDES
  160. /* Get the volt of SVDD in unit mV */
  161. int get_serdes_volt(void);
  162. /* Set the volt of SVDD in unit mV */
  163. int set_serdes_volt(int svdd);
  164. /* The target volt of SVDD in unit mV */
  165. int setup_serdes_volt(u32 svdd);
  166. #endif
  167. #endif /* __FSL_SERDES_H__ */