Commit ac0e650f authored by Wei Fang's avatar Wei Fang Committed by Jakub Kicinski
Browse files

net: enetc: use generic interfaces to get phc_index for ENETC v1



The commit 61f132ca ("ptp: add helpers to get the phc_index by
of_node or dev") has added two generic interfaces to get the phc_index
of the PTP clock. This eliminates the need for PTP device drivers to
provide custom APIs for consumers to retrieve the phc_index. This has
already been implemented for ENETC v4 and is also applicable to ENETC
v1. Therefore, the global variable enetc_phc_index is removed from the
driver. ENETC v1 now uses the same interface as v4 to get phc_index.

Signed-off-by: default avatarWei Fang <wei.fang@nxp.com>
Reviewed-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
Tested-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
Link: https://patch.msgid.link/20250919084509.1846513-3-wei.fang@nxp.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 26644c90
Loading
Loading
Loading
Loading
+0 −3
Original line number Diff line number Diff line
@@ -493,9 +493,6 @@ struct enetc_msg_cmd_set_primary_mac {

#define ENETC_CBDR_TIMEOUT	1000 /* usecs */

/* PTP driver exports */
extern int enetc_phc_index;

/* SI common */
u32 enetc_port_mac_rd(struct enetc_si *si, u32 reg);
void enetc_port_mac_wr(struct enetc_si *si, u32 reg, u32 val);
+10 −16
Original line number Diff line number Diff line
@@ -880,7 +880,7 @@ static int enetc_set_coalesce(struct net_device *ndev,
	return 0;
}

static int enetc4_get_phc_index_by_pdev(struct enetc_si *si)
static int enetc_get_phc_index_by_pdev(struct enetc_si *si)
{
	struct pci_bus *bus = si->pdev->bus;
	struct pci_dev *timer_pdev;
@@ -888,6 +888,9 @@ static int enetc4_get_phc_index_by_pdev(struct enetc_si *si)
	int phc_index;

	switch (si->revision) {
	case ENETC_REV_1_0:
		devfn = PCI_DEVFN(0, 4);
		break;
	case ENETC_REV_4_1:
		devfn = PCI_DEVFN(24, 0);
		break;
@@ -906,18 +909,18 @@ static int enetc4_get_phc_index_by_pdev(struct enetc_si *si)
	return phc_index;
}

static int enetc4_get_phc_index(struct enetc_si *si)
static int enetc_get_phc_index(struct enetc_si *si)
{
	struct device_node *np = si->pdev->dev.of_node;
	struct device_node *timer_np;
	int phc_index;

	if (!np)
		return enetc4_get_phc_index_by_pdev(si);
		return enetc_get_phc_index_by_pdev(si);

	timer_np = of_parse_phandle(np, "ptp-timer", 0);
	if (!timer_np)
		return enetc4_get_phc_index_by_pdev(si);
		return enetc_get_phc_index_by_pdev(si);

	phc_index = ptp_clock_index_by_of_node(timer_np);
	of_node_put(timer_np);
@@ -950,22 +953,13 @@ static int enetc_get_ts_info(struct net_device *ndev,
{
	struct enetc_ndev_priv *priv = netdev_priv(ndev);
	struct enetc_si *si = priv->si;
	int *phc_idx;

	if (!enetc_ptp_clock_is_enabled(si))
		goto timestamp_tx_sw;

	if (is_enetc_rev1(si)) {
		phc_idx = symbol_get(enetc_phc_index);
		if (phc_idx) {
			info->phc_index = *phc_idx;
			symbol_put(enetc_phc_index);
		}
	} else {
		info->phc_index = enetc4_get_phc_index(si);
	info->phc_index = enetc_get_phc_index(si);
	if (info->phc_index < 0)
		goto timestamp_tx_sw;
	}

	enetc_get_ts_generic_info(ndev, info);

+0 −5
Original line number Diff line number Diff line
@@ -7,9 +7,6 @@

#include "enetc.h"

int enetc_phc_index = -1;
EXPORT_SYMBOL_GPL(enetc_phc_index);

static struct ptp_clock_info enetc_ptp_caps = {
	.owner		= THIS_MODULE,
	.name		= "ENETC PTP clock",
@@ -92,7 +89,6 @@ static int enetc_ptp_probe(struct pci_dev *pdev,
	if (err)
		goto err_no_clock;

	enetc_phc_index = ptp_qoriq->phc_index;
	pci_set_drvdata(pdev, ptp_qoriq);

	return 0;
@@ -118,7 +114,6 @@ static void enetc_ptp_remove(struct pci_dev *pdev)
{
	struct ptp_qoriq *ptp_qoriq = pci_get_drvdata(pdev);

	enetc_phc_index = -1;
	ptp_qoriq_free(ptp_qoriq);
	pci_free_irq_vectors(pdev);
	kfree(ptp_qoriq);