Skip to content

Commit 53ea3dd

Browse files
Doug Bergergregkh
authored andcommitted
net: bcmgenet: add bcmgenet_has_* helpers
[ Upstream commit 07c1a75 ] 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> Stable-dep-of: 5393b2b ("net: bcmgenet: fix racing timeout handler") Signed-off-by: Sasha Levin <sashal@kernel.org>
1 parent 29394f7 commit 53ea3dd

3 files changed

Lines changed: 39 additions & 14 deletions

File tree

drivers/net/ethernet/broadcom/genet/bcmgenet.c

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ static inline void dmadesc_set_addr(struct bcmgenet_priv *priv,
104104
* the platform is explicitly configured for 64-bits/LPAE.
105105
*/
106106
#ifdef CONFIG_PHYS_ADDR_T_64BIT
107-
if (priv->hw_params->flags & GENET_HAS_40BITS)
107+
if (bcmgenet_has_40bits(priv))
108108
bcmgenet_writel(upper_32_bits(addr), d + DMA_DESC_ADDRESS_HI);
109109
#endif
110110
}
@@ -1644,9 +1644,9 @@ static int bcmgenet_power_down(struct bcmgenet_priv *priv,
16441644

16451645
case GENET_POWER_PASSIVE:
16461646
/* Power down LED */
1647-
if (priv->hw_params->flags & GENET_HAS_EXT) {
1647+
if (bcmgenet_has_ext(priv)) {
16481648
reg = bcmgenet_ext_readl(priv, EXT_EXT_PWR_MGMT);
1649-
if (GENET_IS_V5(priv) && !priv->ephy_16nm)
1649+
if (GENET_IS_V5(priv) && !bcmgenet_has_ephy_16nm(priv))
16501650
reg |= EXT_PWR_DOWN_PHY_EN |
16511651
EXT_PWR_DOWN_PHY_RD |
16521652
EXT_PWR_DOWN_PHY_SD |
@@ -1674,7 +1674,7 @@ static void bcmgenet_power_up(struct bcmgenet_priv *priv,
16741674
{
16751675
u32 reg;
16761676

1677-
if (!(priv->hw_params->flags & GENET_HAS_EXT))
1677+
if (!bcmgenet_has_ext(priv))
16781678
return;
16791679

16801680
reg = bcmgenet_ext_readl(priv, EXT_EXT_PWR_MGMT);
@@ -1683,7 +1683,7 @@ static void bcmgenet_power_up(struct bcmgenet_priv *priv,
16831683
case GENET_POWER_PASSIVE:
16841684
reg &= ~(EXT_PWR_DOWN_DLL | EXT_PWR_DOWN_BIAS |
16851685
EXT_ENERGY_DET_MASK);
1686-
if (GENET_IS_V5(priv) && !priv->ephy_16nm) {
1686+
if (GENET_IS_V5(priv) && !bcmgenet_has_ephy_16nm(priv)) {
16871687
reg &= ~(EXT_PWR_DOWN_PHY_EN |
16881688
EXT_PWR_DOWN_PHY_RD |
16891689
EXT_PWR_DOWN_PHY_SD |
@@ -2516,7 +2516,7 @@ static void bcmgenet_link_intr_enable(struct bcmgenet_priv *priv)
25162516
} else if (priv->ext_phy) {
25172517
int0_enable |= UMAC_IRQ_LINK_EVENT;
25182518
} else if (priv->phy_interface == PHY_INTERFACE_MODE_MOCA) {
2519-
if (priv->hw_params->flags & GENET_HAS_MOCA_LINK_DET)
2519+
if (bcmgenet_has_moca_link_det(priv))
25202520
int0_enable |= UMAC_IRQ_LINK_EVENT;
25212521
}
25222522
bcmgenet_intrl2_0_writel(priv, int0_enable, INTRL2_CPU_MASK_CLEAR);
@@ -2581,7 +2581,7 @@ static void init_umac(struct bcmgenet_priv *priv)
25812581
}
25822582

25832583
/* Enable MDIO interrupts on GENET v3+ */
2584-
if (priv->hw_params->flags & GENET_HAS_MDIO_INTR)
2584+
if (bcmgenet_has_mdio_intr(priv))
25852585
int0_enable |= (UMAC_IRQ_MDIO_DONE | UMAC_IRQ_MDIO_ERROR);
25862586

25872587
bcmgenet_intrl2_0_writel(priv, int0_enable, INTRL2_CPU_MASK_CLEAR);
@@ -3221,7 +3221,7 @@ static irqreturn_t bcmgenet_isr0(int irq, void *dev_id)
32213221
}
32223222
}
32233223

3224-
if ((priv->hw_params->flags & GENET_HAS_MDIO_INTR) &&
3224+
if (bcmgenet_has_mdio_intr(priv) &&
32253225
status & (UMAC_IRQ_MDIO_DONE | UMAC_IRQ_MDIO_ERROR)) {
32263226
wake_up(&priv->wq);
32273227
}
@@ -3891,7 +3891,7 @@ static void bcmgenet_set_hw_params(struct bcmgenet_priv *priv)
38913891
}
38923892

38933893
#ifdef CONFIG_PHYS_ADDR_T_64BIT
3894-
if (!(params->flags & GENET_HAS_40BITS))
3894+
if (!bcmgenet_has_40bits(priv))
38953895
pr_warn("GENET does not support 40-bits PA\n");
38963896
#endif
38973897

@@ -4070,7 +4070,7 @@ static int bcmgenet_probe(struct platform_device *pdev)
40704070
bcmgenet_set_hw_params(priv);
40714071

40724072
err = -EIO;
4073-
if (priv->hw_params->flags & GENET_HAS_40BITS)
4073+
if (bcmgenet_has_40bits(priv))
40744074
err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(40));
40754075
if (err)
40764076
err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));

drivers/net/ethernet/broadcom/genet/bcmgenet.h

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/* SPDX-License-Identifier: GPL-2.0-only */
22
/*
3-
* Copyright (c) 2014-2024 Broadcom
3+
* Copyright (c) 2014-2025 Broadcom
44
*/
55

66
#ifndef __BCMGENET_H__
@@ -648,6 +648,31 @@ struct bcmgenet_priv {
648648
struct bcmgenet_mib_counters mib;
649649
};
650650

651+
static inline bool bcmgenet_has_40bits(struct bcmgenet_priv *priv)
652+
{
653+
return !!(priv->hw_params->flags & GENET_HAS_40BITS);
654+
}
655+
656+
static inline bool bcmgenet_has_ext(struct bcmgenet_priv *priv)
657+
{
658+
return !!(priv->hw_params->flags & GENET_HAS_EXT);
659+
}
660+
661+
static inline bool bcmgenet_has_mdio_intr(struct bcmgenet_priv *priv)
662+
{
663+
return !!(priv->hw_params->flags & GENET_HAS_MDIO_INTR);
664+
}
665+
666+
static inline bool bcmgenet_has_moca_link_det(struct bcmgenet_priv *priv)
667+
{
668+
return !!(priv->hw_params->flags & GENET_HAS_MOCA_LINK_DET);
669+
}
670+
671+
static inline bool bcmgenet_has_ephy_16nm(struct bcmgenet_priv *priv)
672+
{
673+
return priv->ephy_16nm;
674+
}
675+
651676
#define GENET_IO_MACRO(name, offset) \
652677
static inline u32 bcmgenet_##name##_readl(struct bcmgenet_priv *priv, \
653678
u32 off) \

drivers/net/ethernet/broadcom/genet/bcmmii.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
/*
33
* Broadcom GENET MDIO routines
44
*
5-
* Copyright (c) 2014-2024 Broadcom
5+
* Copyright (c) 2014-2025 Broadcom
66
*/
77

88
#include <linux/acpi.h>
@@ -151,7 +151,7 @@ void bcmgenet_phy_power_set(struct net_device *dev, bool enable)
151151
u32 reg = 0;
152152

153153
/* EXT_GPHY_CTRL is only valid for GENETv4 and onward */
154-
if (GENET_IS_V4(priv) || priv->ephy_16nm) {
154+
if (GENET_IS_V4(priv) || bcmgenet_has_ephy_16nm(priv)) {
155155
reg = bcmgenet_ext_readl(priv, EXT_GPHY_CTRL);
156156
if (enable) {
157157
reg &= ~EXT_CK25_DIS;
@@ -181,7 +181,7 @@ void bcmgenet_phy_power_set(struct net_device *dev, bool enable)
181181

182182
static void bcmgenet_moca_phy_setup(struct bcmgenet_priv *priv)
183183
{
184-
if (priv->hw_params->flags & GENET_HAS_MOCA_LINK_DET)
184+
if (bcmgenet_has_moca_link_det(priv))
185185
fixed_phy_set_link_update(priv->dev->phydev,
186186
bcmgenet_fixed_phy_link_update);
187187
}

0 commit comments

Comments
 (0)