From patchwork Thu Feb 29 10:53:15 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Ernberg X-Patchwork-Id: 13576959 X-Patchwork-Delegate: kuba@kernel.org Received: from mail.actia.se (mail.actia.se [212.181.117.226]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8AB517AE4B; Thu, 29 Feb 2024 10:53:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.181.117.226 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709204011; cv=none; b=FelLRIKFDG1P6ygUPWqhCnpgSpDHXbGxwi17l0hw+gMRb10TiiCpkBUkTMkjdf/tgDr4de6b114EFMLlGLmuuHcLUXIF10lk9FJhaNHcQS02lqwsm3pQt8W36MSZ0bqTzu322pDiAhejH/Rm+7ApM7TeW02NGN6cn2fiHMq9VVE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709204011; c=relaxed/simple; bh=PNwWwvuBJawLAblzdVhyPVN105zb/MBZ+sqrDXI5M8A=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=UJjy9LnjKDsiYK8KQeo1PH2wpj1R35fuBSJq53jqxKtY8f8QH6L/o/JeTKGfqGAozGJsgcus4Q8nzKoRiJLUjH9a0FVWApdaV0qp7LR9bJSPkvQ6XMib3AcpLwGrqzDGg26KCGSHhTGzFjeHvdJ5fBK55BhEhdb4kAMEnaNSwsA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=actia.se; spf=pass smtp.mailfrom=actia.se; arc=none smtp.client-ip=212.181.117.226 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=actia.se Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=actia.se Received: from S036ANL.actianordic.se (10.12.31.117) by S035ANL.actianordic.se (10.12.31.116) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Thu, 29 Feb 2024 11:53:15 +0100 Received: from S036ANL.actianordic.se ([fe80::e13e:1feb:4ea6:ec69]) by S036ANL.actianordic.se ([fe80::e13e:1feb:4ea6:ec69%4]) with mapi id 15.01.2507.035; Thu, 29 Feb 2024 11:53:15 +0100 From: John Ernberg To: Wei Fang CC: Shenwei Wang , Clark Wang , NXP Linux Team , "David S. Miller" , Eric Dumazet , Jakub Kicinski , "Paolo Abeni" , Heiner Kallweit , "netdev@vger.kernel.org" , "linux-kernel@vger.kernel.org" , John Ernberg Subject: [PATCH net v2 2/2] net: fec: Suspend and resume the PHY Thread-Topic: [PATCH net v2 2/2] net: fec: Suspend and resume the PHY Thread-Index: AQHaav1/Ffv5x8jH7kmxx77YLYL/oA== Date: Thu, 29 Feb 2024 10:53:15 +0000 Message-ID: <20240229105256.2903095-3-john.ernberg@actia.se> References: <20240229105256.2903095-1-john.ernberg@actia.se> In-Reply-To: <20240229105256.2903095-1-john.ernberg@actia.se> Accept-Language: en-US, sv-SE Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.43.0 x-esetresult: clean, is OK x-esetid: 37303A2921D72955637266 Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Delegate: kuba@kernel.org PHYs that are always-on will not enter their low power modes otherwise as they have no regulator to be powered off with. Since the PHY is picked up via {of_,}phy_connect() and dropped with phy_disconnect() when the link is brought up and down respectively the only cases were pm is needed is when the netif is running or or when the link has never been up. To deal with the latter case the PHY is suspended on discovery in probe, since it won't be needed until link up. Fixes: 557d5dc83f68 ("net: fec: use mac-managed PHY PM") Signed-off-by: John Ernberg --- v2: New patch --- drivers/net/ethernet/freescale/fec_main.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c index 8decb1b072c5..c5394a4d8491 100644 --- a/drivers/net/ethernet/freescale/fec_main.c +++ b/drivers/net/ethernet/freescale/fec_main.c @@ -2539,8 +2539,10 @@ static int fec_enet_mii_init(struct platform_device *pdev) /* find all the PHY devices on the bus and set mac_managed_pm to true */ for (addr = 0; addr < PHY_MAX_ADDR; addr++) { phydev = mdiobus_get_phy(fep->mii_bus, addr); - if (phydev) + if (phydev) { phydev->mac_managed_pm = true; + phy_suspend(phydev); + } } mii_cnt++; @@ -4631,6 +4633,7 @@ static int __maybe_unused fec_suspend(struct device *dev) if (fep->wol_flag & FEC_WOL_FLAG_ENABLE) fep->wol_flag |= FEC_WOL_FLAG_SLEEP_ON; phy_stop(ndev->phydev); + phy_suspend(ndev->phydev); napi_disable(&fep->napi); netif_tx_lock_bh(ndev); netif_device_detach(ndev); @@ -4716,6 +4719,7 @@ static int __maybe_unused fec_resume(struct device *dev) netif_tx_unlock_bh(ndev); napi_enable(&fep->napi); phy_init_hw(ndev->phydev); + phy_resume(ndev->phydev); phy_start(ndev->phydev); } rtnl_unlock();