]> www.infradead.org Git - users/hch/misc.git/commitdiff
ptp: qoriq: convert to use generic interfaces to set loopback mode
authorWei Fang <wei.fang@nxp.com>
Fri, 5 Sep 2025 03:07:11 +0000 (11:07 +0800)
committerJakub Kicinski <kuba@kernel.org>
Wed, 10 Sep 2025 02:28:52 +0000 (19:28 -0700)
Since the generic debugfs interfaces for setting the periodic pulse
signal loopback have been added to the ptp_clock driver, so convert
the vendor-defined debugfs interfaces to the generic interfaces.

Signed-off-by: Wei Fang <wei.fang@nxp.com>
Reviewed-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Tested-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Link: https://patch.msgid.link/20250905030711.1509648-4-wei.fang@nxp.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
MAINTAINERS
drivers/ptp/Kconfig
drivers/ptp/Makefile
drivers/ptp/ptp_qoriq.c
drivers/ptp/ptp_qoriq_debugfs.c [deleted file]
include/linux/fsl/ptp_qoriq.h

index b81595e9ea955bf514528b239a48d32ed53d7a5a..e3907f0c124396cb822bfcc416faa9d8e0055c73 100644 (file)
@@ -9817,7 +9817,6 @@ F:        drivers/net/ethernet/freescale/dpaa2/dpaa2-ptp*
 F:     drivers/net/ethernet/freescale/dpaa2/dprtc*
 F:     drivers/net/ethernet/freescale/enetc/enetc_ptp.c
 F:     drivers/ptp/ptp_qoriq.c
-F:     drivers/ptp/ptp_qoriq_debugfs.c
 F:     include/linux/fsl/ptp_qoriq.h
 
 FREESCALE QUAD SPI DRIVER
index 9256bf2e8ad4b65174f4c11dbe78ba3d242576d1..5f8ea34d11d6de1b1265b43ce535651d66bcc9de 100644 (file)
@@ -67,7 +67,7 @@ config PTP_1588_CLOCK_QORIQ
          packets using the SO_TIMESTAMPING API.
 
          To compile this driver as a module, choose M here: the module
-         will be called ptp-qoriq.
+         will be called ptp_qoriq.
 
 comment "Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks."
        depends on PHYLIB=n || NETWORK_PHY_TIMESTAMPING=n
index 8985d723d29c64a57a837f464efe71c19cd9af8f..bdc47e284f14e7e77460ccf4ea30ab20c6df4fe4 100644 (file)
@@ -12,9 +12,7 @@ obj-$(CONFIG_PTP_1588_CLOCK_INES)     += ptp_ines.o
 obj-$(CONFIG_PTP_1588_CLOCK_PCH)       += ptp_pch.o
 obj-$(CONFIG_PTP_1588_CLOCK_KVM)       += ptp_kvm.o
 obj-$(CONFIG_PTP_1588_CLOCK_VMCLOCK)   += ptp_vmclock.o
-obj-$(CONFIG_PTP_1588_CLOCK_QORIQ)     += ptp-qoriq.o
-ptp-qoriq-y                            += ptp_qoriq.o
-ptp-qoriq-$(CONFIG_DEBUG_FS)           += ptp_qoriq_debugfs.o
+obj-$(CONFIG_PTP_1588_CLOCK_QORIQ)     += ptp_qoriq.o
 obj-$(CONFIG_PTP_1588_CLOCK_IDTCM)     += ptp_clockmatrix.o
 obj-$(CONFIG_PTP_1588_CLOCK_FC3W)      += ptp_fc3.o
 obj-$(CONFIG_PTP_1588_CLOCK_IDT82P33)  += ptp_idt82p33.o
index 4d488c1f1941bf564ed41dbaf13644835a9daf2e..8da995e36aebf34d2cdf56d085638577699b2b87 100644 (file)
@@ -465,6 +465,25 @@ static int ptp_qoriq_auto_config(struct ptp_qoriq *ptp_qoriq,
        return 0;
 }
 
