]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net: stmmac: add struct stmmac_pcs_info
authorRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Wed, 18 Mar 2026 16:06:16 +0000 (16:06 +0000)
committerJakub Kicinski <kuba@kernel.org>
Tue, 24 Mar 2026 00:32:18 +0000 (17:32 -0700)
We need to describe one more register (offset and field bitmask) to
the PCS code. Move the existing PCS offset and interrupt enable bits
to a new struct and pass that in to stmmac_integrated_pcs_init().

Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Link: https://patch.msgid.link/E1w2tPU-0000000DYAd-0ssk@rmk-PC.armlinux.org.uk
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c
drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
drivers/net/ethernet/stmicro/stmmac/stmmac_pcs.c
drivers/net/ethernet/stmicro/stmmac/stmmac_pcs.h

index 01f8353eb6ef2d2247be23bca13e996138000605..c851e3b88ce5627d733d81f80694d3a0b445b011 100644 (file)
 #include "stmmac_ptp.h"
 #include "dwmac1000.h"
 
+static const struct stmmac_pcs_info dwmac1000_pcs_info = {
+       .pcs_offset = GMAC_PCS_BASE,
+       .int_mask = GMAC_INT_DISABLE_PCSLINK | GMAC_INT_DISABLE_PCSAN,
+};
+
 static int dwmac1000_pcs_init(struct stmmac_priv *priv)
 {
        if (!priv->dma_cap.pcs)
                return 0;
 
-       return stmmac_integrated_pcs_init(priv, GMAC_PCS_BASE,
-                                         GMAC_INT_DISABLE_PCSLINK |
-                                         GMAC_INT_DISABLE_PCSAN);
+       return stmmac_integrated_pcs_init(priv, &dwmac1000_pcs_info);
 }
 
 static void dwmac1000_core_init(struct mac_device_info *hw,
index 4c6fed3ecbcf55abc8f0a8cf93d6bdb3c0420b59..ba5393beb7bba7bb54989a06d9557037debed6fa 100644 (file)
 #include "dwmac4.h"
 #include "dwmac5.h"
 
+static const struct stmmac_pcs_info dwmac4_pcs_info = {
+       .pcs_offset = GMAC_PCS_BASE,
+       .int_mask = GMAC_INT_PCS_LINK | GMAC_INT_PCS_ANE,
+};
+
 static int dwmac4_pcs_init(struct stmmac_priv *priv)
 {
        if (!priv->dma_cap.pcs)
                return 0;
 
-       return stmmac_integrated_pcs_init(priv, GMAC_PCS_BASE,
-                                         GMAC_INT_PCS_LINK | GMAC_INT_PCS_ANE);
+       return stmmac_integrated_pcs_init(priv, &dwmac4_pcs_info);
 }
 
 static void dwmac4_core_init(struct mac_device_info *hw,
index 88fa359ea71636190fa23a046a3385d4482a6d69..2695e0b9ed03c72ef86b5fe8de432c28066e10b2 100644 (file)
@@ -90,8 +90,8 @@ int stmmac_integrated_pcs_get_phy_intf_sel(struct phylink_pcs *pcs,
        return -EINVAL;
 }
 
-int stmmac_integrated_pcs_init(struct stmmac_priv *priv, unsigned int offset,
-                              u32 int_mask)
+int stmmac_integrated_pcs_init(struct stmmac_priv *priv,
+                              const struct stmmac_pcs_info *pcs_info)
 {
        struct stmmac_pcs *spcs;
 
@@ -100,8 +100,8 @@ int stmmac_integrated_pcs_init(struct stmmac_priv *priv, unsigned int offset,
                return -ENOMEM;
 
        spcs->priv = priv;
-       spcs->base = priv->ioaddr + offset;
-       spcs->int_mask = int_mask;
+       spcs->base = priv->ioaddr + pcs_info->pcs_offset;
+       spcs->int_mask = pcs_info->int_mask;
        spcs->pcs.ops = &dwmac_integrated_pcs_ops;
 
        __set_bit(PHY_INTERFACE_MODE_SGMII, spcs->pcs.supported_interfaces);
index 23bbd4f10bf84558482df90c25876eafd994f57c..f1ee473d8e3e4bec4c652f536a9387400361b876 100644 (file)
 
 struct stmmac_priv;
 
+struct stmmac_pcs_info {
+       unsigned int pcs_offset;
+       u32 int_mask;
+};
+
 struct stmmac_pcs {
        struct stmmac_priv *priv;
        void __iomem *base;
@@ -44,8 +49,8 @@ void stmmac_integrated_pcs_irq(struct stmmac_priv *priv, u32 status,
                               struct stmmac_extra_stats *x);
 int stmmac_integrated_pcs_get_phy_intf_sel(struct phylink_pcs *pcs,
                                           phy_interface_t interface);
-int stmmac_integrated_pcs_init(struct stmmac_priv *priv, unsigned int offset,
-                              u32 int_mask);
+int stmmac_integrated_pcs_init(struct stmmac_priv *priv,
+                              const struct stmmac_pcs_info *pcs_info);
 
 /**
  * dwmac_ctrl_ane - To program the AN Control Register.