ptp: cpts: convert .adjfreq to .adjfine
authorJacob Keller <jacob.e.keller@intel.com>
Wed, 9 Nov 2022 23:09:42 +0000 (15:09 -0800)
committerDavid S. Miller <davem@davemloft.net>
Fri, 11 Nov 2022 10:58:39 +0000 (10:58 +0000)
The cpts implementation of .adjfreq is implemented in terms of a
straight forward "base * ppb / 1 billion" calculation.

Convert this to the newer .adjfine, using the recently added
adjust_by_scaled_ppm helper function.

Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Richard Cochran <richardcochran@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/ti/cpts.c

index 92ca739..bcccf43 100644 (file)
@@ -213,25 +213,13 @@ static void cpts_update_cur_time(struct cpts *cpts, int match,
 
 /* PTP clock operations */
 
-static int cpts_ptp_adjfreq(struct ptp_clock_info *ptp, s32 ppb)
+static int cpts_ptp_adjfine(struct ptp_clock_info *ptp, long scaled_ppm)
 {
        struct cpts *cpts = container_of(ptp, struct cpts, info);
-       int neg_adj = 0;
-       u32 diff, mult;
-       u64 adj;
-
-       if (ppb < 0) {
-               neg_adj = 1;
-               ppb = -ppb;
-       }
-       mult = cpts->cc_mult;
-       adj = mult;
-       adj *= ppb;
-       diff = div_u64(adj, 1000000000ULL);
 
        mutex_lock(&cpts->ptp_clk_mutex);
 
-       cpts->mult_new = neg_adj ? mult - diff : mult + diff;
+       cpts->mult_new = adjust_by_scaled_ppm(cpts->cc_mult, scaled_ppm);
 
        cpts_update_cur_time(cpts, CPTS_EV_PUSH, NULL);
 
@@ -435,7 +423,7 @@ static const struct ptp_clock_info cpts_info = {
        .n_ext_ts       = 0,
        .n_pins         = 0,
        .pps            = 0,
-       .adjfreq        = cpts_ptp_adjfreq,
+       .adjfine        = cpts_ptp_adjfine,
        .adjtime        = cpts_ptp_adjtime,
        .gettimex64     = cpts_ptp_gettimeex,
        .settime64      = cpts_ptp_settime,
@@ -794,7 +782,7 @@ struct cpts *cpts_create(struct device *dev, void __iomem *regs,
 
        cpts_calc_mult_shift(cpts);
        /* save cc.mult original value as it can be modified
-        * by cpts_ptp_adjfreq().
+        * by cpts_ptp_adjfine().
         */
        cpts->cc_mult = cpts->cc.mult;