net: gem: Disable PCS autonegotiation in case of fixed-link
authorMichal Simek <michal.simek@xilinx.com>
Wed, 13 May 2020 14:05:01 +0000 (08:05 -0600)
committerMichal Simek <michal.simek@xilinx.com>
Wed, 24 Jun 2020 11:11:06 +0000 (13:11 +0200)
Disable PCS autonegotiation if fixed-link node is present in device tree.
This way systems with multiple GEM instances with a combination of
SGMII-fixed and SGMII-PHY will work.

Reported-by: Goran Marinkovic <goran.marinkovic@psi.ch>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Signed-off-by: Ashok Reddy Soma <ashok.reddy.soma@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
drivers/net/zynq_gem.c

index 412daf7..da4b6fb 100644 (file)
@@ -451,8 +451,12 @@ static int zynq_gem_init(struct udevice *dev)
                nwconfig |= ZYNQ_GEM_NWCFG_SGMII_ENBL |
                            ZYNQ_GEM_NWCFG_PCS_SEL;
 #ifdef CONFIG_ARM64
+       if (priv->phydev->phy_id != PHY_FIXED_ID)
                writel(readl(&regs->pcscntrl) | ZYNQ_GEM_PCS_CTL_ANEG_ENBL,
                       &regs->pcscntrl);
+       else
+               writel(readl(&regs->pcscntrl) & ~ZYNQ_GEM_PCS_CTL_ANEG_ENBL,
+                      &regs->pcscntrl);
 #endif
        }