netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Doug Berger <opendmb@gmail.com>
To: Florian Fainelli <florian.fainelli@broadcom.com>,
	Andrew Lunn <andrew+netdev@lunn.ch>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>
Cc: Broadcom internal kernel review list
	<bcm-kernel-feedback-list@broadcom.com>,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	Doug Berger <opendmb@gmail.com>
Subject: [PATCH net-next 12/14] net: bcmgenet: move bcmgenet_power_up into resume_noirq
Date: Thu,  6 Mar 2025 11:26:40 -0800	[thread overview]
Message-ID: <20250306192643.2383632-13-opendmb@gmail.com> (raw)
In-Reply-To: <20250306192643.2383632-1-opendmb@gmail.com>

The bcmgenet_power_up() function is moved from the resume method
to the resume_noirq method for symmetry with the suspend_noirq
method. This allows the wol_active flag to be removed.

The UMAC_IRQ_WAKE_EVENT interrupts that can be unmasked by the
bcmgenet_wol_power_down_cfg() function are now re-masked by the
bcmgenet_wol_power_up_cfg() function at the resume_noirq level
as well.

Signed-off-by: Doug Berger <opendmb@gmail.com>
---
 .../net/ethernet/broadcom/genet/bcmgenet.c    | 24 +++++++++----------
 .../net/ethernet/broadcom/genet/bcmgenet.h    |  1 -
 .../ethernet/broadcom/genet/bcmgenet_wol.c    |  8 +++----
 3 files changed, 15 insertions(+), 18 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
index 0706c9635689..8aecf56578cb 100644
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
@@ -4038,8 +4038,20 @@ static int bcmgenet_resume_noirq(struct device *d)
 		reg = bcmgenet_intrl2_0_readl(priv, INTRL2_CPU_STAT);
 		if (reg & UMAC_IRQ_WAKE_EVENT)
 			pm_wakeup_event(&priv->pdev->dev, 0);
+
+		/* From WOL-enabled suspend, switch to regular clock */
+		bcmgenet_power_up(priv, GENET_POWER_WOL_MAGIC);
 	}
 
+	/* If this is an internal GPHY, power it back on now, before UniMAC is
+	 * brought out of reset as absolutely no UniMAC activity is allowed
+	 */
+	if (priv->internal_phy)
+		bcmgenet_power_up(priv, GENET_POWER_PASSIVE);
+
+	/* take MAC out of reset */
+	bcmgenet_umac_reset(priv);
+
 	bcmgenet_intrl2_0_writel(priv, UMAC_IRQ_WAKE_EVENT, INTRL2_CPU_CLEAR);
 
 	return 0;
@@ -4055,18 +4067,6 @@ static int bcmgenet_resume(struct device *d)
 	if (!netif_running(dev))
 		return 0;
 
-	/* From WOL-enabled suspend, switch to regular clock */
-	if (device_may_wakeup(d) && priv->wolopts)
-		bcmgenet_power_up(priv, GENET_POWER_WOL_MAGIC);
-
-	/* If this is an internal GPHY, power it back on now, before UniMAC is
-	 * brought out of reset as absolutely no UniMAC activity is allowed
-	 */
-	if (priv->internal_phy)
-		bcmgenet_power_up(priv, GENET_POWER_PASSIVE);
-
-	bcmgenet_umac_reset(priv);
-
 	init_umac(priv);
 
 	phy_init_hw(dev->phydev);
diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.h b/drivers/net/ethernet/broadcom/genet/bcmgenet.h
index 926523d019db..633fa9aa0726 100644
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.h
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.h
@@ -641,7 +641,6 @@ struct bcmgenet_priv {
 	struct clk *clk_wol;
 	u32 wolopts;
 	u8 sopass[SOPASS_MAX];
-	bool wol_active;
 
 	struct bcmgenet_mib_counters mib;
 
diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet_wol.c b/drivers/net/ethernet/broadcom/genet/bcmgenet_wol.c
index f37665ce40cb..5246214aebc9 100644
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet_wol.c
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet_wol.c
@@ -199,7 +199,6 @@ int bcmgenet_wol_power_down_cfg(struct bcmgenet_priv *priv,
 		  retries);
 
 	clk_prepare_enable(priv->clk_wol);
-	priv->wol_active = 1;
 
 	if (hfb_enable) {
 		bcmgenet_hfb_reg_writel(priv, hfb_enable,
@@ -238,13 +237,12 @@ void bcmgenet_wol_power_up_cfg(struct bcmgenet_priv *priv,
 		return;
 	}
 
-	if (!priv->wol_active)
-		return;	/* failed to suspend so skip the rest */
-
-	priv->wol_active = 0;
 	clk_disable_unprepare(priv->clk_wol);
 	priv->crc_fwd_en = 0;
 
+	bcmgenet_intrl2_0_writel(priv, UMAC_IRQ_WAKE_EVENT,
+				 INTRL2_CPU_MASK_SET);
+
 	/* Disable Magic Packet Detection */
 	if (priv->wolopts & (WAKE_MAGIC | WAKE_MAGICSECURE)) {
 		reg = bcmgenet_umac_readl(priv, UMAC_MPD_CTRL);
-- 
2.34.1


  parent reply	other threads:[~2025-03-06 19:27 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-06 19:26 [PATCH net-next 00/14] net: bcmgenet: revise suspend/resume Doug Berger
2025-03-06 19:26 ` [PATCH net-next 01/14] net: bcmgenet: bcmgenet_hw_params clean up Doug Berger
2025-03-06 19:41   ` Florian Fainelli
2025-03-06 19:26 ` [PATCH net-next 02/14] net: bcmgenet: add bcmgenet_has_* helpers Doug Berger
2025-03-06 19:41   ` Florian Fainelli
2025-03-06 19:26 ` [PATCH net-next 03/14] net: bcmgenet: move feature flags to bcmgenet_priv Doug Berger
2025-03-06 19:41   ` Florian Fainelli
2025-03-06 19:26 ` [PATCH net-next 04/14] net: bcmgenet: BCM7712 is GENETv5 compatible Doug Berger
2025-03-06 19:41   ` Florian Fainelli
2025-03-06 19:26 ` [PATCH net-next 05/14] net: bcmgenet: extend bcmgenet_hfb_* API Doug Berger
2025-03-06 19:41   ` Florian Fainelli
2025-03-06 19:26 ` [PATCH net-next 06/14] net: bcmgenet: move DESC_INDEX flow to ring 0 Doug Berger
2025-03-06 20:17   ` Florian Fainelli
2025-03-06 19:26 ` [PATCH net-next 07/14] net: bcmgenet: add support for RX_CLS_FLOW_DISC Doug Berger
2025-03-06 20:17   ` Florian Fainelli
2025-03-06 19:26 ` [PATCH net-next 08/14] net: bcmgenet: remove dma_ctrl argument Doug Berger
2025-03-06 20:17   ` Florian Fainelli
2025-03-06 19:26 ` [PATCH net-next 09/14] net: bcmgenet: consolidate dma initialization Doug Berger
2025-03-06 20:20   ` Florian Fainelli
2025-03-06 19:26 ` [PATCH net-next 10/14] net: bcmgenet: introduce bcmgenet_[r|t]dma_disable Doug Berger
2025-03-06 20:21   ` Florian Fainelli
2025-03-06 19:26 ` [PATCH net-next 11/14] net: bcmgenet: support reclaiming unsent Tx packets Doug Berger
2025-03-06 20:22   ` Florian Fainelli
2025-03-06 19:26 ` Doug Berger [this message]
2025-03-06 20:24   ` [PATCH net-next 12/14] net: bcmgenet: move bcmgenet_power_up into resume_noirq Florian Fainelli
2025-03-06 19:26 ` [PATCH net-next 13/14] net: bcmgenet: allow return of power up status Doug Berger
2025-03-06 20:24   ` Florian Fainelli
2025-03-06 19:26 ` [PATCH net-next 14/14] net: bcmgenet: revise suspend/resume Doug Berger
2025-03-06 20:29   ` Florian Fainelli
2025-03-08  3:40 ` [PATCH net-next 00/14] " patchwork-bot+netdevbpf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250306192643.2383632-13-opendmb@gmail.com \
    --to=opendmb@gmail.com \
    --cc=andrew+netdev@lunn.ch \
    --cc=bcm-kernel-feedback-list@broadcom.com \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=florian.fainelli@broadcom.com \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).