#define pr_fmt(fmt) …
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/string.h>
#include <linux/ptrace.h>
#include <linux/errno.h>
#include <linux/ioport.h>
#include <linux/slab.h>
#include <linux/interrupt.h>
#include <linux/pci.h>
#include <linux/delay.h>
#include <linux/netdevice.h>
#include <linux/etherdevice.h>
#include <linux/skbuff.h>
#include <linux/spinlock.h>
#include <linux/workqueue.h>
#include <linux/bitops.h>
#include <linux/io.h>
#include <linux/irq.h>
#include <linux/clk.h>
#include <linux/platform_device.h>
#include <linux/phy.h>
#include <linux/fec.h>
#include <linux/of.h>
#include <linux/of_gpio.h>
#include <linux/of_net.h>
#include "fec.h"
#define FEC_T_CTRL_SLAVE …
#define FEC_T_CTRL_CAPTURE …
#define FEC_T_CTRL_RESTART …
#define FEC_T_CTRL_PERIOD_RST …
#define FEC_T_CTRL_PERIOD_EN …
#define FEC_T_CTRL_ENABLE …
#define FEC_T_INC_MASK …
#define FEC_T_INC_OFFSET …
#define FEC_T_INC_CORR_MASK …
#define FEC_T_INC_CORR_OFFSET …
#define FEC_T_CTRL_PINPER …
#define FEC_T_TF0_MASK …
#define FEC_T_TF0_OFFSET …
#define FEC_T_TF1_MASK …
#define FEC_T_TF1_OFFSET …
#define FEC_T_TF2_MASK …
#define FEC_T_TF2_OFFSET …
#define FEC_T_TF3_MASK …
#define FEC_T_TF3_OFFSET …
#define FEC_T_TDRE_MASK …
#define FEC_T_TDRE_OFFSET …
#define FEC_T_TMODE_MASK …
#define FEC_T_TMODE_OFFSET …
#define FEC_T_TIE_MASK …
#define FEC_T_TIE_OFFSET …
#define FEC_T_TF_MASK …
#define FEC_T_TF_OFFSET …
#define FEC_ATIME_CTRL …
#define FEC_ATIME …
#define FEC_ATIME_EVT_OFFSET …
#define FEC_ATIME_EVT_PERIOD …
#define FEC_ATIME_CORR …
#define FEC_ATIME_INC …
#define FEC_TS_TIMESTAMP …
#define FEC_TGSR …
#define FEC_TCSR(n) …
#define FEC_TCCR(n) …
#define MAX_TIMER_CHANNEL …
#define FEC_TMODE_TOGGLE …
#define FEC_HIGH_PULSE …
#define FEC_CC_MULT …
#define FEC_COUNTER_PERIOD …
#define PPS_OUPUT_RELOAD_PERIOD …
#define FEC_CHANNLE_0 …
#define DEFAULT_PPS_CHANNEL …
#define FEC_PTP_MAX_NSEC_PERIOD …
#define FEC_PTP_MAX_NSEC_COUNTER …
static int fec_ptp_enable_pps(struct fec_enet_private *fep, uint enable)
{ … }
static int fec_ptp_pps_perout(struct fec_enet_private *fep)
{ … }
static enum hrtimer_restart fec_ptp_pps_perout_handler(struct hrtimer *timer)
{ … }
static u64 fec_ptp_read(const struct cyclecounter *cc)
{ … }
void fec_ptp_start_cyclecounter(struct net_device *ndev)
{ … }
static int fec_ptp_adjfine(struct ptp_clock_info *ptp, long scaled_ppm)
{ … }
static int fec_ptp_adjtime(struct ptp_clock_info *ptp, s64 delta)
{ … }
static int fec_ptp_gettime(struct ptp_clock_info *ptp, struct timespec64 *ts)
{ … }
static int fec_ptp_settime(struct ptp_clock_info *ptp,
const struct timespec64 *ts)
{ … }
static int fec_ptp_pps_disable(struct fec_enet_private *fep, uint channel)
{ … }
static int fec_ptp_enable(struct ptp_clock_info *ptp,
struct ptp_clock_request *rq, int on)
{ … }
int fec_ptp_set(struct net_device *ndev, struct kernel_hwtstamp_config *config,
struct netlink_ext_ack *extack)
{ … }
void fec_ptp_get(struct net_device *ndev, struct kernel_hwtstamp_config *config)
{ … }
static void fec_time_keep(struct work_struct *work)
{ … }
static irqreturn_t fec_pps_interrupt(int irq, void *dev_id)
{ … }
void fec_ptp_init(struct platform_device *pdev, int irq_idx)
{ … }
void fec_ptp_stop(struct platform_device *pdev)
{ … }