netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Divya Koppera <divya.koppera@microchip.com>
To: <andrew@lunn.ch>, <arun.ramadoss@microchip.com>,
	<UNGLinuxDriver@microchip.com>, <hkallweit1@gmail.com>,
	<linux@armlinux.org.uk>, <davem@davemloft.net>,
	<edumazet@google.com>, <kuba@kernel.org>, <pabeni@redhat.com>,
	<netdev@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<richardcochran@gmail.com>
Subject: [PATCH net-next 5/5] net: phy: microchip_t1 : Add initialization of ptp for lan887x
Date: Mon, 4 Nov 2024 14:37:50 +0530	[thread overview]
Message-ID: <20241104090750.12942-6-divya.koppera@microchip.com> (raw)
In-Reply-To: <20241104090750.12942-1-divya.koppera@microchip.com>

Add initialization of ptp for lan887x.

Signed-off-by: Divya Koppera <divya.koppera@microchip.com>
---
 drivers/net/phy/microchip_t1.c | 29 ++++++++++++++++++++++++++---
 1 file changed, 26 insertions(+), 3 deletions(-)

diff --git a/drivers/net/phy/microchip_t1.c b/drivers/net/phy/microchip_t1.c
index 71d6050b2833..0a8b88d577c3 100644
--- a/drivers/net/phy/microchip_t1.c
+++ b/drivers/net/phy/microchip_t1.c
@@ -10,11 +10,15 @@
 #include <linux/ethtool.h>
 #include <linux/ethtool_netlink.h>
 #include <linux/bitfield.h>
+#include "microchip_ptp.h"
 
 #define PHY_ID_LAN87XX				0x0007c150
 #define PHY_ID_LAN937X				0x0007c180
 #define PHY_ID_LAN887X				0x0007c1f0
 
+#define MCHP_PTP_LTC_BASE_ADDR			0xe000
+#define MCHP_PTP_PORT_BASE_ADDR			(MCHP_PTP_LTC_BASE_ADDR + 0x800)
+
 /* External Register Control Register */
 #define LAN87XX_EXT_REG_CTL                     (0x14)
 #define LAN87XX_EXT_REG_CTL_RD_CTL              (0x1000)
@@ -229,6 +233,7 @@
 
 #define LAN887X_INT_STS				0xf000
 #define LAN887X_INT_MSK				0xf001
+#define LAN887X_INT_MSK_P1588_MOD_INT_MSK	BIT(3)
 #define LAN887X_INT_MSK_T1_PHY_INT_MSK		BIT(2)
 #define LAN887X_INT_MSK_LINK_UP_MSK		BIT(1)
 #define LAN887X_INT_MSK_LINK_DOWN_MSK		BIT(0)
@@ -319,6 +324,7 @@ struct lan887x_regwr_map {
 
 struct lan887x_priv {
 	u64 stats[ARRAY_SIZE(lan887x_hw_stats)];
+	struct mchp_ptp_clock *clock;
 };
 
 static int lan937x_dsp_workaround(struct phy_device *phydev, u16 ereg, u8 bank)
@@ -1472,6 +1478,12 @@ static int lan887x_probe(struct phy_device *phydev)
 
 	phydev->priv = priv;
 
+	priv->clock = mchp_ptp_probe(phydev, MDIO_MMD_VEND1,
+				     MCHP_PTP_LTC_BASE_ADDR,
+				     MCHP_PTP_PORT_BASE_ADDR);
+	if (IS_ERR(priv->clock))
+		return PTR_ERR(priv->clock);
+
 	return lan887x_phy_setup(phydev);
 }
 
@@ -1518,6 +1530,7 @@ static void lan887x_get_strings(struct phy_device *phydev, u8 *data)
 
 static int lan887x_config_intr(struct phy_device *phydev)
 {
+	struct lan887x_priv *priv = phydev->priv;
 	int rc;
 
 	if (phydev->interrupts == PHY_INTERRUPT_ENABLED) {
@@ -1538,11 +1551,18 @@ static int lan887x_config_intr(struct phy_device *phydev)
 		rc = phy_read_mmd(phydev, MDIO_MMD_VEND1, LAN887X_INT_STS);
 	}
 
-	return rc < 0 ? rc : 0;
+	if (rc < 0)
+		return rc;
+
+	return mchp_config_ptp_intr(priv->clock, LAN887X_INT_MSK,
+				    LAN887X_INT_MSK_P1588_MOD_INT_MSK,
+				    (phydev->interrupts == PHY_INTERRUPT_ENABLED));
 }
 
 static irqreturn_t lan887x_handle_interrupt(struct phy_device *phydev)
 {
+	struct lan887x_priv *priv = phydev->priv;
+	int rc = IRQ_NONE;
 	int irq_status;
 
 	irq_status = phy_read_mmd(phydev, MDIO_MMD_VEND1, LAN887X_INT_STS);
@@ -1553,10 +1573,13 @@ static irqreturn_t lan887x_handle_interrupt(struct phy_device *phydev)
 
 	if (irq_status & LAN887X_MX_CHIP_TOP_LINK_MSK) {
 		phy_trigger_machine(phydev);
-		return IRQ_HANDLED;
+		rc = IRQ_HANDLED;
 	}
 
-	return IRQ_NONE;
+	if (irq_status & LAN887X_INT_MSK_P1588_MOD_INT_MSK)
+		rc = mchp_ptp_handle_interrupt(priv->clock);
+
+	return rc;
 }
 
 static int lan887x_cd_reset(struct phy_device *phydev,
-- 
2.17.1


  parent reply	other threads:[~2024-11-04  9:08 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-11-04  9:07 [PATCH net-next 0/5] Add ptp library for Microchip phys Divya Koppera
2024-11-04  9:07 ` [PATCH net-next 1/5] net: phy: microchip_ptp : Add header file for Microchip ptp library Divya Koppera
2024-11-04  9:07 ` [PATCH net-next 2/5] net: phy: microchip_ptp : Add ptp library for Microchip phys Divya Koppera
2024-11-04 12:32   ` Vadim Fedorenko
2024-11-05 10:08     ` Divya.Koppera
2024-11-07 14:34   ` Simon Horman
2024-11-11  4:55     ` Divya.Koppera
2024-11-04  9:07 ` [PATCH net-next 3/5] net: phy: Kconfig: Add ptp library support and 1588 optional flag in " Divya Koppera
2024-11-04  9:07 ` [PATCH net-next 4/5] net: phy: Makefile: Add makefile support for ptp " Divya Koppera
2024-11-05  1:40   ` kernel test robot
2024-11-05  3:57   ` kernel test robot
2024-11-04  9:07 ` Divya Koppera [this message]
2024-11-04 14:04   ` [PATCH net-next 5/5] net: phy: microchip_t1 : Add initialization of ptp for lan887x Andrew Lunn
2024-11-05  6:17     ` Divya.Koppera
2024-11-05  3:14   ` kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20241104090750.12942-6-divya.koppera@microchip.com \
    --to=divya.koppera@microchip.com \
    --cc=UNGLinuxDriver@microchip.com \
    --cc=andrew@lunn.ch \
    --cc=arun.ramadoss@microchip.com \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=hkallweit1@gmail.com \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=richardcochran@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).