All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jerome Brunet <jbrunet@baylibre.com>
To: Andrew Lunn <andrew@lunn.ch>, Florian Fainelli <f.fainelli@gmail.com>
Cc: Jerome Brunet <jbrunet@baylibre.com>,
	Kevin Hilman <khilman@baylibre.com>,
	netdev@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-amlogic@lists.infradead.org, linux-kernel@vger.kernel.org
Subject: [PATCH net-next v2 7/8] net: phy: meson-gxl: add interrupt support
Date: Thu,  7 Dec 2017 15:27:14 +0100	[thread overview]
Message-ID: <20171207142715.32578-8-jbrunet@baylibre.com> (raw)
In-Reply-To: <20171207142715.32578-1-jbrunet@baylibre.com>

Enable interrupt support in meson-gxl PHY driver

Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
---
 drivers/net/phy/meson-gxl.c | 37 ++++++++++++++++++++++++++++++++++++-
 1 file changed, 36 insertions(+), 1 deletion(-)

diff --git a/drivers/net/phy/meson-gxl.c b/drivers/net/phy/meson-gxl.c
index 5325940fe899..861b021b9758 100644
--- a/drivers/net/phy/meson-gxl.c
+++ b/drivers/net/phy/meson-gxl.c
@@ -33,6 +33,14 @@
 #define  TSTCNTL_WRITE_ADDRESS	GENMASK(4, 0)
 #define TSTREAD1	21
 #define TSTWRITE	23
+#define INTSRC_FLAG	29
+#define  INTSRC_ANEG_PR		BIT(1)
+#define  INTSRC_PARALLEL_FAULT	BIT(2)
+#define  INTSRC_ANEG_LP_ACK	BIT(3)
+#define  INTSRC_LINK_DOWN	BIT(4)
+#define  INTSRC_REMOTE_FAULT	BIT(5)
+#define  INTSRC_ANEG_COMPLETE	BIT(6)
+#define INTSRC_MASK	30
 
 #define BANK_ANALOG_DSP		0
 #define BANK_WOL		1
@@ -193,17 +201,44 @@ int meson_gxl_read_status(struct phy_device *phydev)
 	return genphy_read_status(phydev);
 }
 
+static int meson_gxl_ack_interrupt(struct phy_device *phydev)
+{
+	int ret = phy_read(phydev, INTSRC_FLAG);
+
+	return ret < 0 ? ret : 0;
+}
+
+static int meson_gxl_config_intr(struct phy_device *phydev)
+{
+	u16 val;
+
+	if (phydev->interrupts == PHY_INTERRUPT_ENABLED) {
+		val = INTSRC_ANEG_PR
+			| INTSRC_PARALLEL_FAULT
+			| INTSRC_ANEG_LP_ACK
+			| INTSRC_LINK_DOWN
+			| INTSRC_REMOTE_FAULT
+			| INTSRC_ANEG_COMPLETE;
+	} else {
+		val = 0;
+	}
+
+	return phy_write(phydev, INTSRC_MASK, val);
+}
+
 static struct phy_driver meson_gxl_phy[] = {
 	{
 		.phy_id		= 0x01814400,
 		.phy_id_mask	= 0xfffffff0,
 		.name		= "Meson GXL Internal PHY",
 		.features	= PHY_BASIC_FEATURES,
-		.flags		= PHY_IS_INTERNAL,
+		.flags		= PHY_IS_INTERNAL | PHY_HAS_INTERRUPT,
 		.config_init	= meson_gxl_config_init,
 		.config_aneg	= genphy_config_aneg,
 		.aneg_done      = genphy_aneg_done,
 		.read_status	= meson_gxl_read_status,
+		.ack_interrupt	= meson_gxl_ack_interrupt,
+		.config_intr	= meson_gxl_config_intr,
 		.suspend        = genphy_suspend,
 		.resume         = genphy_resume,
 	},
-- 
2.14.3

WARNING: multiple messages have this Message-ID (diff)
From: jbrunet@baylibre.com (Jerome Brunet)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH net-next v2 7/8] net: phy: meson-gxl: add interrupt support
Date: Thu,  7 Dec 2017 15:27:14 +0100	[thread overview]
Message-ID: <20171207142715.32578-8-jbrunet@baylibre.com> (raw)
In-Reply-To: <20171207142715.32578-1-jbrunet@baylibre.com>

