]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - releases/4.19.33/net-phy-meson-gxl-fix-interrupt-support.patch
4.9-stable patches
[thirdparty/kernel/stable-queue.git] / releases / 4.19.33 / net-phy-meson-gxl-fix-interrupt-support.patch
CommitLineData
38568109
GKH
1From foo@baz Thu Mar 28 21:54:17 CET 2019
2From: Jerome Brunet <jbrunet@baylibre.com>
3Date: Thu, 14 Mar 2019 14:49:45 +0100
4Subject: net: phy: meson-gxl: fix interrupt support
5
6From: Jerome Brunet <jbrunet@baylibre.com>
7
8[ Upstream commit daa5c4d0167a308306525fd5ab9a5e18e21f4f74 ]
9
10If an interrupt is already pending when the interrupt is enabled on the
11GXL phy, no IRQ will ever be triggered.
12
13The fix is simply to make sure pending IRQs are cleared before setting
14up the irq mask.
15
16Fixes: cf127ff20af1 ("net: phy: meson-gxl: add interrupt support")
17Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
18Signed-off-by: David S. Miller <davem@davemloft.net>
19Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
20---
21 drivers/net/phy/meson-gxl.c | 6 ++++++
22 1 file changed, 6 insertions(+)
23
24--- a/drivers/net/phy/meson-gxl.c
25+++ b/drivers/net/phy/meson-gxl.c
26@@ -211,6 +211,7 @@ static int meson_gxl_ack_interrupt(struc
27 static int meson_gxl_config_intr(struct phy_device *phydev)
28 {
29 u16 val;
30+ int ret;
31
32 if (phydev->interrupts == PHY_INTERRUPT_ENABLED) {
33 val = INTSRC_ANEG_PR
34@@ -223,6 +224,11 @@ static int meson_gxl_config_intr(struct
35 val = 0;
36 }
37
38+ /* Ack any pending IRQ */
39+ ret = meson_gxl_ack_interrupt(phydev);
40+ if (ret)
41+ return ret;
42+
43 return phy_write(phydev, INTSRC_MASK, val);
44 }
45