Commit c3f2fc231a39 for kernel

commit c3f2fc231a39e29fe9f0adc14a3ecc3c1260d3c5
Author: Clark Wang <xiaoning.wang@nxp.com>
Date:   Mon Jul 20 09:25:08 2026 +0800

    ptp: netc: explicitly clear TMR_OFF during initialization

    The NETC timer does not support function level reset, so TMR_OFF_L/H
    registers are not cleared by pcie_flr(). If TMR_OFF was set to a
    non-zero value in a previous binding, it will persist across driver
    rebind and cause inaccurate PTP time.

    There is also a hardware issue: after a warm reset or soft reset,
    TMR_OFF_L/H registers appear to be cleared to zero, but the timer clock
    domain internally retains the stale value. When the timer is re-enabled,
    TMR_CUR_TIME continues to track the old offset until TMR_OFF is written
    explicitly. This can cause incorrect PTP timestamps and even PTP clock
    synchronization failures.

    Per the recommendation from the IP team, explicitly write 0 to TMR_OFF
    in netc_timer_init() to flush the internally cached value and ensure
    TMR_CUR_TIME follows the freshly initialized counter.

    Fixes: 87a201d59963 ("ptp: netc: add NETC V4 Timer PTP driver support")
    Signed-off-by: Clark Wang <xiaoning.wang@nxp.com>
    Signed-off-by: Wei Fang <wei.fang@nxp.com>
    Reviewed-by: Vadim Fedorenko <vadim.fedorenko@linux.dev>
    Reviewed-by: Breno Leitao <leitao@debian.org>
    Link: https://patch.msgid.link/20260720012508.23227-1-wei.fang@oss.nxp.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>

diff --git a/drivers/ptp/ptp_netc.c b/drivers/ptp/ptp_netc.c
index 94e952ee6990..5e381c354d74 100644
--- a/drivers/ptp/ptp_netc.c
+++ b/drivers/ptp/ptp_netc.c
@@ -779,6 +779,7 @@ static void netc_timer_init(struct netc_timer *priv)
 	netc_timer_wr(priv, NETC_TMR_FIPER_CTRL, fiper_ctrl);
 	netc_timer_wr(priv, NETC_TMR_ECTRL, NETC_TMR_DEFAULT_ETTF_THR);

+	netc_timer_offset_write(priv, 0);
 	ktime_get_real_ts64(&now);
 	ns = timespec64_to_ns(&now);
 	netc_timer_cnt_write(priv, ns);