From: Miroslav Lichvar Date: Wed, 23 Feb 2022 10:31:24 +0000 (+0100) Subject: sys_linux: don't require configurable pin for external PPS X-Git-Tag: 4.3-pre1~56 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3196630fb9ae06f5199a9705d450a439d0b4af18;p=thirdparty%2Fchrony.git sys_linux: don't require configurable pin for external PPS Some PHCs that have a PPS input don't have configurable pins (their function is hardcoded). Accept a negative pin index to skip the pin configuration before requesting external timestamping. --- diff --git a/doc/chrony.conf.adoc b/doc/chrony.conf.adoc index 6cecc1b3..9140c623 100644 --- a/doc/chrony.conf.adoc +++ b/doc/chrony.conf.adoc @@ -511,8 +511,10 @@ Note that some PTP clocks cannot be configured to timestamp only assert or clear events, and it is necessary to use the *width* option to filter wrong PPS samples. *pin*=_index_:::: -This option specifies the index of the pin to which is connected the PPS -signal. The default value is 0. +This option specifies the index of the pin which should be enabled for the +PPS timestamping. If the PHC does not have configurable pins (i.e. the channel +function is fixed), the index needs to be set to -1 to disable the pin +configuration. The default value is 0. *channel*=_index_:::: This option specifies the index of the channel for the PPS mode. The default value is 0. diff --git a/sys_linux.c b/sys_linux.c index cc3c9311..762bf0a4 100644 --- a/sys_linux.c +++ b/sys_linux.c @@ -1008,7 +1008,7 @@ SYS_Linux_SetPHCExtTimestamping(int fd, int pin, int channel, pin_desc.func = enable ? PTP_PF_EXTTS : PTP_PF_NONE; pin_desc.chan = channel; - if (ioctl(fd, PTP_PIN_SETFUNC, &pin_desc)) { + if (pin >= 0 && ioctl(fd, PTP_PIN_SETFUNC, &pin_desc)) { DEBUG_LOG("ioctl(%s) failed : %s", "PTP_PIN_SETFUNC", strerror(errno)); return 0; }