> -----Original Message-----
> From: Hall, Christopher S
> Sent: Tuesday, September 24, 2019 1:24 PM
> To: Keller, Jacob E <[email protected]>; Felipe Balbi
> <[email protected]>; Richard Cochran <[email protected]>
> Cc: [email protected]; [email protected]
> Subject: RE: [PATCH v4 2/2] PTP: add support for one-shot output
> 
> Good catch on the terminology. This is an API that produces edges not pulses.
> This flag causes the PEROUT ioctl to ignore the period argument and produce a
> single edge. Currently, the igb driver implements the same function, but uses
> a "magic" invalid period specification to signal that the period argument
> should be ignored (use_freq == 0):
> 
>               if (on && ((ns <= 70000000LL) || (ns == 125000000LL) ||
>                          (ns == 250000000LL) || (ns == 500000000LL))) {
>                       if (ns < 8LL)
>                               return -EINVAL;
>                       use_freq = 1;
>               }

>From my understanding, the use_freq = 0 is intended to perform a clock using 
>the target time registers with an interrupt to re-trigger the next toggle.

If you use a frequency not supported by freqout, it will result in an interrupt 
that re-toggles the target time, not a single edge.

> 
> The proposal is to support this function without magic period specifications
> using an explicit flag instead. An example use case is pulse-per-second
> output. While PPS is periodic, time-aware GPIO is driven by (an
> unadjustable) Always Running Timer (ART). It's necessary to schedule each
> edge in software to produce PPS synced with system time.
> 
> Chris

Oh, so "one shot" will simply toggle the clock output once. I see.

So this won't really work for generating a pulse per second, and we would 
possibly still want an API for that?

Thanks,
Jake

Reply via email to