net: phy: fixed_phy: Fix fixed_phy not checking GPIO
authorMoritz Fischer <mdf@kernel.org>
Thu, 7 Feb 2019 05:45:29 +0000 (21:45 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 29 Jan 2020 09:24:14 +0000 (10:24 +0100)
[ Upstream commit 8f289805616e81f7c1690931aa8a586c76f4fa88 ]

Fix fixed_phy not checking GPIO if no link_update callback
is registered.

In the original version all users registered a link_update
callback so the issue was masked.

Fixes: a5597008dbc2 ("phy: fixed_phy: Add gpio to determine link up/down.")
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Moritz Fischer <mdf@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/phy/fixed_phy.c

index eb51672106811e35ee0a7b3f0578560e16bc3670..3ab2eb677a599d9bb6aba0750f808ea73d639bca 100644 (file)
@@ -67,11 +67,11 @@ static int fixed_mdio_read(struct mii_bus *bus, int phy_addr, int reg_num)
                        do {
                                s = read_seqcount_begin(&fp->seqcount);
                                /* Issue callback if user registered it. */
-                               if (fp->link_update) {
+                               if (fp->link_update)
                                        fp->link_update(fp->phydev->attached_dev,
                                                        &fp->status);
-                                       fixed_phy_update(fp);
-                               }
+                               /* Check the GPIO for change in status */
+                               fixed_phy_update(fp);
                                state = fp->status;
                        } while (read_seqcount_retry(&fp->seqcount, s));