浏览代码

net:phy:dp83640: Initialize PTP clocks at device init.

The trigger and events functionality can be useful even if packet
timestamping is not used, but the required PTP clock is only enabled
when packet timestamping is started. This patch moves the clock enable
to when the interface is configured.

Signed-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>
Acked-by: Richard Cochran <richardcochran@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Stefan Sørensen 12 年之前
父节点
当前提交
62ad968402
共有 1 个文件被更改,包括 8 次插入5 次删除
  1. 8 5
      drivers/net/phy/dp83640.c

+ 8 - 5
drivers/net/phy/dp83640.c

@@ -1061,6 +1061,13 @@ static void dp83640_remove(struct phy_device *phydev)
 	kfree(dp83640);
 	kfree(dp83640);
 }
 }
 
 
+static int dp83640_config_init(struct phy_device *phydev)
+{
+	enable_status_frames(phydev, true);
+	ext_write(0, phydev, PAGE4, PTP_CTL, PTP_ENABLE);
+	return 0;
+}
+
 static int dp83640_ack_interrupt(struct phy_device *phydev)
 static int dp83640_ack_interrupt(struct phy_device *phydev)
 {
 {
 	int err = phy_read(phydev, MII_DP83640_MISR);
 	int err = phy_read(phydev, MII_DP83640_MISR);
@@ -1198,11 +1205,6 @@ static int dp83640_hwtstamp(struct phy_device *phydev, struct ifreq *ifr)
 
 
 	mutex_lock(&dp83640->clock->extreg_lock);
 	mutex_lock(&dp83640->clock->extreg_lock);
 
 
-	if (dp83640->hwts_tx_en || dp83640->hwts_rx_en) {
-		enable_status_frames(phydev, true);
-		ext_write(0, phydev, PAGE4, PTP_CTL, PTP_ENABLE);
-	}
-
 	ext_write(0, phydev, PAGE5, PTP_TXCFG0, txcfg0);
 	ext_write(0, phydev, PAGE5, PTP_TXCFG0, txcfg0);
 	ext_write(0, phydev, PAGE5, PTP_RXCFG0, rxcfg0);
 	ext_write(0, phydev, PAGE5, PTP_RXCFG0, rxcfg0);
 
 
@@ -1334,6 +1336,7 @@ static struct phy_driver dp83640_driver = {
 	.flags		= PHY_HAS_INTERRUPT,
 	.flags		= PHY_HAS_INTERRUPT,
 	.probe		= dp83640_probe,
 	.probe		= dp83640_probe,
 	.remove		= dp83640_remove,
 	.remove		= dp83640_remove,
+	.config_init	= dp83640_config_init,
 	.config_aneg	= genphy_config_aneg,
 	.config_aneg	= genphy_config_aneg,
 	.read_status	= genphy_read_status,
 	.read_status	= genphy_read_status,
 	.ack_interrupt  = dp83640_ack_interrupt,
 	.ack_interrupt  = dp83640_ack_interrupt,