+static int ptp_qoriq_perout_loopback(struct ptp_clock_info *ptp,
+                                    unsigned int index, int on)
+{
+       struct ptp_qoriq *ptp_qoriq = container_of(ptp, struct ptp_qoriq, caps);
+       struct ptp_qoriq_registers *regs = &ptp_qoriq->regs;
+       u32 loopback_bit = index ? PP2L : PP1L;
+       u32 tmr_ctrl;
+
+       tmr_ctrl = ptp_qoriq->read(&regs->ctrl_regs->tmr_ctrl);
+       if (on)
+               tmr_ctrl |= loopback_bit;
+       else
+               tmr_ctrl &= ~loopback_bit;
+
+       ptp_qoriq->write(&regs->ctrl_regs->tmr_ctrl, tmr_ctrl);
+
+       return 0;
+}
+
 int ptp_qoriq_init(struct ptp_qoriq *ptp_qoriq, void __iomem *base,
                   const struct ptp_clock_info *caps)
 {
@@ -479,6 +498,8 @@ int ptp_qoriq_init(struct ptp_qoriq *ptp_qoriq, void __iomem *base,
 
        ptp_qoriq->base = base;
        ptp_qoriq->caps = *caps;
+       ptp_qoriq->caps.n_per_lp = 2;
+       ptp_qoriq->caps.perout_loopback = ptp_qoriq_perout_loopback;
 
        if (of_property_read_u32(node, "fsl,cksel", &ptp_qoriq->cksel))
                ptp_qoriq->cksel = DEFAULT_CKSEL;
@@ -568,7 +589,7 @@ int ptp_qoriq_init(struct ptp_qoriq *ptp_qoriq, void __iomem *base,
                return PTR_ERR(ptp_qoriq->clock);
 
        ptp_qoriq->phc_index = ptp_clock_index(ptp_qoriq->clock);
-       ptp_qoriq_create_debugfs(ptp_qoriq);
+
        return 0;
 }
 EXPORT_SYMBOL_GPL(ptp_qoriq_init);
@@ -580,7 +601,6 @@ void ptp_qoriq_free(struct ptp_qoriq *ptp_qoriq)
        ptp_qoriq->write(&regs->ctrl_regs->tmr_temask, 0);
        ptp_qoriq->write(&regs->ctrl_regs->tmr_ctrl,   0);
 
-       ptp_qoriq_remove_debugfs(ptp_qoriq);
        ptp_clock_unregister(ptp_qoriq->clock);
        iounmap(ptp_qoriq->base);
        free_irq(ptp_qoriq->irq, ptp_qoriq);
diff --git a/drivers/ptp/ptp_qoriq_debugfs.c b/drivers/ptp/ptp_qoriq_debugfs.c
deleted file mode 100644 (file)
index e8dddce..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/* Copyright 2019 NXP
- */
-#include <linux/device.h>
-#include <linux/debugfs.h>
-#include <linux/fsl/ptp_qoriq.h>
-
-static int ptp_qoriq_fiper1_lpbk_get(void *data, u64 *val)
-{
-       struct ptp_qoriq *ptp_qoriq = data;
-       struct ptp_qoriq_registers *regs = &ptp_qoriq->regs;
-       u32 ctrl;
-
-       ctrl = ptp_qoriq->read(&regs->ctrl_regs->tmr_ctrl);
-       *val = ctrl & PP1L ? 1 : 0;
-
-       return 0;
-}
-
-static int ptp_qoriq_fiper1_lpbk_set(void *data, u64 val)
-{
-       struct ptp_qoriq *ptp_qoriq = data;
-       struct ptp_qoriq_registers *regs = &ptp_qoriq->regs;
-       u32 ctrl;
-
-       ctrl = ptp_qoriq->read(&regs->ctrl_regs->tmr_ctrl);
-       if (val == 0)
-               ctrl &= ~PP1L;
-       else
-               ctrl |= PP1L;
-
-       ptp_qoriq->write(&regs->ctrl_regs->tmr_ctrl, ctrl);
-       return 0;
-}
-
-DEFINE_DEBUGFS_ATTRIBUTE(ptp_qoriq_fiper1_fops, ptp_qoriq_fiper1_lpbk_get,
-                        ptp_qoriq_fiper1_lpbk_set, "%llu\n");
-
-static int ptp_qoriq_fiper2_lpbk_get(void *data, u64 *val)
-{
-       struct ptp_qoriq *ptp_qoriq = data;
-       struct ptp_qoriq_registers *regs = &ptp_qoriq->regs;
-       u32 ctrl;
-
-       ctrl = ptp_qoriq->read(&regs->ctrl_regs->tmr_ctrl);
-       *val = ctrl & PP2L ? 1 : 0;
-
-       return 0;
-}
-
-static int ptp_qoriq_fiper2_lpbk_set(void *data, u64 val)
-{
-       struct ptp_qoriq *ptp_qoriq = data;
-       struct ptp_qoriq_registers *regs = &ptp_qoriq->regs;
-       u32 ctrl;
-
-       ctrl = ptp_qoriq->read(&regs->ctrl_regs->tmr_ctrl);
-       if (val == 0)
-               ctrl &= ~PP2L;
-       else
-               ctrl |= PP2L;
-
-       ptp_qoriq->write(&regs->ctrl_regs->tmr_ctrl, ctrl);
-       return 0;
-}
-
-DEFINE_DEBUGFS_ATTRIBUTE(ptp_qoriq_fiper2_fops, ptp_qoriq_fiper2_lpbk_get,
-                        ptp_qoriq_fiper2_lpbk_set, "%llu\n");
-
-void ptp_qoriq_create_debugfs(struct ptp_qoriq *ptp_qoriq)
-{
-       struct dentry *root;
-
-       root = debugfs_create_dir(dev_name(ptp_qoriq->dev), NULL);
-       if (IS_ERR(root))
-               return;
-       if (!root)
-               goto err_root;
-
-       ptp_qoriq->debugfs_root = root;
-
-       if (!debugfs_create_file_unsafe("fiper1-loopback", 0600, root,
-                                       ptp_qoriq, &ptp_qoriq_fiper1_fops))
-               goto err_node;
-       if (!debugfs_create_file_unsafe("fiper2-loopback", 0600, root,
-                                       ptp_qoriq, &ptp_qoriq_fiper2_fops))
-               goto err_node;
-       return;
-
-err_node:
-       debugfs_remove_recursive(root);
-       ptp_qoriq->debugfs_root = NULL;
-err_root:
-       dev_err(ptp_qoriq->dev, "failed to initialize debugfs\n");
-}
-
-void ptp_qoriq_remove_debugfs(struct ptp_qoriq *ptp_qoriq)
-{
-       debugfs_remove_recursive(ptp_qoriq->debugfs_root);
-       ptp_qoriq->debugfs_root = NULL;
-}
index b301bf7199d35a96fc0ca98257e248afc3bf4c72..3601e25779ba4afd7c6ad9b76bb87409eebdcb32 100644 (file)
@@ -145,7 +145,6 @@ struct ptp_qoriq {
        struct ptp_clock *clock;
        struct ptp_clock_info caps;
        struct resource *rsrc;
-       struct dentry *debugfs_root;
        struct device *dev;
        bool extts_fifo_support;
        bool fiper3_support;
@@ -195,14 +194,5 @@ int ptp_qoriq_settime(struct ptp_clock_info *ptp,
 int ptp_qoriq_enable(struct ptp_clock_info *ptp,
                     struct ptp_clock_request *rq, int on);
 int extts_clean_up(struct ptp_qoriq *ptp_qoriq, int index, bool update_event);
-#ifdef CONFIG_DEBUG_FS
-void ptp_qoriq_create_debugfs(struct ptp_qoriq *ptp_qoriq);
-void ptp_qoriq_remove_debugfs(struct ptp_qoriq *ptp_qoriq);
-#else
-static inline void ptp_qoriq_create_debugfs(struct ptp_qoriq *ptp_qoriq)
-{ }
-static inline void ptp_qoriq_remove_debugfs(struct ptp_qoriq *ptp_qoriq)
-{ }
-#endif
 
 #endif