From: Sagar Arun Kamble <sagar.a.kamble@intel.com>
To: linux-kernel@vger.kernel.org
Cc: Sagar Arun Kamble <sagar.a.kamble@intel.com>,
"David S. Miller" <davem@davemloft.net>,
Grygorii Strashko <grygorii.strashko@ti.com>,
Richard Cochran <richardcochran@gmail.com>,
Bhumika Goyal <bhumirks@gmail.com>,
Thomas Gleixner <tglx@linutronix.de>,
Ivan Khoronzhuk <ivan.khoronzhuk@linaro.org>,
netdev@vger.kernel.org
Subject: [PATCH 14/27] net: cpts: Use timecounter_initialize interface
Date: Fri, 15 Dec 2017 13:08:29 +0530 [thread overview]
Message-ID: <1513323522-15021-15-git-send-email-sagar.a.kamble@intel.com> (raw)
In-Reply-To: <1513323522-15021-1-git-send-email-sagar.a.kamble@intel.com>
With new interface timecounter_initialize we can initialize timecounter
fields and underlying cyclecounter together. Update cpts timecounter
init with this new function.
Signed-off-by: Sagar Arun Kamble <sagar.a.kamble@intel.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Grygorii Strashko <grygorii.strashko@ti.com>
Cc: Richard Cochran <richardcochran@gmail.com>
Cc: Bhumika Goyal <bhumirks@gmail.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ivan Khoronzhuk <ivan.khoronzhuk@linaro.org>
Cc: netdev@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
---
drivers/net/ethernet/ti/cpts.c | 29 +++++++++++++++++------------
drivers/net/ethernet/ti/cpts.h | 3 +++
2 files changed, 20 insertions(+), 12 deletions(-)
diff --git a/drivers/net/ethernet/ti/cpts.c b/drivers/net/ethernet/ti/cpts.c
index b8fe843..e6afc94 100644
--- a/drivers/net/ethernet/ti/cpts.c
+++ b/drivers/net/ethernet/ti/cpts.c
@@ -447,7 +447,12 @@ int cpts_register(struct cpts *cpts)
cpts_write32(cpts, CPTS_EN, control);
cpts_write32(cpts, TS_PEND_EN, int_enable);
- timecounter_init(&cpts->tc, ktime_to_ns(ktime_get_real()));
+ timecounter_initialize(&cpts->tc,
+ cpts_systim_read,
+ cpts->mask,
+ cpts->mult,
+ cpts->shift,
+ ktime_to_ns(ktime_get_real()));
cpts->clock = ptp_clock_register(&cpts->info, cpts->dev);
if (IS_ERR(cpts->clock)) {
@@ -484,7 +489,8 @@ void cpts_unregister(struct cpts *cpts)
}
EXPORT_SYMBOL_GPL(cpts_unregister);
-static void cpts_calc_mult_shift(struct cpts *cpts)
+static void cpts_calc_mult_shift(struct cpts *cpts, u64 mask,
+ u32 *mult, u32 *shift)
{
struct cyclecounter *cc = &cpts->tc.cc;
u64 frac, maxsec, ns;
@@ -495,7 +501,7 @@ static void cpts_calc_mult_shift(struct cpts *cpts)
/* Calc the maximum number of seconds which we can run before
* wrapping around.
*/
- maxsec = cc->mask;
+ maxsec = mask;
do_div(maxsec, freq);
/* limit conversation rate to 10 sec as higher values will produce
* too small mult factors and so reduce the conversion accuracy
@@ -508,18 +514,18 @@ static void cpts_calc_mult_shift(struct cpts *cpts)
dev_info(cpts->dev, "cpts: overflow check period %lu (jiffies)\n",
cpts->ov_check_period);
- if (cc->mult || cc->shift)
+ if (*mult || *shift)
return;
- clocks_calc_mult_shift(&cc->mult, &cc->shift,
+ clocks_calc_mult_shift(mult, shift,
freq, NSEC_PER_SEC, maxsec);
frac = 0;
- ns = cyclecounter_cyc2ns(cc, freq, cc->mask, &frac);
+ ns = cyclecounter_cyc2ns(cc, freq, mask, &frac);
dev_info(cpts->dev,
"CPTS: ref_clk_freq:%u calc_mult:%u calc_shift:%u error:%lld nsec/sec\n",
- freq, cc->mult, cc->shift,
+ freq, *mult, *shift,
(ns - NSEC_PER_SEC));
}
@@ -571,15 +577,14 @@ struct cpts *cpts_create(struct device *dev, void __iomem *regs,
clk_prepare(cpts->refclk);
- cpts->tc.cc.read = cpts_systim_read;
- cpts->tc.cc.mask = CLOCKSOURCE_MASK(32);
+ cpts->mask = CLOCKSOURCE_MASK(32);
cpts->info = cpts_info;
- cpts_calc_mult_shift(cpts);
- /* save tc.cc.mult original value as it can be modified
+ cpts_calc_mult_shift(cpts, cpts->mask, &cpts->mult, &cpts->shift);
+ /* save mult original value as it can be modified
* by cpts_ptp_adjfreq().
*/
- cpts->cc_mult = cpts->tc.cc.mult;
+ cpts->cc_mult = cpts->mult;
return cpts;
}
diff --git a/drivers/net/ethernet/ti/cpts.h b/drivers/net/ethernet/ti/cpts.h
index a7174eb..da50d34 100644
--- a/drivers/net/ethernet/ti/cpts.h
+++ b/drivers/net/ethernet/ti/cpts.h
@@ -118,6 +118,9 @@ struct cpts {
spinlock_t lock; /* protects time registers */
u32 cc_mult; /* for the nominal frequency */
struct timecounter tc;
+ u64 mask;
+ u32 mult;
+ u32 shift;
int phc_index;
struct clk *refclk;
struct list_head events;
--
1.9.1
next prev parent reply other threads:[~2017-12-15 7:38 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1513323522-15021-1-git-send-email-sagar.a.kamble@intel.com>
2017-12-15 7:38 ` [PATCH 01/27] timecounter: Make cyclecounter struct part of timecounter struct Sagar Arun Kamble
[not found] ` <1513323522-15021-2-git-send-email-sagar.a.kamble-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2018-01-08 22:20 ` [Intel-wired-lan] " Brown, Aaron F
2018-01-09 9:01 ` Sagar Arun Kamble
2017-12-15 7:38 ` [PATCH 05/27] amd-xgbe: Use timecounter_initialize interface Sagar Arun Kamble
2017-12-15 7:38 ` [PATCH 06/27] bnx2x: " Sagar Arun Kamble
2017-12-15 7:38 ` [PATCH 07/27] fec: " Sagar Arun Kamble
2017-12-15 7:38 ` [PATCH 08/27] e1000e: " Sagar Arun Kamble
2018-01-06 4:31 ` [Intel-wired-lan] " Brown, Aaron F
2017-12-15 7:38 ` [PATCH 09/27] igb: " Sagar Arun Kamble
2018-01-06 5:14 ` [Intel-wired-lan] " Brown, Aaron F
2017-12-15 7:38 ` [PATCH 10/27] ixgbe: " Sagar Arun Kamble
2017-12-15 7:38 ` [PATCH 11/27] net/mlx4: " Sagar Arun Kamble
2017-12-15 7:38 ` [PATCH 12/27] net/mlx5: " Sagar Arun Kamble
2017-12-15 7:38 ` [PATCH 13/27] qede: " Sagar Arun Kamble
2017-12-15 7:38 ` Sagar Arun Kamble [this message]
2017-12-15 7:38 ` [PATCH 17/27] amd-xgbe: Use timecounter_reset interface Sagar Arun Kamble
2017-12-15 7:38 ` [PATCH 18/27] bnx2x: " Sagar Arun Kamble
2017-12-18 14:13 ` Kalluru, Sudarsana
2017-12-15 7:38 ` [PATCH 19/27] net: fec: ptp: " Sagar Arun Kamble
2017-12-15 7:38 ` [PATCH 20/27] e1000e: " Sagar Arun Kamble
2018-01-06 4:30 ` [Intel-wired-lan] " Brown, Aaron F
2017-12-15 7:38 ` [PATCH 21/27] igb: " Sagar Arun Kamble
2018-01-06 4:33 ` [Intel-wired-lan] " Brown, Aaron F
2017-12-15 7:38 ` [PATCH 22/27] ixgbe: " Sagar Arun Kamble
2018-01-06 4:33 ` [Intel-wired-lan] " Brown, Aaron F
2018-01-06 5:11 ` Brown, Aaron F
2017-12-15 7:38 ` [PATCH 23/27] net/mlx4: " Sagar Arun Kamble
2017-12-15 7:38 ` [PATCH 24/27] net/mlx5: " Sagar Arun Kamble
2017-12-15 7:38 ` [PATCH 25/27] qede: " Sagar Arun Kamble
2017-12-18 14:13 ` Kalluru, Sudarsana
2017-12-15 7:38 ` [PATCH 26/27] net: cpts: " Sagar Arun Kamble
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1513323522-15021-15-git-send-email-sagar.a.kamble@intel.com \
--to=sagar.a.kamble@intel.com \
--cc=bhumirks@gmail.com \
--cc=davem@davemloft.net \
--cc=grygorii.strashko@ti.com \
--cc=ivan.khoronzhuk@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=richardcochran@gmail.com \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).