Merge tag 'efi-2020-07-rc6' of https://gitlab.denx.de/u-boot/custodians/u-boot-efi
[oweals/u-boot.git] / arch / arm / include / asm / arch-fsl-layerscape / fsl_serdes.h
index e1b3f44d853956d684709b1b9e88c93127109620..8f4365175697db6a8dd362743f206c3e97c8a1ef 100644 (file)
@@ -1,7 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
 /*
+ * Copyright 2018 NXP
  * Copyright 2015 Freescale Semiconductor, Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #ifndef __FSL_SERDES_H__
@@ -9,15 +9,23 @@
 
 #include <config.h>
 
-#ifdef CONFIG_LS2080A
+#ifdef CONFIG_FSL_LSCH3
 enum srds_prtcl {
+       /*
+        * Nobody will check whether the device 'NONE' has been configured,
+        * So use it to indicate if the serdes_prtcl_map has been initialized.
+        */
        NONE = 0,
        PCIE1,
        PCIE2,
        PCIE3,
        PCIE4,
+       PCIE5,
+       PCIE6,
        SATA1,
        SATA2,
+       SATA3,
+       SATA4,
        XAUI1,
        XAUI2,
        XFI1,
@@ -28,6 +36,12 @@ enum srds_prtcl {
        XFI6,
        XFI7,
        XFI8,
+       XFI9,
+       XFI10,
+       XFI11,
+       XFI12,
+       XFI13,
+       XFI14,
        SGMII1,
        SGMII2,
        SGMII3,
@@ -44,19 +58,54 @@ enum srds_prtcl {
        SGMII14,
        SGMII15,
        SGMII16,
-       QSGMII_A, /* A indicates MACs 1-4 */
-       QSGMII_B, /* B indicates MACs 5-8 */
-       QSGMII_C, /* C indicates MACs 9-12 */
-       QSGMII_D, /* D indicates MACs 12-16 */
+       SGMII17,
+       SGMII18,
+       QSGMII_A,
+       QSGMII_B,
+       QSGMII_C,
+       QSGMII_D,
+       SGMII_T1,
+       SGMII_T2,
+       SGMII_T3,
+       SGMII_T4,
+       SXGMII1,
+       SXGMII2,
+       SXGMII3,
+       SXGMII4,
+       QXGMII1,
+       QXGMII2,
+       QXGMII3,
+       QXGMII4,
+       _25GE1,
+       _25GE2,
+       _25GE3,
+       _25GE4,
+       _25GE5,
+       _25GE6,
+       _25GE7,
+       _25GE8,
+       _25GE9,
+       _25GE10,
+       _40GE1,
+       _40GE2,
+       _50GE1,
+       _50GE2,
+       _100GE1,
+       _100GE2,
        SERDES_PRCTL_COUNT
 };
 
 enum srds {
        FSL_SRDS_1  = 0,
        FSL_SRDS_2  = 1,
+       NXP_SRDS_3  = 2,
 };
 #elif defined(CONFIG_FSL_LSCH2)
 enum srds_prtcl {
+       /*
+        * Nobody will check whether the device 'NONE' has been configured,
+        * So use it to indicate if the serdes_prtcl_map has been initialized.
+        */
        NONE = 0,
        PCIE1,
        PCIE2,
@@ -150,10 +199,20 @@ void fsl_serdes_init(void);
 int serdes_get_first_lane(u32 sd, enum srds_prtcl device);
 enum srds_prtcl serdes_get_prtcl(int serdes, int cfg, int lane);
 int is_serdes_prtcl_valid(int serdes, u32 prtcl);
+int serdes_get_number(int serdes, int cfg);
+void fsl_rgmii_init(void);
 
 #ifdef CONFIG_FSL_LSCH2
 const char *serdes_clock_to_string(u32 clock);
 int get_serdes_protocol(void);
 #endif
+#ifdef CONFIG_SYS_HAS_SERDES
+/* Get the volt of SVDD in unit mV */
+int get_serdes_volt(void);
+/* Set the volt of SVDD in unit mV */
+int set_serdes_volt(int svdd);
+/* The target volt of SVDD in unit mV */
+int setup_serdes_volt(u32 svdd);
+#endif
 
 #endif /* __FSL_SERDES_H__ */