Commit aa44323e authored by David S. Miller's avatar David S. Miller

Merge branch 'stmmac-ptp-fix'

Mohammad Athari Bin Ismail says:

====================
Fix PTP issue in stmmac

This patch series to fix PTP issue in stmmac related to:
1/ PTP clock source configuration during initialization.
2/ PTP initialization during resume from suspend.
====================
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 36268983 0735e639
...@@ -890,6 +890,9 @@ static int stmmac_init_ptp(struct stmmac_priv *priv) ...@@ -890,6 +890,9 @@ static int stmmac_init_ptp(struct stmmac_priv *priv)
bool xmac = priv->plat->has_gmac4 || priv->plat->has_xgmac; bool xmac = priv->plat->has_gmac4 || priv->plat->has_xgmac;
int ret; int ret;
if (priv->plat->ptp_clk_freq_config)
priv->plat->ptp_clk_freq_config(priv);
ret = stmmac_init_tstamp_counter(priv, STMMAC_HWTS_ACTIVE); ret = stmmac_init_tstamp_counter(priv, STMMAC_HWTS_ACTIVE);
if (ret) if (ret)
return ret; return ret;
...@@ -912,8 +915,6 @@ static int stmmac_init_ptp(struct stmmac_priv *priv) ...@@ -912,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;
} }
...@@ -3239,7 +3240,7 @@ static int stmmac_fpe_start_wq(struct stmmac_priv *priv) ...@@ -3239,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,
...@@ -3249,7 +3250,7 @@ static int stmmac_fpe_start_wq(struct stmmac_priv *priv) ...@@ -3249,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;
...@@ -3306,13 +3307,13 @@ static int stmmac_hw_setup(struct net_device *dev, bool init_ptp) ...@@ -3306,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;
......
...@@ -297,9 +297,6 @@ void stmmac_ptp_register(struct stmmac_priv *priv) ...@@ -297,9 +297,6 @@ void stmmac_ptp_register(struct stmmac_priv *priv)
{ {
int i; int i;
if (priv->plat->ptp_clk_freq_config)
priv->plat->ptp_clk_freq_config(priv);
for (i = 0; i < priv->dma_cap.pps_out_num; i++) { for (i = 0; i < priv->dma_cap.pps_out_num; i++) {
if (i >= STMMAC_PPS_MAX) if (i >= STMMAC_PPS_MAX)
break; break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment