Re: [PATCH] Added additional callback to ptp_clock_info:
From: Richard Cochran <richardcochran@gmail.com>
Date: 2015-06-26 06:40:32
On Thu, Jun 25, 2015 at 04:42:57PM -0700, Christopher Hall wrote:
quoted hunk ↗ jump to hunk
@@ -196,19 +196,31 @@ long ptp_ioctl(struct posix_clock *pc, unsigned int cmd, unsigned long arg) break; } pct = &sysoff->ts[0]; - for (i = 0; i < sysoff->n_samples; i++) { - getnstimeofday64(&ts); + if (ptp->info->getsynctime64 && sysoff->n_samples == 1) { + ptp->info->getsynctime64(ptp->info, &ts, &systs); + pct->sec = systs.tv_sec; + pct->nsec = systs.tv_nsec; + ++pct;
Please use pct++ for the sake of consistency.
quoted hunk ↗ jump to hunk
pct->sec = ts.tv_sec; pct->nsec = ts.tv_nsec; - pct++; - ptp->info->gettime64(ptp->info, &ts); + ++pct; + pct->sec = systs.tv_sec; + pct->nsec = systs.tv_nsec; + } else { + for (i = 0; i < sysoff->n_samples; i++) { + getnstimeofday64(&ts); + pct->sec = ts.tv_sec; + pct->nsec = ts.tv_nsec; + pct++; + ptp->info->gettime64(ptp->info, &ts); + pct->sec = ts.tv_sec; + pct->nsec = ts.tv_nsec; + pct++; + } + getnstimeofday64(&ts); pct->sec = ts.tv_sec; pct->nsec = ts.tv_nsec; - pct++; } - getnstimeofday64(&ts); - pct->sec = ts.tv_sec; - pct->nsec = ts.tv_nsec; if (copy_to_user((void __user *)arg, sysoff, sizeof(*sysoff))) err = -EFAULT; break;diff --git a/include/linux/ptp_clock_kernel.h b/include/linux/ptp_clock_kernel.h index b8b7306..edff9a5 100644 --- a/include/linux/ptp_clock_kernel.h +++ b/include/linux/ptp_clock_kernel.h@@ -105,6 +105,9 @@ struct ptp_clock_info { int (*adjfreq)(struct ptp_clock_info *ptp, s32 delta); int (*adjtime)(struct ptp_clock_info *ptp, s64 delta); int (*gettime64)(struct ptp_clock_info *ptp, struct timespec64 *ts); + int (*getsynctime64) + (struct ptp_clock_info *ptp, struct timespec64 *dev, + struct timespec64 *sys);
The struct's KernelDoc also needs updating.
int (*settime64)(struct ptp_clock_info *p, const struct timespec64 *ts); int (*enable)(struct ptp_clock_info *ptp, struct ptp_clock_request *request, int on); -- 1.9.1
Thanks, Richard