提交 0735e639 编写于 作者: M Mohammad Athari Bin Ismail 提交者: David S. Miller

net: stmmac: skip only stmmac_ptp_register when resume from suspend

When resume from suspend, besides skipping PTP registration, it also
skipping PTP HW initialization. This could cause PTP clock not able to
operate properly when resume from suspend.

To fix this, only stmmac_ptp_register() is skipped when resume from
suspend.

Fixes: fe131929 ("stmmac: Don't init ptp again when resume from suspend/hibernation")
Cc: <stable@vger.kernel.org> # 5.15.x
Signed-off-by: NMohammad Athari Bin Ismail <mohammad.athari.ismail@intel.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 94c82de4
...@@ -915,8 +915,6 @@ static int stmmac_init_ptp(struct stmmac_priv *priv) ...@@ -915,8 +915,6 @@ static int stmmac_init_ptp(struct stmmac_priv *priv)
priv->hwts_tx_en = 0; priv->hwts_tx_en = 0;
priv->hwts_rx_en = 0; priv->hwts_rx_en = 0;
stmmac_ptp_register(priv);
return 0; return 0;
} }
...@@ -3242,7 +3240,7 @@ static int stmmac_fpe_start_wq(struct stmmac_priv *priv) ...@@ -3242,7 +3240,7 @@ static int stmmac_fpe_start_wq(struct stmmac_priv *priv)
/** /**
* stmmac_hw_setup - setup mac in a usable state. * stmmac_hw_setup - setup mac in a usable state.
* @dev : pointer to the device structure. * @dev : pointer to the device structure.
* @init_ptp: initialize PTP if set * @ptp_register: register PTP if set
* Description: * Description:
* this is the main function to setup the HW in a usable state because the * this is the main function to setup the HW in a usable state because the
* dma engine is reset, the core registers are configured (e.g. AXI, * dma engine is reset, the core registers are configured (e.g. AXI,
...@@ -3252,7 +3250,7 @@ static int stmmac_fpe_start_wq(struct stmmac_priv *priv) ...@@ -3252,7 +3250,7 @@ static int stmmac_fpe_start_wq(struct stmmac_priv *priv)
* 0 on success and an appropriate (-)ve integer as defined in errno.h * 0 on success and an appropriate (-)ve integer as defined in errno.h
* file on failure. * file on failure.
*/ */
static int stmmac_hw_setup(struct net_device *dev, bool init_ptp) static int stmmac_hw_setup(struct net_device *dev, bool ptp_register)
{ {
struct stmmac_priv *priv = netdev_priv(dev); struct stmmac_priv *priv = netdev_priv(dev);
u32 rx_cnt = priv->plat->rx_queues_to_use; u32 rx_cnt = priv->plat->rx_queues_to_use;
...@@ -3309,13 +3307,13 @@ static int stmmac_hw_setup(struct net_device *dev, bool init_ptp) ...@@ -3309,13 +3307,13 @@ static int stmmac_hw_setup(struct net_device *dev, bool init_ptp)
stmmac_mmc_setup(priv); stmmac_mmc_setup(priv);
if (init_ptp) { ret = stmmac_init_ptp(priv);
ret = stmmac_init_ptp(priv); if (ret == -EOPNOTSUPP)
if (ret == -EOPNOTSUPP) netdev_warn(priv->dev, "PTP not supported by HW\n");
netdev_warn(priv->dev, "PTP not supported by HW\n"); else if (ret)
else if (ret) netdev_warn(priv->dev, "PTP init failed\n");
netdev_warn(priv->dev, "PTP init failed\n"); else if (ptp_register)
} stmmac_ptp_register(priv);
priv->eee_tw_timer = STMMAC_DEFAULT_TWT_LS; priv->eee_tw_timer = STMMAC_DEFAULT_TWT_LS;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册