Enable interrupt support in meson-gxl PHY driver

Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
---
 drivers/net/phy/meson-gxl.c | 37 ++++++++++++++++++++++++++++++++++++-
 1 file changed, 36 insertions(+), 1 deletion(-)

diff --git a/drivers/net/phy/meson-gxl.c b/drivers/net/phy/meson-gxl.c
index 5325940fe899..861b021b9758 100644
--- a/drivers/net/phy/meson-gxl.c
+++ b/drivers/net/phy/meson-gxl.c
@@ -33,6 +33,14 @@
 #define  TSTCNTL_WRITE_ADDRESS	GENMASK(4, 0)
 #define TSTREAD1	21
 #define TSTWRITE	23
+#define INTSRC_FLAG	29
+#define  INTSRC_ANEG_PR		BIT(1)
+#define  INTSRC_PARALLEL_FAULT	BIT(2)
+#define  INTSRC_ANEG_LP_ACK	BIT(3)
+#define  INTSRC_LINK_DOWN	BIT(4)
+#define  INTSRC_REMOTE_FAULT	BIT(5)
+#define  INTSRC_ANEG_COMPLETE	BIT(6)
+#define INTSRC_MASK	30
 
 #define BANK_ANALOG_DSP		0
 #define BANK_WOL		1
@@ -193,17 +201,44 @@ int meson_gxl_read_status(struct phy_device *phydev)
 	return genphy_read_status(phydev);
 }
 
+static int meson_gxl_ack_interrupt(struct phy_device *phydev)
+{
+	int ret = phy_read(phydev, INTSRC_FLAG);
+
+	return ret < 0 ? ret : 0;
+}
+
+static int meson_gxl_config_intr(struct phy_device *phydev)
+{
+	u16 val;
+
+	if (phydev->interrupts == PHY_INTERRUPT_ENABLED) {
+		val = INTSRC_ANEG_PR
+			| INTSRC_PARALLEL_FAULT
+			| INTSRC_ANEG_LP_ACK
+			| INTSRC_LINK_DOWN
+			| INTSRC_REMOTE_FAULT
+			| INTSRC_ANEG_COMPLETE;
+	} else {
+		val = 0;
+	}
+
+	return phy_write(phydev, INTSRC_MASK, val);
+}
+
 static struct phy_driver meson_gxl_phy[] = {
 	{
 		.phy_id		= 0x01814400,
 		.phy_id_mask	= 0xfffffff0,
 		.name		= "Meson GXL Internal PHY",
 		.features	= PHY_BASIC_FEATURES,
-		.flags		= PHY_IS_INTERNAL,
+		.flags		= PHY_IS_INTERNAL | PHY_HAS_INTERRUPT,
 		.config_init	= meson_gxl_config_init,
 		.config_aneg	= genphy_config_aneg,
 		.aneg_done      = genphy_aneg_done,
 		.read_status	= meson_gxl_read_status,
+		.ack_interrupt	= meson_gxl_ack_interrupt,
+		.config_intr	= meson_gxl_config_intr,
 		.suspend        = genphy_suspend,
 		.resume         = genphy_resume,
 	},
-- 
2.14.3

WARNING: multiple messages have this Message-ID (diff)
From: jbrunet@baylibre.com (Jerome Brunet)
To: linus-amlogic@lists.infradead.org
Subject: [PATCH net-next v2 7/8] net: phy: meson-gxl: add interrupt support
Date: Thu,  7 Dec 2017 15:27:14 +0100	[thread overview]
Message-ID: <20171207142715.32578-8-jbrunet@baylibre.com> (raw)
In-Reply-To: <20171207142715.32578-1-jbrunet@baylibre.com>

Enable interrupt support in meson-gxl PHY driver

Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
---
 drivers/net/phy/meson-gxl.c | 37 ++++++++++++++++++++++++++++++++++++-
 1 file changed, 36 insertions(+), 1 deletion(-)

diff --git a/drivers/net/phy/meson-gxl.c b/drivers/net/phy/meson-gxl.c
index 5325940fe899..861b021b9758 100644
--- a/drivers/net/phy/meson-gxl.c
+++ b/drivers/net/phy/meson-gxl.c
@@ -33,6 +33,14 @@
 #define  TSTCNTL_WRITE_ADDRESS	GENMASK(4, 0)
 #define TSTREAD1	21
 #define TSTWRITE	23
+#define INTSRC_FLAG	29
+#define  INTSRC_ANEG_PR		BIT(1)
+#define  INTSRC_PARALLEL_FAULT	BIT(2)
+#define  INTSRC_ANEG_LP_ACK	BIT(3)
+#define  INTSRC_LINK_DOWN	BIT(4)
+#define  INTSRC_REMOTE_FAULT	BIT(5)
+#define  INTSRC_ANEG_COMPLETE	BIT(6)
+#define INTSRC_MASK	30
 
 #define BANK_ANALOG_DSP		0
 #define BANK_WOL		1
@@ -193,17 +201,44 @@ int meson_gxl_read_status(struct phy_device *phydev)
 	return genphy_read_status(phydev);
 }
 
