What:		/sys/class/timecard/
Date:		September 2021
Contact:	Jonathan Lemon <jonathan.lemon@gmail.com>
Description:	This directory contains files and directories
		providing a standardized interface to the ancillary
		features of the OpenCompute timecard.

What:		/sys/class/timecard/ocpN/
Date:		September 2021
Contact:	Jonathan Lemon <jonathan.lemon@gmail.com>
Description:	This directory contains the attributes of the Nth timecard
		registered.

What:		/sys/class/timecard/ocpN/available_clock_sources
Date:		September 2021
Contact:	Jonathan Lemon <jonathan.lemon@gmail.com>
Description:	(RO) The list of available time sources that the PHC
		uses for clock adjustments.

		====  =================================================
                NONE  no adjustments
                PPS   adjustments come from the PPS1 selector (default)
                TOD   adjustments from the GNSS/TOD module
                IRIG  adjustments from external IRIG-B signal
                DCF   adjustments from external DCF signal
                ====  =================================================

What:		/sys/class/timecard/ocpN/available_sma_inputs
Date:		September 2021
Contact:	Jonathan Lemon <jonathan.lemon@gmail.com>
Description:	(RO) Set of available destinations (sinks) for a SMA
		input signal.

                =====  ================================================
                10Mhz  signal is used as the 10Mhz reference clock
                PPS1   signal is sent to the PPS1 selector
                PPS2   signal is sent to the PPS2 selector
                TS1    signal is sent to timestamper 1
                TS2    signal is sent to timestamper 2
                TS3    signal is sent to timestamper 3
                TS4    signal is sent to timestamper 4
                IRIG   signal is sent to the IRIG-B module
                DCF    signal is sent to the DCF module
                FREQ1  signal is sent to frequency counter 1
                FREQ2  signal is sent to frequency counter 2
                FREQ3  signal is sent to frequency counter 3
                FREQ4  signal is sent to frequency counter 4
                None   signal input is disabled
                =====  ================================================

What:		/sys/class/timecard/ocpN/available_sma_outputs
Date:		May 2021
Contact:	Jonathan Lemon <jonathan.lemon@gmail.com>
Description:	(RO) Set of available sources for a SMA output signal.

                =====  ================================================
                10Mhz  output is from the 10Mhz reference clock
                PHC    output PPS is from the PHC clock
                MAC    output PPS is from the Miniature Atomic Clock
                GNSS1  output PPS is from the first GNSS module
                GNSS2  output PPS is from the second GNSS module
                IRIG   output is from the PHC, in IRIG-B format
                DCF    output is from the PHC, in DCF format
                GEN1   output is from frequency generator 1
                GEN2   output is from frequency generator 2
                GEN3   output is from frequency generator 3
                GEN4   output is from frequency generator 4
                GND    output is GND
                VCC    output is VCC
                =====  ================================================

What:		/sys/class/timecard/ocpN/clock_source
Date:		September 2021
Contact:	Jonathan Lemon <jonathan.lemon@gmail.com>
Description:	(RW) Contains the current synchronization source used by
		the PHC.  May be changed by writing one of the listed
		values from the available_clock_sources attribute set.

What:		/sys/class/timecard/ocpN/clock_status_drift
Date:		March 2022
Contact:	Jonathan Lemon <jonathan.lemon@gmail.com>
Description:	(RO) Contains the current drift value used by the firmware
		for internal disciplining of the atomic clock.

What:		/sys/class/timecard/ocpN/clock_status_offset
Date:		March 2022
Contact:	Jonathan Lemon <jonathan.lemon@gmail.com>
Description:	(RO) Contains the current offset value used by the firmware
		for internal disciplining of the atomic clock.

What:		/sys/class/timecard/ocpN/freqX
Date:		March 2022
Contact:	Jonathan Lemon <jonathan.lemon@gmail.com>
Description:	(RO) Optional directory containing the sysfs nodes for
		frequency counter <X>.

What:		/sys/class/timecard/ocpN/freqX/frequency
Date:		March 2022
Contact:	Jonathan Lemon <jonathan.lemon@gmail.com>
Description:	(RO) Contains the measured frequency over the specified
		measurement period.

