Lines Matching full:ptp
67 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_tx_ts_enqueue_ts() local
69 spin_lock_bh(&ptp->tx_ts_lock); in lan743x_ptp_tx_ts_enqueue_ts()
70 if (ptp->tx_ts_queue_size < LAN743X_PTP_NUMBER_OF_TX_TIMESTAMPS) { in lan743x_ptp_tx_ts_enqueue_ts()
71 ptp->tx_ts_seconds_queue[ptp->tx_ts_queue_size] = seconds; in lan743x_ptp_tx_ts_enqueue_ts()
72 ptp->tx_ts_nseconds_queue[ptp->tx_ts_queue_size] = nano_seconds; in lan743x_ptp_tx_ts_enqueue_ts()
73 ptp->tx_ts_header_queue[ptp->tx_ts_queue_size] = header; in lan743x_ptp_tx_ts_enqueue_ts()
74 ptp->tx_ts_queue_size++; in lan743x_ptp_tx_ts_enqueue_ts()
79 spin_unlock_bh(&ptp->tx_ts_lock); in lan743x_ptp_tx_ts_enqueue_ts()
84 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_tx_ts_complete() local
91 spin_lock_bh(&ptp->tx_ts_lock); in lan743x_ptp_tx_ts_complete()
92 c = ptp->tx_ts_skb_queue_size; in lan743x_ptp_tx_ts_complete()
94 if (c > ptp->tx_ts_queue_size) in lan743x_ptp_tx_ts_complete()
95 c = ptp->tx_ts_queue_size; in lan743x_ptp_tx_ts_complete()
100 ignore_sync = ((ptp->tx_ts_ignore_sync_queue & in lan743x_ptp_tx_ts_complete()
102 skb = ptp->tx_ts_skb_queue[i]; in lan743x_ptp_tx_ts_complete()
103 nseconds = ptp->tx_ts_nseconds_queue[i]; in lan743x_ptp_tx_ts_complete()
104 seconds = ptp->tx_ts_seconds_queue[i]; in lan743x_ptp_tx_ts_complete()
105 header = ptp->tx_ts_header_queue[i]; in lan743x_ptp_tx_ts_complete()
116 ptp->tx_ts_skb_queue[i] = NULL; in lan743x_ptp_tx_ts_complete()
117 ptp->tx_ts_seconds_queue[i] = 0; in lan743x_ptp_tx_ts_complete()
118 ptp->tx_ts_nseconds_queue[i] = 0; in lan743x_ptp_tx_ts_complete()
119 ptp->tx_ts_header_queue[i] = 0; in lan743x_ptp_tx_ts_complete()
123 ptp->tx_ts_ignore_sync_queue >>= c; in lan743x_ptp_tx_ts_complete()
125 ptp->tx_ts_skb_queue[i - c] = ptp->tx_ts_skb_queue[i]; in lan743x_ptp_tx_ts_complete()
126 ptp->tx_ts_seconds_queue[i - c] = ptp->tx_ts_seconds_queue[i]; in lan743x_ptp_tx_ts_complete()
127 ptp->tx_ts_nseconds_queue[i - c] = ptp->tx_ts_nseconds_queue[i]; in lan743x_ptp_tx_ts_complete()
128 ptp->tx_ts_header_queue[i - c] = ptp->tx_ts_header_queue[i]; in lan743x_ptp_tx_ts_complete()
130 ptp->tx_ts_skb_queue[i] = NULL; in lan743x_ptp_tx_ts_complete()
131 ptp->tx_ts_seconds_queue[i] = 0; in lan743x_ptp_tx_ts_complete()
132 ptp->tx_ts_nseconds_queue[i] = 0; in lan743x_ptp_tx_ts_complete()
133 ptp->tx_ts_header_queue[i] = 0; in lan743x_ptp_tx_ts_complete()
135 ptp->tx_ts_skb_queue_size -= c; in lan743x_ptp_tx_ts_complete()
136 ptp->tx_ts_queue_size -= c; in lan743x_ptp_tx_ts_complete()
138 ptp->pending_tx_timestamps -= c; in lan743x_ptp_tx_ts_complete()
139 spin_unlock_bh(&ptp->tx_ts_lock); in lan743x_ptp_tx_ts_complete()
144 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_reserve_event_ch() local
148 mutex_lock(&ptp->command_lock); in lan743x_ptp_reserve_event_ch()
150 if (!(test_bit(index, &ptp->used_event_ch))) { in lan743x_ptp_reserve_event_ch()
151 ptp->used_event_ch |= BIT(index); in lan743x_ptp_reserve_event_ch()
156 mutex_unlock(&ptp->command_lock); in lan743x_ptp_reserve_event_ch()
163 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_release_event_ch() local
165 mutex_lock(&ptp->command_lock); in lan743x_ptp_release_event_ch()
166 if (test_bit(event_channel, &ptp->used_event_ch)) { in lan743x_ptp_release_event_ch()
167 ptp->used_event_ch &= ~BIT(event_channel); in lan743x_ptp_release_event_ch()
173 mutex_unlock(&ptp->command_lock); in lan743x_ptp_release_event_ch()
241 /* disable ptp output */ in lan743x_gpio_release()
264 struct lan743x_ptp *ptp = in lan743x_ptpci_adjfine() local
267 container_of(ptp, struct lan743x_adapter, ptp); in lan743x_ptpci_adjfine()
297 struct lan743x_ptp *ptp = in lan743x_ptpci_adjfreq() local
300 container_of(ptp, struct lan743x_adapter, ptp); in lan743x_ptpci_adjfreq()
331 struct lan743x_ptp *ptp = in lan743x_ptpci_adjtime() local
334 container_of(ptp, struct lan743x_adapter, ptp); in lan743x_ptpci_adjtime()
344 struct lan743x_ptp *ptp = in lan743x_ptpci_gettime64() local
347 container_of(ptp, struct lan743x_adapter, ptp); in lan743x_ptpci_gettime64()
361 struct lan743x_ptp *ptp = in lan743x_ptpci_settime64() local
364 container_of(ptp, struct lan743x_adapter, ptp); in lan743x_ptpci_settime64()
396 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_perout_off() local
399 if (ptp->perout_gpio_bit >= 0) { in lan743x_ptp_perout_off()
400 lan743x_gpio_release(adapter, ptp->perout_gpio_bit); in lan743x_ptp_perout_off()
401 ptp->perout_gpio_bit = -1; in lan743x_ptp_perout_off()
404 if (ptp->perout_event_ch >= 0) { in lan743x_ptp_perout_off()
407 PTP_CLOCK_TARGET_SEC_X(ptp->perout_event_ch), in lan743x_ptp_perout_off()
410 PTP_CLOCK_TARGET_NS_X(ptp->perout_event_ch), in lan743x_ptp_perout_off()
415 (ptp->perout_event_ch); in lan743x_ptp_perout_off()
417 lan743x_ptp_release_event_ch(adapter, ptp->perout_event_ch); in lan743x_ptp_perout_off()
418 ptp->perout_event_ch = -1; in lan743x_ptp_perout_off()
425 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_perout() local
437 if (ptp->perout_event_ch >= 0 || in lan743x_ptp_perout()
438 ptp->perout_gpio_bit >= 0) { in lan743x_ptp_perout()
443 ptp->perout_event_ch = lan743x_ptp_reserve_event_ch(adapter); in lan743x_ptp_perout()
444 if (ptp->perout_event_ch < 0) { in lan743x_ptp_perout()
459 ptp->perout_gpio_bit = lan743x_gpio_rsrv_ptp_out(adapter, in lan743x_ptp_perout()
461 ptp->perout_event_ch); in lan743x_ptp_perout()
463 if (ptp->perout_gpio_bit < 0) { in lan743x_ptp_perout()
502 PTP_CLOCK_TARGET_SEC_X(ptp->perout_event_ch), in lan743x_ptp_perout()
505 PTP_CLOCK_TARGET_NS_X(ptp->perout_event_ch), 0); in lan743x_ptp_perout()
510 (ptp->perout_event_ch)); in lan743x_ptp_perout()
512 (ptp->perout_event_ch, pulse_width); in lan743x_ptp_perout()
514 (ptp->perout_event_ch); in lan743x_ptp_perout()
519 PTP_CLOCK_TARGET_RELOAD_SEC_X(ptp->perout_event_ch), in lan743x_ptp_perout()
522 PTP_CLOCK_TARGET_RELOAD_NS_X(ptp->perout_event_ch), in lan743x_ptp_perout()
527 PTP_CLOCK_TARGET_SEC_X(ptp->perout_event_ch), in lan743x_ptp_perout()
530 PTP_CLOCK_TARGET_NS_X(ptp->perout_event_ch), in lan743x_ptp_perout()
543 struct lan743x_ptp *ptp = in lan743x_ptpci_enable() local
546 container_of(ptp, struct lan743x_adapter, ptp); in lan743x_ptpci_enable()
573 struct lan743x_ptp *ptp = in lan743x_ptpci_do_aux_work() local
576 container_of(ptp, struct lan743x_adapter, ptp); in lan743x_ptpci_do_aux_work()
628 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_clock_get() local
630 mutex_lock(&ptp->command_lock); in lan743x_ptp_clock_get()
645 mutex_unlock(&ptp->command_lock); in lan743x_ptp_clock_get()
651 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_clock_step() local
725 mutex_lock(&ptp->command_lock); in lan743x_ptp_clock_step()
748 mutex_unlock(&ptp->command_lock); in lan743x_ptp_clock_step()
751 mutex_lock(&ptp->command_lock); in lan743x_ptp_clock_step()
760 mutex_unlock(&ptp->command_lock); in lan743x_ptp_clock_step()
767 struct lan743x_ptp *ptp = NULL; in lan743x_ptp_isr() local
771 ptp = &adapter->ptp; in lan743x_ptp_isr()
779 ptp_schedule_worker(ptp->ptp_clock, 0); in lan743x_ptp_isr()
784 "PTP TX Software Timestamp Error\n"); in lan743x_ptp_isr()
809 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_tx_ts_enqueue_skb() local
811 spin_lock_bh(&ptp->tx_ts_lock); in lan743x_ptp_tx_ts_enqueue_skb()
812 if (ptp->tx_ts_skb_queue_size < LAN743X_PTP_NUMBER_OF_TX_TIMESTAMPS) { in lan743x_ptp_tx_ts_enqueue_skb()
813 ptp->tx_ts_skb_queue[ptp->tx_ts_skb_queue_size] = skb; in lan743x_ptp_tx_ts_enqueue_skb()
815 ptp->tx_ts_ignore_sync_queue |= in lan743x_ptp_tx_ts_enqueue_skb()
816 BIT(ptp->tx_ts_skb_queue_size); in lan743x_ptp_tx_ts_enqueue_skb()
817 ptp->tx_ts_skb_queue_size++; in lan743x_ptp_tx_ts_enqueue_skb()
827 spin_unlock_bh(&ptp->tx_ts_lock); in lan743x_ptp_tx_ts_enqueue_skb()
863 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_init() local
865 mutex_init(&ptp->command_lock); in lan743x_ptp_init()
866 spin_lock_init(&ptp->tx_ts_lock); in lan743x_ptp_init()
867 ptp->used_event_ch = 0; in lan743x_ptp_init()
868 ptp->perout_event_ch = -1; in lan743x_ptp_init()
869 ptp->perout_gpio_bit = -1; in lan743x_ptp_init()
875 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_open() local
888 ptp->flags |= PTP_FLAG_ISR_ENABLED; in lan743x_ptp_open()
893 snprintf(ptp->pin_config[0].name, 32, "lan743x_ptp_pin_0"); in lan743x_ptp_open()
894 ptp->pin_config[0].index = 0; in lan743x_ptp_open()
895 ptp->pin_config[0].func = PTP_PF_PEROUT; in lan743x_ptp_open()
896 ptp->pin_config[0].chan = 0; in lan743x_ptp_open()
898 ptp->ptp_clock_info.owner = THIS_MODULE; in lan743x_ptp_open()
899 snprintf(ptp->ptp_clock_info.name, 16, "%pm", in lan743x_ptp_open()
901 ptp->ptp_clock_info.max_adj = LAN743X_PTP_MAX_FREQ_ADJ_IN_PPB; in lan743x_ptp_open()
902 ptp->ptp_clock_info.n_alarm = 0; in lan743x_ptp_open()
903 ptp->ptp_clock_info.n_ext_ts = 0; in lan743x_ptp_open()
904 ptp->ptp_clock_info.n_per_out = 1; in lan743x_ptp_open()
905 ptp->ptp_clock_info.n_pins = 0; in lan743x_ptp_open()
906 ptp->ptp_clock_info.pps = 0; in lan743x_ptp_open()
907 ptp->ptp_clock_info.pin_config = NULL; in lan743x_ptp_open()
908 ptp->ptp_clock_info.adjfine = lan743x_ptpci_adjfine; in lan743x_ptp_open()
909 ptp->ptp_clock_info.adjfreq = lan743x_ptpci_adjfreq; in lan743x_ptp_open()
910 ptp->ptp_clock_info.adjtime = lan743x_ptpci_adjtime; in lan743x_ptp_open()
911 ptp->ptp_clock_info.gettime64 = lan743x_ptpci_gettime64; in lan743x_ptp_open()
912 ptp->ptp_clock_info.getcrosststamp = NULL; in lan743x_ptp_open()
913 ptp->ptp_clock_info.settime64 = lan743x_ptpci_settime64; in lan743x_ptp_open()
914 ptp->ptp_clock_info.enable = lan743x_ptpci_enable; in lan743x_ptp_open()
915 ptp->ptp_clock_info.do_aux_work = lan743x_ptpci_do_aux_work; in lan743x_ptp_open()
916 ptp->ptp_clock_info.verify = NULL; in lan743x_ptp_open()
918 ptp->ptp_clock = ptp_clock_register(&ptp->ptp_clock_info, in lan743x_ptp_open()
921 if (IS_ERR(ptp->ptp_clock)) { in lan743x_ptp_open()
926 ptp->flags |= PTP_FLAG_PTP_CLOCK_REGISTERED; in lan743x_ptp_open()
928 "successfully registered ptp clock\n"); in lan743x_ptp_open()
938 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_close() local
942 ptp->flags & PTP_FLAG_PTP_CLOCK_REGISTERED) { in lan743x_ptp_close()
943 ptp_clock_unregister(ptp->ptp_clock); in lan743x_ptp_close()
944 ptp->ptp_clock = NULL; in lan743x_ptp_close()
945 ptp->flags &= ~PTP_FLAG_PTP_CLOCK_REGISTERED; in lan743x_ptp_close()
947 "ptp clock unregister\n"); in lan743x_ptp_close()
950 if (ptp->flags & PTP_FLAG_ISR_ENABLED) { in lan743x_ptp_close()
955 ptp->flags &= ~PTP_FLAG_ISR_ENABLED; in lan743x_ptp_close()
960 spin_lock_bh(&ptp->tx_ts_lock); in lan743x_ptp_close()
964 struct sk_buff *skb = ptp->tx_ts_skb_queue[index]; in lan743x_ptp_close()
968 ptp->tx_ts_skb_queue[index] = NULL; in lan743x_ptp_close()
969 ptp->tx_ts_seconds_queue[index] = 0; in lan743x_ptp_close()
970 ptp->tx_ts_nseconds_queue[index] = 0; in lan743x_ptp_close()
972 ptp->tx_ts_skb_queue_size = 0; in lan743x_ptp_close()
973 ptp->tx_ts_queue_size = 0; in lan743x_ptp_close()
974 ptp->pending_tx_timestamps = 0; in lan743x_ptp_close()
975 spin_unlock_bh(&ptp->tx_ts_lock); in lan743x_ptp_close()
1002 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_enable() local
1004 mutex_lock(&ptp->command_lock); in lan743x_ptp_enable()
1008 "PTP already enabled\n"); in lan743x_ptp_enable()
1013 mutex_unlock(&ptp->command_lock); in lan743x_ptp_enable()
1018 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_disable() local
1020 mutex_lock(&ptp->command_lock); in lan743x_ptp_disable()
1023 "PTP already disabled\n"); in lan743x_ptp_disable()
1029 mutex_unlock(&ptp->command_lock); in lan743x_ptp_disable()
1034 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_reset() local
1036 mutex_lock(&ptp->command_lock); in lan743x_ptp_reset()
1047 mutex_unlock(&ptp->command_lock); in lan743x_ptp_reset()
1054 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_clock_set() local
1056 mutex_lock(&ptp->command_lock); in lan743x_ptp_clock_set()
1064 mutex_unlock(&ptp->command_lock); in lan743x_ptp_clock_set()
1069 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_request_tx_timestamp() local
1072 spin_lock_bh(&ptp->tx_ts_lock); in lan743x_ptp_request_tx_timestamp()
1073 if (ptp->pending_tx_timestamps < LAN743X_PTP_NUMBER_OF_TX_TIMESTAMPS) { in lan743x_ptp_request_tx_timestamp()
1075 ptp->pending_tx_timestamps++; in lan743x_ptp_request_tx_timestamp()
1078 spin_unlock_bh(&ptp->tx_ts_lock); in lan743x_ptp_request_tx_timestamp()
1084 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_unrequest_tx_timestamp() local
1086 spin_lock_bh(&ptp->tx_ts_lock); in lan743x_ptp_unrequest_tx_timestamp()
1087 if (ptp->pending_tx_timestamps > 0) in lan743x_ptp_unrequest_tx_timestamp()
1088 ptp->pending_tx_timestamps--; in lan743x_ptp_unrequest_tx_timestamp()
1092 spin_unlock_bh(&ptp->tx_ts_lock); in lan743x_ptp_unrequest_tx_timestamp()