mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-04 00:15:49 -04:00
net: stmmac: Don't modify the global ptp ops directly
The stmmac_ptp_clock_ops are copied into the stmmac_priv structure before being registered to the PTP core. Some adjustments are made prior to that, such as the number of snapshots or max adjustment parameters. Instead of modifying the global definition, then copying into the local private data, let's first copy then modify the local parameters. Reviewed-by: Daniel Machon <daniel.machon@microchip.com> Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com> Link: https://patch.msgid.link/20241112170658.2388529-2-maxime.chevallier@bootlin.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
3bf8163a36
commit
80dc1ff787
@@ -298,20 +298,21 @@ void stmmac_ptp_register(struct stmmac_priv *priv)
|
||||
priv->pps[i].available = true;
|
||||
}
|
||||
|
||||
if (priv->plat->ptp_max_adj)
|
||||
stmmac_ptp_clock_ops.max_adj = priv->plat->ptp_max_adj;
|
||||
|
||||
/* Calculate the clock domain crossing (CDC) error if necessary */
|
||||
priv->plat->cdc_error_adj = 0;
|
||||
if (priv->plat->has_gmac4 && priv->plat->clk_ptp_rate)
|
||||
priv->plat->cdc_error_adj = (2 * NSEC_PER_SEC) / priv->plat->clk_ptp_rate;
|
||||
|
||||
stmmac_ptp_clock_ops.n_per_out = priv->dma_cap.pps_out_num;
|
||||
stmmac_ptp_clock_ops.n_ext_ts = priv->dma_cap.aux_snapshot_n;
|
||||
priv->ptp_clock_ops = stmmac_ptp_clock_ops;
|
||||
|
||||
priv->ptp_clock_ops.n_per_out = priv->dma_cap.pps_out_num;
|
||||
priv->ptp_clock_ops.n_ext_ts = priv->dma_cap.aux_snapshot_n;
|
||||
|
||||
if (priv->plat->ptp_max_adj)
|
||||
priv->ptp_clock_ops.max_adj = priv->plat->ptp_max_adj;
|
||||
|
||||
rwlock_init(&priv->ptp_lock);
|
||||
mutex_init(&priv->aux_ts_lock);
|
||||
priv->ptp_clock_ops = stmmac_ptp_clock_ops;
|
||||
|
||||
priv->ptp_clock = ptp_clock_register(&priv->ptp_clock_ops,
|
||||
priv->device);
|
||||
|
||||
Reference in New Issue
Block a user