mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-07-16 17:57:38 -04:00
testptp: add option to enable external timestamping edges
Some drivers (e.g. ice) don't enable any edges by default when external timestamping is requested by the PTP_EXTTS_REQUEST ioctl, which makes testptp -e unusable for testing hardware supported by these drivers. Add -E option to specify if the rising, falling, or both edges should be enabled by the ioctl. Signed-off-by: Miroslav Lichvar <mlichvar@redhat.com> Cc: Richard Cochran <richardcochran@gmail.com> Cc: Jacob Keller <jacob.e.keller@intel.com> Reviewed-by: Vadim Fedorenko <vadim.fedorenko@linux.dev> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
5e95c0a3a5
commit
27390db959
@@ -120,6 +120,7 @@ static void usage(char *progname)
|
||||
" -c query the ptp clock's capabilities\n"
|
||||
" -d name device to open\n"
|
||||
" -e val read 'val' external time stamp events\n"
|
||||
" -E val enable rising (1), falling (2), or both (3) edges\n"
|
||||
" -f val adjust the ptp clock frequency by 'val' ppb\n"
|
||||
" -F chan Enable single channel mask and keep device open for debugfs verification.\n"
|
||||
" -g get the ptp clock time\n"
|
||||
@@ -178,6 +179,7 @@ int main(int argc, char *argv[])
|
||||
int adjphase = 0;
|
||||
int capabilities = 0;
|
||||
int extts = 0;
|
||||
int edge = 0;
|
||||
int flagtest = 0;
|
||||
int gettime = 0;
|
||||
int index = 0;
|
||||
@@ -202,7 +204,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
progname = strrchr(argv[0], '/');
|
||||
progname = progname ? 1+progname : argv[0];
|
||||
while (EOF != (c = getopt(argc, argv, "cd:e:f:F:ghH:i:k:lL:n:o:p:P:rsSt:T:w:x:Xy:z"))) {
|
||||
while (EOF != (c = getopt(argc, argv, "cd:e:E:f:F:ghH:i:k:lL:n:o:p:P:rsSt:T:w:x:Xy:z"))) {
|
||||
switch (c) {
|
||||
case 'c':
|
||||
capabilities = 1;
|
||||
@@ -213,6 +215,11 @@ int main(int argc, char *argv[])
|
||||
case 'e':
|
||||
extts = atoi(optarg);
|
||||
break;
|
||||
case 'E':
|
||||
edge = atoi(optarg);
|
||||
edge = (edge & 1 ? PTP_RISING_EDGE : 0) |
|
||||
(edge & 2 ? PTP_FALLING_EDGE : 0);
|
||||
break;
|
||||
case 'f':
|
||||
adjfreq = atoi(optarg);
|
||||
break;
|
||||
@@ -444,7 +451,7 @@ int main(int argc, char *argv[])
|
||||
if (!readonly) {
|
||||
memset(&extts_request, 0, sizeof(extts_request));
|
||||
extts_request.index = index;
|
||||
extts_request.flags = PTP_ENABLE_FEATURE;
|
||||
extts_request.flags = PTP_ENABLE_FEATURE | edge;
|
||||
if (ioctl(fd, PTP_EXTTS_REQUEST, &extts_request)) {
|
||||
perror("PTP_EXTTS_REQUEST");
|
||||
extts = 0;
|
||||
|
||||
Reference in New Issue
Block a user