Message ID | 20240201204203.2691424-1-horatiu.vultur@microchip.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 7d7bf30f031b8e2474eefe64230609b45030bd3d |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net-next] net: micrel: Fix the frequency adjustments | expand |
On Thu, Feb 01, 2024 at 09:42:03PM +0100, Horatiu Vultur wrote: > By default lan8841's 1588 clock frequency is 125MHz. But when adjusting > the frequency, it is using the 1PPM format of the lan8814. Which is the > wrong format as lan8814 has a 1588 clock frequency of 250MHz. So then > for each 1PPM adjustment would adjust less than expected. > Therefore fix this by using the correct 1PPM format for lan8841. > > Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Andrew
Hello: This patch was applied to netdev/net-next.git (main) by David S. Miller <davem@davemloft.net>: On Thu, 1 Feb 2024 21:42:03 +0100 you wrote: > By default lan8841's 1588 clock frequency is 125MHz. But when adjusting > the frequency, it is using the 1PPM format of the lan8814. Which is the > wrong format as lan8814 has a 1588 clock frequency of 250MHz. So then > for each 1PPM adjustment would adjust less than expected. > Therefore fix this by using the correct 1PPM format for lan8841. > > Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com> > > [...] Here is the summary with links: - [net-next] net: micrel: Fix the frequency adjustments https://git.kernel.org/netdev/net-next/c/7d7bf30f031b You are awesome, thank you!
diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c index 40bea9293ddd7..9b69735819896 100644 --- a/drivers/net/phy/micrel.c +++ b/drivers/net/phy/micrel.c @@ -120,6 +120,12 @@ */ #define LAN8814_1PPM_FORMAT 17179 +/* Represents 1ppm adjustment in 2^32 format with + * each nsec contains 8 clock cycles. + * The value is calculated as following: (1/1000000)/((2^-32)/8) + */ +#define LAN8841_1PPM_FORMAT 34360 + #define PTP_RX_VERSION 0x0248 #define PTP_TX_VERSION 0x0288 #define PTP_MAX_VERSION(x) (((x) & GENMASK(7, 0)) << 8) @@ -4115,8 +4121,8 @@ static int lan8841_ptp_adjfine(struct ptp_clock_info *ptp, long scaled_ppm) faster = false; } - rate = LAN8814_1PPM_FORMAT * (upper_16_bits(scaled_ppm)); - rate += (LAN8814_1PPM_FORMAT * (lower_16_bits(scaled_ppm))) >> 16; + rate = LAN8841_1PPM_FORMAT * (upper_16_bits(scaled_ppm)); + rate += (LAN8841_1PPM_FORMAT * (lower_16_bits(scaled_ppm))) >> 16; mutex_lock(&ptp_priv->ptp_lock); phy_write_mmd(phydev, 2, LAN8841_PTP_LTC_RATE_ADJ_HI,
By default lan8841's 1588 clock frequency is 125MHz. But when adjusting the frequency, it is using the 1PPM format of the lan8814. Which is the wrong format as lan8814 has a 1588 clock frequency of 250MHz. So then for each 1PPM adjustment would adjust less than expected. Therefore fix this by using the correct 1PPM format for lan8841. Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com> --- drivers/net/phy/micrel.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-)