cpts_ptp_gettime(&cpts->info, &ts);
        pr_debug("cpts overflow check at %lld.%09lu\n", ts.tv_sec, ts.tv_nsec);
-       schedule_delayed_work(&cpts->overflow_work, CPTS_OVERFLOW_PERIOD);
+       schedule_delayed_work(&cpts->overflow_work, cpts->ov_check_period);
 }
 
 static int cpts_match(struct sk_buff *skb, unsigned int ptp_class,
        }
        cpts->phc_index = ptp_clock_index(cpts->clock);
 
-       schedule_delayed_work(&cpts->overflow_work, CPTS_OVERFLOW_PERIOD);
-
+       schedule_delayed_work(&cpts->overflow_work, cpts->ov_check_period);
        return 0;
 
 err_ptp:
        if (maxsec > 10)
                maxsec = 10;
 
+       /* Calc overflow check period (maxsec / 2) */
+       cpts->ov_check_period = (HZ * maxsec) / 2;
+       dev_info(cpts->dev, "cpts: overflow check period %lu (jiffies)\n",
+                cpts->ov_check_period);
+
        if (cpts->cc.mult || cpts->cc.shift)
                return;
 
 
        CPTS_EV_TX,   /* Ethernet Transmit Event */
 };
 
-/* This covers any input clock up to about 500 MHz. */
-#define CPTS_OVERFLOW_PERIOD (HZ * 8)
-
 #define CPTS_FIFO_DEPTH 16
 #define CPTS_MAX_EVENTS 32
 
        struct list_head events;
        struct list_head pool;
        struct cpts_event pool_data[CPTS_MAX_EVENTS];
+       unsigned long ov_check_period;
 };
 
 void cpts_rx_timestamp(struct cpts *cpts, struct sk_buff *skb);