mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2026-04-29 12:28:27 +02:00
igb: refactor igb_ptp_adjfine_82580 to use diff_by_scaled_ppm
Driver's .adjfine interface functions use adjust_by_scaled_ppm and
diff_by_scaled_ppm introduced in commit 1060707e38
("ptp: introduce helpers to adjust by scaled parts per million")
to calculate the required adjustment in a concise manner,
but not igb_ptp_adjfine_82580.
Fix it by introducing IGB_82580_BASE_PERIOD and changing function logic
to use diff_by_scaled_ppm.
Signed-off-by: Andrii Staikov <andrii.staikov@intel.com>
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
This commit is contained in:
committed by
Tony Nguyen
parent
c8384d4a51
commit
d71980d47e
@@ -67,6 +67,7 @@
|
||||
#define INCVALUE_82576_MASK GENMASK(E1000_TIMINCA_16NS_SHIFT - 1, 0)
|
||||
#define INCVALUE_82576 (16u << IGB_82576_TSYNC_SHIFT)
|
||||
#define IGB_NBITS_82580 40
|
||||
#define IGB_82580_BASE_PERIOD 0x800000000
|
||||
|
||||
static void igb_ptp_tx_hwtstamp(struct igb_adapter *adapter);
|
||||
static void igb_ptp_sdp_init(struct igb_adapter *adapter);
|
||||
@@ -209,17 +210,11 @@ static int igb_ptp_adjfine_82580(struct ptp_clock_info *ptp, long scaled_ppm)
|
||||
struct igb_adapter *igb = container_of(ptp, struct igb_adapter,
|
||||
ptp_caps);
|
||||
struct e1000_hw *hw = &igb->hw;
|
||||
int neg_adj = 0;
|
||||
bool neg_adj;
|
||||
u64 rate;
|
||||
u32 inca;
|
||||
|
||||
if (scaled_ppm < 0) {
|
||||
neg_adj = 1;
|
||||
scaled_ppm = -scaled_ppm;
|
||||
}
|
||||
rate = scaled_ppm;
|
||||
rate <<= 13;
|
||||
rate = div_u64(rate, 15625);
|
||||
neg_adj = diff_by_scaled_ppm(IGB_82580_BASE_PERIOD, scaled_ppm, &rate);
|
||||
|
||||
inca = rate & INCVALUE_MASK;
|
||||
if (neg_adj)
|
||||
|
||||
Reference in New Issue
Block a user