]> www.infradead.org Git - users/hch/misc.git/commitdiff
net: bcmgenet: add bcmgenet_has_* helpers
authorDoug Berger <opendmb@gmail.com>
Thu, 6 Mar 2025 19:26:30 +0000 (11:26 -0800)
committerJakub Kicinski <kuba@kernel.org>
Sat, 8 Mar 2025 03:33:46 +0000 (19:33 -0800)
Introduce helper functions to indicate whether the driver should
make use of a particular feature that it supports. These helpers
abstract the implementation of how the feature availability is
encoded.

Signed-off-by: Doug Berger <opendmb@gmail.com>
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
Link: https://patch.msgid.link/20250306192643.2383632-3-opendmb@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/broadcom/genet/bcmgenet.c
drivers/net/ethernet/broadcom/genet/bcmgenet.h
drivers/net/ethernet/broadcom/genet/bcmmii.c

index 0c717a724c4e14ce57c1fa261bf3182280c0d20d..769d920a0fc06f099ebffc4355eb27d53aa75f78 100644 (file)
@@ -104,7 +104,7 @@ static inline void dmadesc_set_addr(struct bcmgenet_priv *priv,
         * the platform is explicitly configured for 64-bits/LPAE.
         */
 #ifdef CONFIG_PHYS_ADDR_T_64BIT
-       if (priv->hw_params->flags & GENET_HAS_40BITS)
+       if (bcmgenet_has_40bits(priv))
                bcmgenet_writel(upper_32_bits(addr), d + DMA_DESC_ADDRESS_HI);
 #endif
 }
@@ -1651,9 +1651,9 @@ static int bcmgenet_power_down(struct bcmgenet_priv *priv,
 
        case GENET_POWER_PASSIVE:
                /* Power down LED */
-               if (priv->hw_params->flags & GENET_HAS_EXT) {
+               if (bcmgenet_has_ext(priv)) {
                        reg = bcmgenet_ext_readl(priv, EXT_EXT_PWR_MGMT);
-                       if (GENET_IS_V5(priv) && !priv->ephy_16nm)
+                       if (GENET_IS_V5(priv) && !bcmgenet_has_ephy_16nm(priv))
                                reg |= EXT_PWR_DOWN_PHY_EN |
                                       EXT_PWR_DOWN_PHY_RD |
                                       EXT_PWR_DOWN_PHY_SD |
@@ -1681,7 +1681,7 @@ static void bcmgenet_power_up(struct bcmgenet_priv *priv,
 {
        u32 reg;
 
-       if (!(priv->hw_params->flags & GENET_HAS_EXT))
+       if (!bcmgenet_has_ext(priv))
                return;
 
        reg = bcmgenet_ext_readl(priv, EXT_EXT_PWR_MGMT);
@@ -1690,7 +1690,7 @@ static void bcmgenet_power_up(struct bcmgenet_priv *priv,
        case GENET_POWER_PASSIVE:
                reg &= ~(EXT_PWR_DOWN_DLL | EXT_PWR_DOWN_BIAS |
                         EXT_ENERGY_DET_MASK);
-               if (GENET_IS_V5(priv) && !priv->ephy_16nm) {
+               if (GENET_IS_V5(priv) && !bcmgenet_has_ephy_16nm(priv)) {
                        reg &= ~(EXT_PWR_DOWN_PHY_EN |
                                 EXT_PWR_DOWN_PHY_RD |
                                 EXT_PWR_DOWN_PHY_SD |
@@ -2523,7 +2523,7 @@ static void bcmgenet_link_intr_enable(struct bcmgenet_priv *priv)
        } else if (priv->ext_phy) {
                int0_enable |= UMAC_IRQ_LINK_EVENT;
        } else if (priv->phy_interface == PHY_INTERFACE_MODE_MOCA) {
-               if (priv->hw_params->flags & GENET_HAS_MOCA_LINK_DET)
+               if (bcmgenet_has_moca_link_det(priv))
                        int0_enable |= UMAC_IRQ_LINK_EVENT;
        }
        bcmgenet_intrl2_0_writel(priv, int0_enable, INTRL2_CPU_MASK_CLEAR);
@@ -2588,7 +2588,7 @@ static void init_umac(struct bcmgenet_priv *priv)
        }
 
        /* Enable MDIO interrupts on GENET v3+ */
-       if (priv->hw_params->flags & GENET_HAS_MDIO_INTR)
+       if (bcmgenet_has_mdio_intr(priv))
                int0_enable |= (UMAC_IRQ_MDIO_DONE | UMAC_IRQ_MDIO_ERROR);
 
        bcmgenet_intrl2_0_writel(priv, int0_enable, INTRL2_CPU_MASK_CLEAR);
@@ -3228,7 +3228,7 @@ static irqreturn_t bcmgenet_isr0(int irq, void *dev_id)
                }
        }
 
-       if ((priv->hw_params->flags & GENET_HAS_MDIO_INTR) &&
+       if (bcmgenet_has_mdio_intr(priv) &&
                status & (UMAC_IRQ_MDIO_DONE | UMAC_IRQ_MDIO_ERROR)) {
                wake_up(&priv->wq);
        }
@@ -3881,7 +3881,7 @@ static void bcmgenet_set_hw_params(struct bcmgenet_priv *priv)
        }
 
 #ifdef CONFIG_PHYS_ADDR_T_64BIT
-       if (!(params->flags & GENET_HAS_40BITS))
+       if (!bcmgenet_has_40bits(priv))
                pr_warn("GENET does not support 40-bits PA\n");
 #endif
 
@@ -4060,7 +4060,7 @@ static int bcmgenet_probe(struct platform_device *pdev)
        bcmgenet_set_hw_params(priv);
 
        err = -EIO;
-       if (priv->hw_params->flags & GENET_HAS_40BITS)
+       if (bcmgenet_has_40bits(priv))
                err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(40));
        if (err)
                err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
index 1078a31ac794fe4b8355a79e93905cbf5c04ae4e..9b73ae55c0d68e79e8dac99bc9ff0afbc5c13d86 100644 (file)
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 /*
- * Copyright (c) 2014-2024 Broadcom
+ * Copyright (c) 2014-2025 Broadcom
  */
 
 #ifndef __BCMGENET_H__
@@ -650,6 +650,31 @@ struct bcmgenet_priv {
        struct ethtool_keee eee;
 };
 
+static inline bool bcmgenet_has_40bits(struct bcmgenet_priv *priv)
+{
+       return !!(priv->hw_params->flags & GENET_HAS_40BITS);
+}
+
+static inline bool bcmgenet_has_ext(struct bcmgenet_priv *priv)
+{
+       return !!(priv->hw_params->flags & GENET_HAS_EXT);
+}
+
+static inline bool bcmgenet_has_mdio_intr(struct bcmgenet_priv *priv)
+{
+       return !!(priv->hw_params->flags & GENET_HAS_MDIO_INTR);
+}
+
+static inline bool bcmgenet_has_moca_link_det(struct bcmgenet_priv *priv)
+{
+       return !!(priv->hw_params->flags & GENET_HAS_MOCA_LINK_DET);
+}
+
+static inline bool bcmgenet_has_ephy_16nm(struct bcmgenet_priv *priv)
+{
+       return priv->ephy_16nm;
+}
+
 #define GENET_IO_MACRO(name, offset)                                   \
 static inline u32 bcmgenet_##name##_readl(struct bcmgenet_priv *priv,  \
                                        u32 off)                        \
index c4a3698cef66f61d775c783b334a035589d55bdd..71c619d2bea5faff28d5fa3a63c56a6d7ea03dd0 100644 (file)
@@ -2,7 +2,7 @@
 /*
  * Broadcom GENET MDIO routines
  *
- * Copyright (c) 2014-2024 Broadcom
+ * Copyright (c) 2014-2025 Broadcom
  */
 
 #include <linux/acpi.h>
@@ -154,7 +154,7 @@ void bcmgenet_phy_power_set(struct net_device *dev, bool enable)
        u32 reg = 0;
 
        /* EXT_GPHY_CTRL is only valid for GENETv4 and onward */
-       if (GENET_IS_V4(priv) || priv->ephy_16nm) {
+       if (GENET_IS_V4(priv) || bcmgenet_has_ephy_16nm(priv)) {
                reg = bcmgenet_ext_readl(priv, EXT_GPHY_CTRL);
                if (enable) {
                        reg &= ~EXT_CK25_DIS;
@@ -184,7 +184,7 @@ void bcmgenet_phy_power_set(struct net_device *dev, bool enable)
 
 static void bcmgenet_moca_phy_setup(struct bcmgenet_priv *priv)
 {
-       if (priv->hw_params->flags & GENET_HAS_MOCA_LINK_DET)
+       if (bcmgenet_has_moca_link_det(priv))
                fixed_phy_set_link_update(priv->dev->phydev,
                                          bcmgenet_fixed_phy_link_update);
 }