LS1044A/1048A is LS1088 personality which support only one 1x 10GE port.
MAC1 and MAC2 are associated with 1G SGMII, 2.5G SGMII, and XFI.
Disable MAC1 to have only one 1x 10GE port

Signed-off-by: Pramod Kumar <pramod.kuma...@nxp.com>
---
 arch/arm/cpu/armv8/fsl-layerscape/ls1088a_serdes.c | 33 +++++++++++++++++++++-
 1 file changed, 32 insertions(+), 1 deletion(-)

diff --git a/arch/arm/cpu/armv8/fsl-layerscape/ls1088a_serdes.c 
b/arch/arm/cpu/armv8/fsl-layerscape/ls1088a_serdes.c
index 8e8b45a..11090e8 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/ls1088a_serdes.c
+++ b/arch/arm/cpu/armv8/fsl-layerscape/ls1088a_serdes.c
@@ -5,6 +5,11 @@
 
 #include <common.h>
 #include <asm/arch/fsl_serdes.h>
+#include <asm/arch/soc.h>
+#include <asm/io.h>
+#define PERSONALITY_LS1088A_TYPE               0
+#define PERSONALITY_LS1044A_LS1048A_TYPE       1
+#define PERSONALITY_INVALID_TYPE               -1
 
 struct serdes_config {
        u8 ip_protocol;
@@ -32,6 +37,7 @@ static struct serdes_config serdes1_cfg_tbl[] = {
        {0x3A, {SGMII3, PCIE1, SGMII1, SGMII2 }, {3, 5, 3, 3 } },
                {}
 };
+
 static struct serdes_config serdes2_cfg_tbl[] = {
        /* SerDes 2 */
        {0x0C, {PCIE1, PCIE1, PCIE1, PCIE1 }, {8, 8, 8, 8 } },
@@ -48,6 +54,22 @@ static struct serdes_config *serdes_cfg_tbl[] = {
        serdes2_cfg_tbl,
 };
 
+int check_personality_type(void)
+{
+       struct ccsr_gur __iomem *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR);
+       unsigned int  svr, ver;
+       int personality;
+
+       svr = gur_in32(&gur->svr);
+       ver = SVR_SOC_VER(svr);
+       if (ver == SVR_LS1088A)
+               personality =  PERSONALITY_LS1088A_TYPE;
+       else
+               personality = PERSONALITY_LS1044A_LS1048A_TYPE;
+
+       return personality;
+}
+
 int serdes_get_number(int serdes, int cfg)
 {
        struct serdes_config *ptr;
@@ -84,10 +106,19 @@ int serdes_get_number(int serdes, int cfg)
 enum srds_prtcl serdes_get_prtcl(int serdes, int cfg, int lane)
 {
        struct serdes_config *ptr;
+       int personality_type;
 
        if (serdes >= ARRAY_SIZE(serdes_cfg_tbl))
                return 0;
-
+       /*
+        * LS1044A/1048A  support only one XFI port
+        * Disable MAC1 for LS1044A/1048A
+        */
+       if (!serdes && lane == 2) {
+               personality_type = check_personality_type();
+               if (personality_type == PERSONALITY_LS1044A_LS1048A_TYPE)
+                       return 0;
+       }
        ptr = serdes_cfg_tbl[serdes];
        while (ptr->ip_protocol) {
                if (ptr->ip_protocol == cfg)
-- 
2.7.4

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to