From: Michael Walle <michael@walle.cc>
To: "David S . Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Rob Herring <robh+dt@kernel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
Xu Liang <lxu@maxlinear.com>, Andrew Lunn <andrew@lunn.ch>,
Heiner Kallweit <hkallweit1@gmail.com>,
Russell King <linux@armlinux.org.uk>
Cc: netdev@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, Michael Walle <michael@walle.cc>
Subject: [PATCH net-next v3 3/4] net: phy: allow a phy to opt-out of interrupt handling
Date: Mon, 9 Jan 2023 13:30:12 +0100 [thread overview]
Message-ID: <20230109123013.3094144-4-michael@walle.cc> (raw)
In-Reply-To: <20230109123013.3094144-1-michael@walle.cc>
Until now, it is not possible for a PHY driver to disable interrupts
during runtime. If a driver offers the .config_intr() as well as the
.handle_interrupt() ops, it is eligible for interrupt handling.
Introduce a new flag for the dev_flags property of struct phy_device, which
can be set by PHY driver to skip interrupt setup and fall back to polling
mode.
At the moment, this is used for the MaxLinear PHY which has broken
interrupt handling and there is a need to disable interrupts in some
cases.
Signed-off-by: Michael Walle <michael@walle.cc>
---
drivers/net/phy/phy_device.c | 7 +++++++
include/linux/phy.h | 3 +++
2 files changed, 10 insertions(+)
diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
index 716870a4499c..e4562859ac00 100644
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
@@ -1487,6 +1487,13 @@ int phy_attach_direct(struct net_device *dev, struct phy_device *phydev,
phydev->interrupts = PHY_INTERRUPT_DISABLED;
+ /* PHYs can request to use poll mode even though they have an
+ * associated interrupt line. This could be the case if they
+ * detect a broken interrupt handling.
+ */
+ if (phydev->dev_flags & PHY_F_NO_IRQ)
+ phydev->irq = PHY_POLL;
+
/* Port is set to PORT_TP by default and the actual PHY driver will set
* it to different value depending on the PHY configuration. If we have
* the generic PHY driver we can't figure it out, thus set the old
diff --git a/include/linux/phy.h b/include/linux/phy.h
index 6378c997ded5..742754d72fc0 100644
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -739,6 +739,9 @@ struct phy_device {
#endif
};
+/* Generic phy_device::dev_flags */
+#define PHY_F_NO_IRQ 0x80000000
+
static inline struct phy_device *to_phy_device(const struct device *dev)
{
return container_of(to_mdio_device(dev), struct phy_device, mdio);
--
2.30.2
next prev parent reply other threads:[~2023-01-09 12:30 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-09 12:30 [PATCH net-next v3 0/4] net: phy: mxl-gpy: broken interrupt fixes Michael Walle
2023-01-09 12:30 ` [PATCH net-next v3 1/4] dt-bindings: vendor-prefixes: add MaxLinear Michael Walle
2023-01-09 12:30 ` [PATCH net-next v3 2/4] dt-bindings: net: phy: add MaxLinear GPY2xx bindings Michael Walle
2023-01-09 13:39 ` Andrew Lunn
2023-01-11 20:26 ` Rob Herring
2023-01-11 21:24 ` Andrew Lunn
2023-01-11 22:30 ` Michael Walle
2023-01-11 22:48 ` Andrew Lunn
2023-01-13 16:38 ` Rob Herring
2023-01-13 21:48 ` Michael Walle
2023-01-09 12:30 ` Michael Walle [this message]
2023-01-09 13:40 ` [PATCH net-next v3 3/4] net: phy: allow a phy to opt-out of interrupt handling Andrew Lunn
2023-01-09 12:30 ` [PATCH net-next v3 4/4] net: phy: mxl-gpy: disable interrupts on GPY215 by default Michael Walle
2023-01-09 13:41 ` Andrew Lunn
2023-01-10 13:10 ` [PATCH net-next v3 0/4] net: phy: mxl-gpy: broken interrupt fixes patchwork-bot+netdevbpf
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=20230109123013.3094144-4-michael@walle.cc \
--to=michael@walle.cc \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=devicetree@vger.kernel.org \
--cc=edumazet@google.com \
--cc=hkallweit1@gmail.com \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=lxu@maxlinear.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=robh+dt@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 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).