What:		/sys/class/timecard/ocpN/freqX/seconds
Date:		March 2022
Contact:	Jonathan Lemon <jonathan.lemon@gmail.com>
Description:	(RW) Specifies the number of seconds from 0-255 that the
		frequency should be measured over.  Write 0 to disable.

What:		/sys/class/timecard/ocpN/genX
Date:		March 2022
Contact:	Jonathan Lemon <jonathan.lemon@gmail.com>
Description:	(RO) Optional directory containing the sysfs nodes for
		frequency generator <X>.

What:		/sys/class/timecard/ocpN/genX/duty
Date:		March 2022
Contact:	Jonathan Lemon <jonathan.lemon@gmail.com>
Description:	(RO) Specifies the signal duty cycle as a percentage from 1-99.

What:		/sys/class/timecard/ocpN/genX/period
Date:		March 2022
Contact:	Jonathan Lemon <jonathan.lemon@gmail.com>
Description:	(RO) Specifies the signal period in nanoseconds.

What:		/sys/class/timecard/ocpN/genX/phase
Date:		March 2022
Contact:	Jonathan Lemon <jonathan.lemon@gmail.com>
Description:	(RO) Specifies the signal phase offset in nanoseconds.

What:		/sys/class/timecard/ocpN/genX/polarity
Date:		March 2022
Contact:	Jonathan Lemon <jonathan.lemon@gmail.com>
Description:	(RO) Specifies the signal polarity, either 1 or 0.

What:		/sys/class/timecard/ocpN/genX/running
Date:		March 2022
Contact:	Jonathan Lemon <jonathan.lemon@gmail.com>
Description:	(RO) Either 0 or 1, showing if the signal generator is running.

What:		/sys/class/timecard/ocpN/genX/start
Date:		March 2022
Contact:	Jonathan Lemon <jonathan.lemon@gmail.com>
Description:	(RO) Shows the time in <sec>.<nsec> that the signal generator
		started running.

What:		/sys/class/timecard/ocpN/genX/signal
Date:		March 2022
Contact:	Jonathan Lemon <jonathan.lemon@gmail.com>
Description:	(RW) Used to start the signal generator, and summarize
		the current status.

		The signal generator may be started by writing the signal
		period, followed by the optional signal values.  If the
		optional values are not provided, they default to the current
		settings, which may be obtained from the other sysfs nodes.

		    period [duty [phase [polarity]]]

		echo 500000000 > signal       # 1/2 second period
		echo 1000000 40 100 > signal
		echo 0 > signal               # turn off generator

		Period and phase are specified in nanoseconds.  Duty cycle is
		a percentage from 1-99.  Polarity is 1 or 0.

		Reading this node will return:

		    period duty phase polarity start_time

What:		/sys/class/timecard/ocpN/gnss_sync
Date:		September 2021
Contact:	Jonathan Lemon <jonathan.lemon@gmail.com>
Description:	(RO) Indicates whether a valid GNSS signal is received,
		or when the signal was lost.

What:		/sys/class/timecard/ocpN/i2c
Date:		September 2021
Contact:	Jonathan Lemon <jonathan.lemon@gmail.com>
Description:	This optional attribute links to the associated i2c device.

What:		/sys/class/timecard/ocpN/irig_b_mode
Date:		September 2021
Contact:	Jonathan Lemon <jonathan.lemon@gmail.com>
Description:	(RW) An integer from 0-7 indicating the timecode format
		of the IRIG-B output signal: B00<n>

What:		/sys/class/timecard/ocpN/pps
Date:		September 2021
Contact:	Jonathan Lemon <jonathan.lemon@gmail.com>
Description:	This optional attribute links to the associated PPS device.

What:		/sys/class/timecard/ocpN/ptp
Date:		September 2021
Contact:	Jonathan Lemon <jonathan.lemon@gmail.com>
Description:	This attribute links to the associated PTP device.

