return NULL;
 }
 
-static int gem_tsu_get_time(struct ptp_clock_info *ptp, struct timespec64 *ts)
+static int gem_tsu_get_time(struct ptp_clock_info *ptp, struct timespec64 *ts,
+                           struct ptp_system_timestamp *sts)
 {
        struct macb *bp = container_of(ptp, struct macb, ptp_clock_info);
        unsigned long flags;
        u32 secl, sech;
 
        spin_lock_irqsave(&bp->tsu_clk_lock, flags);
+       ptp_read_system_prets(sts);
        first = gem_readl(bp, TN);
+       ptp_read_system_postts(sts);
        secl = gem_readl(bp, TSL);
        sech = gem_readl(bp, TSH);
        second = gem_readl(bp, TN);
                /* if so, use later read & re-read seconds
                 * (assume all done within 1s)
                 */
+               ptp_read_system_prets(sts);
                ts->tv_nsec = gem_readl(bp, TN);
+               ptp_read_system_postts(sts);
                secl = gem_readl(bp, TSL);
                sech = gem_readl(bp, TSH);
        } else {
        }
 
        if (delta > TSU_NSEC_MAX_VAL) {
-               gem_tsu_get_time(&bp->ptp_clock_info, &now);
+               gem_tsu_get_time(&bp->ptp_clock_info, &now, NULL);
                now = timespec64_add(now, then);
 
                gem_tsu_set_time(&bp->ptp_clock_info,
        .pps            = 1,
        .adjfine        = gem_ptp_adjfine,
        .adjtime        = gem_ptp_adjtime,
-       .gettime64      = gem_tsu_get_time,
+       .gettimex64     = gem_tsu_get_time,
        .settime64      = gem_tsu_set_time,
        .enable         = gem_ptp_enable,
 };
         * The timestamp only contains lower few bits of seconds,
         * so add value from 1588 timer
         */
-       gem_tsu_get_time(&bp->ptp_clock_info, &tsu);
+       gem_tsu_get_time(&bp->ptp_clock_info, &tsu, NULL);
 
        /* If the top bit is set in the timestamp,
         * but not in 1588 timer, it has rolled over,