sata: Move drivers into new drivers/ata directory
[oweals/u-boot.git] / arch / powerpc / cpu / mpc85xx / fsl_corenet2_serdes.c
index c7d9622beebc9155b730346de69bdfe969907f9d..677b062044b5947c3c511c9ee41ceb571424bf16 100644 (file)
@@ -10,8 +10,8 @@
 #include <asm/io.h>
 #include <asm/processor.h>
 #include <asm/fsl_law.h>
-#include <asm/errno.h>
-#include <asm/fsl_errata.h>
+#include <linux/errno.h>
+#include <fsl_errata.h>
 #include "fsl_corenet2_serdes.h"
 
 #ifdef CONFIG_SYS_FSL_SRDS_1
@@ -78,6 +78,12 @@ static const char *serdes_prtcl_str[] = {
        [INTERLAKEN] = "INTERLAKEN",
        [QSGMII_SW1_A] = "QSGMII_SW1_A",
        [QSGMII_SW1_B] = "QSGMII_SW1_B",
+       [SGMII_SW1_MAC1] = "SGMII_SW1_MAC1",
+       [SGMII_SW1_MAC2] = "SGMII_SW1_MAC2",
+       [SGMII_SW1_MAC3] = "SGMII_SW1_MAC3",
+       [SGMII_SW1_MAC4] = "SGMII_SW1_MAC4",
+       [SGMII_SW1_MAC5] = "SGMII_SW1_MAC5",
+       [SGMII_SW1_MAC6] = "SGMII_SW1_MAC6",
 };
 #endif
 
@@ -86,15 +92,27 @@ int is_serdes_configured(enum srds_prtcl device)
        int ret = 0;
 
 #ifdef CONFIG_SYS_FSL_SRDS_1
+       if (!serdes1_prtcl_map[NONE])
+               fsl_serdes_init();
+
        ret |= serdes1_prtcl_map[device];
 #endif
 #ifdef CONFIG_SYS_FSL_SRDS_2
+       if (!serdes2_prtcl_map[NONE])
+               fsl_serdes_init();
+
        ret |= serdes2_prtcl_map[device];
 #endif
 #ifdef CONFIG_SYS_FSL_SRDS_3
+       if (!serdes3_prtcl_map[NONE])
+               fsl_serdes_init();
+
        ret |= serdes3_prtcl_map[device];
 #endif
 #ifdef CONFIG_SYS_FSL_SRDS_4
+       if (!serdes4_prtcl_map[NONE])
+               fsl_serdes_init();
+
        ret |= serdes4_prtcl_map[device];
 #endif
 
@@ -178,7 +196,10 @@ void serdes_init(u32 sd, u32 sd_addr, u32 sd_prctl_mask, u32 sd_prctl_shift,
        u32 cfg;
        int lane;
 
-       memset(serdes_prtcl_map, 0, sizeof(serdes_prtcl_map));
+       if (serdes_prtcl_map[NONE])
+               return;
+
+       memset(serdes_prtcl_map, 0, sizeof(u8) * SERDES_PRCTL_COUNT);
 #ifdef CONFIG_SYS_FSL_ERRATUM_A007186
        struct ccsr_sfp_regs  __iomem *sfp_regs =
                        (struct ccsr_sfp_regs __iomem *)(CONFIG_SYS_SFP_ADDR);
@@ -319,6 +340,9 @@ void serdes_init(u32 sd, u32 sd_addr, u32 sd_prctl_mask, u32 sd_prctl_shift,
                else
                        serdes_prtcl_map[lane_prtcl] = 1;
        }
+
+       /* Set the first element to indicate serdes has been initialized */
+       serdes_prtcl_map[NONE] = 1;
 }
 
 void fsl_serdes_init(void)
@@ -367,7 +391,7 @@ const char *serdes_clock_to_string(u32 clock)
        case SRDS_PLLCR0_RFCK_SEL_161_13:
                return "161.1328123";
        default:
-#if defined(CONFIG_T4240QDS)
+#if defined(CONFIG_TARGET_T4240QDS) || defined(CONFIG_TARGET_T4160QDS)
                return "???";
 #else
                return "122.88";