#include <linux/netdevice.h>
#include <linux/ptp_clock_kernel.h>
#include <linux/module.h>
#include <linux/pci.h>
#include <linux/net_tstamp.h>
#include "lan743x_main.h"
#include "lan743x_ptp.h"
#define LAN743X_LED0_ENABLE …
#define LAN743X_LED_ENABLE(pin) …
#define LAN743X_PTP_MAX_FREQ_ADJ_IN_PPB …
#define LAN743X_PTP_MAX_FINE_ADJ_IN_SCALED_PPM …
static bool lan743x_ptp_is_enabled(struct lan743x_adapter *adapter);
static void lan743x_ptp_enable(struct lan743x_adapter *adapter);
static void lan743x_ptp_disable(struct lan743x_adapter *adapter);
static void lan743x_ptp_reset(struct lan743x_adapter *adapter);
static void lan743x_ptp_clock_set(struct lan743x_adapter *adapter,
u32 seconds, u32 nano_seconds,
u32 sub_nano_seconds);
static int lan743x_get_channel(u32 ch_map)
{ … }
int lan743x_gpio_init(struct lan743x_adapter *adapter)
{ … }
static void lan743x_ptp_wait_till_cmd_done(struct lan743x_adapter *adapter,
u32 bit_mask)
{ … }
static void lan743x_ptp_tx_ts_enqueue_ts(struct lan743x_adapter *adapter,
u32 seconds, u32 nano_seconds,
u32 header)
{ … }
static void lan743x_ptp_tx_ts_complete(struct lan743x_adapter *adapter)
{ … }
static int lan743x_ptp_reserve_event_ch(struct lan743x_adapter *adapter,
int event_channel)
{ … }
static void lan743x_ptp_release_event_ch(struct lan743x_adapter *adapter,
int event_channel)
{ … }
static void lan743x_ptp_clock_get(struct lan743x_adapter *adapter,
u32 *seconds, u32 *nano_seconds,
u32 *sub_nano_seconds);
static void lan743x_ptp_io_clock_get(struct lan743x_adapter *adapter,
u32 *sec, u32 *nsec, u32 *sub_nsec);
static void lan743x_ptp_clock_step(struct lan743x_adapter *adapter,
s64 time_step_ns);
static void lan743x_led_mux_enable(struct lan743x_adapter *adapter,
int pin, bool enable)
{ … }
static void lan743x_led_mux_save(struct lan743x_adapter *adapter)
{ … }
static void lan743x_led_mux_restore(struct lan743x_adapter *adapter)
{ … }
static int lan743x_gpio_rsrv_ptp_out(struct lan743x_adapter *adapter,
int pin, int event_channel)
{ … }
static void lan743x_gpio_release(struct lan743x_adapter *adapter, int pin)
{ … }
static int lan743x_ptpci_adjfine(struct ptp_clock_info *ptpci, long scaled_ppm)
{ … }
static int lan743x_ptpci_adjtime(struct ptp_clock_info *ptpci, s64 delta)
{ … }
static int lan743x_ptpci_gettime64(struct ptp_clock_info *ptpci,
struct timespec64 *ts)
{ … }
static int lan743x_ptpci_settime64(struct ptp_clock_info *ptpci,
const struct timespec64 *ts)
{ … }
static void lan743x_ptp_perout_off(struct lan743x_adapter *adapter,
unsigned int index)
{ … }
static int lan743x_ptp_perout(struct lan743x_adapter *adapter, int on,
struct ptp_perout_request *perout_request)
{ … }
static void lan743x_ptp_io_perout_off(struct lan743x_adapter *adapter,
u32 index)
{ … }
static int lan743x_ptp_io_perout(struct lan743x_adapter *adapter, int on,
struct ptp_perout_request *perout_request)
{ … }
static void lan743x_ptp_io_extts_off(struct lan743x_adapter *adapter,
u32 index)
{ … }
static int lan743x_ptp_io_event_cap_en(struct lan743x_adapter *adapter,
u32 flags, u32 channel)
{ … }
static int lan743x_ptp_io_extts(struct lan743x_adapter *adapter, int on,
struct ptp_extts_request *extts_request)
{ … }
static int lan743x_ptpci_enable(struct ptp_clock_info *ptpci,
struct ptp_clock_request *request, int on)
{ … }
static int lan743x_ptpci_verify_pin_config(struct ptp_clock_info *ptp,
unsigned int pin,
enum ptp_pin_function func,
unsigned int chan)
{ … }
static void lan743x_ptp_io_event_clock_get(struct lan743x_adapter *adapter,
bool fe, u8 channel,
struct timespec64 *ts)
{ … }
static long lan743x_ptpci_do_aux_work(struct ptp_clock_info *ptpci)
{ … }
static void lan743x_ptp_clock_get(struct lan743x_adapter *adapter,
u32 *seconds, u32 *nano_seconds,
u32 *sub_nano_seconds)
{ … }
static void lan743x_ptp_io_clock_get(struct lan743x_adapter *adapter,
u32 *sec, u32 *nsec, u32 *sub_nsec)
{ … }
static void lan743x_ptp_clock_step(struct lan743x_adapter *adapter,
s64 time_step_ns)
{ … }
void lan743x_ptp_isr(void *context)
{ … }
static void lan743x_ptp_tx_ts_enqueue_skb(struct lan743x_adapter *adapter,
struct sk_buff *skb, bool ignore_sync)
{ … }
static void lan743x_ptp_sync_to_system_clock(struct lan743x_adapter *adapter)
{ … }
void lan743x_ptp_update_latency(struct lan743x_adapter *adapter,
u32 link_speed)
{ … }
int lan743x_ptp_init(struct lan743x_adapter *adapter)
{ … }
int lan743x_ptp_open(struct lan743x_adapter *adapter)
{ … }
void lan743x_ptp_close(struct lan743x_adapter *adapter)
{ … }
static void lan743x_ptp_set_sync_ts_insert(struct lan743x_adapter *adapter,
bool ts_insert_enable)
{ … }
static bool lan743x_ptp_is_enabled(struct lan743x_adapter *adapter)
{ … }
static void lan743x_ptp_enable(struct lan743x_adapter *adapter)
{ … }
static void lan743x_ptp_disable(struct lan743x_adapter *adapter)
{ … }
static void lan743x_ptp_reset(struct lan743x_adapter *adapter)
{ … }
static void lan743x_ptp_clock_set(struct lan743x_adapter *adapter,
u32 seconds, u32 nano_seconds,
u32 sub_nano_seconds)
{ … }
bool lan743x_ptp_request_tx_timestamp(struct lan743x_adapter *adapter)
{ … }
void lan743x_ptp_unrequest_tx_timestamp(struct lan743x_adapter *adapter)
{ … }
void lan743x_ptp_tx_timestamp_skb(struct lan743x_adapter *adapter,
struct sk_buff *skb, bool ignore_sync)
{ … }
int lan743x_ptp_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd)
{ … }