diff options
| -rw-r--r-- | drivers/net/phy/micrel.c | 10 | 
1 files changed, 8 insertions, 2 deletions
| diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c index 0f8a8ad7ea0b..ddb50a0e2bc8 100644 --- a/drivers/net/phy/micrel.c +++ b/drivers/net/phy/micrel.c @@ -2431,6 +2431,7 @@ static int lan8814_hwtstamp(struct mii_timestamper *mii_ts,  	struct lan8814_ptp_rx_ts *rx_ts, *tmp;  	int txcfg = 0, rxcfg = 0;  	int pkt_ts_enable; +	int tx_mod;  	ptp_priv->hwts_tx_type = config->tx_type;  	ptp_priv->rx_filter = config->rx_filter; @@ -2477,9 +2478,14 @@ static int lan8814_hwtstamp(struct mii_timestamper *mii_ts,  	lanphy_write_page_reg(ptp_priv->phydev, 5, PTP_RX_TIMESTAMP_EN, pkt_ts_enable);  	lanphy_write_page_reg(ptp_priv->phydev, 5, PTP_TX_TIMESTAMP_EN, pkt_ts_enable); -	if (ptp_priv->hwts_tx_type == HWTSTAMP_TX_ONESTEP_SYNC) +	tx_mod = lanphy_read_page_reg(ptp_priv->phydev, 5, PTP_TX_MOD); +	if (ptp_priv->hwts_tx_type == HWTSTAMP_TX_ONESTEP_SYNC) {  		lanphy_write_page_reg(ptp_priv->phydev, 5, PTP_TX_MOD, -				      PTP_TX_MOD_TX_PTP_SYNC_TS_INSERT_); +				      tx_mod | PTP_TX_MOD_TX_PTP_SYNC_TS_INSERT_); +	} else if (ptp_priv->hwts_tx_type == HWTSTAMP_TX_ON) { +		lanphy_write_page_reg(ptp_priv->phydev, 5, PTP_TX_MOD, +				      tx_mod & ~PTP_TX_MOD_TX_PTP_SYNC_TS_INSERT_); +	}  	if (config->rx_filter != HWTSTAMP_FILTER_NONE)  		lan8814_config_ts_intr(ptp_priv->phydev, true); |