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 <[email protected]>
---
drivers/net/phy/micrel.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
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,
--
2.34.1
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 <[email protected]>
Reviewed-by: Andrew Lunn <[email protected]>
Andrew
Hello:
This patch was applied to netdev/net-next.git (main)
by David S. Miller <[email protected]>:
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 <[email protected]>
>
> [...]
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!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html