@@ -236,6 +236,8 @@ struct ptp_clock *ptp_clock_register(struct ptp_clock_info *info,
if (parent->class && strcmp(parent->class->name, "ptp") == 0)
ptp->vclock_flag = true;
+ memset(ptp->vclock_index, -1, sizeof(ptp->vclock_index));
+
err = ptp_populate_pin_groups(ptp);
if (err)
goto no_pin_groups;
@@ -47,6 +47,7 @@ struct ptp_clock {
struct kthread_worker *kworker;
struct kthread_delayed_work aux_work;
u8 n_vclocks;
+ int vclock_index[PTP_MAX_VCLOCKS];
struct mutex n_vclocks_mux; /* protect concurrent n_vclocks access */
bool vclock_flag;
};
@@ -207,6 +207,9 @@ static ssize_t n_vclocks_store(struct device *dev,
goto out;
}
+ ptp->vclock_index[ptp->n_vclocks + i] =
+ vclock->clock->index;
+
dev_info(dev, "new virtual clock ptp%d\n",
vclock->clock->index);
}
@@ -217,6 +220,9 @@ static ssize_t n_vclocks_store(struct device *dev,
i = ptp->n_vclocks - num;
device_for_each_child_reverse(dev, &i,
unregister_vclock);
+
+ for (i = 1; i <= ptp->n_vclocks - num; i++)
+ ptp->vclock_index[ptp->n_vclocks - i] = -1;
}
if (num == 0)
Track available ptp vclocks information. Record index values of available ptp vclocks during registering and unregistering. This is preparation for supporting ptp vclocks info query through ethtool. Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> --- Change for v3: - Added this patch. --- drivers/ptp/ptp_clock.c | 2 ++ drivers/ptp/ptp_private.h | 1 + drivers/ptp/ptp_sysfs.c | 6 ++++++ 3 files changed, 9 insertions(+)