[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20220506221531.1308-9-jonathan.lemon@gmail.com>
Date: Fri, 6 May 2022 15:15:29 -0700
From: Jonathan Lemon <jonathan.lemon@...il.com>
To: netdev@...r.kernel.org
Cc: richardcochran@...il.com, kernel-team@...com, davem@...emloft.net,
kuba@...nel.org, pabeni@...hat.com, edumazet@...gle.com
Subject: [PATCH net-next v2 08/10] ptp: ocp: fix PPS source selector reporting
The NTL timecard design has a PPS1 selector which selects the
the PPS source automatically, according to Section 1.9 of the
documentation.
If there is a SMA PPS input detected:
- send signal to MAC and PPS slave selector.
If there is a MAC PPS input detected:
- send GNSS1 to the MAC
- send MAC to the PPS slave
If there is a GNSS1 input detected:
- send GNSS1 to the MAC
- send GNSS1 to the PPS slave.MAC
Signed-off-by: Jonathan Lemon <jonathan.lemon@...il.com>
---
drivers/ptp/ptp_ocp.c | 23 +++++++++++++----------
1 file changed, 13 insertions(+), 10 deletions(-)
diff --git a/drivers/ptp/ptp_ocp.c b/drivers/ptp/ptp_ocp.c
index ec3c21655382..787561be37da 100644
--- a/drivers/ptp/ptp_ocp.c
+++ b/drivers/ptp/ptp_ocp.c
@@ -3071,10 +3071,10 @@ ptp_ocp_summary_show(struct seq_file *s, void *data)
struct device *dev = s->private;
struct ptp_system_timestamp sts;
struct ts_reg __iomem *ts_reg;
+ char *buf, *src, *mac_src;
struct timespec64 ts;
struct ptp_ocp *bp;
u16 sma_val[4][2];
- char *src, *buf;
u32 ctrl, val;
bool on, map;
int i;
@@ -3237,17 +3237,26 @@ ptp_ocp_summary_show(struct seq_file *s, void *data)
if (bp->pps_select) {
val = ioread32(&bp->pps_select->gpio1);
src = &buf[80];
- if (val & 0x01)
+ mac_src = "GNSS1";
+ if (val & 0x01) {
gpio_input_map(src, bp, sma_val, 0, NULL);
- else if (val & 0x02)
+ mac_src = src;
+ } else if (val & 0x02)
src = "MAC";
else if (val & 0x04)
src = "GNSS1";
- else
+ else {
src = "----";
+ mac_src = src;
+ }
} else {
src = "?";
+ mac_src = src;
}
+ seq_printf(s, "MAC PPS1 src: %s\n", mac_src);
+
+ gpio_input_map(buf, bp, sma_val, 1, "GNSS2");
+ seq_printf(s, "MAC PPS2 src: %s\n", buf);
/* assumes automatic switchover/selection */
val = ioread32(&bp->reg->select);
@@ -3272,12 +3281,6 @@ ptp_ocp_summary_show(struct seq_file *s, void *data)
seq_printf(s, "%7s: %s, state: %s\n", "PHC src", buf,
val & OCP_STATUS_IN_SYNC ? "sync" : "unsynced");
- /* reuses PPS1 src from earlier */
- seq_printf(s, "MAC PPS1 src: %s\n", src);
-
- gpio_input_map(buf, bp, sma_val, 1, "GNSS2");
- seq_printf(s, "MAC PPS2 src: %s\n", buf);
-
if (!ptp_ocp_gettimex(&bp->ptp_info, &ts, &sts)) {
struct timespec64 sys_ts;
s64 pre_ns, post_ns, ns;
--
2.31.1
Powered by blists - more mailing lists