What exactly is the nvpps driver supposed to do?

and how is it supposed to be used?

In reference to this thread…

I’m trying to figure out exactly what the nvpps driver is supposed to do. I have the device tree set to route AON_GPIO DD-00 (40-pin header pin 27) to the driver and it creates /dev/nvpps0 but I’m not sure how to use it in relation to pps-gpio, ntpd and ptp4l.

From looking at the code, it looks like it’s supposed to synchronize the phc clock to the pps input but I’m not seeing how or where it’s used.

I do have AON_GPIO CC-07 (40-pin header pin 28) to pps-gpio which does work fine.

And… ptp-notifier? What’s its job?
And… How does the Generic Timestamp Engine fit in?

I spent the weekend wrestling with nvpps and have it acting as a system pps source and creating a /dev/ppsX node which ntpd is happy with. At least this way you don’t need pps-gpio and nvpps loaded and you only need 1 gpio pin allocated. It does appear to be using the Generic Timestamp Engine which is good but I still can’t figure out what the driver is used for. :)

  • It gets the phc time but never sets it.
  • It exposes ioctls via /dev/nvpps0 but I can’t find any reference to those ioctls anywhere else in the source code.

hello gtj,

we do not use nvpps driver, we can use gpio-pps instead.
you might refer to post #16 from Topic 124003, which produce pps signals on GPIO.
this driver is to feed pps signals in GPIO and capture timestamps to synchronize system every second.

I’ve seen that post (and many others) but I already have an external pps source. What I was looking for was the lowest latency/jitter mechanism to sync the PHC to that pps source so it can act as a grand master clock. Seeing as nvpps has references to the eqos driver registers, I was hoping it would do that without having to come out to userspace.

My questions still stand though… what are/were nvpps and ptp_notifier supposed to do?