]> rtime.felk.cvut.cz Git - zynq/linux.git/blobdiff - drivers/net/ethernet/cadence/macb.c
net: macb: Change PCS control settings for SGMII
[zynq/linux.git] / drivers / net / ethernet / cadence / macb.c
index 574326150b2c6a830c032faa70d018f306994a39..625de80bc3d9219ba54edd644fb6507edb5670a9 100644 (file)
@@ -2016,6 +2016,11 @@ static void macb_init_hw(struct macb *bp)
                             MACB_BIT(HRESP));
        }
 
+       if ((bp->phy_interface == PHY_INTERFACE_MODE_SGMII) &&
+           (bp->caps & MACB_CAPS_PCS))
+               gem_writel(bp, PCSCNTRL,
+                          gem_readl(bp, PCSCNTRL) & ~GEM_BIT(PCSAUTONEG));
+
        /* Enable TX and RX */
        macb_writel(bp, NCR, MACB_BIT(RE) | MACB_BIT(TE) | MACB_BIT(MPE) |
                    MACB_BIT(PTPUNI));
@@ -2820,6 +2825,11 @@ static int macb_init(struct platform_device *pdev)
                val |= GEM_BIT(SGMIIEN) | GEM_BIT(PCSSEL);
        macb_writel(bp, NCFGR, val);
 
+       if ((bp->phy_interface == PHY_INTERFACE_MODE_SGMII) &&
+           (bp->caps & MACB_CAPS_PCS))
+               gem_writel(bp, PCSCNTRL,
+                          gem_readl(bp, PCSCNTRL) & ~GEM_BIT(PCSAUTONEG));
+
        return 0;
 }
 
@@ -3176,7 +3186,7 @@ static const struct macb_config emac_config = {
 
 
 static const struct macb_config zynqmp_config = {
-       .caps = MACB_CAPS_GIGABIT_MODE_AVAILABLE | MACB_CAPS_JUMBO | MACB_CAPS_TSU,
+       .caps = MACB_CAPS_GIGABIT_MODE_AVAILABLE | MACB_CAPS_JUMBO | MACB_CAPS_TSU | MACB_CAPS_PCS,
        .dma_burst_length = 16,
        .clk_init = macb_clk_init,
        .init = macb_init,