Lines Matching +full:tx +full:- +full:sec
1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * PTP 1588 clock support - User space test program
35 #define CLOCK_INVALID -1
43 static int clock_adjtime(clockid_t id, struct timex *tx) in clock_adjtime() argument
45 return syscall(__NR_clock_adjtime, id, tx); in clock_adjtime()
113 return t->sec * NSEC_PER_SEC + t->nsec; in pctns()
120 " -c query the ptp clock's capabilities\n" in usage()
121 " -d name device to open\n" in usage()
122 " -e val read 'val' external time stamp events\n" in usage()
123 " -E val enable rising (1), falling (2), or both (3) edges\n" in usage()
124 " -f val adjust the ptp clock frequency by 'val' ppb\n" in usage()
125 " -F chan Enable single channel mask and keep device open for debugfs verification.\n" in usage()
126 " -g get the ptp clock time\n" in usage()
127 " -h prints this message\n" in usage()
128 " -i val index for event/trigger\n" in usage()
129 " -k val measure the time offset between system and phc clock\n" in usage()
131 " -l list the current pin configuration\n" in usage()
132 " -L pin,val configure pin index 'pin' with function 'val'\n" in usage()
133 " the channel index is taken from the '-i' option\n" in usage()
135 " 0 - none\n" in usage()
136 " 1 - external time stamp\n" in usage()
137 " 2 - periodic output\n" in usage()
138 " -n val shift the ptp clock time by 'val' nanoseconds\n" in usage()
139 " -o val phase offset (in nanoseconds) to be provided to the PHC servo\n" in usage()
140 " -p val enable output with a period of 'val' nanoseconds\n" in usage()
141 " -H val set output phase to 'val' nanoseconds (requires -p)\n" in usage()
142 " -w val set output pulse width to 'val' nanoseconds (requires -p)\n" in usage()
143 " -P val enable or disable (val=1|0) the system clock PPS\n" in usage()
144 " -r open the ptp clock in readonly mode\n" in usage()
145 " -s set the ptp clock time from the system time\n" in usage()
146 " -S set the system time from the ptp clock time\n" in usage()
147 " -t val shift the ptp clock time by 'val' seconds\n" in usage()
148 " -T val set the ptp clock time to 'val' seconds\n" in usage()
149 " -x val get an extended ptp clock time with the desired number of samples (up to %d)\n" in usage()
150 " -X get a ptp clock cross timestamp\n" in usage()
151 " -y val pre/post tstamp timebase to use {realtime|monotonic|monotonic-raw}\n" in usage()
152 " -z test combinations of rising/falling external time stamp flags\n", in usage()
164 struct timex tx; in main() local
191 int pin_index = -1, pin_func; in main()
192 int pps = -1; in main()
196 int channel = -1; in main()
201 int64_t perout_phase = -1; in main()
202 int64_t pulsewidth = -1; in main()
203 int64_t perout = -1; in main()
249 return -1; in main()
289 return -1; in main()
300 else if (!strcasecmp(optarg, "monotonic-raw")) in main()
304 "type needs to be realtime, monotonic or monotonic-raw; was given %s\n", in main()
306 return -1; in main()
319 return -1; in main()
326 return -1; in main()
332 return -1; in main()
362 memset(&tx, 0, sizeof(tx)); in main()
363 tx.modes = ADJ_FREQUENCY; in main()
364 tx.freq = ppb_to_scaled_ppm(adjfreq); in main()
365 if (clock_adjtime(clkid, &tx)) { in main()
373 memset(&tx, 0, sizeof(tx)); in main()
374 tx.modes = ADJ_SETOFFSET | ADJ_NANO; in main()
375 tx.time.tv_sec = adjtime; in main()
376 tx.time.tv_usec = adjns; in main()
377 while (tx.time.tv_usec < 0) { in main()
378 tx.time.tv_sec -= 1; in main()
379 tx.time.tv_usec += NSEC_PER_SEC; in main()
382 if (clock_adjtime(clkid, &tx) < 0) { in main()
390 memset(&tx, 0, sizeof(tx)); in main()
391 tx.modes = ADJ_OFFSET | ADJ_NANO; in main()
392 tx.offset = adjphase; in main()
394 if (clock_adjtime(clkid, &tx) < 0) { in main()
462 for (; extts; extts--) { in main()
469 event.t.sec, event.t.nsec); in main()
504 puts("-w can only be specified together with -p"); in main()
505 return -1; in main()
509 puts("-H can only be specified together with -p"); in main()
510 return -1; in main()
516 return -1; in main()
520 perout_request.period.sec = perout / NSEC_PER_SEC; in main()
525 perout_request.on.sec = pulsewidth / NSEC_PER_SEC; in main()
530 perout_request.phase.sec = perout_phase / NSEC_PER_SEC; in main()
533 perout_request.start.sec = ts.tv_sec + 2; in main()
544 if (pps != -1) { in main()
557 return -1; in main()
563 return -1; in main()
565 sysoff->n_samples = n_samples; in main()
572 pct = &sysoff->ts[0]; in main()
573 for (i = 0; i < sysoff->n_samples; i++) { in main()
577 interval = t2 - t1; in main()
578 offset = (t2 + t1) / 2 - tp; in main()
581 (pct+2*i)->sec, (pct+2*i)->nsec); in main()
583 (pct+2*i+1)->sec, (pct+2*i+1)->nsec); in main()
585 (pct+2*i+2)->sec, (pct+2*i+2)->nsec); in main()
598 return -1; in main()
601 soe->n_samples = getextended; in main()
602 soe->clockid = ext_clockid; in main()
614 i, soe->ts[i][0].sec, in main()
615 soe->ts[i][0].nsec); in main()
619 i, soe->ts[i][0].sec, in main()
620 soe->ts[i][0].nsec); in main()
623 printf("sample #%2d: monotonic-raw time before: %lld.%09u\n", in main()
624 i, soe->ts[i][0].sec, in main()
625 soe->ts[i][0].nsec); in main()
631 soe->ts[i][1].sec, soe->ts[i][1].nsec); in main()
635 soe->ts[i][2].sec, in main()
636 soe->ts[i][2].nsec); in main()
640 soe->ts[i][2].sec, in main()
641 soe->ts[i][2].nsec); in main()
644 printf(" monotonic-raw time after: %lld.%09u\n", in main()
645 soe->ts[i][2].sec, in main()
646 soe->ts[i][2].nsec); in main()
661 return -1; in main()
670 xts->device.sec, xts->device.nsec); in main()
672 xts->sys_realtime.sec, xts->sys_realtime.nsec); in main()
674 xts->sys_monoraw.sec, xts->sys_monoraw.nsec); in main()