Loading drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c +28 −0 Original line number Diff line number Diff line Loading @@ -899,6 +899,8 @@ static void ethqos_pps_irq_config(struct qcom_ethqos *ethqos) static void qcom_ethqos_phy_suspend_clks(struct qcom_ethqos *ethqos) { struct stmmac_priv *priv = qcom_ethqos_get_priv(ethqos); ETHQOSINFO("Enter\n"); if (phy_intr_en) Loading @@ -908,6 +910,18 @@ static void qcom_ethqos_phy_suspend_clks(struct qcom_ethqos *ethqos) ethqos_update_rgmii_clk_and_bus_cfg(ethqos, 0); if (priv->plat->stmmac_clk) clk_disable_unprepare(priv->plat->stmmac_clk); if (priv->plat->pclk) clk_disable_unprepare(priv->plat->pclk); if (priv->plat->clk_ptp_ref) clk_disable_unprepare(priv->plat->clk_ptp_ref); if (ethqos->rgmii_clk) clk_disable_unprepare(ethqos->rgmii_clk); ETHQOSINFO("Exit\n"); } Loading @@ -933,8 +947,22 @@ inline bool qcom_ethqos_is_phy_link_up(struct qcom_ethqos *ethqos) static void qcom_ethqos_phy_resume_clks(struct qcom_ethqos *ethqos) { struct stmmac_priv *priv = qcom_ethqos_get_priv(ethqos); ETHQOSINFO("Enter\n"); if (priv->plat->stmmac_clk) clk_prepare_enable(priv->plat->stmmac_clk); if (priv->plat->pclk) clk_prepare_enable(priv->plat->pclk); if (priv->plat->clk_ptp_ref) clk_prepare_enable(priv->plat->clk_ptp_ref); if (ethqos->rgmii_clk) clk_prepare_enable(ethqos->rgmii_clk); if (qcom_ethqos_is_phy_link_up(ethqos)) ethqos_update_rgmii_clk_and_bus_cfg(ethqos, ethqos->speed); else Loading drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +14 −2 Original line number Diff line number Diff line Loading @@ -4806,6 +4806,11 @@ int stmmac_suspend(struct device *dev) phylink_mac_change(priv->phylink, false); #ifdef CONFIG_DWMAC_QCOM_ETHQOS rtnl_lock(); phylink_stop(priv->phylink); rtnl_unlock(); #endif mutex_lock(&priv->lock); netif_device_detach(ndev); Loading @@ -4825,9 +4830,11 @@ int stmmac_suspend(struct device *dev) priv->irq_wake = 1; } else { mutex_unlock(&priv->lock); #ifndef CONFIG_DWMAC_QCOM_ETHQOS rtnl_lock(); phylink_stop(priv->phylink); rtnl_unlock(); #endif mutex_lock(&priv->lock); stmmac_mac_set(priv, priv->ioaddr, false); Loading Loading @@ -4925,13 +4932,18 @@ int stmmac_resume(struct device *dev) stmmac_start_all_queues(priv); mutex_unlock(&priv->lock); #ifndef CONFIG_DWMAC_QCOM_ETHQOS if (!device_may_wakeup(priv->device)) { rtnl_lock(); phylink_start(priv->phylink); rtnl_unlock(); } #endif #ifdef CONFIG_DWMAC_QCOM_ETHQOS rtnl_lock(); phylink_start(priv->phylink); rtnl_unlock(); #endif phylink_mac_change(priv->phylink, true); return 0; Loading Loading
drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c +28 −0 Original line number Diff line number Diff line Loading @@ -899,6 +899,8 @@ static void ethqos_pps_irq_config(struct qcom_ethqos *ethqos) static void qcom_ethqos_phy_suspend_clks(struct qcom_ethqos *ethqos) { struct stmmac_priv *priv = qcom_ethqos_get_priv(ethqos); ETHQOSINFO("Enter\n"); if (phy_intr_en) Loading @@ -908,6 +910,18 @@ static void qcom_ethqos_phy_suspend_clks(struct qcom_ethqos *ethqos) ethqos_update_rgmii_clk_and_bus_cfg(ethqos, 0); if (priv->plat->stmmac_clk) clk_disable_unprepare(priv->plat->stmmac_clk); if (priv->plat->pclk) clk_disable_unprepare(priv->plat->pclk); if (priv->plat->clk_ptp_ref) clk_disable_unprepare(priv->plat->clk_ptp_ref); if (ethqos->rgmii_clk) clk_disable_unprepare(ethqos->rgmii_clk); ETHQOSINFO("Exit\n"); } Loading @@ -933,8 +947,22 @@ inline bool qcom_ethqos_is_phy_link_up(struct qcom_ethqos *ethqos) static void qcom_ethqos_phy_resume_clks(struct qcom_ethqos *ethqos) { struct stmmac_priv *priv = qcom_ethqos_get_priv(ethqos); ETHQOSINFO("Enter\n"); if (priv->plat->stmmac_clk) clk_prepare_enable(priv->plat->stmmac_clk); if (priv->plat->pclk) clk_prepare_enable(priv->plat->pclk); if (priv->plat->clk_ptp_ref) clk_prepare_enable(priv->plat->clk_ptp_ref); if (ethqos->rgmii_clk) clk_prepare_enable(ethqos->rgmii_clk); if (qcom_ethqos_is_phy_link_up(ethqos)) ethqos_update_rgmii_clk_and_bus_cfg(ethqos, ethqos->speed); else Loading
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +14 −2 Original line number Diff line number Diff line Loading @@ -4806,6 +4806,11 @@ int stmmac_suspend(struct device *dev) phylink_mac_change(priv->phylink, false); #ifdef CONFIG_DWMAC_QCOM_ETHQOS rtnl_lock(); phylink_stop(priv->phylink); rtnl_unlock(); #endif mutex_lock(&priv->lock); netif_device_detach(ndev); Loading @@ -4825,9 +4830,11 @@ int stmmac_suspend(struct device *dev) priv->irq_wake = 1; } else { mutex_unlock(&priv->lock); #ifndef CONFIG_DWMAC_QCOM_ETHQOS rtnl_lock(); phylink_stop(priv->phylink); rtnl_unlock(); #endif mutex_lock(&priv->lock); stmmac_mac_set(priv, priv->ioaddr, false); Loading Loading @@ -4925,13 +4932,18 @@ int stmmac_resume(struct device *dev) stmmac_start_all_queues(priv); mutex_unlock(&priv->lock); #ifndef CONFIG_DWMAC_QCOM_ETHQOS if (!device_may_wakeup(priv->device)) { rtnl_lock(); phylink_start(priv->phylink); rtnl_unlock(); } #endif #ifdef CONFIG_DWMAC_QCOM_ETHQOS rtnl_lock(); phylink_start(priv->phylink); rtnl_unlock(); #endif phylink_mac_change(priv->phylink, true); return 0; Loading