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 " -f val adjust the ptp clock frequency by 'val' ppb\n" in usage()
124 " -F chan Enable single channel mask and keep device open for debugfs verification.\n" in usage()
125 " -g get the ptp clock time\n" in usage()
126 " -h prints this message\n" in usage()
127 " -i val index for event/trigger\n" in usage()
128 " -k val measure the time offset between system and phc clock\n" in usage()
130 " -l list the current pin configuration\n" in usage()
131 " -L pin,val configure pin index 'pin' with function 'val'\n" in usage()
132 " the channel index is taken from the '-i' option\n" in usage()
134 " 0 - none\n" in usage()
135 " 1 - external time stamp\n" in usage()
136 " 2 - periodic output\n" in usage()
137 " -n val shift the ptp clock time by 'val' nanoseconds\n" in usage()
138 " -o val phase offset (in nanoseconds) to be provided to the PHC servo\n" in usage()
139 " -p val enable output with a period of 'val' nanoseconds\n" in usage()
140 " -H val set output phase to 'val' nanoseconds (requires -p)\n" in usage()
141 " -w val set output pulse width to 'val' nanoseconds (requires -p)\n" in usage()
142 " -P val enable or disable (val=1|0) the system clock PPS\n" in usage()
143 " -r open the ptp clock in readonly mode\n" in usage()
144 " -s set the ptp clock time from the system time\n" in usage()
145 " -S set the system time from the ptp clock time\n" in usage()
146 " -t val shift the ptp clock time by 'val' seconds\n" in usage()
147 " -T val set the ptp clock time to 'val' seconds\n" in usage()
148 " -x val get an extended ptp clock time with the desired number of samples (up to %d)\n" in usage()
149 " -X get a ptp clock cross timestamp\n" in usage()
150 " -y val pre/post tstamp timebase to use {realtime|monotonic|monotonic-raw}\n" in usage()
151 " -z test combinations of rising/falling external time stamp flags\n", in usage()
163 struct timex tx; in main() local
189 int pin_index = -1, pin_func; in main()
190 int pps = -1; in main()
194 int channel = -1; in main()
199 int64_t perout_phase = -1; in main()
200 int64_t pulsewidth = -1; in main()
201 int64_t perout = -1; in main()
242 return -1; in main()
282 return -1; in main()
293 else if (!strcasecmp(optarg, "monotonic-raw")) in main()
297 "type needs to be realtime, monotonic or monotonic-raw; was given %s\n", in main()
299 return -1; in main()
312 return -1; in main()
319 return -1; in main()
325 return -1; in main()
355 memset(&tx, 0, sizeof(tx)); in main()
356 tx.modes = ADJ_FREQUENCY; in main()
357 tx.freq = ppb_to_scaled_ppm(adjfreq); in main()
358 if (clock_adjtime(clkid, &tx)) { in main()
366 memset(&tx, 0, sizeof(tx)); in main()
367 tx.modes = ADJ_SETOFFSET | ADJ_NANO; in main()
368 tx.time.tv_sec = adjtime; in main()
369 tx.time.tv_usec = adjns; in main()
370 while (tx.time.tv_usec < 0) { in main()
371 tx.time.tv_sec -= 1; in main()
372 tx.time.tv_usec += NSEC_PER_SEC; in main()
375 if (clock_adjtime(clkid, &tx) < 0) { in main()
383 memset(&tx, 0, sizeof(tx)); in main()
384 tx.modes = ADJ_OFFSET | ADJ_NANO; in main()
385 tx.offset = adjphase; in main()
387 if (clock_adjtime(clkid, &tx) < 0) { in main()
455 for (; extts; extts--) { in main()
462 event.t.sec, event.t.nsec); in main()
497 puts("-w can only be specified together with -p"); in main()
498 return -1; in main()
502 puts("-H can only be specified together with -p"); in main()
503 return -1; in main()
509 return -1; in main()
513 perout_request.period.sec = perout / NSEC_PER_SEC; in main()
518 perout_request.on.sec = pulsewidth / NSEC_PER_SEC; in main()
523 perout_request.phase.sec = perout_phase / NSEC_PER_SEC; in main()
526 perout_request.start.sec = ts.tv_sec + 2; in main()
537 if (pps != -1) { in main()
550 return -1; in main()
556 return -1; in main()
558 sysoff->n_samples = n_samples; in main()
565 pct = &sysoff->ts[0]; in main()
566 for (i = 0; i < sysoff->n_samples; i++) { in main()
570 interval = t2 - t1; in main()
571 offset = (t2 + t1) / 2 - tp; in main()
574 (pct+2*i)->sec, (pct+2*i)->nsec); in main()
576 (pct+2*i+1)->sec, (pct+2*i+1)->nsec); in main()
578 (pct+2*i+2)->sec, (pct+2*i+2)->nsec); in main()
591 return -1; in main()
594 soe->n_samples = getextended; in main()
595 soe->clockid = ext_clockid; in main()
607 i, soe->ts[i][0].sec, in main()
608 soe->ts[i][0].nsec); in main()
612 i, soe->ts[i][0].sec, in main()
613 soe->ts[i][0].nsec); in main()
616 printf("sample #%2d: monotonic-raw time before: %lld.%09u\n", in main()
617 i, soe->ts[i][0].sec, in main()
618 soe->ts[i][0].nsec); in main()
624 soe->ts[i][1].sec, soe->ts[i][1].nsec); in main()
628 soe->ts[i][2].sec, in main()
629 soe->ts[i][2].nsec); in main()
633 soe->ts[i][2].sec, in main()
634 soe->ts[i][2].nsec); in main()
637 printf(" monotonic-raw time after: %lld.%09u\n", in main()
638 soe->ts[i][2].sec, in main()
639 soe->ts[i][2].nsec); in main()
654 return -1; in main()
663 xts->device.sec, xts->device.nsec); in main()
665 xts->sys_realtime.sec, xts->sys_realtime.nsec); in main()
667 xts->sys_monoraw.sec, xts->sys_monoraw.nsec); in main()