diff options
Diffstat (limited to 'drivers/net/ethernet/stmicro')
| -rw-r--r-- | drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 21 | ||||
| -rw-r--r-- | drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c | 10 | 
2 files changed, 20 insertions, 11 deletions
| diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index 4c8c60af7985..6c85b61aaa0b 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -650,20 +650,27 @@ static int stmmac_init_ptp(struct stmmac_priv *priv)  	if (IS_ERR(priv->clk_ptp_ref)) {  		priv->clk_ptp_rate = clk_get_rate(priv->stmmac_clk);  		priv->clk_ptp_ref = NULL; +		netdev_dbg(priv->dev, "PTP uses main clock\n");  	} else {  		clk_prepare_enable(priv->clk_ptp_ref);  		priv->clk_ptp_rate = clk_get_rate(priv->clk_ptp_ref); +		netdev_dbg(priv->dev, "PTP rate %d\n", priv->clk_ptp_rate);  	}  	priv->adv_ts = 0; -	if (priv->dma_cap.atime_stamp && priv->extend_desc) +	/* Check if adv_ts can be enabled for dwmac 4.x core */ +	if (priv->plat->has_gmac4 && priv->dma_cap.atime_stamp) +		priv->adv_ts = 1; +	/* Dwmac 3.x core with extend_desc can support adv_ts */ +	else if (priv->extend_desc && priv->dma_cap.atime_stamp)  		priv->adv_ts = 1; -	if (netif_msg_hw(priv) && priv->dma_cap.time_stamp) -		pr_debug("IEEE 1588-2002 Time Stamp supported\n"); +	if (priv->dma_cap.time_stamp) +		netdev_info(priv->dev, "IEEE 1588-2002 Timestamp supported\n"); -	if (netif_msg_hw(priv) && priv->adv_ts) -		pr_debug("IEEE 1588-2008 Advanced Time Stamp supported\n"); +	if (priv->adv_ts) +		netdev_info(priv->dev, +			    "IEEE 1588-2008 Advanced Timestamp supported\n");  	priv->hw->ptp = &stmmac_ptp;  	priv->hwts_tx_en = 0; @@ -1702,8 +1709,8 @@ static int stmmac_hw_setup(struct net_device *dev, bool init_ptp)  	if (init_ptp) {  		ret = stmmac_init_ptp(priv); -		if (ret && ret != -EOPNOTSUPP) -			pr_warn("%s: failed PTP initialisation\n", __func__); +		if (ret) +			netdev_warn(priv->dev, "PTP support cannot init.\n");  	}  #ifdef CONFIG_DEBUG_FS diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c index 6e3b82972ce8..289d52725a6c 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c @@ -186,10 +186,12 @@ int stmmac_ptp_register(struct stmmac_priv *priv)  					     priv->device);  	if (IS_ERR(priv->ptp_clock)) {  		priv->ptp_clock = NULL; -		pr_err("ptp_clock_register() failed on %s\n", priv->dev->name); -	} else if (priv->ptp_clock) -		pr_debug("Added PTP HW clock successfully on %s\n", -			 priv->dev->name); +		return PTR_ERR(priv->ptp_clock); +	} + +	spin_lock_init(&priv->ptp_lock); + +	netdev_dbg(priv->dev, "Added PTP HW clock successfully\n");  	return 0;  } |