Lines Matching full:adapter

20 static bool lan743x_ptp_is_enabled(struct lan743x_adapter *adapter);
21 static void lan743x_ptp_enable(struct lan743x_adapter *adapter);
22 static void lan743x_ptp_disable(struct lan743x_adapter *adapter);
23 static void lan743x_ptp_reset(struct lan743x_adapter *adapter);
24 static void lan743x_ptp_clock_set(struct lan743x_adapter *adapter,
40 int lan743x_gpio_init(struct lan743x_adapter *adapter) in lan743x_gpio_init() argument
42 struct lan743x_gpio *gpio = &adapter->gpio; in lan743x_gpio_init()
50 lan743x_csr_write(adapter, GPIO_CFG0, gpio->gpio_cfg0); in lan743x_gpio_init()
51 lan743x_csr_write(adapter, GPIO_CFG1, gpio->gpio_cfg1); in lan743x_gpio_init()
52 lan743x_csr_write(adapter, GPIO_CFG2, gpio->gpio_cfg2); in lan743x_gpio_init()
53 lan743x_csr_write(adapter, GPIO_CFG3, gpio->gpio_cfg3); in lan743x_gpio_init()
58 static void lan743x_ptp_wait_till_cmd_done(struct lan743x_adapter *adapter, in lan743x_ptp_wait_till_cmd_done() argument
65 (data = (lan743x_csr_read(adapter, PTP_CMD_CTL) & in lan743x_ptp_wait_till_cmd_done()
71 netif_err(adapter, drv, adapter->netdev, in lan743x_ptp_wait_till_cmd_done()
77 static void lan743x_ptp_tx_ts_enqueue_ts(struct lan743x_adapter *adapter, in lan743x_ptp_tx_ts_enqueue_ts() argument
81 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_tx_ts_enqueue_ts()
90 netif_err(adapter, drv, adapter->netdev, in lan743x_ptp_tx_ts_enqueue_ts()
96 static void lan743x_ptp_tx_ts_complete(struct lan743x_adapter *adapter) in lan743x_ptp_tx_ts_complete() argument
98 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_tx_ts_complete()
156 static int lan743x_ptp_reserve_event_ch(struct lan743x_adapter *adapter, in lan743x_ptp_reserve_event_ch() argument
159 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_reserve_event_ch()
167 netif_warn(adapter, drv, adapter->netdev, in lan743x_ptp_reserve_event_ch()
175 static void lan743x_ptp_release_event_ch(struct lan743x_adapter *adapter, in lan743x_ptp_release_event_ch() argument
178 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_release_event_ch()
184 netif_warn(adapter, drv, adapter->netdev, in lan743x_ptp_release_event_ch()
191 static void lan743x_ptp_clock_get(struct lan743x_adapter *adapter,
194 static void lan743x_ptp_io_clock_get(struct lan743x_adapter *adapter,
196 static void lan743x_ptp_clock_step(struct lan743x_adapter *adapter,
199 static void lan743x_led_mux_enable(struct lan743x_adapter *adapter, in lan743x_led_mux_enable() argument
202 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_led_mux_enable()
206 u32 val = lan743x_csr_read(adapter, HW_CFG); in lan743x_led_mux_enable()
213 lan743x_csr_write(adapter, HW_CFG, val); in lan743x_led_mux_enable()
217 static void lan743x_led_mux_save(struct lan743x_adapter *adapter) in lan743x_led_mux_save() argument
219 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_led_mux_save()
220 u32 id_rev = adapter->csr.id_rev & ID_REV_ID_MASK_; in lan743x_led_mux_save()
224 u32 val = lan743x_csr_read(adapter, HW_CFG); in lan743x_led_mux_save()
237 static void lan743x_led_mux_restore(struct lan743x_adapter *adapter) in lan743x_led_mux_restore() argument
239 u32 id_rev = adapter->csr.id_rev & ID_REV_ID_MASK_; in lan743x_led_mux_restore()
245 lan743x_led_mux_enable(adapter, i, true); in lan743x_led_mux_restore()
249 static int lan743x_gpio_rsrv_ptp_out(struct lan743x_adapter *adapter, in lan743x_gpio_rsrv_ptp_out() argument
252 struct lan743x_gpio *gpio = &adapter->gpio; in lan743x_gpio_rsrv_ptp_out()
265 lan743x_led_mux_enable(adapter, pin, false); in lan743x_gpio_rsrv_ptp_out()
270 lan743x_csr_write(adapter, GPIO_CFG0, gpio->gpio_cfg0); in lan743x_gpio_rsrv_ptp_out()
275 lan743x_csr_write(adapter, GPIO_CFG1, gpio->gpio_cfg1); in lan743x_gpio_rsrv_ptp_out()
279 lan743x_csr_write(adapter, GPIO_CFG2, gpio->gpio_cfg2); in lan743x_gpio_rsrv_ptp_out()
289 lan743x_csr_write(adapter, GPIO_CFG3, gpio->gpio_cfg3); in lan743x_gpio_rsrv_ptp_out()
297 static void lan743x_gpio_release(struct lan743x_adapter *adapter, int pin) in lan743x_gpio_release() argument
299 struct lan743x_gpio *gpio = &adapter->gpio; in lan743x_gpio_release()
313 lan743x_csr_write(adapter, GPIO_CFG3, in lan743x_gpio_release()
321 lan743x_csr_write(adapter, GPIO_CFG1, gpio->gpio_cfg1); in lan743x_gpio_release()
326 lan743x_csr_write(adapter, GPIO_CFG0, gpio->gpio_cfg0); in lan743x_gpio_release()
329 lan743x_led_mux_enable(adapter, pin, true); in lan743x_gpio_release()
339 struct lan743x_adapter *adapter = in lan743x_ptpci_adjfine() local
355 lan743x_csr_write(adapter, PTP_CLOCK_RATE_ADJ, in lan743x_ptpci_adjfine()
365 struct lan743x_adapter *adapter = in lan743x_ptpci_adjtime() local
368 lan743x_ptp_clock_step(adapter, delta); in lan743x_ptpci_adjtime()
378 struct lan743x_adapter *adapter = in lan743x_ptpci_gettime64() local
383 if (adapter->is_pci11x1x) in lan743x_ptpci_gettime64()
384 lan743x_ptp_io_clock_get(adapter, &seconds, &nano_seconds, in lan743x_ptpci_gettime64()
387 lan743x_ptp_clock_get(adapter, &seconds, &nano_seconds, NULL); in lan743x_ptpci_gettime64()
399 struct lan743x_adapter *adapter = in lan743x_ptpci_settime64() local
405 netif_warn(adapter, drv, adapter->netdev, in lan743x_ptpci_settime64()
411 netif_warn(adapter, drv, adapter->netdev, in lan743x_ptpci_settime64()
418 lan743x_ptp_clock_set(adapter, seconds, nano_seconds, 0); in lan743x_ptpci_settime64()
423 static void lan743x_ptp_perout_off(struct lan743x_adapter *adapter, in lan743x_ptp_perout_off() argument
426 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_perout_off()
431 lan743x_gpio_release(adapter, perout->gpio_pin); in lan743x_ptp_perout_off()
437 lan743x_csr_write(adapter, in lan743x_ptp_perout_off()
440 lan743x_csr_write(adapter, in lan743x_ptp_perout_off()
444 general_config = lan743x_csr_read(adapter, PTP_GENERAL_CONFIG); in lan743x_ptp_perout_off()
447 lan743x_csr_write(adapter, PTP_GENERAL_CONFIG, general_config); in lan743x_ptp_perout_off()
448 lan743x_ptp_release_event_ch(adapter, perout->event_ch); in lan743x_ptp_perout_off()
453 static int lan743x_ptp_perout(struct lan743x_adapter *adapter, int on, in lan743x_ptp_perout() argument
456 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_perout()
476 lan743x_ptp_perout_off(adapter, index); in lan743x_ptp_perout()
483 lan743x_ptp_perout_off(adapter, index); in lan743x_ptp_perout()
486 perout->event_ch = lan743x_ptp_reserve_event_ch(adapter, index); in lan743x_ptp_perout()
489 netif_warn(adapter, drv, adapter->netdev, in lan743x_ptp_perout()
496 perout->gpio_pin = lan743x_gpio_rsrv_ptp_out(adapter, in lan743x_ptp_perout()
501 netif_warn(adapter, drv, adapter->netdev, in lan743x_ptp_perout()
529 netif_warn(adapter, drv, adapter->netdev, in lan743x_ptp_perout()
535 netif_warn(adapter, drv, adapter->netdev, in lan743x_ptp_perout()
573 netif_warn(adapter, drv, adapter->netdev, in lan743x_ptp_perout()
593 netif_warn(adapter, drv, adapter->netdev, in lan743x_ptp_perout()
605 lan743x_csr_write(adapter, in lan743x_ptp_perout()
608 lan743x_csr_write(adapter, in lan743x_ptp_perout()
612 general_config = lan743x_csr_read(adapter, PTP_GENERAL_CONFIG); in lan743x_ptp_perout()
619 lan743x_csr_write(adapter, PTP_GENERAL_CONFIG, general_config); in lan743x_ptp_perout()
622 lan743x_csr_write(adapter, in lan743x_ptp_perout()
625 lan743x_csr_write(adapter, in lan743x_ptp_perout()
630 lan743x_csr_write(adapter, in lan743x_ptp_perout()
633 lan743x_csr_write(adapter, in lan743x_ptp_perout()
640 lan743x_ptp_perout_off(adapter, index); in lan743x_ptp_perout()
644 static void lan743x_ptp_io_perout_off(struct lan743x_adapter *adapter, in lan743x_ptp_io_perout_off() argument
647 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_io_perout_off()
656 lan743x_csr_write(adapter, in lan743x_ptp_io_perout_off()
659 lan743x_csr_write(adapter, in lan743x_ptp_io_perout_off()
663 gen_cfg = lan743x_csr_read(adapter, HS_PTP_GENERAL_CONFIG); in lan743x_ptp_io_perout_off()
668 lan743x_csr_write(adapter, HS_PTP_GENERAL_CONFIG, gen_cfg); in lan743x_ptp_io_perout_off()
670 lan743x_csr_write(adapter, PTP_INT_STS, in lan743x_ptp_io_perout_off()
673 lan743x_csr_write(adapter, PTP_INT_STS, in lan743x_ptp_io_perout_off()
675 lan743x_ptp_release_event_ch(adapter, event_ch); in lan743x_ptp_io_perout_off()
682 val = lan743x_csr_read(adapter, PTP_IO_EVENT_OUTPUT_CFG); in lan743x_ptp_io_perout_off()
686 lan743x_csr_write(adapter, PTP_IO_EVENT_OUTPUT_CFG, val); in lan743x_ptp_io_perout_off()
689 val = lan743x_csr_read(adapter, PTP_IO_PIN_CFG); in lan743x_ptp_io_perout_off()
691 lan743x_csr_write(adapter, PTP_IO_PIN_CFG, val); in lan743x_ptp_io_perout_off()
693 val = lan743x_csr_read(adapter, PTP_IO_PIN_CFG); in lan743x_ptp_io_perout_off()
696 static int lan743x_ptp_io_perout(struct lan743x_adapter *adapter, int on, in lan743x_ptp_io_perout() argument
699 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_io_perout()
718 lan743x_ptp_io_perout_off(adapter, index); in lan743x_ptp_io_perout()
724 lan743x_ptp_io_perout_off(adapter, index); in lan743x_ptp_io_perout()
727 event_ch = lan743x_ptp_reserve_event_ch(adapter, index); in lan743x_ptp_io_perout()
729 netif_warn(adapter, drv, adapter->netdev, in lan743x_ptp_io_perout()
776 netif_warn(adapter, drv, adapter->netdev, in lan743x_ptp_io_perout()
785 lan743x_csr_write(adapter, in lan743x_ptp_io_perout()
788 lan743x_csr_write(adapter, in lan743x_ptp_io_perout()
792 gen_cfg = lan743x_csr_read(adapter, HS_PTP_GENERAL_CONFIG); in lan743x_ptp_io_perout()
798 lan743x_csr_write(adapter, HS_PTP_GENERAL_CONFIG, gen_cfg); in lan743x_ptp_io_perout()
804 lan743x_csr_write(adapter, in lan743x_ptp_io_perout()
807 lan743x_csr_write(adapter, in lan743x_ptp_io_perout()
816 lan743x_csr_write(adapter, in lan743x_ptp_io_perout()
819 lan743x_csr_write(adapter, in lan743x_ptp_io_perout()
824 val = lan743x_csr_read(adapter, PTP_CMD_CTL); in lan743x_ptp_io_perout()
826 lan743x_csr_write(adapter, PTP_CMD_CTL, val); in lan743x_ptp_io_perout()
829 val = lan743x_csr_read(adapter, PTP_IO_PIN_CFG); in lan743x_ptp_io_perout()
831 lan743x_csr_write(adapter, PTP_IO_PIN_CFG, val); in lan743x_ptp_io_perout()
834 val = lan743x_csr_read(adapter, PTP_IO_EVENT_OUTPUT_CFG); in lan743x_ptp_io_perout()
844 lan743x_csr_write(adapter, PTP_IO_EVENT_OUTPUT_CFG, val); in lan743x_ptp_io_perout()
849 lan743x_ptp_io_perout_off(adapter, index); in lan743x_ptp_io_perout()
853 static void lan743x_ptp_io_extts_off(struct lan743x_adapter *adapter, in lan743x_ptp_io_extts_off() argument
856 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_io_extts_off()
866 lan743x_csr_write(adapter, PTP_INT_EN_CLR, val); in lan743x_ptp_io_extts_off()
869 val = lan743x_csr_read(adapter, PTP_IO_CAP_CONFIG); in lan743x_ptp_io_extts_off()
877 lan743x_csr_write(adapter, PTP_IO_CAP_CONFIG, val); in lan743x_ptp_io_extts_off()
880 val = lan743x_csr_read(adapter, PTP_IO_SEL); in lan743x_ptp_io_extts_off()
882 lan743x_csr_write(adapter, PTP_IO_SEL, val); in lan743x_ptp_io_extts_off()
889 static int lan743x_ptp_io_event_cap_en(struct lan743x_adapter *adapter, in lan743x_ptp_io_event_cap_en() argument
892 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_io_event_cap_en()
900 val = lan743x_csr_read(adapter, PTP_IO_CAP_CONFIG); in lan743x_ptp_io_event_cap_en()
913 lan743x_csr_write(adapter, PTP_IO_CAP_CONFIG, val); in lan743x_ptp_io_event_cap_en()
916 val = lan743x_csr_read(adapter, PTP_IO_SEL); in lan743x_ptp_io_event_cap_en()
919 lan743x_csr_write(adapter, PTP_IO_SEL, val); in lan743x_ptp_io_event_cap_en()
926 lan743x_csr_write(adapter, PTP_INT_EN_SET, val); in lan743x_ptp_io_event_cap_en()
933 static int lan743x_ptp_io_extts(struct lan743x_adapter *adapter, int on, in lan743x_ptp_io_extts() argument
936 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_io_extts()
956 ret = lan743x_ptp_io_event_cap_en(adapter, flags, index); in lan743x_ptp_io_extts()
960 lan743x_ptp_io_extts_off(adapter, index); in lan743x_ptp_io_extts()
971 struct lan743x_adapter *adapter = in lan743x_ptpci_enable() local
978 return lan743x_ptp_io_extts(adapter, on, in lan743x_ptpci_enable()
983 if (adapter->is_pci11x1x) in lan743x_ptpci_enable()
984 return lan743x_ptp_io_perout(adapter, on, in lan743x_ptpci_enable()
987 return lan743x_ptp_perout(adapter, on, in lan743x_ptpci_enable()
994 netif_err(adapter, drv, adapter->netdev, in lan743x_ptpci_enable()
1000 netif_err(adapter, drv, adapter->netdev, "request == NULL\n"); in lan743x_ptpci_enable()
1012 struct lan743x_adapter *adapter = in lan743x_ptpci_verify_pin_config() local
1024 if (!adapter->is_pci11x1x) in lan743x_ptpci_verify_pin_config()
1035 static void lan743x_ptp_io_event_clock_get(struct lan743x_adapter *adapter, in lan743x_ptp_io_event_clock_get() argument
1039 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_io_event_clock_get()
1045 sec = lan743x_csr_read(adapter, PTP_IO_FE_LTC_SEC_CAP_X); in lan743x_ptp_io_event_clock_get()
1046 nsec = lan743x_csr_read(adapter, PTP_IO_FE_LTC_NS_CAP_X); in lan743x_ptp_io_event_clock_get()
1048 sec = lan743x_csr_read(adapter, PTP_IO_RE_LTC_SEC_CAP_X); in lan743x_ptp_io_event_clock_get()
1049 nsec = lan743x_csr_read(adapter, PTP_IO_RE_LTC_NS_CAP_X); in lan743x_ptp_io_event_clock_get()
1066 struct lan743x_adapter *adapter = in lan743x_ptpci_do_aux_work() local
1077 ptp_int_sts = lan743x_csr_read(adapter, PTP_INT_STS); in lan743x_ptpci_do_aux_work()
1082 cap_info = lan743x_csr_read(adapter, PTP_CAP_INFO); in lan743x_ptpci_do_aux_work()
1085 seconds = lan743x_csr_read(adapter, in lan743x_ptpci_do_aux_work()
1087 nsec = lan743x_csr_read(adapter, in lan743x_ptpci_do_aux_work()
1091 header = lan743x_csr_read(adapter, in lan743x_ptpci_do_aux_work()
1097 lan743x_ptp_tx_ts_enqueue_ts(adapter, in lan743x_ptpci_do_aux_work()
1104 netif_err(adapter, drv, adapter->netdev, in lan743x_ptpci_do_aux_work()
1107 netif_warn(adapter, drv, adapter->netdev, in lan743x_ptpci_do_aux_work()
1111 netif_warn(adapter, drv, adapter->netdev, in lan743x_ptpci_do_aux_work()
1114 lan743x_csr_write(adapter, PTP_INT_STS, in lan743x_ptpci_do_aux_work()
1125 lan743x_ptp_io_event_clock_get(adapter, in lan743x_ptpci_do_aux_work()
1136 lan743x_csr_write(adapter, PTP_INT_STS, in lan743x_ptpci_do_aux_work()
1144 lan743x_csr_write(adapter, PTP_INT_STS, in lan743x_ptpci_do_aux_work()
1158 lan743x_ptp_io_event_clock_get(adapter, in lan743x_ptpci_do_aux_work()
1169 lan743x_csr_write(adapter, PTP_INT_STS, in lan743x_ptpci_do_aux_work()
1177 lan743x_csr_write(adapter, PTP_INT_STS, in lan743x_ptpci_do_aux_work()
1184 ptp_int_sts = lan743x_csr_read(adapter, PTP_INT_STS); in lan743x_ptpci_do_aux_work()
1188 lan743x_ptp_tx_ts_complete(adapter); in lan743x_ptpci_do_aux_work()
1190 lan743x_csr_write(adapter, INT_EN_SET, INT_BIT_1588_); in lan743x_ptpci_do_aux_work()
1195 static void lan743x_ptp_clock_get(struct lan743x_adapter *adapter, in lan743x_ptp_clock_get() argument
1199 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_clock_get()
1203 lan743x_csr_write(adapter, PTP_CMD_CTL, PTP_CMD_CTL_PTP_CLOCK_READ_); in lan743x_ptp_clock_get()
1204 lan743x_ptp_wait_till_cmd_done(adapter, PTP_CMD_CTL_PTP_CLOCK_READ_); in lan743x_ptp_clock_get()
1207 (*seconds) = lan743x_csr_read(adapter, PTP_CLOCK_SEC); in lan743x_ptp_clock_get()
1210 (*nano_seconds) = lan743x_csr_read(adapter, PTP_CLOCK_NS); in lan743x_ptp_clock_get()
1214 lan743x_csr_read(adapter, PTP_CLOCK_SUBNS); in lan743x_ptp_clock_get()
1219 static void lan743x_ptp_io_clock_get(struct lan743x_adapter *adapter, in lan743x_ptp_io_clock_get() argument
1222 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_io_clock_get()
1225 lan743x_csr_write(adapter, PTP_CMD_CTL, PTP_CMD_CTL_PTP_CLOCK_READ_); in lan743x_ptp_io_clock_get()
1226 lan743x_ptp_wait_till_cmd_done(adapter, PTP_CMD_CTL_PTP_CLOCK_READ_); in lan743x_ptp_io_clock_get()
1229 (*sec) = lan743x_csr_read(adapter, PTP_LTC_RD_SEC_LO); in lan743x_ptp_io_clock_get()
1232 (*nsec) = lan743x_csr_read(adapter, PTP_LTC_RD_NS); in lan743x_ptp_io_clock_get()
1236 lan743x_csr_read(adapter, PTP_LTC_RD_SUBNS); in lan743x_ptp_io_clock_get()
1241 static void lan743x_ptp_clock_step(struct lan743x_adapter *adapter, in lan743x_ptp_clock_step() argument
1244 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_clock_step()
1254 if (adapter->is_pci11x1x) in lan743x_ptp_clock_step()
1255 lan743x_ptp_io_clock_get(adapter, &unsigned_seconds, in lan743x_ptp_clock_step()
1258 lan743x_ptp_clock_get(adapter, &unsigned_seconds, in lan743x_ptp_clock_step()
1267 lan743x_ptp_clock_set(adapter, unsigned_seconds, in lan743x_ptp_clock_step()
1274 if (adapter->is_pci11x1x) { in lan743x_ptp_clock_step()
1275 lan743x_ptp_io_clock_get(adapter, &unsigned_seconds, in lan743x_ptp_clock_step()
1278 lan743x_ptp_clock_get(adapter, &unsigned_seconds, in lan743x_ptp_clock_step()
1289 lan743x_ptp_clock_set(adapter, unsigned_seconds, in lan743x_ptp_clock_step()
1333 lan743x_csr_write(adapter, PTP_CLOCK_STEP_ADJ, in lan743x_ptp_clock_step()
1342 lan743x_csr_write(adapter, PTP_CLOCK_STEP_ADJ, in lan743x_ptp_clock_step()
1346 lan743x_csr_write(adapter, PTP_CMD_CTL, in lan743x_ptp_clock_step()
1348 lan743x_ptp_wait_till_cmd_done(adapter, in lan743x_ptp_clock_step()
1354 lan743x_csr_write(adapter, PTP_CLOCK_STEP_ADJ, in lan743x_ptp_clock_step()
1358 lan743x_csr_write(adapter, PTP_CMD_CTL, in lan743x_ptp_clock_step()
1360 lan743x_ptp_wait_till_cmd_done(adapter, in lan743x_ptp_clock_step()
1368 struct lan743x_adapter *adapter = (struct lan743x_adapter *)context; in lan743x_ptp_isr() local
1373 ptp = &adapter->ptp; in lan743x_ptp_isr()
1375 lan743x_csr_write(adapter, INT_EN_CLR, INT_BIT_1588_); in lan743x_ptp_isr()
1377 ptp_int_sts = lan743x_csr_read(adapter, PTP_INT_STS); in lan743x_ptp_isr()
1378 ptp_int_sts &= lan743x_csr_read(adapter, PTP_INT_EN_SET); in lan743x_ptp_isr()
1385 netif_err(adapter, drv, adapter->netdev, in lan743x_ptp_isr()
1388 lan743x_csr_write(adapter, PTP_INT_STS, in lan743x_ptp_isr()
1393 lan743x_csr_write(adapter, PTP_INT_STS, in lan743x_ptp_isr()
1398 lan743x_csr_write(adapter, PTP_INT_STS, in lan743x_ptp_isr()
1404 lan743x_csr_write(adapter, INT_EN_SET, INT_BIT_1588_); in lan743x_ptp_isr()
1408 static void lan743x_ptp_tx_ts_enqueue_skb(struct lan743x_adapter *adapter, in lan743x_ptp_tx_ts_enqueue_skb() argument
1411 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_tx_ts_enqueue_skb()
1425 netif_err(adapter, drv, adapter->netdev, in lan743x_ptp_tx_ts_enqueue_skb()
1432 static void lan743x_ptp_sync_to_system_clock(struct lan743x_adapter *adapter) in lan743x_ptp_sync_to_system_clock() argument
1438 lan743x_ptp_clock_set(adapter, ts.tv_sec, ts.tv_nsec, 0); in lan743x_ptp_sync_to_system_clock()
1441 void lan743x_ptp_update_latency(struct lan743x_adapter *adapter, in lan743x_ptp_update_latency() argument
1446 lan743x_csr_write(adapter, PTP_LATENCY, in lan743x_ptp_update_latency()
1451 lan743x_csr_write(adapter, PTP_LATENCY, in lan743x_ptp_update_latency()
1456 lan743x_csr_write(adapter, PTP_LATENCY, in lan743x_ptp_update_latency()
1463 int lan743x_ptp_init(struct lan743x_adapter *adapter) in lan743x_ptp_init() argument
1465 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_init()
1477 lan743x_led_mux_save(adapter); in lan743x_ptp_init()
1482 int lan743x_ptp_open(struct lan743x_adapter *adapter) in lan743x_ptp_open() argument
1484 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_open()
1490 lan743x_ptp_reset(adapter); in lan743x_ptp_open()
1491 lan743x_ptp_sync_to_system_clock(adapter); in lan743x_ptp_open()
1492 temp = lan743x_csr_read(adapter, PTP_TX_MOD2); in lan743x_ptp_open()
1494 lan743x_csr_write(adapter, PTP_TX_MOD2, temp); in lan743x_ptp_open()
1497 lan743x_rx_set_tstamp_mode(adapter, HWTSTAMP_FILTER_NONE); in lan743x_ptp_open()
1499 lan743x_ptp_enable(adapter); in lan743x_ptp_open()
1500 lan743x_csr_write(adapter, INT_EN_SET, INT_BIT_1588_); in lan743x_ptp_open()
1501 lan743x_csr_write(adapter, PTP_INT_EN_SET, in lan743x_ptp_open()
1508 switch (adapter->csr.id_rev & ID_REV_ID_MASK_) { in lan743x_ptp_open()
1518 netif_warn(adapter, drv, adapter->netdev, in lan743x_ptp_open()
1520 adapter->csr.id_rev); in lan743x_ptp_open()
1539 adapter->netdev->dev_addr); in lan743x_ptp_open()
1557 &adapter->pdev->dev); in lan743x_ptp_open()
1560 netif_err(adapter, ifup, adapter->netdev, in lan743x_ptp_open()
1565 netif_info(adapter, ifup, adapter->netdev, in lan743x_ptp_open()
1570 lan743x_ptp_close(adapter); in lan743x_ptp_open()
1574 void lan743x_ptp_close(struct lan743x_adapter *adapter) in lan743x_ptp_close() argument
1576 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_close()
1584 netif_info(adapter, drv, adapter->netdev, in lan743x_ptp_close()
1589 lan743x_csr_write(adapter, PTP_INT_EN_CLR, in lan743x_ptp_close()
1592 lan743x_csr_write(adapter, INT_EN_CLR, INT_BIT_1588_); in lan743x_ptp_close()
1597 lan743x_ptp_tx_ts_complete(adapter); in lan743x_ptp_close()
1614 lan743x_led_mux_restore(adapter); in lan743x_ptp_close()
1616 lan743x_ptp_disable(adapter); in lan743x_ptp_close()
1619 static void lan743x_ptp_set_sync_ts_insert(struct lan743x_adapter *adapter, in lan743x_ptp_set_sync_ts_insert() argument
1622 u32 ptp_tx_mod = lan743x_csr_read(adapter, PTP_TX_MOD); in lan743x_ptp_set_sync_ts_insert()
1629 lan743x_csr_write(adapter, PTP_TX_MOD, ptp_tx_mod); in lan743x_ptp_set_sync_ts_insert()
1632 static bool lan743x_ptp_is_enabled(struct lan743x_adapter *adapter) in lan743x_ptp_is_enabled() argument
1634 if (lan743x_csr_read(adapter, PTP_CMD_CTL) & PTP_CMD_CTL_PTP_ENABLE_) in lan743x_ptp_is_enabled()
1639 static void lan743x_ptp_enable(struct lan743x_adapter *adapter) in lan743x_ptp_enable() argument
1641 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_enable()
1645 if (lan743x_ptp_is_enabled(adapter)) { in lan743x_ptp_enable()
1646 netif_warn(adapter, drv, adapter->netdev, in lan743x_ptp_enable()
1650 lan743x_csr_write(adapter, PTP_CMD_CTL, PTP_CMD_CTL_PTP_ENABLE_); in lan743x_ptp_enable()
1655 static void lan743x_ptp_disable(struct lan743x_adapter *adapter) in lan743x_ptp_disable() argument
1657 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_disable()
1660 lan743x_rx_set_tstamp_mode(adapter, HWTSTAMP_FILTER_NONE); in lan743x_ptp_disable()
1663 if (!lan743x_ptp_is_enabled(adapter)) { in lan743x_ptp_disable()
1664 netif_warn(adapter, drv, adapter->netdev, in lan743x_ptp_disable()
1668 lan743x_csr_write(adapter, PTP_CMD_CTL, PTP_CMD_CTL_PTP_DISABLE_); in lan743x_ptp_disable()
1669 lan743x_ptp_wait_till_cmd_done(adapter, PTP_CMD_CTL_PTP_ENABLE_); in lan743x_ptp_disable()
1674 static void lan743x_ptp_reset(struct lan743x_adapter *adapter) in lan743x_ptp_reset() argument
1676 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_reset()
1680 if (lan743x_ptp_is_enabled(adapter)) { in lan743x_ptp_reset()
1681 netif_err(adapter, drv, adapter->netdev, in lan743x_ptp_reset()
1686 lan743x_csr_write(adapter, PTP_CMD_CTL, PTP_CMD_CTL_PTP_RESET_); in lan743x_ptp_reset()
1687 lan743x_ptp_wait_till_cmd_done(adapter, PTP_CMD_CTL_PTP_RESET_); in lan743x_ptp_reset()
1692 static void lan743x_ptp_clock_set(struct lan743x_adapter *adapter, in lan743x_ptp_clock_set() argument
1696 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_clock_set()
1700 lan743x_csr_write(adapter, PTP_CLOCK_SEC, seconds); in lan743x_ptp_clock_set()
1701 lan743x_csr_write(adapter, PTP_CLOCK_NS, nano_seconds); in lan743x_ptp_clock_set()
1702 lan743x_csr_write(adapter, PTP_CLOCK_SUBNS, sub_nano_seconds); in lan743x_ptp_clock_set()
1704 lan743x_csr_write(adapter, PTP_CMD_CTL, PTP_CMD_CTL_PTP_CLOCK_LOAD_); in lan743x_ptp_clock_set()
1705 lan743x_ptp_wait_till_cmd_done(adapter, PTP_CMD_CTL_PTP_CLOCK_LOAD_); in lan743x_ptp_clock_set()
1709 bool lan743x_ptp_request_tx_timestamp(struct lan743x_adapter *adapter) in lan743x_ptp_request_tx_timestamp() argument
1711 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_request_tx_timestamp()
1724 void lan743x_ptp_unrequest_tx_timestamp(struct lan743x_adapter *adapter) in lan743x_ptp_unrequest_tx_timestamp() argument
1726 struct lan743x_ptp *ptp = &adapter->ptp; in lan743x_ptp_unrequest_tx_timestamp()
1732 netif_err(adapter, drv, adapter->netdev, in lan743x_ptp_unrequest_tx_timestamp()
1737 void lan743x_ptp_tx_timestamp_skb(struct lan743x_adapter *adapter, in lan743x_ptp_tx_timestamp_skb() argument
1740 lan743x_ptp_tx_ts_enqueue_skb(adapter, skb, ignore_sync); in lan743x_ptp_tx_timestamp_skb()
1742 lan743x_ptp_tx_ts_complete(adapter); in lan743x_ptp_tx_timestamp_skb()
1747 struct lan743x_adapter *adapter = netdev_priv(netdev); in lan743x_ptp_ioctl() local
1753 netif_err(adapter, drv, adapter->netdev, in lan743x_ptp_ioctl()
1763 for (index = 0; index < adapter->used_tx_channels; in lan743x_ptp_ioctl()
1765 lan743x_tx_set_timestamping_mode(&adapter->tx[index], in lan743x_ptp_ioctl()
1767 lan743x_ptp_set_sync_ts_insert(adapter, false); in lan743x_ptp_ioctl()
1770 for (index = 0; index < adapter->used_tx_channels; in lan743x_ptp_ioctl()
1772 lan743x_tx_set_timestamping_mode(&adapter->tx[index], in lan743x_ptp_ioctl()
1774 lan743x_ptp_set_sync_ts_insert(adapter, false); in lan743x_ptp_ioctl()
1777 for (index = 0; index < adapter->used_tx_channels; in lan743x_ptp_ioctl()
1779 lan743x_tx_set_timestamping_mode(&adapter->tx[index], in lan743x_ptp_ioctl()
1782 lan743x_ptp_set_sync_ts_insert(adapter, true); in lan743x_ptp_ioctl()
1788 netif_warn(adapter, drv, adapter->netdev, in lan743x_ptp_ioctl()
1794 ret = lan743x_rx_set_tstamp_mode(adapter, config.rx_filter); in lan743x_ptp_ioctl()