| --- a/drivers/net/ethernet/intel/igb/igb.h |
| +++ b/drivers/net/ethernet/intel/igb/igb.h |
| @@ -444,7 +444,9 @@ struct igb_adapter { |
| u32 tx_hwtstamp_timeouts; |
| u32 rx_hwtstamp_cleared; |
| |
| +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,15,0) |
| struct ptp_pin_desc sdp_config[IGB_N_SDP]; |
| +#endif |
| struct { |
| struct timespec64 start; |
| struct timespec64 period; |
| --- a/drivers/net/ethernet/intel/igb/igb_ptp.c |
| +++ b/drivers/net/ethernet/intel/igb/igb_ptp.c |
| @@ -115,6 +115,7 @@ static cycle_t igb_ptp_read_82580(const |
| return val; |
| } |
| |
| +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,15,0) |
| /* SYSTIM read access for I210/I211 */ |
| static void igb_ptp_read_i210(struct igb_adapter *adapter, |
| struct timespec64 *ts) |
| @@ -133,6 +134,7 @@ static void igb_ptp_read_i210(struct igb |
| ts->tv_sec = sec; |
| ts->tv_nsec = nsec; |
| } |
| +#endif |
| |
| static void igb_ptp_write_i210(struct igb_adapter *adapter, |
| const struct timespec64 *ts) |
| @@ -265,6 +267,7 @@ static int igb_ptp_adjtime_82576(struct |
| return 0; |
| } |
| |
| +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,15,0) |
| static int igb_ptp_adjtime_i210(struct ptp_clock_info *ptp, s64 delta) |
| { |
| struct igb_adapter *igb = container_of(ptp, struct igb_adapter, |
| @@ -282,6 +285,7 @@ static int igb_ptp_adjtime_i210(struct p |
| |
| return 0; |
| } |
| +#endif |
| |
| static int igb_ptp_gettime_82576(struct ptp_clock_info *ptp, |
| struct timespec64 *ts) |
| @@ -302,6 +306,7 @@ static int igb_ptp_gettime_82576(struct |
| return 0; |
| } |
| |
| +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,15,0) |
| static int igb_ptp_gettime_i210(struct ptp_clock_info *ptp, |
| struct timespec64 *ts) |
| { |
| @@ -317,6 +322,7 @@ static int igb_ptp_gettime_i210(struct p |
| |
| return 0; |
| } |
| +#endif |
| |
| static int igb_ptp_settime_82576(struct ptp_clock_info *ptp, |
| const struct timespec64 *ts) |
| @@ -337,6 +343,7 @@ static int igb_ptp_settime_82576(struct |
| return 0; |
| } |
| |
| +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,15,0) |
| static int igb_ptp_settime_i210(struct ptp_clock_info *ptp, |
| const struct timespec64 *ts) |
| { |
| @@ -597,6 +604,7 @@ static int igb_ptp_feature_enable_i210(s |
| |
| return -EOPNOTSUPP; |
| } |
| +#endif |
| |
| static int igb_ptp_feature_enable(struct ptp_clock_info *ptp, |
| struct ptp_clock_request *rq, int on) |
| @@ -604,6 +612,7 @@ static int igb_ptp_feature_enable(struct |
| return -EOPNOTSUPP; |
| } |
| |
| +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,15,0) |
| static int igb_ptp_verify_pin(struct ptp_clock_info *ptp, unsigned int pin, |
| enum ptp_pin_function func, unsigned int chan) |
| { |
| @@ -617,6 +626,7 @@ static int igb_ptp_verify_pin(struct ptp |
| } |
| return 0; |
| } |
| +#endif |
| |
| /** |
| * igb_ptp_tx_work |
| @@ -1009,7 +1019,9 @@ void igb_ptp_init(struct igb_adapter *ad |
| { |
| struct e1000_hw *hw = &adapter->hw; |
| struct net_device *netdev = adapter->netdev; |
| +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,15,0) |
| int i; |
| +#endif |
| |
| switch (hw->mac.type) { |
| case e1000_82576: |
| @@ -1050,6 +1062,7 @@ void igb_ptp_init(struct igb_adapter *ad |
| /* Enable the timer functions by clearing bit 31. */ |
| wr32(E1000_TSAUXC, 0x0); |
| break; |
| +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,15,0) |
| case e1000_i210: |
| case e1000_i211: |
| for (i = 0; i < IGB_N_SDP; i++) { |
| @@ -1076,6 +1089,7 @@ void igb_ptp_init(struct igb_adapter *ad |
| /* Enable the timer functions by clearing bit 31. */ |
| wr32(E1000_TSAUXC, 0x0); |
| break; |
| +#endif |
| default: |
| adapter->ptp_clock = NULL; |
| return; |
| @@ -1087,11 +1101,14 @@ void igb_ptp_init(struct igb_adapter *ad |
| INIT_WORK(&adapter->ptp_tx_work, igb_ptp_tx_work); |
| |
| /* Initialize the clock and overflow work for devices that need it. */ |
| +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,15,0) |
| if ((hw->mac.type == e1000_i210) || (hw->mac.type == e1000_i211)) { |
| struct timespec64 ts = ktime_to_timespec64(ktime_get_real()); |
| |
| igb_ptp_settime_i210(&adapter->ptp_caps, &ts); |
| - } else { |
| + } else |
| +#endif |
| + { |
| timecounter_init(&adapter->tc, &adapter->cc, |
| ktime_to_ns(ktime_get_real())); |
| |