diff options
author | Arnd Bergmann <arnd@arndb.de> | 2012-07-25 21:41:33 +0200 |
---|---|---|
committer | Arnd Bergmann <arnd@arndb.de> | 2012-07-25 21:41:33 +0200 |
commit | 43cb4a02d27ad9525ad23984d4fd06972810439f (patch) | |
tree | c705d059616356054d18c6cd50e7c9f5b16a5747 /drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c | |
parent | 9abf29edbb14a34f86c9e09970adada9f10ccbcf (diff) | |
parent | 759af179c72005e61a4dd6dcf909320a134bfeee (diff) |
Merge branch 'board-specific' of git://github.com/hzhuang1/linux into late/boardboards2
From Haojian Zhuang <haojian.zhuang@gmail.com>:
* 'board-specific' of git://github.com/hzhuang1/linux:
ARM: pxa: hx4700: Use DEFINE_RES_* macros consistently
ARM: pxa: remove eseries.h
It seems I missed this in the original pull requests for v3.6, adding
it now.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c')
-rw-r--r-- | drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c index ddc6a4d19302..dcebd128becf 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c @@ -708,6 +708,7 @@ void ixgbe_ptp_start_cyclecounter(struct ixgbe_adapter *adapter) { struct ixgbe_hw *hw = &adapter->hw; u32 incval = 0; + u32 timinca = 0; u32 shift = 0; u32 cycle_speed; unsigned long flags; @@ -730,8 +731,16 @@ void ixgbe_ptp_start_cyclecounter(struct ixgbe_adapter *adapter) break; } - /* Bail if the cycle speed didn't change */ - if (adapter->cycle_speed == cycle_speed) + /* + * grab the current TIMINCA value from the register so that it can be + * double checked. If the register value has been cleared, it must be + * reset to the correct value for generating a cyclecounter. If + * TIMINCA is zero, the SYSTIME registers do not increment at all. + */ + timinca = IXGBE_READ_REG(hw, IXGBE_TIMINCA); + + /* Bail if the cycle speed didn't change and TIMINCA is non-zero */ + if (adapter->cycle_speed == cycle_speed && timinca) return; /* disable the SDP clock out */ |