Thread (4 messages) 4 messages, 3 authors, 2014-03-28

Re: [PATCH] phy/at8031: enable at8031 to work on interrupt mode

From: Sergei Shtylyov <hidden>
Date: 2014-03-27 11:52:37
Also in: lkml, netdev

Hello.

On 27-03-2014 10:18, Zhao Qiang wrote:
The at8031 can work on polling mode and interrupt mode.
Add ack_interrupt and config intr funcs to enable
interrupt mode for it.
Signed-off-by: Zhao Qiang <redacted>
---
  drivers/net/phy/at803x.c | 30 ++++++++++++++++++++++++++++++
  1 file changed, 30 insertions(+)
quoted hunk ↗ jump to hunk
diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c
index bc71947..d034ef5 100644
--- a/drivers/net/phy/at803x.c
+++ b/drivers/net/phy/at803x.c
[...]
quoted hunk ↗ jump to hunk
@@ -191,6 +194,31 @@ static int at803x_config_init(struct phy_device *phydev)
  	return 0;
  }

+static int at803x_ack_interrupt(struct phy_device *phydev)
+{
+	int err;
+
+	err = phy_read(phydev, AT803X_INSR);
    Could make this an initializer...
+
+	return (err < 0) ? err : 0;
+}
+
+static int at803x_config_intr(struct phy_device *phydev)
+{
+	int err;
+	int value;
+
+	value = phy_read(phydev, AT803X_INER);
+
+	if (phydev->interrupts == PHY_INTERRUPT_ENABLED)
+		err = phy_write(phydev, AT803X_INER,
+				(value | AT803X_INER_INIT));
    Inner parens not needed.
+	else
+		err = phy_write(phydev, AT803X_INER, value);
    Why are you not clearing the bits here? Why write back what has been read 
at all?

WBR, Sergei
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help