aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic/backport-4.19/707-v5.1-net-phy-add-genphy_c45_check_and_restart_aneg.patch
diff options
context:
space:
mode:
authorRussell King <linux@armlinux.org.uk>2019-11-27 11:45:25 +0000
committerJonas Gorski <jonas.gorski@gmail.com>2020-01-21 22:32:48 +0100
commit1c16b574c4f77a30a0268acee30be96ae0dc5948 (patch)
tree716fd94ee81e332ba19e1af7bf98371120ea1856 /target/linux/generic/backport-4.19/707-v5.1-net-phy-add-genphy_c45_check_and_restart_aneg.patch
parenta07638eb24b8310a35ea6c3b09f6db59bb31cd68 (diff)
downloadupstream-1c16b574c4f77a30a0268acee30be96ae0dc5948.tar.gz
upstream-1c16b574c4f77a30a0268acee30be96ae0dc5948.tar.bz2
upstream-1c16b574c4f77a30a0268acee30be96ae0dc5948.zip
kernel: add backported phy/phylink/sfp patches
Backport the phy/phylink/sfp patches currently queued in netdev or in mainline necessary to support GPON popular modules, specifically to support Huawei and Nokia GPON modules. Signed-off-by: Russell King <linux@armlinux.org.uk> [jonas.gorski: include kernel version in file names, refresh patches] Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
Diffstat (limited to 'target/linux/generic/backport-4.19/707-v5.1-net-phy-add-genphy_c45_check_and_restart_aneg.patch')
-rw-r--r--target/linux/generic/backport-4.19/707-v5.1-net-phy-add-genphy_c45_check_and_restart_aneg.patch64
1 files changed, 64 insertions, 0 deletions
diff --git a/target/linux/generic/backport-4.19/707-v5.1-net-phy-add-genphy_c45_check_and_restart_aneg.patch b/target/linux/generic/backport-4.19/707-v5.1-net-phy-add-genphy_c45_check_and_restart_aneg.patch
new file mode 100644
index 0000000000..6d47fa9634
--- /dev/null
+++ b/target/linux/generic/backport-4.19/707-v5.1-net-phy-add-genphy_c45_check_and_restart_aneg.patch
@@ -0,0 +1,64 @@
+From 2c3db705737cf52d7d24c993f0889b25b956c718 Mon Sep 17 00:00:00 2001
+From: Heiner Kallweit <hkallweit1@gmail.com>
+Date: Mon, 18 Feb 2019 21:27:18 +0100
+Subject: [PATCH 605/660] net: phy: add genphy_c45_check_and_restart_aneg
+
+This function will be used by config_aneg callback implementations of
+PHY drivers and allows to reduce boilerplate code.
+
+Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+---
+ drivers/net/phy/phy-c45.c | 30 ++++++++++++++++++++++++++++++
+ include/linux/phy.h | 1 +
+ 2 files changed, 31 insertions(+)
+
+--- a/drivers/net/phy/phy-c45.c
++++ b/drivers/net/phy/phy-c45.c
+@@ -110,6 +110,36 @@ int genphy_c45_restart_aneg(struct phy_d
+ EXPORT_SYMBOL_GPL(genphy_c45_restart_aneg);
+
+ /**
++ * genphy_c45_check_and_restart_aneg - Enable and restart auto-negotiation
++ * @phydev: target phy_device struct
++ * @restart: whether aneg restart is requested
++ *
++ * This assumes that the auto-negotiation MMD is present.
++ *
++ * Check, and restart auto-negotiation if needed.
++ */
++int genphy_c45_check_and_restart_aneg(struct phy_device *phydev, bool restart)
++{
++ int ret = 0;
++
++ if (!restart) {
++ /* Configure and restart aneg if it wasn't set before */
++ ret = phy_read_mmd(phydev, MDIO_MMD_AN, MDIO_CTRL1);
++ if (ret < 0)
++ return ret;
++
++ if (!(ret & MDIO_AN_CTRL1_ENABLE))
++ restart = true;
++ }
++
++ if (restart)
++ ret = genphy_c45_restart_aneg(phydev);
++
++ return ret;
++}
++EXPORT_SYMBOL_GPL(genphy_c45_check_and_restart_aneg);
++
++/**
+ * genphy_c45_aneg_done - return auto-negotiation complete status
+ * @phydev: target phy_device struct
+ *
+--- a/include/linux/phy.h
++++ b/include/linux/phy.h
+@@ -1098,6 +1098,7 @@ int genphy_write_mmd_unsupported(struct
+
+ /* Clause 45 PHY */
+ int genphy_c45_restart_aneg(struct phy_device *phydev);
++int genphy_c45_check_and_restart_aneg(struct phy_device *phydev, bool restart);
+ int genphy_c45_aneg_done(struct phy_device *phydev);
+ int genphy_c45_read_link(struct phy_device *phydev, u32 mmd_mask);
+ int genphy_c45_read_lpa(struct phy_device *phydev);