Home
last modified time | relevance | path

Searched refs:ptp (Results 1 – 25 of 195) sorted by relevance

12345678

/drivers/net/ethernet/marvell/octeontx2/af/
A Dptp.c85 static bool is_ptp_dev_cn10ka(struct ptp *ptp) in is_ptp_dev_cn10ka() argument
90 static bool cn10k_ptp_errata(struct ptp *ptp) in cn10k_ptp_errata() argument
93 (is_rev_A0(ptp) || is_rev_A1(ptp))) in cn10k_ptp_errata()
101 struct ptp *ptp = rvu->ptp; in is_tstmp_atomic_update_supported() local
110 (is_rev_A0(ptp) || is_rev_A1(ptp))) in is_tstmp_atomic_update_supported()
118 struct ptp *ptp = container_of(hrtimer, struct ptp, hrtimer); in ptp_reset_thresh() local
231 struct ptp *ptp = first_ptp_block; in ptp_get() local
245 void ptp_put(struct ptp *ptp) in ptp_put() argument
362 *clk = ptp->read_ptp_tstmp(ptp); in ptp_get_clock()
369 struct ptp *ptp = rvu->ptp; in ptp_start() local
[all …]
/drivers/net/ethernet/qlogic/qede/
A Dqede_ptp.c115 timecounter_init(&ptp->tc, &ptp->cc, ns); in qede_ptp_settime()
206 struct qede_ptp *ptp = edev->ptp; in qede_ptp_cfg_filters() local
299 ptp = edev->ptp; in qede_ptp_hw_ts()
326 struct qede_ptp *ptp = edev->ptp; in qede_ptp_get_ts_info() local
365 ptp = edev->ptp; in qede_ptp_disable()
398 ptp = edev->ptp; in qede_ptp_init()
415 memset(&ptp->cc, 0, sizeof(ptp->cc)); in qede_ptp_init()
438 ptp->ops = edev->ops->ptp; in qede_ptp_enable()
445 edev->ptp = ptp; in qede_ptp_enable()
489 ptp = edev->ptp; in qede_ptp_tx_ts()
[all …]
/drivers/ptp/
A Dptp_clock.c103 return ptp->info->settime64(ptp->info, tp); in ptp_clock_settime()
112 err = ptp->info->gettimex64(ptp->info, tp, NULL); in ptp_clock_gettime()
114 err = ptp->info->gettime64(ptp->info, tp); in ptp_clock_gettime()
210 kfree(ptp); in ptp_clock_release()
297 ptp->info->getcyclesx64 = ptp->info->gettimex64; in ptp_clock_register()
349 ptp->pps_source->lookup_cookie = ptp; in ptp_clock_register()
354 ptp->dev.devt = ptp->devid; in ptp_clock_register()
357 ptp->dev.groups = ptp->pin_attr_groups; in ptp_clock_register()
359 dev_set_drvdata(&ptp->dev, ptp); in ptp_clock_register()
360 dev_set_name(&ptp->dev, "ptp%d", ptp->index); in ptp_clock_register()
[all …]
A Dptp_sysfs.c27 return sysfs_emit(page, "%d\n", ptp->info->getmaxphase(ptp->info)); in max_phase_adjustment_show()
230 *(ptp->vclock_index + ptp->n_vclocks + i) = in n_vclocks_store()
245 *(ptp->vclock_index + ptp->n_vclocks - i) = -1; in n_vclocks_store()
249 if (!ptp->has_cycles) { in n_vclocks_store()
256 ptp->n_vclocks = num; in n_vclocks_store()
446 ptp->pin_dev_attr = kcalloc(n_pins, sizeof(*ptp->pin_dev_attr), in ptp_populate_pin_groups()
451 ptp->pin_attr = kcalloc(1 + n_pins, sizeof(*ptp->pin_attr), GFP_KERNEL); in ptp_populate_pin_groups()
452 if (!ptp->pin_attr) in ptp_populate_pin_groups()
466 ptp->pin_attr_group.attrs = ptp->pin_attr; in ptp_populate_pin_groups()
468 ptp->pin_attr_groups[0] = &ptp->pin_attr_group; in ptp_populate_pin_groups()
[all …]
A Dptp_chardev.c143 struct ptp_clock *ptp = in ptp_release() local
158 .max_adj = ptp->info->max_adj, in ptp_clock_getcaps()
162 .pps = ptp->info->pps, in ptp_clock_getcaps()
163 .n_pins = ptp->info->n_pins, in ptp_clock_getcaps()
170 caps.max_phase_adj = ptp->info->getmaxphase(ptp->info); in ptp_clock_getcaps()
298 err = ptp->info->getcrosststamp(ptp->info, &xtstamp); in ptp_sys_offset_precise()
321 if (!ptp->info->gettimex64) in ptp_sys_offset_extended()
349 err = ptp->info->gettimex64(ptp->info, &ts, &sts); in ptp_sys_offset_extended()
534 struct ptp_clock *ptp = in ptp_poll() local
567 if (wait_event_interruptible(ptp->tsev_wq, ptp->defunct || queue_cnt(queue))) in ptp_read()
[all …]
A Dptp_vclock.c45 struct ptp_vclock *vclock = info_to_vclock(ptp); in ptp_vclock_adjfine()
62 struct ptp_vclock *vclock = info_to_vclock(ptp); in ptp_vclock_adjtime()
75 struct ptp_vclock *vclock = info_to_vclock(ptp); in ptp_vclock_gettime()
91 struct ptp_vclock *vclock = info_to_vclock(ptp); in ptp_vclock_gettimex()
175 struct ptp_clock *ptp = vclock->pclock; in ptp_vclock_read() local
178 ptp->info->getcycles64(ptp->info, &ts); in ptp_vclock_read()
243 struct ptp_clock *ptp; in ptp_get_vclocks_index() local
255 ptp = dev_get_drvdata(dev); in ptp_get_vclocks_index()
266 memcpy(*vclock_index, ptp->vclock_index, sizeof(int) * ptp->n_vclocks); in ptp_get_vclocks_index()
267 num = ptp->n_vclocks; in ptp_get_vclocks_index()
[all …]
A Dptp_private.h104 static inline bool ptp_vclock_in_use(struct ptp_clock *ptp) in ptp_vclock_in_use() argument
115 if (ptp->is_virtual_clock) in ptp_vclock_in_use()
118 if (mutex_lock_interruptible(&ptp->n_vclocks_mux)) in ptp_vclock_in_use()
121 if (ptp->n_vclocks) in ptp_vclock_in_use()
124 mutex_unlock(&ptp->n_vclocks_mux); in ptp_vclock_in_use()
130 static inline bool ptp_clock_freerun(struct ptp_clock *ptp) in ptp_clock_freerun() argument
132 if (ptp->has_cycles) in ptp_clock_freerun()
135 return ptp_vclock_in_use(ptp); in ptp_clock_freerun()
145 int ptp_set_pinfunc(struct ptp_clock *ptp, unsigned int pin,
167 int ptp_populate_pin_groups(struct ptp_clock *ptp);
[all …]
/drivers/net/ethernet/broadcom/bnxt/
A Dbnxt_ptp.c71 timecounter_init(&ptp->tc, &ptp->cc, ns); in bnxt_ptp_settime()
141 if (!ptp) in bnxt_ptp_get_current_time()
206 bnxt_refclk_read(ptp->bp, NULL, &ptp->current_time); in bnxt_ptp_update_current_time()
366 if (!ptp || !ptp->tstamp_filters) in bnxt_ptp_cfg_tstamp_filters()
573 if (!ptp) in bnxt_hwtstamp_set()
646 if (!ptp) in bnxt_hwtstamp_get()
850 if (!ptp) in bnxt_get_rx_ts_p5()
992 memset(&ptp->cc, 0, sizeof(ptp->cc)); in bnxt_ptp_timecounter_init()
999 ptp->cmult = ptp->cc.mult; in bnxt_ptp_timecounter_init()
1016 timecounter_init(&ptp->tc, &ptp->cc, ns); in bnxt_ptp_rtc_timecounter_init()
[all …]
A Dbnxt_ptp.h151 #define BNXT_PTP_INC_TX_AVAIL(ptp) \ argument
153 spin_lock_bh(&(ptp)->ptp_tx_lock); \
154 (ptp)->tx_avail++; \
155 spin_unlock_bh(&(ptp)->ptp_tx_lock); \
165 void bnxt_ptp_free_txts_skbs(struct bnxt_ptp_cfg *ptp);
166 int bnxt_ptp_get_txts_prod(struct bnxt_ptp_cfg *ptp, u16 *prod);
171 void bnxt_ptp_rtc_timecounter_init(struct bnxt_ptp_cfg *ptp, u64 ns);
181 seq = read_seqbegin(&ptp->ptp_lock); in bnxt_timecounter_cyc2time()
182 ns = timecounter_cyc2time(&ptp->tc, ts); in bnxt_timecounter_cyc2time()
183 } while (read_seqretry(&ptp->ptp_lock, seq)); in bnxt_timecounter_cyc2time()
[all …]
/drivers/net/ethernet/hisilicon/hns3/hns3pf/
A Dhclge_ptp.c11 struct hclge_ptp *ptp = hdev->ptp; in hclge_ptp_get_cycle() local
13 ptp->cycle.quo = readl(hdev->ptp->io_base + HCLGE_PTP_CYCLE_QUO_REG) & in hclge_ptp_get_cycle()
60 struct hclge_ptp *ptp = hdev->ptp; in hclge_ptp_set_tx_info() local
62 if (!ptp) in hclge_ptp_set_tx_info()
90 hdev->ptp->last_tx_seqid = readl(hdev->ptp->io_base + in hclge_ptp_clean_tx_hwts()
427 if (!ptp) in hclge_ptp_create_clock()
431 snprintf(ptp->info.name, sizeof(ptp->info.name), "%s", in hclge_ptp_create_clock()
448 hdev->ptp = ptp; in hclge_ptp_create_clock()
454 ptp->info.n_alarm, PTR_ERR(ptp->clock)); in hclge_ptp_create_clock()
534 struct hclge_ptp *ptp = hdev->ptp; in hclge_ptp_uninit() local
[all …]
/drivers/net/ethernet/marvell/octeontx2/nic/
A Dotx2_ptp.c19 if (!ptp->nic) in is_tstmp_atomic_update_supported()
55 if (!ptp->nic) in otx2_ptp_hw_adjtime()
78 if (!ptp->nic) in otx2_ptp_get_clock()
122 if (!ptp->nic) in otx2_ptp_hw_settime()
148 if (!ptp->nic) in otx2_ptp_adjfine()
165 if (!ptp->nic) in ptp_set_thresh()
182 if (!ptp->nic) in ptp_pps_on()
333 ptp->tstamp = ptp->ptp_tstamp2nsec(&ptp->time_counter, tstamp); in otx2_sync_tstamp()
489 struct otx2_ptp *ptp = pfvf->ptp; in otx2_ptp_destroy() local
491 if (!ptp) in otx2_ptp_destroy()
[all …]
/drivers/net/ethernet/microchip/
A Dlan743x_ptp.c81 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_tx_ts_enqueue_ts() local
98 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_tx_ts_complete() local
159 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_reserve_event_ch() local
178 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_release_event_ch() local
202 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_led_mux_enable() local
219 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_led_mux_save() local
426 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_perout_off() local
456 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_perout() local
643 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_io_perout_off() local
695 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_io_perout() local
[all …]
/drivers/net/ethernet/sfc/siena/
A Dptp.c957 ptp->nic_to_kernel_time(0, ptp->timeset[i].wait, 0)); in efx_ptp_process_times()
1279 if (!ptp->channel || ptp->rxfilter_installed) in efx_ptp_insert_multicast_filters()
1483 list_add(&ptp->rx_evts[pos].link, &ptp->evt_free_list); in efx_ptp_probe()
1694 queue_work(ptp->workwq, &ptp->work); in efx_ptp_rx()
1712 queue_work(ptp->workwq, &ptp->work); in efx_siena_ptp_tx()
1790 if (!ptp) in efx_siena_ptp_get_ts_info()
1833 queue_work(ptp->workwq, &ptp->work); in ptp_event_failure()
1872 queue_work(ptp->workwq, &ptp->work); in ptp_event_rx()
1894 queue_work(ptp->pps_workwq, &ptp->pps_work); in ptp_event_pps()
1902 if (!ptp) { in efx_siena_ptp_event()
[all …]
/drivers/net/ethernet/sfc/
A Dptp.c944 ptp->nic_to_kernel_time(0, ptp->timeset[i].wait, 0)); in efx_ptp_process_times()
1281 queue_delayed_work(ptp->workwq, &ptp->cleanup_work, in efx_ptp_insert_filter()
1332 if (!ptp->channel || !list_empty(&ptp->rxfilters_mcast)) in efx_ptp_insert_multicast_filters()
1536 queue_delayed_work(ptp->workwq, &ptp->cleanup_work, in efx_ptp_cleanup_worker()
1780 queue_work(ptp->workwq, &ptp->work); in efx_ptp_rx()
1798 queue_work(ptp->workwq, &ptp->work); in efx_ptp_tx()
1869 if (!ptp) in efx_ptp_get_ts_info()
1922 queue_work(ptp->workwq, &ptp->work); in ptp_event_failure()
1939 queue_work(ptp->pps_workwq, &ptp->pps_work); in ptp_event_pps()
1947 if (!ptp) { in efx_ptp_event()
[all …]
/drivers/net/ethernet/intel/idpf/
A Didpf_ptp.c35 struct idpf_ptp *ptp = adapter->ptp; in idpf_ptp_get_features_access() local
102 struct idpf_ptp *ptp = adapter->ptp; in idpf_ptp_read_src_clk_reg_direct() local
193 struct idpf_ptp *ptp = adapter->ptp; in idpf_ptp_get_sync_device_time_direct() local
616 struct idpf_ptp *ptp = vport->adapter->ptp; in idpf_ptp_extend_ts() local
924 adapter->ptp = kzalloc(sizeof(*adapter->ptp), GFP_KERNEL); in idpf_ptp_init()
925 if (!adapter->ptp) in idpf_ptp_init()
979 kfree(adapter->ptp); in idpf_ptp_init()
991 struct idpf_ptp *ptp = adapter->ptp; in idpf_ptp_release() local
993 if (!ptp) in idpf_ptp_release()
1000 if (ptp->clock) { in idpf_ptp_release()
[all …]
A Didpf_virtchnl_ptp.c37 struct idpf_ptp *ptp = adapter->ptp; in idpf_ptp_get_caps() local
56 ptp->caps = le32_to_cpu(recv_ptp_caps_msg->caps); in idpf_ptp_get_caps()
58 ptp->max_adj = le32_to_cpu(recv_ptp_caps_msg->max_adj); in idpf_ptp_get_caps()
60 scnd_mbx = &ptp->secondary_mbx; in idpf_ptp_get_caps()
73 access_type = ptp->get_dev_clk_time_access; in idpf_ptp_get_caps()
95 access_type = ptp->get_cross_tstamp_access; in idpf_ptp_get_caps()
111 access_type = ptp->adj_dev_clk_time_access; in idpf_ptp_get_caps()
342 struct idpf_ptp *ptp = vport->adapter->ptp; in idpf_ptp_get_vport_tstamps_caps() local
348 if (!ptp) in idpf_ptp_get_vport_tstamps_caps()
351 tstamp_access = ptp->tx_tstamp_access; in idpf_ptp_get_vport_tstamps_caps()
[all …]
/drivers/net/ethernet/google/gve/
A Dgve_ptp.c63 priv->ptp = kzalloc(sizeof(*priv->ptp), GFP_KERNEL); in gve_ptp_init()
64 if (!priv->ptp) in gve_ptp_init()
67 ptp = priv->ptp; in gve_ptp_init()
69 ptp->clock = ptp_clock_register(&ptp->info, &priv->pdev->dev); in gve_ptp_init()
77 ptp->priv = priv; in gve_ptp_init()
81 kfree(ptp); in gve_ptp_init()
82 priv->ptp = NULL; in gve_ptp_init()
88 struct gve_ptp *ptp = priv->ptp; in gve_ptp_release() local
90 if (!ptp) in gve_ptp_release()
93 if (ptp->clock) in gve_ptp_release()
[all …]
/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/
A Dbase.c45 struct nvkm_mmu_ptp *ptp = pt->ptp; in nvkm_mmu_ptp_put() local
51 list_add(&ptp->head, &mmu->ptp.list); in nvkm_mmu_ptp_put()
55 if (ptp->free == ptp->mask) { in nvkm_mmu_ptp_put()
58 kfree(ptp); in nvkm_mmu_ptp_put()
74 ptp = list_first_entry_or_null(&mmu->ptp.list, typeof(*ptp), head); in nvkm_mmu_ptp_get()
75 if (!ptp) { in nvkm_mmu_ptp_get()
77 if (!(ptp = kmalloc(sizeof(*ptp), GFP_KERNEL))) { in nvkm_mmu_ptp_get()
90 slot = nvkm_memory_size(ptp->pt->memory) >> ptp->shift; in nvkm_mmu_ptp_get()
92 ptp->free = ptp->mask; in nvkm_mmu_ptp_get()
93 list_add(&ptp->head, &mmu->ptp.list); in nvkm_mmu_ptp_get()
[all …]
/drivers/net/ethernet/renesas/
A Dravb_ptp.c94 ptp.info); in ravb_ptp_adjfine()
105 priv->ptp.current_addend = addend; in ravb_ptp_adjfine()
123 ptp.info); in ravb_ptp_adjtime()
144 ptp.info); in ravb_ptp_gettime64()
159 ptp.info); in ravb_ptp_settime64()
174 ptp.info); in ravb_ptp_extts()
184 priv->ptp.extts[req->index] = on; in ravb_ptp_extts()
202 ptp.info); in ravb_ptp_perout()
320 priv->ptp.info = ravb_ptp_info; in ravb_ptp_init()
323 priv->ptp.current_addend = priv->ptp.default_addend; in ravb_ptp_init()
[all …]
A Drcar_gen4_ptp.c15 #define ptp_to_priv(ptp) container_of(ptp, struct rcar_gen4_ptp_private, info) argument
31 struct rcar_gen4_ptp_private *ptp_priv = ptp_to_priv(ptp); in rcar_gen4_ptp_adjfine()
64 _rcar_gen4_ptp_gettime(ptp, ts); in rcar_gen4_ptp_gettime()
93 _rcar_gen4_ptp_settime(ptp, ts); in rcar_gen4_ptp_settime()
107 _rcar_gen4_ptp_gettime(ptp, &ts); in rcar_gen4_ptp_adjtime()
110 _rcar_gen4_ptp_settime(ptp, &ts); in rcar_gen4_ptp_adjtime()
191 struct rcar_gen4_ptp_private *ptp; in rcar_gen4_ptp_alloc() local
193 ptp = devm_kzalloc(&pdev->dev, sizeof(*ptp), GFP_KERNEL); in rcar_gen4_ptp_alloc()
194 if (!ptp) in rcar_gen4_ptp_alloc()
197 ptp->info = rcar_gen4_ptp_info; in rcar_gen4_ptp_alloc()
[all …]
/drivers/net/ethernet/intel/ice/
A Dice_ptp.c2353 pf->ptp.info.pin_config = pf->ptp.pin_desc; in ice_ptp_setup_pin_cfg()
2474 struct ice_ptp *ptp = &pf->ptp; in ice_ptp_set_funcs_e810() local
2503 ptp->info.pin_config = ptp->pin_desc; in ice_ptp_set_funcs_e810()
2806 kthread_queue_delayed_work(ptp->kworker, &ptp->work, in ice_ptp_periodic_work()
2843 struct ice_ptp *ptp = &pf->ptp; in ice_ptp_prepare_for_reset() local
2886 struct ice_ptp *ptp = &pf->ptp; in ice_ptp_rebuild_owner() local
2958 struct ice_ptp *ptp = &pf->ptp; in ice_ptp_rebuild() local
2978 kthread_queue_delayed_work(ptp->kworker, &ptp->work, 0); in ice_ptp_rebuild()
3001 struct ice_ptp *ptp = &pf->ptp; in ice_ptp_setup_pf() local
3018 struct ice_ptp *ptp = &pf->ptp; in ice_ptp_cleanup_pf() local
[all …]
/drivers/net/ethernet/intel/iavf/
A Diavf_ptp.c181 if (!adapter->ptp.clock) in iavf_send_phc_read()
219 adapter->ptp.phc_time_ready = false; in iavf_read_phc_indirect()
249 if (!adapter->ptp.clock) in iavf_ptp_gettimex64()
329 adapter->ptp.clock = clock; in iavf_ptp_register_clock()
332 adapter->ptp.info.name); in iavf_ptp_register_clock()
365 rx_ring->ptp = &adapter->ptp; in iavf_ptp_init()
381 if (!adapter->ptp.clock) in iavf_ptp_release()
385 adapter->ptp.info.name); in iavf_ptp_release()
387 adapter->ptp.clock = NULL; in iavf_ptp_release()
417 if (adapter->ptp.clock && !phc) in iavf_ptp_process_caps()
[all …]
/drivers/net/ethernet/meta/fbnic/
A Dfbnic_time.c33 return container_of(ptp, struct fbnic_dev, ptp_info); in fbnic_from_ptp_info()
96 struct fbnic_dev *fbd = fbnic_from_ptp_info(ptp); in fbnic_ptp_do_aux_work()
109 struct fbnic_dev *fbd = fbnic_from_ptp_info(ptp); in fbnic_ptp_adjfine()
130 struct fbnic_dev *fbd = fbnic_from_ptp_info(ptp); in fbnic_ptp_adjtime()
149 struct fbnic_dev *fbd = fbnic_from_ptp_info(ptp); in fbnic_ptp_gettimex64()
183 struct fbnic_dev *fbd = fbnic_from_ptp_info(ptp); in fbnic_ptp_settime64()
274 ptp_cancel_worker_sync(fbn->fbd->ptp); in fbnic_time_stop()
292 if (IS_ERR(fbd->ptp)) in fbnic_ptp_setup()
295 return PTR_ERR_OR_ZERO(fbd->ptp); in fbnic_ptp_setup()
300 if (!fbd->ptp) in fbnic_ptp_destroy()
[all …]
/drivers/net/phy/mscc/
A Dmscc_ptp.c459 len = skb_queue_len(&ptp->tx_queue); in vsc85xx_dequeue_skb()
464 skb = __skb_dequeue(&ptp->tx_queue); in vsc85xx_dequeue_skb()
498 vsc85xx_dequeue_skb(ptp); in vsc85xx_get_tx_ts()
1136 vsc8531->ptp->configured = 1; in vsc85xx_hwtstamp()
1171 if (!vsc8531->ptp->configured) in vsc85xx_txtstamp()
1202 if (!vsc8531->ptp->configured) in vsc85xx_rxtstamp()
1502 vsc8531->ptp->ptp_clock = ptp_clock_register(&vsc8531->ptp->caps, in __vsc8584_init_ptp()
1549 vsc85xx_get_tx_ts(priv->ptp); in vsc8584_handle_ts_interrupt()
1563 vsc8531->ptp = devm_kzalloc(&phydev->mdio.dev, sizeof(*vsc8531->ptp), in vsc8584_ptp_probe()
1565 if (!vsc8531->ptp) in vsc8584_ptp_probe()
[all …]
/drivers/net/ethernet/cavium/common/
A Dcavium_ptp.h30 void cavium_ptp_put(struct cavium_ptp *ptp);
32 static inline u64 cavium_ptp_tstamp2time(struct cavium_ptp *ptp, u64 tstamp) in cavium_ptp_tstamp2time() argument
37 spin_lock_irqsave(&ptp->spin_lock, flags); in cavium_ptp_tstamp2time()
38 ret = timecounter_cyc2time(&ptp->time_counter, tstamp); in cavium_ptp_tstamp2time()
39 spin_unlock_irqrestore(&ptp->spin_lock, flags); in cavium_ptp_tstamp2time()
56 static inline void cavium_ptp_put(struct cavium_ptp *ptp) {} in cavium_ptp_put() argument
58 static inline u64 cavium_ptp_tstamp2time(struct cavium_ptp *ptp, u64 tstamp) in cavium_ptp_tstamp2time() argument

Completed in 89 milliseconds

12345678