> -----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