What:		/sys/class/timecard/ocpN/serialnum
Date:		September 2021
Contact:	Jonathan Lemon <jonathan.lemon@gmail.com>
Description:	(RO) Provides the serial number of the timecard.

What:		/sys/class/timecard/ocpN/sma1
What:		/sys/class/timecard/ocpN/sma2
What:		/sys/class/timecard/ocpN/sma3
What:		/sys/class/timecard/ocpN/sma4
Date:		September 2021
Contact:	Jonathan Lemon <jonathan.lemon@gmail.com>
Description:	(RW) These attributes specify the direction of the signal
		on the associated SMA connectors, and also the signal sink
		or source.

		The display format of the attribute is a space separated
		list of signals, prefixed by the input/output direction.

		The signal direction may be changed (if supported) by
		prefixing the signal list with either "in:" or "out:".
		If neither prefix is present, then the direction is unchanged.

		The output signal may be changed by writing one of the listed
		values from the available_sma_outputs attribute set.

		The input destinations may be changed by writing multiple
		values from the available_sma_inputs attribute set,
		separated by spaces.  If there are duplicated input
		destinations between connectors, the lowest numbered SMA
		connector is given priority.

		Note that not all input combinations may make sense.

		The 10Mhz reference clock input is currently only valid
		on SMA1 and may not be combined with other destination sinks.

What:		/sys/class/timecard/ocpN/tod_correction
Date:		March 2022
Contact:	Jonathan Lemon <jonathan.lemon@gmail.com>
Description:	(RW) The incoming GNSS signal is in UTC time, and the NMEA
		format messages do not provide a TAI offset.  This sets the
		correction value for the incoming time.

		If UBX_LS is enabled, this should be 0, and the offset is
		taken from the UBX-NAV-TIMELS message.

What:		/sys/class/timecard/ocpN/ts_window_adjust
Date:		September 2021
Contact:	Jonathan Lemon <jonathan.lemon@gmail.com>
Description:	(RW) When retrieving the PHC with the PTP SYS_OFFSET_EXTENDED
		ioctl, a system timestamp is made before and after the PHC
		time is retrieved.  The midpoint between the two system
		timestamps is usually taken to be the SYS time associated
		with the PHC time.  This estimate may be wrong, as it depends
		on PCI latencies, and when the PHC time was latched

		The attribute value reduces the end timestamp by the given
		number of nanoseconds, so the computed midpoint matches the
		retrieved PHC time.

		The initial value is set based on measured PCI latency and
		the estimated point where the FPGA latches the PHC time.  This
		value may be changed by writing an unsigned integer.

What:		/sys/class/timecard/ocpN/tty
Date:		August 2024
Contact:	Vadim Fedorenko <vadim.fedorenko@linux.dev>
Description:	(RO) Directory containing the sysfs nodes for TTY attributes

What:		/sys/class/timecard/ocpN/tty/ttyGNSS
What:		/sys/class/timecard/ocpN/tty/ttyGNSS2
Date:		August 2024
Contact:	Jonathan Lemon <jonathan.lemon@gmail.com>
Description:	(RO) These optional attributes contain names of the TTY serial
		ports associated with the GNSS devices.

What:		/sys/class/timecard/ocpN/tty/ttyMAC
Date:		August 2024
Contact:	Jonathan Lemon <jonathan.lemon@gmail.com>
Description:	(RO) This optional attribute contains name of the TTY serial
		port associated with the Miniature Atomic Clock.

What:		/sys/class/timecard/ocpN/tty/ttyNMEA
Date:		August 2024
Contact:	Jonathan Lemon <jonathan.lemon@gmail.com>
Description:	(RO) This optional attribute contains name of the TTY serial
		port which outputs the PHC time in NMEA ZDA format.

What:		/sys/class/timecard/ocpN/utc_tai_offset
Date:		September 2021
Contact:	Jonathan Lemon <jonathan.lemon@gmail.com>
Description:	(RW) The DCF and IRIG output signals are in UTC, while the
		TimeCard operates on TAI.  This attribute allows setting the
		offset in seconds, which is added to the TAI timebase for
		these formats.

		The offset may be changed by writing an unsigned integer.
