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

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
Loading
Loading
Loading
Loading
+12 −11
Original line number Diff line number Diff line
@@ -890,6 +890,9 @@ static int stmmac_init_ptp(struct stmmac_priv *priv)
	bool xmac = priv->plat->has_gmac4 || priv->plat->has_xgmac;
	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);
	if (ret)
		return ret;
@@ -912,8 +915,6 @@ static int stmmac_init_ptp(struct stmmac_priv *priv)
	priv->hwts_tx_en = 0;
	priv->hwts_rx_en = 0;

	stmmac_ptp_register(priv);

	return 0;
}

@@ -3239,7 +3240,7 @@ static int stmmac_fpe_start_wq(struct stmmac_priv *priv)
/**
 * stmmac_hw_setup - setup mac in a usable state.
 *  @dev : pointer to the device structure.
 *  @init_ptp: initialize PTP if set
 *  @ptp_register: register PTP if set
 *  Description:
 *  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,
@@ -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
 *  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);
	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)

	stmmac_mmc_setup(priv);

	if (init_ptp) {
	ret = stmmac_init_ptp(priv);
	if (ret == -EOPNOTSUPP)
		netdev_warn(priv->dev, "PTP not supported by HW\n");
	else if (ret)
		netdev_warn(priv->dev, "PTP init failed\n");
	}
	else if (ptp_register)
		stmmac_ptp_register(priv);

	priv->eee_tw_timer = STMMAC_DEFAULT_TWT_LS;

+0 −3
Original line number Diff line number Diff line
@@ -297,9 +297,6 @@ void stmmac_ptp_register(struct stmmac_priv *priv)
{
	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++) {
		if (i >= STMMAC_PPS_MAX)
			break;