Lines Matching full:ptp

69 	return !ctrl_pf ? NULL : &ctrl_pf->ptp;  in ice_get_ctrl_ptp()
83 const struct ptp_clock_info *info = &pf->ptp.info; in ice_ptp_find_pin_idx()
158 const struct ice_ptp_pin_desc *ice_pins = pf->ptp.ice_pin_desc; in ice_ptp_set_sma_cfg()
159 struct ptp_pin_desc *pins = pf->ptp.pin_desc; in ice_ptp_set_sma_cfg()
170 for (int i = 0; i < pf->ptp.info.n_pins; i++) in ice_ptp_set_sma_cfg()
203 switch (pf->ptp.tx_interrupt_mode) { in ice_ptp_cfg_tx_interrupt()
216 enable = pf->ptp.tstamp_config.tx_type == HWTSTAMP_TX_ON; in ice_ptp_cfg_tx_interrupt()
285 enable_rx = pf->ptp.tstamp_config.rx_filter == HWTSTAMP_FILTER_ALL; in ice_ptp_restore_timestamp_mode()
430 * time stored in the device private PTP structure as the basis for timestamp
442 discard_time = pf->ptp.cached_phc_jiffies + msecs_to_jiffies(2000); in ice_ptp_extend_40b_ts()
444 pf->ptp.tx_hwtstamp_discarded++; in ice_ptp_extend_40b_ts()
448 return ice_ptp_extend_32b_ts(pf->ptp.cached_phc_time, in ice_ptp_extend_40b_ts()
454 * @tx: the PTP Tx timestamp tracker to check
456 * Check that a given PTP Tx timestamp tracker is up, i.e. that it is ready
471 * @tx: the PTP Tx timestamp tracker
487 params = &pf->hw.ptp.phy.e810; in ice_ptp_req_tx_single_tstamp()
492 pf->ptp.tx_hwtstamp_timeouts++; in ice_ptp_req_tx_single_tstamp()
519 * @tx: the PTP Tx timestamp tracker
541 params = &pf->hw.ptp.phy.e810; in ice_ptp_complete_tx_single_tstamp()
606 * @tx: the PTP Tx timestamp tracker
639 * In cases where the PTP hardware clock was directly adjusted, some
689 pf->ptp.tx_hwtstamp_timeouts++; in ice_ptp_process_tx_tstamp()
783 for (i = 0; i < ICE_GET_QUAD_NUM(pf->hw.ptp.num_lports); i++) { in ice_ptp_tx_tstamp_owner()
906 pf->ptp.tx_hwtstamp_flushed++; in ice_ptp_flush_tx_tracker()
921 * This should be called when the PTP clock is modified such as after a set
1043 * Note that the cached copy in the PF PTP structure is always updated, even
1057 update_before = pf->ptp.cached_phc_jiffies + msecs_to_jiffies(2000); in ice_ptp_update_cached_phctime()
1058 if (pf->ptp.cached_phc_time && in ice_ptp_update_cached_phctime()
1060 unsigned long time_taken = jiffies - pf->ptp.cached_phc_jiffies; in ice_ptp_update_cached_phctime()
1064 pf->ptp.late_cached_phc_updates++; in ice_ptp_update_cached_phctime()
1071 WRITE_ONCE(pf->ptp.cached_phc_time, systime); in ice_ptp_update_cached_phctime()
1072 WRITE_ONCE(pf->ptp.cached_phc_jiffies, jiffies); in ice_ptp_update_cached_phctime()
1129 kthread_queue_delayed_work(pf->ptp.kworker, &pf->ptp.work, in ice_ptp_reset_cached_phctime()
1138 ice_ptp_mark_tx_tracker_stale(&pf->ptp.port.tx); in ice_ptp_reset_cached_phctime()
1187 dev_dbg(ice_pf_to_dev(pf), "PTP: using base increment value of 0x%016llx\n", in ice_base_incval()
1195 * @port: PTP port for which Tx FIFO is checked
1221 dev_err(ice_pf_to_dev(pf), "PTP failed to check port %d Tx FIFO, err %d\n", in ice_ptp_check_tx_fifo()
1282 kthread_queue_delayed_work(pf->ptp.kworker, in ice_ptp_wait_for_offsets()
1294 kthread_queue_delayed_work(pf->ptp.kworker, in ice_ptp_wait_for_offsets()
1303 * @ptp_port: PTP port to stop
1332 dev_err(ice_pf_to_dev(pf), "PTP failed to set PHY port %d down, err %d\n", in ice_ptp_port_phy_stop()
1342 * @ptp_port: PTP port for which the PHY start is set
1389 kthread_queue_delayed_work(pf->ptp.kworker, &ptp_port->ov_work, in ice_ptp_port_phy_restart()
1400 dev_err(ice_pf_to_dev(pf), "PTP failed to set PHY port %d up, err %d\n", in ice_ptp_port_phy_restart()
1409 * ice_ptp_link_change - Reconfigure PTP after link status change
1418 if (pf->ptp.state != ICE_PTP_READY) in ice_ptp_link_change()
1421 ptp_port = &pf->ptp.port; in ice_ptp_link_change()
1471 for (quad = 0; quad < ICE_GET_QUAD_NUM(hw->ptp.num_lports); in ice_ptp_cfg_phy_interrupt()
1488 for (port = 0; port < hw->ptp.num_lports; port++) { in ice_ptp_cfg_phy_interrupt()
1513 ice_ptp_port_phy_restart(&pf->ptp.port); in ice_ptp_reset_phy_timestamping()
1536 * @info: the driver's PTP info structure
1552 dev_err(ice_pf_to_dev(pf), "PTP failed to set incval, err %d\n", in ice_ptp_adjfine()
1561 * ice_ptp_extts_event - Process PTP external clock event
1571 /* Don't process timestamp events if PTP is not ready */ in ice_ptp_extts_event()
1572 if (pf->ptp.state != ICE_PTP_READY) in ice_ptp_extts_event()
1585 if (!(pf->ptp.ext_ts_irq & (1 << chan))) in ice_ptp_extts_event()
1597 desc = &pf->ptp.ice_pin_desc[pin_desc_idx]; in ice_ptp_extts_event()
1603 pf->ptp.ext_ts_irq &= ~(1 << chan); in ice_ptp_extts_event()
1604 ptp_clock_event(pf->ptp.clock, &event); in ice_ptp_extts_event()
1642 gpio_pin = pf->ptp.ice_pin_desc[pin_desc_idx].gpio[0]; in ice_ptp_cfg_extts()
1672 for (unsigned int i = 0; i < pf->ptp.info.n_ext_ts; i++) in ice_ptp_cfg_extts()
1673 if ((pf->ptp.extts_rqs[i].flags & in ice_ptp_cfg_extts()
1696 for (unsigned int i = 0; i < pf->ptp.info.n_ext_ts ; i++) in ice_ptp_disable_all_extts()
1697 if (pf->ptp.extts_rqs[i].flags & PTP_ENABLE_FEATURE) in ice_ptp_disable_all_extts()
1698 ice_ptp_cfg_extts(pf, &pf->ptp.extts_rqs[i], in ice_ptp_disable_all_extts()
1712 for (unsigned int i = 0; i < pf->ptp.info.n_ext_ts ; i++) in ice_ptp_enable_all_extts()
1713 if (pf->ptp.extts_rqs[i].flags & PTP_ENABLE_FEATURE) in ice_ptp_enable_all_extts()
1714 ice_ptp_cfg_extts(pf, &pf->ptp.extts_rqs[i], in ice_ptp_enable_all_extts()
1812 gpio_pin = pf->ptp.ice_pin_desc[pin_desc_idx].gpio[1]; in ice_ptp_cfg_perout()
1813 prop_delay_ns = pf->ptp.ice_pin_desc[pin_desc_idx].delay[1]; in ice_ptp_cfg_perout()
1822 if (strncmp(pf->ptp.pin_desc[pin_desc_idx].name, "1PPS", 64) == 0 && in ice_ptp_cfg_perout()
1860 * certain changes to the PTP hardware clock. Use ice_ptp_enable_all_perout to
1865 for (unsigned int i = 0; i < pf->ptp.info.n_per_out; i++) in ice_ptp_disable_all_perout()
1866 if (pf->ptp.perout_rqs[i].period.sec || in ice_ptp_disable_all_perout()
1867 pf->ptp.perout_rqs[i].period.nsec) in ice_ptp_disable_all_perout()
1868 ice_ptp_cfg_perout(pf, &pf->ptp.perout_rqs[i], in ice_ptp_disable_all_perout()
1882 for (unsigned int i = 0; i < pf->ptp.info.n_per_out; i++) in ice_ptp_enable_all_perout()
1883 if (pf->ptp.perout_rqs[i].period.sec || in ice_ptp_enable_all_perout()
1884 pf->ptp.perout_rqs[i].period.nsec) in ice_ptp_enable_all_perout()
1885 ice_ptp_cfg_perout(pf, &pf->ptp.perout_rqs[i], in ice_ptp_enable_all_perout()
1904 gpio_pin = pf->ptp.ice_pin_desc[pin].gpio[1]; in ice_ptp_disable_shared_pin()
1907 gpio_pin = pf->ptp.ice_pin_desc[pin].gpio[0]; in ice_ptp_disable_shared_pin()
1913 for (unsigned int i = 0; i < pf->ptp.info.n_pins; i++) { in ice_ptp_disable_shared_pin()
1914 struct ptp_pin_desc *pin_desc = &pf->ptp.pin_desc[i]; in ice_ptp_disable_shared_pin()
1922 pf->ptp.ice_pin_desc[i].gpio[1] == gpio_pin) { in ice_ptp_disable_shared_pin()
1923 pf->ptp.perout_rqs[chan].period.sec = 0; in ice_ptp_disable_shared_pin()
1924 pf->ptp.perout_rqs[chan].period.nsec = 0; in ice_ptp_disable_shared_pin()
1929 return ice_ptp_cfg_perout(pf, &pf->ptp.perout_rqs[chan], in ice_ptp_disable_shared_pin()
1931 } else if (pf->ptp.pin_desc->func == PTP_PF_EXTTS && in ice_ptp_disable_shared_pin()
1932 pf->ptp.ice_pin_desc[i].gpio[0] == gpio_pin) { in ice_ptp_disable_shared_pin()
1933 pf->ptp.extts_rqs[chan].flags &= ~PTP_ENABLE_FEATURE; in ice_ptp_disable_shared_pin()
1938 return ice_ptp_cfg_extts(pf, &pf->ptp.extts_rqs[chan], in ice_ptp_disable_shared_pin()
1948 * @info: the driver's PTP info structure
1961 pin_desc = &pf->ptp.ice_pin_desc[pin]; in ice_verify_pin()
1983 pf->ptp.pin_desc[pin].func = func; in ice_verify_pin()
1984 pf->ptp.pin_desc[pin].chan = chan; in ice_verify_pin()
1993 * @info: The driver's PTP info structure
2009 &pf->ptp.perout_rqs[rq->perout.index]; in ice_ptp_gpio_enable()
2023 &pf->ptp.extts_rqs[rq->extts.index]; in ice_ptp_gpio_enable()
2039 * @info: the driver's PTP info structure
2061 * @info: the driver's PTP info structure
2106 dev_err(ice_pf_to_dev(pf), "PTP failed to set time %d\n", err); in ice_ptp_settime64()
2115 * @info: the driver's PTP info structure
2134 * @info: the driver's PTP info structure
2156 dev_err(dev, "PTP failed to acquire semaphore in adjtime\n"); in ice_ptp_adjtime()
2171 dev_err(dev, "PTP failed to adjust time, err %d\n", err); in ice_ptp_adjtime()
2283 dev_err(ice_pf_to_dev(pf), "PTP failed to get cross timestamp lock\n"); in ice_capture_crosststamp()
2331 * @info: the driver's PTP info structure
2334 * Capture a cross timestamp between the ART and the device PTP hardware
2380 if (pf->ptp.state != ICE_PTP_READY) in ice_ptp_get_ts_config()
2383 config = &pf->ptp.tstamp_config; in ice_ptp_get_ts_config()
2399 pf->ptp.tstamp_config.tx_type = HWTSTAMP_TX_OFF; in ice_ptp_set_timestamp_mode()
2402 pf->ptp.tstamp_config.tx_type = HWTSTAMP_TX_ON; in ice_ptp_set_timestamp_mode()
2410 pf->ptp.tstamp_config.rx_filter = HWTSTAMP_FILTER_NONE; in ice_ptp_set_timestamp_mode()
2426 pf->ptp.tstamp_config.rx_filter = HWTSTAMP_FILTER_ALL; in ice_ptp_set_timestamp_mode()
2450 if (pf->ptp.state != ICE_PTP_READY) in ice_ptp_set_ts_config()
2461 config = pf->ptp.tstamp_config; in ice_ptp_set_ts_config()
2502 * ice_ptp_setup_pin_cfg - setup PTP pin_config structure
2507 for (unsigned int i = 0; i < pf->ptp.info.n_pins; i++) { in ice_ptp_setup_pin_cfg()
2508 const struct ice_ptp_pin_desc *desc = &pf->ptp.ice_pin_desc[i]; in ice_ptp_setup_pin_cfg()
2509 struct ptp_pin_desc *pin = &pf->ptp.pin_desc[i]; in ice_ptp_setup_pin_cfg()
2522 pf->ptp.info.pin_config = pf->ptp.pin_desc; in ice_ptp_setup_pin_cfg()
2526 * ice_ptp_disable_pins - Disable PTP pins
2534 struct ptp_clock_info *info = &pf->ptp.info; in ice_ptp_disable_pins()
2536 dev_warn(ice_pf_to_dev(pf), "Failed to configure PTP pin control\n"); in ice_ptp_disable_pins()
2550 * @pins: PTP pins array to update
2596 strscpy(pf->ptp.pin_desc[idx].name, in ice_ptp_parse_sdp_entries()
2598 sizeof(pf->ptp.pin_desc[idx] in ice_ptp_parse_sdp_entries()
2613 pf->ptp.info.n_pins = n_pins; in ice_ptp_parse_sdp_entries()
2621 * Assign functions to the PTP capabilities structure for E82X devices.
2628 pf->ptp.info.getcrosststamp = ice_ptp_getcrosststamp; in ice_ptp_set_funcs_e82x()
2631 pf->ptp.ice_pin_desc = ice_pin_desc_e825c; in ice_ptp_set_funcs_e82x()
2632 pf->ptp.info.n_pins = ICE_PIN_DESC_ARR_LEN(ice_pin_desc_e825c); in ice_ptp_set_funcs_e82x()
2634 pf->ptp.ice_pin_desc = ice_pin_desc_e82x; in ice_ptp_set_funcs_e82x()
2635 pf->ptp.info.n_pins = ICE_PIN_DESC_ARR_LEN(ice_pin_desc_e82x); in ice_ptp_set_funcs_e82x()
2644 * Assign functions to the PTP capabiltiies structure for E810 devices.
2653 struct ice_ptp *ptp = &pf->ptp; in ice_ptp_set_funcs_e810() local
2661 ptp->ice_pin_desc = ice_pin_desc_e810_sma; in ice_ptp_set_funcs_e810()
2662 ptp->info.n_pins = in ice_ptp_set_funcs_e810()
2665 pf->ptp.ice_pin_desc = ice_pin_desc_e810; in ice_ptp_set_funcs_e810()
2666 pf->ptp.info.n_pins = in ice_ptp_set_funcs_e810()
2681 ptp->ice_pin_desc = (const struct ice_ptp_pin_desc *)desc; in ice_ptp_set_funcs_e810()
2684 ptp->info.pin_config = ptp->pin_desc; in ice_ptp_set_funcs_e810()
2700 * Assign functions to the PTP capabiltiies structure for E830 devices.
2709 pf->ptp.info.getcrosststamp = ice_ptp_getcrosststamp; in ice_ptp_set_funcs_e830()
2713 pf->ptp.ice_pin_desc = ice_pin_desc_e810; in ice_ptp_set_funcs_e830()
2714 pf->ptp.info.n_pins = ICE_PIN_DESC_ARR_LEN(ice_pin_desc_e810); in ice_ptp_set_funcs_e830()
2719 * ice_ptp_set_caps - Set PTP capabilities
2724 struct ptp_clock_info *info = &pf->ptp.info; in ice_ptp_set_caps()
2757 * ice_ptp_create_clock - Create PTP clock device for userspace
2760 * This function creates a new PTP clock device. It only creates one if we
2771 if (pf->ptp.clock) in ice_ptp_create_clock()
2776 info = &pf->ptp.info; in ice_ptp_create_clock()
2780 pf->ptp.clock = ptp_clock_register(info, dev); in ice_ptp_create_clock()
2781 if (IS_ERR(pf->ptp.clock)) { in ice_ptp_create_clock()
2782 dev_err(ice_pf_to_dev(pf), "Failed to register PTP clock device"); in ice_ptp_create_clock()
2783 return PTR_ERR(pf->ptp.clock); in ice_ptp_create_clock()
2791 * @tx: the PTP Tx timestamp tracker to request from
2838 * ice_ptp_process_ts - Process the PTP Tx timestamps
2846 switch (pf->ptp.tx_interrupt_mode) { in ice_ptp_process_ts()
2852 return ice_ptp_tx_tstamp(&pf->ptp.port.tx); in ice_ptp_process_ts()
2858 pf->ptp.tx_interrupt_mode); in ice_ptp_process_ts()
2864 * ice_ptp_ts_irq - Process the PTP Tx timestamps in IRQ context
2881 struct ice_ptp_tx *tx = &pf->ptp.port.tx; in ice_ptp_ts_irq()
2942 if (!pf->ptp.port.tx.has_ready_bitmap) in ice_ptp_maybe_trigger_tx_interrupt()
2948 for (i = 0; i < ICE_GET_QUAD_NUM(hw->ptp.num_lports); i++) { in ice_ptp_maybe_trigger_tx_interrupt()
2963 …dev_dbg(dev, "PTP periodic task detected waiting timestamps. Triggering Tx timestamp interrupt now… in ice_ptp_maybe_trigger_tx_interrupt()
2972 struct ice_ptp *ptp = container_of(work, struct ice_ptp, work.work); in ice_ptp_periodic_work() local
2973 struct ice_pf *pf = container_of(ptp, struct ice_pf, ptp); in ice_ptp_periodic_work()
2976 if (pf->ptp.state != ICE_PTP_READY) in ice_ptp_periodic_work()
2984 kthread_queue_delayed_work(ptp->kworker, &ptp->work, in ice_ptp_periodic_work()
2989 * ice_ptp_prepare_for_reset - Prepare PTP for reset
2995 struct ice_ptp *ptp = &pf->ptp; in ice_ptp_prepare_for_reset() local
2998 if (ptp->state != ICE_PTP_READY) in ice_ptp_prepare_for_reset()
3001 ptp->state = ICE_PTP_RESETTING; in ice_ptp_prepare_for_reset()
3006 kthread_cancel_delayed_work_sync(&ptp->work); in ice_ptp_prepare_for_reset()
3011 ice_ptp_release_tx_tracker(pf, &pf->ptp.port.tx); in ice_ptp_prepare_for_reset()
3022 ptp->reset_time = ktime_get_real_ns(); in ice_ptp_prepare_for_reset()
3026 * ice_ptp_rebuild_owner - Initialize PTP clock owner after reset
3030 * PTP clock owner instance should perform.
3034 struct ice_ptp *ptp = &pf->ptp; in ice_ptp_rebuild_owner() local
3059 if (ptp->cached_phc_time) { in ice_ptp_rebuild_owner()
3060 time_diff = ktime_get_real_ns() - ptp->reset_time; in ice_ptp_rebuild_owner()
3061 ts = ns_to_timespec64(ptp->cached_phc_time + time_diff); in ice_ptp_rebuild_owner()
3096 * ice_ptp_rebuild - Initialize PTP hardware clock support after reset
3102 struct ice_ptp *ptp = &pf->ptp; in ice_ptp_rebuild() local
3105 if (ptp->state == ICE_PTP_READY) { in ice_ptp_rebuild()
3107 } else if (ptp->state != ICE_PTP_RESETTING) { in ice_ptp_rebuild()
3109 dev_err(ice_pf_to_dev(pf), "PTP was not initialized\n"); in ice_ptp_rebuild()
3119 ptp->state = ICE_PTP_READY; in ice_ptp_rebuild()
3122 kthread_queue_delayed_work(ptp->kworker, &ptp->work, 0); in ice_ptp_rebuild()
3124 dev_info(ice_pf_to_dev(pf), "PTP reset successful\n"); in ice_ptp_rebuild()
3128 ptp->state = ICE_PTP_ERROR; in ice_ptp_rebuild()
3129 dev_err(ice_pf_to_dev(pf), "PTP reset failed %d\n", err); in ice_ptp_rebuild()
3152 struct ice_ptp *ptp = &pf->ptp; in ice_ptp_setup_pf() local
3157 INIT_LIST_HEAD(&ptp->port.list_node); in ice_ptp_setup_pf()
3160 list_add(&ptp->port.list_node, in ice_ptp_setup_pf()
3169 struct ice_ptp *ptp = &pf->ptp; in ice_ptp_cleanup_pf() local
3173 list_del(&ptp->port.list_node); in ice_ptp_cleanup_pf()
3179 * ice_ptp_clock_index - Get the PTP clock index for this device
3182 * Returns: the PTP clock index associated with this PF, or -1 if no PTP clock
3201 * Setup and initialize a PTP clock device that represents the device hardware
3250 pf->ptp.clock = NULL; in ice_ptp_init_owner()
3260 * ice_ptp_init_work - Initialize PTP work threads
3262 * @ptp: PF PTP structure
3264 static int ice_ptp_init_work(struct ice_pf *pf, struct ice_ptp *ptp) in ice_ptp_init_work() argument
3269 kthread_init_delayed_work(&ptp->work, ice_ptp_periodic_work); in ice_ptp_init_work()
3272 * connected to the PTP hardware clock. in ice_ptp_init_work()
3274 kworker = kthread_run_worker(0, "ice-ptp-%s", in ice_ptp_init_work()
3279 ptp->kworker = kworker; in ice_ptp_init_work()
3282 kthread_queue_delayed_work(ptp->kworker, &ptp->work, 0); in ice_ptp_init_work()
3288 * ice_ptp_init_port - Initialize PTP port structure
3290 * @ptp_port: PTP port structure
3332 pf->ptp.tx_interrupt_mode = ICE_PTP_TX_INTERRUPT_ALL; in ice_ptp_init_tx_interrupt_mode()
3334 pf->ptp.tx_interrupt_mode = ICE_PTP_TX_INTERRUPT_NONE; in ice_ptp_init_tx_interrupt_mode()
3338 pf->ptp.tx_interrupt_mode = ICE_PTP_TX_INTERRUPT_SELF; in ice_ptp_init_tx_interrupt_mode()
3343 * ice_ptp_init - Initialize PTP hardware clock support
3346 * Set up the device for interacting with the PTP hardware clock for all
3356 struct ice_ptp *ptp = &pf->ptp; in ice_ptp_init() local
3360 ptp->state = ICE_PTP_INITIALIZING; in ice_ptp_init()
3368 ptp->port.port_num = (u8)lane_num; in ice_ptp_init()
3374 * configure the PTP clock device to represent it. in ice_ptp_init()
3389 err = ice_ptp_init_port(pf, &ptp->port); in ice_ptp_init()
3399 ptp->state = ICE_PTP_READY; in ice_ptp_init()
3401 err = ice_ptp_init_work(pf, ptp); in ice_ptp_init()
3405 dev_info(ice_pf_to_dev(pf), "PTP init successful\n"); in ice_ptp_init()
3409 /* If we registered a PTP clock, release it */ in ice_ptp_init()
3410 if (pf->ptp.clock) { in ice_ptp_init()
3411 ptp_clock_unregister(ptp->clock); in ice_ptp_init()
3412 pf->ptp.clock = NULL; in ice_ptp_init()
3414 ptp->state = ICE_PTP_ERROR; in ice_ptp_init()
3415 dev_err(ice_pf_to_dev(pf), "PTP failed %d\n", err); in ice_ptp_init()
3427 if (pf->ptp.state != ICE_PTP_READY) in ice_ptp_release()
3430 pf->ptp.state = ICE_PTP_UNINIT; in ice_ptp_release()
3437 ice_ptp_release_tx_tracker(pf, &pf->ptp.port.tx); in ice_ptp_release()
3441 kthread_cancel_delayed_work_sync(&pf->ptp.work); in ice_ptp_release()
3443 ice_ptp_port_phy_stop(&pf->ptp.port); in ice_ptp_release()
3444 mutex_destroy(&pf->ptp.port.ps_lock); in ice_ptp_release()
3445 if (pf->ptp.kworker) { in ice_ptp_release()
3446 kthread_destroy_worker(pf->ptp.kworker); in ice_ptp_release()
3447 pf->ptp.kworker = NULL; in ice_ptp_release()
3450 if (!pf->ptp.clock) in ice_ptp_release()
3456 ptp_clock_unregister(pf->ptp.clock); in ice_ptp_release()
3457 pf->ptp.clock = NULL; in ice_ptp_release()
3459 dev_info(ice_pf_to_dev(pf), "Removed PTP clock\n"); in ice_ptp_release()