Commit 2d96099f authored by Jacob Keller's avatar Jacob Keller Committed by David S. Miller

ptp: stmac: convert .adjfreq to .adjfine

The stmac 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: default avatarJacob Keller <jacob.e.keller@intel.com>
Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
Cc: Alexandre Torgue <alexandre.torgue@foss.st.com>
Cc: Jose Abreu <joabreu@synopsys.com>
Cc: Richard Cochran <richardcochran@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 97455702
...@@ -15,29 +15,20 @@ ...@@ -15,29 +15,20 @@
* stmmac_adjust_freq * stmmac_adjust_freq
* *
* @ptp: pointer to ptp_clock_info structure * @ptp: pointer to ptp_clock_info structure
* @ppb: desired period change in parts ber billion * @scaled_ppm: desired period change in scaled parts per million
* *
* Description: this function will adjust the frequency of hardware clock. * Description: this function will adjust the frequency of hardware clock.
*
* Scaled parts per million is ppm with a 16-bit binary fractional field.
*/ */
static int stmmac_adjust_freq(struct ptp_clock_info *ptp, s32 ppb) static int stmmac_adjust_freq(struct ptp_clock_info *ptp, long scaled_ppm)
{ {
struct stmmac_priv *priv = struct stmmac_priv *priv =
container_of(ptp, struct stmmac_priv, ptp_clock_ops); container_of(ptp, struct stmmac_priv, ptp_clock_ops);
unsigned long flags; unsigned long flags;
u32 diff, addend; u32 addend;
int neg_adj = 0;
u64 adj;
if (ppb < 0) {
neg_adj = 1;
ppb = -ppb;
}
addend = priv->default_addend; addend = adjust_by_scaled_ppm(priv->default_addend, scaled_ppm);
adj = addend;
adj *= ppb;
diff = div_u64(adj, 1000000000ULL);
addend = neg_adj ? (addend - diff) : (addend + diff);
write_lock_irqsave(&priv->ptp_lock, flags); write_lock_irqsave(&priv->ptp_lock, flags);
stmmac_config_addend(priv, priv->ptpaddr, addend); stmmac_config_addend(priv, priv->ptpaddr, addend);
...@@ -269,7 +260,7 @@ static struct ptp_clock_info stmmac_ptp_clock_ops = { ...@@ -269,7 +260,7 @@ static struct ptp_clock_info stmmac_ptp_clock_ops = {
.n_per_out = 0, /* will be overwritten in stmmac_ptp_register */ .n_per_out = 0, /* will be overwritten in stmmac_ptp_register */
.n_pins = 0, .n_pins = 0,
.pps = 0, .pps = 0,
.adjfreq = stmmac_adjust_freq, .adjfine = stmmac_adjust_freq,
.adjtime = stmmac_adjust_time, .adjtime = stmmac_adjust_time,
.gettime64 = stmmac_get_time, .gettime64 = stmmac_get_time,
.settime64 = stmmac_set_time, .settime64 = stmmac_set_time,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment