linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: "Russell King (Oracle)" <rmk+kernel@armlinux.org.uk>
To: Andrew Lunn <andrew@lunn.ch>, Heiner Kallweit <hkallweit1@gmail.com>
Cc: Alexandre Torgue <alexandre.torgue@foss.st.com>,
	Andrew Lunn <andrew+netdev@lunn.ch>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>,
	linux-arm-kernel@lists.infradead.org,
	linux-stm32@st-md-mailman.stormreply.com,
	Maxime Coquelin <mcoquelin.stm32@gmail.com>,
	netdev@vger.kernel.org, Paolo Abeni <pabeni@redhat.com>,
	Vladimir Oltean <olteanv@gmail.com>,
	Jiawen Wu <jiawenwu@trustnetic.com>
Subject: [PATCH RFC net-next 16/22] net: xpcs: add function to configure EEE clock multiplying factor
Date: Tue, 28 Jan 2025 15:48:06 +0000	[thread overview]
Message-ID: <E1tcnos-0037Hc-PG@rmk-PC.armlinux.org.uk> (raw)
In-Reply-To: <Z5j7yCYSsQ7beznD@shell.armlinux.org.uk>

Add a function to separate out the EEE clock multiplying factor. This
will be called by the stmmac driver to configure this value.

It would have been better had the driver used the CLK API to retrieve
this clock, get its rate and calculate the appropriate multiplier, but
that door has closed.

Question: Is there any other solution to this so we can avoid keeping
this XPCS-specific function that MAC drivers have to know about if
they are going to use EEE with XPCS?

Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
---
 drivers/net/pcs/pcs-xpcs.c   | 14 ++++++++++++++
 drivers/net/pcs/pcs-xpcs.h   |  1 +
 include/linux/pcs/pcs-xpcs.h |  1 +
 3 files changed, 16 insertions(+)

diff --git a/drivers/net/pcs/pcs-xpcs.c b/drivers/net/pcs/pcs-xpcs.c
index 1faa37f0e7b9..91ce4b13df32 100644
--- a/drivers/net/pcs/pcs-xpcs.c
+++ b/drivers/net/pcs/pcs-xpcs.c
@@ -1193,6 +1193,20 @@ static void xpcs_an_restart(struct phylink_pcs *pcs)
 		    BMCR_ANRESTART);
 }
 
