Patchwork [3/3] phylib: Add interrupt source check function to M88E1121R driver

login
register
mail settings
Submitter Anatolij Gustschin
Date April 7, 2009, 12:01 p.m.
Message ID <1239105703-26240-3-git-send-email-agust@denx.de>
Download mbox | patch
Permalink /patch/25679/
State Accepted
Delegated to: David Miller
Headers show

Comments

Anatolij Gustschin - April 7, 2009, 12:01 p.m.
Add did_interrupt() function to check if a PHY port
really caused an interrupt. This is needed in the case
of shared PHY interrupt pin configuration to stop
interrupt event processing for PHY ports which didn't
cause an interrupt.

Signed-off-by: Anatolij Gustschin <agust@denx.de>
---
 drivers/net/phy/marvell.c |   13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)
David Miller - April 13, 2009, 9:51 p.m.
From: Anatolij Gustschin <agust@denx.de>
Date: Tue,  7 Apr 2009 14:01:43 +0200

> Add did_interrupt() function to check if a PHY port
> really caused an interrupt. This is needed in the case
> of shared PHY interrupt pin configuration to stop
> interrupt event processing for PHY ports which didn't
> cause an interrupt.
> 
> Signed-off-by: Anatolij Gustschin <agust@denx.de>

Applied.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/drivers/net/phy/marvell.c b/drivers/net/phy/marvell.c
index e9f436b..7a3ec9d 100644
--- a/drivers/net/phy/marvell.c
+++ b/drivers/net/phy/marvell.c
@@ -458,6 +458,18 @@  static int marvell_read_status(struct phy_device *phydev)
 	return 0;
 }
 
+static int m88e1121_did_interrupt(struct phy_device *phydev)
+{
+	int imask;
+
+	imask = phy_read(phydev, MII_M1011_IEVENT);
+
+	if (imask & MII_M1011_IMASK_INIT)
+		return 1;
+
+	return 0;
+}
+
 static struct phy_driver marvell_drivers[] = {
 	{
 		.phy_id = 0x01410c60,
@@ -520,6 +532,7 @@  static struct phy_driver marvell_drivers[] = {
 		.read_status = &marvell_read_status,
 		.ack_interrupt = &marvell_ack_interrupt,
 		.config_intr = &marvell_config_intr,
+		.did_interrupt = &m88e1121_did_interrupt,
 		.driver = { .owner = THIS_MODULE },
 	},
 	{