[PATCH] net: stmmac: dwmac-rk: Fix ethernet on rk3399 based devices
Heiko Stübner
heiko at sntech.de
Wed Sep 29 14:02:35 PDT 2021
Am Mittwoch, 29. September 2021, 15:50:49 CEST schrieb Punit Agrawal:
> Commit 2d26f6e39afb ("net: stmmac: dwmac-rk: fix unbalanced pm_runtime_enable warnings")
> while getting rid of a runtime PM warning ended up breaking ethernet
> on rk3399 based devices. By dropping an extra reference to the device,
> the commit ends up enabling suspend / resume of the ethernet device -
> which appears to be broken.
>
> While the issue with runtime pm is being investigated, partially
> revert commit 2d26f6e39afb to restore the network on rk3399.
>
> Fixes: 2d26f6e39afb ("net: stmmac: dwmac-rk: fix unbalanced pm_runtime_enable warnings")
> Suggested-by: Heiko Stuebner <heiko at sntech.de>
> Signed-off-by: Punit Agrawal <punitagrawal at gmail.com>
> Cc: Michael Riesch <michael.riesch at wolfvision.net>
On a rk3399-puma which has the described issue,
Tested-by: Heiko Stuebner <heiko at sntech.de>
> ---
> Hi,
>
> There's been a few reports of broken ethernet on rk3399 based
> boards. The issue got introduced due to a late commit in the 5.14
> cycle.
>
> It would be great if this commit can be taken as a fix for the next rc
> as well as applied to the 5.14 stable releases.
>
> Thanks,
> Punit
>
> drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
> index ed817011a94a..6924a6aacbd5 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
> +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
> @@ -21,6 +21,7 @@
> #include <linux/delay.h>
> #include <linux/mfd/syscon.h>
> #include <linux/regmap.h>
> +#include <linux/pm_runtime.h>
>
> #include "stmmac_platform.h"
>
> @@ -1528,6 +1529,8 @@ static int rk_gmac_powerup(struct rk_priv_data *bsp_priv)
> return ret;
> }
>
> + pm_runtime_get_sync(dev);
> +
> if (bsp_priv->integrated_phy)
> rk_gmac_integrated_phy_powerup(bsp_priv);
>
> @@ -1539,6 +1542,8 @@ static void rk_gmac_powerdown(struct rk_priv_data *gmac)
> if (gmac->integrated_phy)
> rk_gmac_integrated_phy_powerdown(gmac);
>
> + pm_runtime_put_sync(&gmac->pdev->dev);
> +
> phy_power_on(gmac, false);
> gmac_clk_enable(gmac, false);
> }
>
More information about the Linux-rockchip
mailing list