* [PATCH net-next v2 0/2] net: stmmac: Increase clk_ptp_ref rate
@ 2023-07-25 21:04 Andrew Halaney
2023-07-25 21:04 ` [PATCH net-next v2 1/2] net: stmmac: Make ptp_clk_freq_config variable type explicit Andrew Halaney
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Andrew Halaney @ 2023-07-25 21:04 UTC (permalink / raw)
To: linux-kernel
Cc: ahalaney, linux-arm-kernel, linux-stm32, netdev, mcoquelin.stm32,
pabeni, kuba, edumazet, davem, joabreu, alexandre.torgue,
peppe.cavallaro, bhupesh.sharma, vkoul, linux-arm-msm, jsuraj
This series aims to increase the clk_ptp_ref rate to get the best
possible PTP timestamping resolution possible. Some modified disclosure
about my development/testing process from the RFC/RFT v1 follows.
Disclosure: I don't know much about PTP beyond what you can google in an
afternoon, don't have access to documentation about the stmmac IP,
and have only tested that (based on code comments and git commit
history) the programming of the subsecond register (and the clock rate)
makes more sense with these changes. Qualcomm has tested a similar
change offlist, verifying PTP more formally as I understand it.
The last version was an RFC/RFT, but I didn't get a lot of confirmation
that doing patch 3 in that series (essentially setting clk_ptp_ref to
whatever its max value is) for the whole stmmac ecosystem was a safe
idea. So I am erring on the side of caution and doing this for the
Qualcomm platform only. See v1 for an approach that would apply to
all stmmac platform drivers with clk_ptp_ref.
v1: https://lore.kernel.org/netdev/20230711205732.364954-1-ahalaney@redhat.com/
Changes since v1:
- Collected Reviewed-by tags (Simon)
- Dropped RFC/RFT, dropped patch 3 that implemented this rate
change at a stmmac platform level
Andrew Halaney (2):
net: stmmac: Make ptp_clk_freq_config variable type explicit
net: stmmac: dwmac-qcom-ethqos: Use max frequency for clk_ptp_ref
.../net/ethernet/stmicro/stmmac/dwmac-intel.c | 3 +--
.../stmicro/stmmac/dwmac-qcom-ethqos.c | 18 ++++++++++++++++++
include/linux/stmmac.h | 4 +++-
3 files changed, 22 insertions(+), 3 deletions(-)
--
2.41.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH net-next v2 1/2] net: stmmac: Make ptp_clk_freq_config variable type explicit
2023-07-25 21:04 [PATCH net-next v2 0/2] net: stmmac: Increase clk_ptp_ref rate Andrew Halaney
@ 2023-07-25 21:04 ` Andrew Halaney
2023-07-25 21:04 ` [PATCH net-next v2 2/2] net: stmmac: dwmac-qcom-ethqos: Use max frequency for clk_ptp_ref Andrew Halaney
2023-07-28 3:40 ` [PATCH net-next v2 0/2] net: stmmac: Increase clk_ptp_ref rate patchwork-bot+netdevbpf
2 siblings, 0 replies; 4+ messages in thread
From: Andrew Halaney @ 2023-07-25 21:04 UTC (permalink / raw)
To: linux-kernel
Cc: ahalaney, linux-arm-kernel, linux-stm32, netdev, mcoquelin.stm32,
pabeni, kuba, edumazet, davem, joabreu, alexandre.torgue,
peppe.cavallaro, bhupesh.sharma, vkoul, linux-arm-msm, jsuraj,
Simon Horman
The priv variable is _always_ of type (struct stmmac_priv *), so let's
stop using (void *) since it isn't abstracting anything.
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
---
drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c | 3 +--
include/linux/stmmac.h | 4 +++-
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c
index 0ffae785d8bd..979c755964b1 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c
@@ -257,9 +257,8 @@ static void intel_speed_mode_2500(struct net_device *ndev, void *intel_data)
/* Program PTP Clock Frequency for different variant of
* Intel mGBE that has slightly different GPO mapping
*/
-static void intel_mgbe_ptp_clk_freq_config(void *npriv)
+static void intel_mgbe_ptp_clk_freq_config(struct stmmac_priv *priv)
{
- struct stmmac_priv *priv = (struct stmmac_priv *)npriv;
struct intel_priv_data *intel_priv;
u32 gpio_value;
diff --git a/include/linux/stmmac.h b/include/linux/stmmac.h
index ef67dba775d0..3d0702510224 100644
--- a/include/linux/stmmac.h
+++ b/include/linux/stmmac.h
@@ -76,6 +76,8 @@
| DMA_AXI_BLEN_32 | DMA_AXI_BLEN_64 \
| DMA_AXI_BLEN_128 | DMA_AXI_BLEN_256)
+struct stmmac_priv;
+
/* Platfrom data for platform device structure's platform_data field */
struct stmmac_mdio_bus_data {
@@ -258,7 +260,7 @@ struct plat_stmmacenet_data {
int (*serdes_powerup)(struct net_device *ndev, void *priv);
void (*serdes_powerdown)(struct net_device *ndev, void *priv);
void (*speed_mode_2500)(struct net_device *ndev, void *priv);
- void (*ptp_clk_freq_config)(void *priv);
+ void (*ptp_clk_freq_config)(struct stmmac_priv *priv);
int (*init)(struct platform_device *pdev, void *priv);
void (*exit)(struct platform_device *pdev, void *priv);
struct mac_device_info *(*setup)(void *priv);
--
2.41.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH net-next v2 2/2] net: stmmac: dwmac-qcom-ethqos: Use max frequency for clk_ptp_ref
2023-07-25 21:04 [PATCH net-next v2 0/2] net: stmmac: Increase clk_ptp_ref rate Andrew Halaney
2023-07-25 21:04 ` [PATCH net-next v2 1/2] net: stmmac: Make ptp_clk_freq_config variable type explicit Andrew Halaney
@ 2023-07-25 21:04 ` Andrew Halaney
2023-07-28 3:40 ` [PATCH net-next v2 0/2] net: stmmac: Increase clk_ptp_ref rate patchwork-bot+netdevbpf
2 siblings, 0 replies; 4+ messages in thread
From: Andrew Halaney @ 2023-07-25 21:04 UTC (permalink / raw)
To: linux-kernel
Cc: ahalaney, linux-arm-kernel, linux-stm32, netdev, mcoquelin.stm32,
pabeni, kuba, edumazet, davem, joabreu, alexandre.torgue,
peppe.cavallaro, bhupesh.sharma, vkoul, linux-arm-msm, jsuraj,
Simon Horman
Qualcomm clocks can set their frequency to a variety of levels
generally. Let's use the max for clk_ptp_ref to ensure the best
timestamping resolution possible.
Without this, the default value of the clock is used. For sa8775p-ride
this is 19.2 MHz, far less than the 230.4 MHz possible.
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
---
.../stmicro/stmmac/dwmac-qcom-ethqos.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c
index 735525ba8b93..a85501874801 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c
@@ -694,6 +694,23 @@ static void ethqos_clks_disable(void *data)
ethqos_clks_config(data, false);
}
+static void ethqos_ptp_clk_freq_config(struct stmmac_priv *priv)
+{
+ struct plat_stmmacenet_data *plat_dat = priv->plat;
+ int err;
+
+ if (!plat_dat->clk_ptp_ref)
+ return;
+
+ /* Max the PTP ref clock out to get the best resolution possible */
+ err = clk_set_rate(plat_dat->clk_ptp_ref, ULONG_MAX);
+ if (err)
+ netdev_err(priv->dev, "Failed to max out clk_ptp_ref: %d\n", err);
+ plat_dat->clk_ptp_rate = clk_get_rate(plat_dat->clk_ptp_ref);
+
+ netdev_dbg(priv->dev, "PTP rate %d\n", plat_dat->clk_ptp_rate);
+}
+
static int qcom_ethqos_probe(struct platform_device *pdev)
{
struct device_node *np = pdev->dev.of_node;
@@ -779,6 +796,7 @@ static int qcom_ethqos_probe(struct platform_device *pdev)
plat_dat->bsp_priv = ethqos;
plat_dat->fix_mac_speed = ethqos_fix_mac_speed;
plat_dat->dump_debug_regs = rgmii_dump;
+ plat_dat->ptp_clk_freq_config = ethqos_ptp_clk_freq_config;
plat_dat->has_gmac4 = 1;
if (ethqos->has_emac_ge_3)
plat_dat->dwmac4_addrs = &data->dwmac4_addrs;
--
2.41.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH net-next v2 0/2] net: stmmac: Increase clk_ptp_ref rate
2023-07-25 21:04 [PATCH net-next v2 0/2] net: stmmac: Increase clk_ptp_ref rate Andrew Halaney
2023-07-25 21:04 ` [PATCH net-next v2 1/2] net: stmmac: Make ptp_clk_freq_config variable type explicit Andrew Halaney
2023-07-25 21:04 ` [PATCH net-next v2 2/2] net: stmmac: dwmac-qcom-ethqos: Use max frequency for clk_ptp_ref Andrew Halaney
@ 2023-07-28 3:40 ` patchwork-bot+netdevbpf
2 siblings, 0 replies; 4+ messages in thread
From: patchwork-bot+netdevbpf @ 2023-07-28 3:40 UTC (permalink / raw)
To: Andrew Halaney
Cc: linux-kernel, linux-arm-kernel, linux-stm32, netdev,
mcoquelin.stm32, pabeni, kuba, edumazet, davem, joabreu,
alexandre.torgue, peppe.cavallaro, bhupesh.sharma, vkoul,
linux-arm-msm, jsuraj
Hello:
This series was applied to netdev/net-next.git (main)
by Jakub Kicinski <kuba@kernel.org>:
On Tue, 25 Jul 2023 16:04:24 -0500 you wrote:
> This series aims to increase the clk_ptp_ref rate to get the best
> possible PTP timestamping resolution possible. Some modified disclosure
> about my development/testing process from the RFC/RFT v1 follows.
>
> Disclosure: I don't know much about PTP beyond what you can google in an
> afternoon, don't have access to documentation about the stmmac IP,
> and have only tested that (based on code comments and git commit
> history) the programming of the subsecond register (and the clock rate)
> makes more sense with these changes. Qualcomm has tested a similar
> change offlist, verifying PTP more formally as I understand it.
>
> [...]
Here is the summary with links:
- [net-next,v2,1/2] net: stmmac: Make ptp_clk_freq_config variable type explicit
https://git.kernel.org/netdev/net-next/c/d928d14be651
- [net-next,v2,2/2] net: stmmac: dwmac-qcom-ethqos: Use max frequency for clk_ptp_ref
https://git.kernel.org/netdev/net-next/c/db845b9b2040
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-07-28 3:40 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-07-25 21:04 [PATCH net-next v2 0/2] net: stmmac: Increase clk_ptp_ref rate Andrew Halaney
2023-07-25 21:04 ` [PATCH net-next v2 1/2] net: stmmac: Make ptp_clk_freq_config variable type explicit Andrew Halaney
2023-07-25 21:04 ` [PATCH net-next v2 2/2] net: stmmac: dwmac-qcom-ethqos: Use max frequency for clk_ptp_ref Andrew Halaney
2023-07-28 3:40 ` [PATCH net-next v2 0/2] net: stmmac: Increase clk_ptp_ref rate patchwork-bot+netdevbpf
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).