fsl_serdes.h 3.0 KB

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