+static int meson_gxl_ack_interrupt(struct phy_device *phydev)
+{
+	int ret = phy_read(phydev, INTSRC_FLAG);
+
+	return ret < 0 ? ret : 0;
+}
+
+static int meson_gxl_config_intr(struct phy_device *phydev)
+{
+	u16 val;
+
+	if (phydev->interrupts == PHY_INTERRUPT_ENABLED) {
+		val = INTSRC_ANEG_PR
+			| INTSRC_PARALLEL_FAULT
+			| INTSRC_ANEG_LP_ACK
+			| INTSRC_LINK_DOWN
+			| INTSRC_REMOTE_FAULT
+			| INTSRC_ANEG_COMPLETE;
+	} else {
+		val = 0;
+	}
+
+	return phy_write(phydev, INTSRC_MASK, val);
+}
+
 static struct phy_driver meson_gxl_phy[] = {
 	{
 		.phy_id		= 0x01814400,
 		.phy_id_mask	= 0xfffffff0,
 		.name		= "Meson GXL Internal PHY",
 		.features	= PHY_BASIC_FEATURES,
-		.flags		= PHY_IS_INTERNAL,
+		.flags		= PHY_IS_INTERNAL | PHY_HAS_INTERRUPT,
 		.config_init	= meson_gxl_config_init,
 		.config_aneg	= genphy_config_aneg,
 		.aneg_done      = genphy_aneg_done,
 		.read_status	= meson_gxl_read_status,
+		.ack_interrupt	= meson_gxl_ack_interrupt,
+		.config_intr	= meson_gxl_config_intr,
 		.suspend        = genphy_suspend,
 		.resume         = genphy_resume,
 	},
-- 
2.14.3

  parent reply	other threads:[~2017-12-07 14:28 UTC|newest]

Thread overview: 83+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-07 14:27 [PATCH net-next v2 0/8] phy: net: meson-gxl: clean-up and improvements Jerome Brunet
2017-12-07 14:27 ` Jerome Brunet
2017-12-07 14:27 ` Jerome Brunet
2017-12-07 14:27 ` Jerome Brunet
2017-12-07 14:27 ` [PATCH net-next v2 1/8] net: phy: meson-gxl: check phy_write return value Jerome Brunet
2017-12-07 14:27   ` Jerome Brunet
2017-12-07 14:27   ` Jerome Brunet
2017-12-07 15:34   ` Andrew Lunn
2017-12-07 15:34     ` Andrew Lunn
2017-12-07 15:34     ` Andrew Lunn
2017-12-07 14:27 ` [PATCH net-next v2 2/8] net: phy: meson-gxl: define control registers Jerome Brunet
2017-12-07 14:27   ` Jerome Brunet
2017-12-07 14:27   ` Jerome Brunet
2017-12-07 14:27 ` [PATCH net-next v2 3/8] net: phy: meson-gxl: add read and write helpers for bank registers Jerome Brunet
2017-12-07 14:27   ` Jerome Brunet
2017-12-07 14:27   ` Jerome Brunet
2017-12-07 15:46   ` Andrew Lunn
2017-12-07 15:46     ` Andrew Lunn
2017-12-07 15:46     ` Andrew Lunn
2017-12-07 15:49     ` Neil Armstrong
2017-12-07 15:49       ` Neil Armstrong
2017-12-07 15:49       ` Neil Armstrong
2017-12-07 15:51     ` Jerome Brunet
2017-12-07 15:51       ` Jerome Brunet
2017-12-07 15:51       ` Jerome Brunet
2017-12-07 16:02       ` Andrew Lunn
2017-12-07 16:02         ` Andrew Lunn
2017-12-07 16:02         ` Andrew Lunn
2017-12-08  9:11         ` Russell King - ARM Linux
2017-12-08  9:11           ` Russell King - ARM Linux
2017-12-08  9:11           ` Russell King - ARM Linux
2017-12-07 14:27 ` [PATCH net-next v2 4/8] net: phy: meson-gxl: use genphy_config_init Jerome Brunet
2017-12-07 14:27   ` Jerome Brunet
2017-12-07 14:27   ` Jerome Brunet
2017-12-07 14:27   ` Jerome Brunet
2017-12-07 15:46   ` Andrew Lunn
2017-12-07 15:46     ` Andrew Lunn
2017-12-07 15:46     ` Andrew Lunn
2017-12-07 15:46     ` Andrew Lunn
2017-12-07 14:27 ` [PATCH net-next v2 5/8] net: phy: meson-gxl: detect LPA corruption Jerome Brunet
2017-12-07 14:27   ` Jerome Brunet
2017-12-07 14:27   ` Jerome Brunet
2017-12-07 15:34   ` Andrew Lunn
2017-12-07 15:34     ` Andrew Lunn
2017-12-07 15:34     ` Andrew Lunn
2017-12-07 15:42     ` Jerome Brunet
2017-12-07 15:42       ` Jerome Brunet
2017-12-07 15:42       ` Jerome Brunet
2017-12-07 16:12       ` Andrew Lunn
2017-12-07 16:12         ` Andrew Lunn
2017-12-07 16:12         ` Andrew Lunn
2017-12-07 16:22         ` Jerome Brunet
2017-12-07 16:22           ` Jerome Brunet
2017-12-07 16:22           ` Jerome Brunet
2017-12-07 14:27 ` [PATCH net-next v2 6/8] net: phy: meson-gxl: leave CONFIG_A6 untouched Jerome Brunet
2017-12-07 14:27   ` Jerome Brunet
2017-12-07 14:27   ` Jerome Brunet
2017-12-07 15:49   ` Andrew Lunn
2017-12-07 15:49     ` Andrew Lunn
2017-12-07 15:49     ` Andrew Lunn
2017-12-07 15:49     ` Andrew Lunn
2017-12-07 15:56     ` Jerome Brunet
2017-12-07 15:56       ` Jerome Brunet
2017-12-07 15:56       ` Jerome Brunet
2017-12-07 15:56       ` Jerome Brunet
2017-12-07 14:27 ` Jerome Brunet [this message]
2017-12-07 14:27   ` [PATCH net-next v2 7/8] net: phy: meson-gxl: add interrupt support Jerome Brunet
2017-12-07 14:27   ` Jerome Brunet
2017-12-07 15:54   ` Andrew Lunn
2017-12-07 15:54     ` Andrew Lunn
2017-12-07 15:54     ` Andrew Lunn
2017-12-07 16:04     ` Jerome Brunet
2017-12-07 16:04       ` Jerome Brunet
2017-12-07 16:04       ` Jerome Brunet
2017-12-07 16:07       ` Andrew Lunn
2017-12-07 16:07         ` Andrew Lunn
2017-12-07 16:07         ` Andrew Lunn
2017-12-07 14:27 ` [PATCH net-next v2 8/8] net: phy: meson-gxl: join the authors Jerome Brunet
2017-12-07 14:27   ` Jerome Brunet
2017-12-07 14:27   ` Jerome Brunet
2017-12-07 15:55   ` Andrew Lunn
2017-12-07 15:55     ` Andrew Lunn
2017-12-07 15:55     ` Andrew Lunn

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=20171207142715.32578-8-jbrunet@baylibre.com \
    --to=jbrunet@baylibre.com \
    --cc=andrew@lunn.ch \
    --cc=f.fainelli@gmail.com \
    --cc=khilman@baylibre.com \
    --cc=linux-amlogic@lists.infradead.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.