Patch "net: phy: micrel: Restore led_mode and clk_sel on resume" has been added to the 4.9-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
net: phy: micrel: Restore led_mode and clk_sel on resume
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
net-phy-micrel-restore-led_mode-and-clk_sel-on-resume.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Mon Apr 9 17:09:24 CEST 2018
From: Leonard Crestez <[email protected]>
Date: Wed, 31 May 2017 13:29:30 +0300
Subject: net: phy: micrel: Restore led_mode and clk_sel on resume
From: Leonard Crestez <[email protected]>
[ Upstream commit 79e498a9c7da0737829ff864aae44df434105676 ]
These bits seem to be lost after a suspend/resume cycle so just set them again. Do this by splitting the handling of these bits into a function that is also called on resume.
This patch fixes ethernet suspend/resume on imx6ul-14x14-evk boards.
--- drivers/net/phy/micrel.c | 42 ++++++++++++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 14 deletions(-)
drivers/net/phy/micrel.c +28 -14
@@ -268,23 +268,12 @@ out:return ret; } -static int kszphy_config_init (struct phy_device *phydev) +/* Some config bits need to be set again on resume, handle them here. */ +static int kszphy_config_reset (struct phy_device *phydev) {struct kszphy_priv *priv = phydev->priv; -const struct kszphy_type *type;int ret; -if (!priv) -return 0 ; - - type = priv->type; - -if (type->has_broadcast_disable) -kszphy_broadcast_disable (phydev); - -if (type->has_nand_tree_disable) -kszphy_nand_tree_disable (phydev); -if (priv->rmii_ref_clk_sel) { ret =kszphy_rmii_clk_sel (phydev, priv->rmii_ref_clk_sel_val);if (ret) {
@@ -295,7 +284,7 @@ static int kszphy_config_init(struct phy }if (priv->led_mode >=0 ) -kszphy_setup_led (phydev, type->led_mode_reg, priv->led_mode); +kszphy_setup_led (phydev, priv->type->led_mode_reg, priv->led_mode);if (phy_interrupt_is_valid (phydev)) {int ctl =phy_read (phydev,MII_BMCR );
@@ -311,6 +300,25 @@ static int kszphy_config_init(struct phyreturn 0 ; } +static int kszphy_config_init (struct phy_device *phydev) +{ +struct kszphy_priv *priv = phydev->priv; +const struct kszphy_type *type; + +if (!priv) +return 0 ; + + type = priv->type; + +if (type->has_broadcast_disable) +kszphy_broadcast_disable (phydev); + +if (type->has_nand_tree_disable) +kszphy_nand_tree_disable (phydev); + +return kszphy_config_reset (phydev); +} +static int ksz8041_config_init (struct phy_device *phydev) {struct device_node *of_node = phydev->mdio.dev.of_node;
@@ -715,8 +723,14 @@ static int kszphy_suspend(struct phy_devstatic int kszphy_resume (struct phy_device *phydev) { +int ret; +genphy_resume (phydev); + ret =kszphy_config_reset (phydev); +if (ret) +return ret; +/* Enable PHY Interrupts */ if (phy_interrupt_is_valid (phydev)) { phydev->interrupts =PHY_INTERRUPT_ENABLED ;
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/arm-imx-add-mxc_cpu_imx6ull-and-cpu_is_imx6ull.patch queue-4.9/net-phy-micrel-restore-led_mode-and-clk_sel-on-resume.patch