+/**
+ * xpcs_config_eee_mult_fact() - set the EEE clock multiplying factor
+ * @xpcs: pointer to a &struct dw_xpcs instance
+ * @mult_fact: the multiplying factor
+ *
+ * Configure the EEE clock multiplying factor. This value should be such that
+ * clk_eee_time_period * (mult_fact + 1) is within the range 80 to 120ns.
+ */
+void xpcs_config_eee_mult_fact(struct dw_xpcs *xpcs, u8 mult_fact)
+{
+	xpcs->eee_mult_fact = mult_fact;
+}
+EXPORT_SYMBOL_GPL(xpcs_config_eee_mult_fact);
+
 static int xpcs_read_ids(struct dw_xpcs *xpcs)
 {
 	int ret;
diff --git a/drivers/net/pcs/pcs-xpcs.h b/drivers/net/pcs/pcs-xpcs.h
index adc5a0b3c883..39d3f517b557 100644
--- a/drivers/net/pcs/pcs-xpcs.h
+++ b/drivers/net/pcs/pcs-xpcs.h
@@ -122,6 +122,7 @@ struct dw_xpcs {
 	struct phylink_pcs pcs;
 	phy_interface_t interface;
 	bool need_reset;
+	u8 eee_mult_fact;
 };
 
 int xpcs_read(struct dw_xpcs *xpcs, int dev, u32 reg);
diff --git a/include/linux/pcs/pcs-xpcs.h b/include/linux/pcs/pcs-xpcs.h
index 733f4ddd2ef1..749d40a9a086 100644
--- a/include/linux/pcs/pcs-xpcs.h
+++ b/include/linux/pcs/pcs-xpcs.h
@@ -52,6 +52,7 @@ struct phylink_pcs *xpcs_to_phylink_pcs(struct dw_xpcs *xpcs);
 int xpcs_get_an_mode(struct dw_xpcs *xpcs, phy_interface_t interface);
 int xpcs_config_eee(struct dw_xpcs *xpcs, int mult_fact_100ns,
 		    int enable);
+void xpcs_config_eee_mult_fact(struct dw_xpcs *xpcs, u8 mult_fact);
 struct dw_xpcs *xpcs_create_mdiodev(struct mii_bus *bus, int addr);
 struct dw_xpcs *xpcs_create_fwnode(struct fwnode_handle *fwnode);
 void xpcs_destroy(struct dw_xpcs *xpcs);
-- 
2.30.2



  parent reply	other threads:[~2025-01-28 16:09 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-01-28 15:46 [PATCH RFC net-next 00/22] net: stmmac/xpcs: further EEE work Russell King (Oracle)
2025-01-28 15:46 ` [PATCH RFC net-next 01/22] net: stmmac: delete software timer before disabling LPI Russell King (Oracle)
2025-01-28 15:46 ` [PATCH RFC net-next 02/22] net: stmmac: ensure LPI is disabled when disabling EEE Russell King (Oracle)
2025-01-28 15:47 ` [PATCH RFC net-next 03/22] net: stmmac: dwmac4: ensure LPIATE is cleared Russell King (Oracle)
2025-01-28 15:47 ` [PATCH RFC net-next 04/22] net: stmmac: split stmmac_init_eee() and move to phylink methods Russell King (Oracle)
2025-01-28 15:47 ` [PATCH RFC net-next 05/22] net: stmmac: remove priv->dma_cap.eee test in tx_lpi methods Russell King (Oracle)
2025-01-28 15:47 ` [PATCH RFC net-next 06/22] net: stmmac: remove unnecessary priv->eee_active tests Russell King (Oracle)
2025-01-28 15:47 ` [PATCH RFC net-next 07/22] net: stmmac: remove unnecessary priv->eee_enabled tests Russell King (Oracle)
2025-01-28 15:47 ` [PATCH RFC net-next 08/22] net: stmmac: clear priv->tx_path_in_lpi_mode when disabling LPI Russell King (Oracle)
2025-01-28 15:47 ` [PATCH RFC net-next 09/22] net: stmmac: remove unnecessary LPI disable when enabling LPI Russell King (Oracle)
2025-01-28 15:47 ` [PATCH RFC net-next 10/22] net: stmmac: use common LPI_CTRL_STATUS bit definitions Russell King (Oracle)
2025-01-28 15:47 ` [PATCH RFC net-next 11/22] net: stmmac: add new MAC method set_lpi_mode() Russell King (Oracle)
2025-01-28 15:47 ` [PATCH RFC net-next 12/22] net: stmmac: dwmac4: clear LPI_CTRL_STATUS_LPITCSE too Russell King (Oracle)
2025-01-28 15:47 ` [PATCH RFC net-next 13/22] net: stmmac: use stmmac_set_lpi_mode() Russell King (Oracle)
2025-01-28 15:47 ` [PATCH RFC net-next 14/22] net: stmmac: remove old EEE methods Russell King (Oracle)
2025-01-28 15:48 ` [PATCH RFC net-next 15/22] net: phylink: add support for notifying PCS about EEE Russell King (Oracle)
2025-01-28 15:48 ` Russell King (Oracle) [this message]
2025-01-28 15:48 ` [PATCH RFC net-next 17/22] net: stmmac: call xpcs_config_eee_mult_fact() Russell King (Oracle)
2025-01-28 15:48 ` [PATCH RFC net-next 18/22] net: xpcs: convert to phylink managed EEE Russell King (Oracle)
2025-01-28 15:48 ` [PATCH RFC net-next 19/22] net: stmmac: remove calls to xpcs_config_eee() Russell King (Oracle)
2025-01-28 15:48 ` [PATCH RFC net-next 20/22] net: xpcs: remove xpcs_config_eee() from global scope Russell King (Oracle)
2025-01-28 15:48 ` [PATCH RFC net-next 21/22] net: xpcs: clean up xpcs_config_eee() Russell King (Oracle)
2025-01-28 15:48 ` [PATCH RFC net-next 22/22] net: xpcs: group EEE code together Russell King (Oracle)

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=E1tcnos-0037Hc-PG@rmk-PC.armlinux.org.uk \
    --to=rmk+kernel@armlinux.org.uk \
    --cc=alexandre.torgue@foss.st.com \
    --cc=andrew+netdev@lunn.ch \
    --cc=andrew@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=hkallweit1@gmail.com \
    --cc=jiawenwu@trustnetic.com \
    --cc=kuba@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-stm32@st-md-mailman.stormreply.com \
    --cc=mcoquelin.stm32@gmail.com \
    --cc=netdev@vger.kernel.org \
    --cc=olteanv@gmail.com \
    --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).