phylib: Add interrupt source check function to M88E1121R driver
authorAnatolij Gustschin <agust@denx.de>
Tue, 7 Apr 2009 02:01:43 +0000 (02:01 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 13 Apr 2009 21:51:25 +0000 (14:51 -0700)
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>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/marvell.c

index e9f436ba800f79063a9ea04abed98e00396d042e..7a3ec9d39a9a62952a5f598c9dd03794a3a58529 100644 (file)
@@ -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 },
        },
        {