Revert "net: ethernet: stmmac: fix altr_tse_pcs function when using a fixed-link"
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 29 Apr 2022 09:19:38 +0000 (11:19 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 12 May 2022 10:14:53 +0000 (12:14 +0200)
This reverts commit edba120f094394454f5b9511d04abd7e8c2c31ee which is
commit a6aaa00324240967272b451bfa772547bd576ee6 upstream.

Pavel reports that it causes boot issues, so revert it for now.

Link: https://lore.kernel.org/r/20220429074341.GB1423@amd
Reported-by: Pavel Machek <pavel@denx.de>
Cc: Dinh Nguyen <dinguyen@kernel.org>
Cc: David S. Miller <davem@davemloft.net>
Cc: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/ethernet/stmicro/stmmac/altr_tse_pcs.c
drivers/net/ethernet/stmicro/stmmac/altr_tse_pcs.h
drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c

index 6ca428a702f161a16a05cb69a12f46e93f0fea28..6a9c954492f225987d5dc63713034548e7aabdbb 100644 (file)
 #define TSE_PCS_USE_SGMII_ENA                          BIT(0)
 #define TSE_PCS_IF_USE_SGMII                           0x03
 
+#define SGMII_ADAPTER_CTRL_REG                         0x00
+#define SGMII_ADAPTER_DISABLE                          0x0001
+#define SGMII_ADAPTER_ENABLE                           0x0000
+
 #define AUTONEGO_LINK_TIMER                            20
 
 static int tse_pcs_reset(void __iomem *base, struct tse_pcs *pcs)
@@ -211,8 +215,12 @@ void tse_pcs_fix_mac_speed(struct tse_pcs *pcs, struct phy_device *phy_dev,
                           unsigned int speed)
 {
        void __iomem *tse_pcs_base = pcs->tse_pcs_base;
+       void __iomem *sgmii_adapter_base = pcs->sgmii_adapter_base;
        u32 val;
 
+       writew(SGMII_ADAPTER_ENABLE,
+              sgmii_adapter_base + SGMII_ADAPTER_CTRL_REG);
+
        pcs->autoneg = phy_dev->autoneg;
 
        if (phy_dev->autoneg == AUTONEG_ENABLE) {
index 254199f2efdbf26571118a3f7781b82c0ca15cdd..2f5882450b06a99c5ff6e83ca3289f2a50abda25 100644 (file)
 #include <linux/phy.h>
 #include <linux/timer.h>
 
-#define SGMII_ADAPTER_CTRL_REG         0x00
-#define SGMII_ADAPTER_ENABLE           0x0000
-#define SGMII_ADAPTER_DISABLE          0x0001
-
 struct tse_pcs {
        struct device *dev;
        void __iomem *tse_pcs_base;
index b138968b8672aef59e9bc733cbfb6938407640c5..c3a78c11342406688c780e7843d2281b54e4e28f 100644 (file)
@@ -29,6 +29,9 @@
 
 #include "altr_tse_pcs.h"
 
+#define SGMII_ADAPTER_CTRL_REG                          0x00
+#define SGMII_ADAPTER_DISABLE                           0x0001
+
 #define SYSMGR_EMACGRP_CTRL_PHYSEL_ENUM_GMII_MII 0x0
 #define SYSMGR_EMACGRP_CTRL_PHYSEL_ENUM_RGMII 0x1
 #define SYSMGR_EMACGRP_CTRL_PHYSEL_ENUM_RMII 0x2
@@ -62,14 +65,16 @@ static void socfpga_dwmac_fix_mac_speed(void *priv, unsigned int speed)
 {
        struct socfpga_dwmac *dwmac = (struct socfpga_dwmac *)priv;
        void __iomem *splitter_base = dwmac->splitter_base;
+       void __iomem *tse_pcs_base = dwmac->pcs.tse_pcs_base;
        void __iomem *sgmii_adapter_base = dwmac->pcs.sgmii_adapter_base;
        struct device *dev = dwmac->dev;
        struct net_device *ndev = dev_get_drvdata(dev);
        struct phy_device *phy_dev = ndev->phydev;
        u32 val;
 
-       writew(SGMII_ADAPTER_DISABLE,
-              sgmii_adapter_base + SGMII_ADAPTER_CTRL_REG);
+       if ((tse_pcs_base) && (sgmii_adapter_base))
+               writew(SGMII_ADAPTER_DISABLE,
+                      sgmii_adapter_base + SGMII_ADAPTER_CTRL_REG);
 
        if (splitter_base) {
                val = readl(splitter_base + EMAC_SPLITTER_CTRL_REG);
@@ -91,9 +96,7 @@ static void socfpga_dwmac_fix_mac_speed(void *priv, unsigned int speed)
                writel(val, splitter_base + EMAC_SPLITTER_CTRL_REG);
        }
 
-       writew(SGMII_ADAPTER_ENABLE,
-              sgmii_adapter_base + SGMII_ADAPTER_CTRL_REG);
-       if (phy_dev)
+       if (tse_pcs_base && sgmii_adapter_base)
                tse_pcs_fix_mac_speed(&dwmac->pcs, phy_dev, speed);
 }