All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Lunn <andrew@lunn.ch>
To: Kurt Kanzenbach <kurt@linutronix.de>
Cc: Vivien Didelot <vivien.didelot@gmail.com>,
	Florian Fainelli <f.fainelli@gmail.com>,
	"David S. Miller" <davem@davemloft.net>,
	Jakub Kicinski <kuba@kernel.org>,
	netdev@vger.kernel.org, Rob Herring <robh+dt@kernel.org>,
	devicetree@vger.kernel.org,
	Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
	Richard Cochran <richardcochran@gmail.com>,
	Kamil Alkhouri <kamil.alkhouri@hs-offenburg.de>,
	ilias.apalodimas@linaro.org
Subject: Re: [RFC PATCH 3/9] net: dsa: hellcreek: Add PTP clock support
Date: Thu, 18 Jun 2020 19:23:04 +0200	[thread overview]
Message-ID: <20200618172304.GG240559@lunn.ch> (raw)
In-Reply-To: <20200618064029.32168-4-kurt@linutronix.de>

> +static u64 __hellcreek_ptp_clock_read(struct hellcreek *hellcreek)
> +{
> +	u16 nsl, nsh, secl, secm, sech;
> +
> +	/* Take a snapshot */
> +	hellcreek_ptp_write(hellcreek, PR_COMMAND_C_SS, PR_COMMAND_C);
> +
> +	/* The time of the day is saved as 96 bits. However, due to hardware
> +	 * limitations the seconds are not or only partly kept in the PTP
> +	 * core. That's why only the nanoseconds are used and the seconds are
> +	 * tracked in software. Anyway due to internal locking all five
> +	 * registers should be read.
> +	 */
> +	sech = hellcreek_ptp_read(hellcreek, PR_SS_SYNC_DATA_C);
> +	secm = hellcreek_ptp_read(hellcreek, PR_SS_SYNC_DATA_C);
> +	secl = hellcreek_ptp_read(hellcreek, PR_SS_SYNC_DATA_C);
> +	nsh  = hellcreek_ptp_read(hellcreek, PR_SS_SYNC_DATA_C);
> +	nsl  = hellcreek_ptp_read(hellcreek, PR_SS_SYNC_DATA_C);
> +
> +	return (u64)nsl | ((u64)nsh << 16);

Hi Kurt

What are the hardware limitations? There seems to be 48 bits for
seconds? That allows for 8925104 years?

> +static u64 __hellcreek_ptp_gettime(struct hellcreek *hellcreek)
> +{
> +	u64 ns;
> +
> +	ns = __hellcreek_ptp_clock_read(hellcreek);
> +	if (ns < hellcreek->last_ts)
> +		hellcreek->seconds++;
> +	hellcreek->last_ts = ns;
> +	ns += hellcreek->seconds * NSEC_PER_SEC;

So the assumption is, this gets called at least once per second. And
if that does not happen, there is no recovery. The second is lost.

I'm just wondering if there is something more robust using what the
hardware does provide, even if the hardware is not perfect.

	 Andrew

  parent reply	other threads:[~2020-06-18 17:23 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-18  6:40 [RFC PATCH 0/9] Hirschmann Hellcreek DSA driver Kurt Kanzenbach
2020-06-18  6:40 ` [RFC PATCH 1/9] net: dsa: Add tag handling for Hirschmann Hellcreek switches Kurt Kanzenbach
2020-06-18 13:42   ` Andrew Lunn
2020-06-18  6:40 ` [RFC PATCH 2/9] net: dsa: Add DSA driver " Kurt Kanzenbach
2020-06-18 15:22   ` Andrew Lunn
2020-06-19  8:12     ` Kurt Kanzenbach
2020-06-18  6:40 ` [RFC PATCH 3/9] net: dsa: hellcreek: Add PTP clock support Kurt Kanzenbach
2020-06-18 15:46   ` Jakub Kicinski
2020-06-19  8:13     ` Kurt Kanzenbach
2020-06-18 17:23   ` Andrew Lunn [this message]
2020-06-19  8:26     ` Kurt Kanzenbach
2020-06-19 13:40       ` Andrew Lunn
2020-06-22 11:52         ` Kurt Kanzenbach
2020-06-24 13:03   ` Richard Cochran
2020-06-25  7:08     ` Kurt Kanzenbach
2020-06-18  6:40 ` [RFC PATCH 4/9] net: dsa: hellcreek: Add support for hardware timestamping Kurt Kanzenbach
2020-06-18  6:40 ` [RFC PATCH 5/9] net: dsa: hellcreek: Add TAPRIO offloading support Kurt Kanzenbach
2020-06-18  6:40 ` [RFC PATCH 6/9] net: dsa: hellcreek: Add debugging mechanisms Kurt Kanzenbach
2020-06-18 17:34   ` Andrew Lunn
2020-06-19  8:36     ` Kurt Kanzenbach
2020-06-19 13:42       ` Andrew Lunn
2020-06-22 12:32         ` Kurt Kanzenbach
2020-06-22 13:55           ` Andrew Lunn
2020-06-23  6:07             ` Kurt Kanzenbach
2020-06-22 14:14           ` Vladimir Oltean
2020-06-23  6:04             ` Kurt Kanzenbach
2020-06-18  6:40 ` [RFC PATCH 7/9] net: dsa: hellcreek: Add PTP status LEDs Kurt Kanzenbach
2020-06-18 17:46   ` Andrew Lunn
2020-06-19  8:45     ` Kurt Kanzenbach
2020-06-19 13:52       ` Andrew Lunn
2020-06-18  6:40 ` [RFC PATCH 8/9] dt-bindings: Add vendor prefix for Hirschmann Kurt Kanzenbach
2020-06-18  6:40 ` [RFC PATCH 9/9] dt-bindings: net: dsa: Add documentation for Hellcreek switches Kurt Kanzenbach
2020-06-18 13:47   ` Andrew Lunn
2020-06-19  8:47     ` Kurt Kanzenbach
2020-06-19 13:56       ` Andrew Lunn
2020-06-22 12:02         ` Kurt Kanzenbach
2020-06-22 13:49           ` Andrew Lunn
2020-06-23  6:09             ` Kurt Kanzenbach
2020-06-18 17:40   ` Florian Fainelli
2020-06-19  8:48     ` Kurt Kanzenbach
2020-06-22 12:05       ` Kurt Kanzenbach
2020-06-26 17:11         ` Florian Fainelli

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=20200618172304.GG240559@lunn.ch \
    --to=andrew@lunn.ch \
    --cc=bigeasy@linutronix.de \
    --cc=davem@davemloft.net \
    --cc=devicetree@vger.kernel.org \
    --cc=f.fainelli@gmail.com \
    --cc=ilias.apalodimas@linaro.org \
    --cc=kamil.alkhouri@hs-offenburg.de \
    --cc=kuba@kernel.org \
    --cc=kurt@linutronix.de \
    --cc=netdev@vger.kernel.org \
    --cc=richardcochran@gmail.com \
    --cc=robh+dt@kernel.org \
    --cc=vivien.didelot@gmail.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.