ptp: ocp: fix PPS source selector debugfs reporting
authorJonathan Lemon <jonathan.lemon@gmail.com>
Thu, 19 May 2022 21:21:52 +0000 (14:21 -0700)
committerJakub Kicinski <kuba@kernel.org>
Tue, 24 May 2022 18:39:54 +0000 (11:39 -0700)
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

Change the debugfs summary so it reflects the correct mapping,
for assistance in debugging.  No functional change.

Signed-off-by: Jonathan Lemon <jonathan.lemon@gmail.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/ptp/ptp_ocp.c

index 3856e9c..9fac96f 100644 (file)
@@ -3099,10 +3099,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;
@@ -3265,17 +3265,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)
+               } 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);
@@ -3300,12 +3309,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;