ptp: cpts: convert .adjfreq to .adjfine
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>
This commit is contained in:
parent
2d96099f50
commit
a45392071c
|
@ -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;
|
||||
|
||||
|
|
Loading…
Reference in New Issue