mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
net: stmmac: Move subsecond increment configuration in dedicated helper
In preparation for fine/coarse support, let's move the subsecond increment and addend configuration in a dedicated helper. Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com> Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> Link: https://patch.msgid.link/20251024070720.71174-2-maxime.chevallier@bootlin.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
committed by
Paolo Abeni
parent
d7d5eca4de
commit
792000fbcd
@@ -464,6 +464,33 @@ static void stmmac_get_rx_hwtstamp(struct stmmac_priv *priv, struct dma_desc *p,
|
||||
}
|
||||
}
|
||||
|
||||
static void stmmac_update_subsecond_increment(struct stmmac_priv *priv)
|
||||
{
|
||||
bool xmac = dwmac_is_xmac(priv->plat->core_type);
|
||||
u32 sec_inc = 0;
|
||||
u64 temp = 0;
|
||||
|
||||
stmmac_config_hw_tstamping(priv, priv->ptpaddr, priv->systime_flags);
|
||||
|
||||
/* program Sub Second Increment reg */
|
||||
stmmac_config_sub_second_increment(priv, priv->ptpaddr,
|
||||
priv->plat->clk_ptp_rate,
|
||||
xmac, &sec_inc);
|
||||
temp = div_u64(1000000000ULL, sec_inc);
|
||||
|
||||
/* Store sub second increment for later use */
|
||||
priv->sub_second_inc = sec_inc;
|
||||
|
||||
/* calculate default added value:
|
||||
* formula is :
|
||||
* addend = (2^32)/freq_div_ratio;
|
||||
* where, freq_div_ratio = 1e9ns/sec_inc
|
||||
*/
|
||||
temp = (u64)(temp << 32);
|
||||
priv->default_addend = div_u64(temp, priv->plat->clk_ptp_rate);
|
||||
stmmac_config_addend(priv, priv->ptpaddr, priv->default_addend);
|
||||
}
|
||||
|
||||
/**
|
||||
* stmmac_hwtstamp_set - control hardware timestamping.
|
||||
* @dev: device pointer.
|
||||
@@ -697,10 +724,7 @@ static int stmmac_hwtstamp_get(struct net_device *dev,
|
||||
static int stmmac_init_tstamp_counter(struct stmmac_priv *priv,
|
||||
u32 systime_flags)
|
||||
{
|
||||
bool xmac = dwmac_is_xmac(priv->plat->core_type);
|
||||
struct timespec64 now;
|
||||
u32 sec_inc = 0;
|
||||
u64 temp = 0;
|
||||
|
||||
if (!priv->plat->clk_ptp_rate) {
|
||||
netdev_err(priv->dev, "Invalid PTP clock rate");
|
||||
@@ -710,23 +734,7 @@ static int stmmac_init_tstamp_counter(struct stmmac_priv *priv,
|
||||
stmmac_config_hw_tstamping(priv, priv->ptpaddr, systime_flags);
|
||||
priv->systime_flags = systime_flags;
|
||||
|
||||
/* program Sub Second Increment reg */
|
||||
stmmac_config_sub_second_increment(priv, priv->ptpaddr,
|
||||
priv->plat->clk_ptp_rate,
|
||||
xmac, &sec_inc);
|
||||
temp = div_u64(1000000000ULL, sec_inc);
|
||||
|
||||
/* Store sub second increment for later use */
|
||||
priv->sub_second_inc = sec_inc;
|
||||
|
||||
/* calculate default added value:
|
||||
* formula is :
|
||||
* addend = (2^32)/freq_div_ratio;
|
||||
* where, freq_div_ratio = 1e9ns/sec_inc
|
||||
*/
|
||||
temp = (u64)(temp << 32);
|
||||
priv->default_addend = div_u64(temp, priv->plat->clk_ptp_rate);
|
||||
stmmac_config_addend(priv, priv->ptpaddr, priv->default_addend);
|
||||
stmmac_update_subsecond_increment(priv);
|
||||
|
||||
/* initialize system time */
|
||||
ktime_get_real_ts64(&now);
|
||||
|
||||
Reference in New Issue
Block a user