]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/net/ethernet/cadence/macb.c
net: macb: fix default configuration for GMAC on AT91
[karo-tx-linux.git] / drivers / net / ethernet / cadence / macb.c
index 88c1e1a834f8c44491c76269be7c6aa805906ab2..8d54e7b41bbf203a16dd0d2e7cc43a840c1e4a39 100644 (file)
@@ -1682,6 +1682,8 @@ static void macb_init_hw(struct macb *bp)
        macb_set_hwaddr(bp);
 
        config = macb_mdc_clk_div(bp);
+       if (bp->phy_interface == PHY_INTERFACE_MODE_SGMII)
+               config |= GEM_BIT(SGMIIEN) | GEM_BIT(PCSSEL);
        config |= MACB_BF(RBOF, NET_IP_ALIGN);  /* Make eth data aligned */
        config |= MACB_BIT(PAE);                /* PAuse Enable */
        config |= MACB_BIT(DRFCS);              /* Discard Rx FCS */
@@ -2403,9 +2405,9 @@ static int macb_init(struct platform_device *pdev)
        if (bp->phy_interface == PHY_INTERFACE_MODE_RGMII)
                val = GEM_BIT(RGMII);
        else if (bp->phy_interface == PHY_INTERFACE_MODE_RMII &&
-                (bp->caps & MACB_CAPS_USRIO_DEFAULT_IS_MII))
+                (bp->caps & MACB_CAPS_USRIO_DEFAULT_IS_MII_GMII))
                val = MACB_BIT(RMII);
-       else if (!(bp->caps & MACB_CAPS_USRIO_DEFAULT_IS_MII))
+       else if (!(bp->caps & MACB_CAPS_USRIO_DEFAULT_IS_MII_GMII))
                val = MACB_BIT(MII);
 
        if (bp->caps & MACB_CAPS_USRIO_HAS_CLKEN)
@@ -2416,6 +2418,8 @@ static int macb_init(struct platform_device *pdev)
        /* Set MII management clock divider */
        val = macb_mdc_clk_div(bp);
        val |= macb_dbw(bp);
+       if (bp->phy_interface == PHY_INTERFACE_MODE_SGMII)
+               val |= GEM_BIT(SGMIIEN) | GEM_BIT(PCSSEL);
        macb_writel(bp, NCFGR, val);
 
        return 0;
@@ -2734,7 +2738,7 @@ static int at91ether_init(struct platform_device *pdev)
 }
 
 static const struct macb_config at91sam9260_config = {
-       .caps = MACB_CAPS_USRIO_HAS_CLKEN | MACB_CAPS_USRIO_DEFAULT_IS_MII,
+       .caps = MACB_CAPS_USRIO_HAS_CLKEN | MACB_CAPS_USRIO_DEFAULT_IS_MII_GMII,
        .clk_init = macb_clk_init,
        .init = macb_init,
 };
@@ -2747,21 +2751,22 @@ static const struct macb_config pc302gem_config = {
 };
 
 static const struct macb_config sama5d2_config = {
-       .caps = 0,
+       .caps = MACB_CAPS_USRIO_DEFAULT_IS_MII_GMII,
        .dma_burst_length = 16,
        .clk_init = macb_clk_init,
        .init = macb_init,
 };
 
 static const struct macb_config sama5d3_config = {
-       .caps = MACB_CAPS_SG_DISABLED | MACB_CAPS_GIGABIT_MODE_AVAILABLE,
+       .caps = MACB_CAPS_SG_DISABLED | MACB_CAPS_GIGABIT_MODE_AVAILABLE
+             | MACB_CAPS_USRIO_DEFAULT_IS_MII_GMII,
        .dma_burst_length = 16,
        .clk_init = macb_clk_init,
        .init = macb_init,
 };
 
 static const struct macb_config sama5d4_config = {
-       .caps = 0,
+       .caps = MACB_CAPS_USRIO_DEFAULT_IS_MII_GMII,
        .dma_burst_length = 4,
        .clk_init = macb_clk_init,
        .init = macb_init,