1ddfecafab
The RENESAS FemtoClock3 Wireless is a high-performance jitter attenuator, frequency translator, and clock synthesizer. The device is comprised of 3 digital PLLs (DPLL) to track CLKIN inputs and three independent low phase noise fractional output dividers (FOD) that output low phase noise clocks. FemtoClock3 supports one Time Synchronization (Time Sync) channel to enable an external processor to control the phase and frequency of the Time Sync channel and to take phase measurements using the TDC. Intended applications are synchronization using the precision time protocol (PTP) and synchronization with 0.5 Hz and 1 Hz signals from GNSS. Signed-off-by: Min Li <min.li.xe@renesas.com> Acked-by: Lee Jones <lee@kernel.org> Signed-off-by: David S. Miller <davem@davemloft.net>
46 lines
1022 B
C
46 lines
1022 B
C
/* SPDX-License-Identifier: GPL-2.0+ */
|
|
/*
|
|
* PTP hardware clock driver for the FemtoClock3 family of timing and
|
|
* synchronization devices.
|
|
*
|
|
* Copyright (C) 2023 Integrated Device Technology, Inc., a Renesas Company.
|
|
*/
|
|
#ifndef PTP_IDTFC3_H
|
|
#define PTP_IDTFC3_H
|
|
|
|
#include <linux/ktime.h>
|
|
#include <linux/ptp_clock.h>
|
|
#include <linux/regmap.h>
|
|
|
|
#define FW_FILENAME "idtfc3.bin"
|
|
|
|
#define MAX_FFO_PPB (244000)
|
|
#define TDC_GET_PERIOD (10)
|
|
|
|
struct idtfc3 {
|
|
struct ptp_clock_info caps;
|
|
struct ptp_clock *ptp_clock;
|
|
struct device *dev;
|
|
/* Mutex to protect operations from being interrupted */
|
|
struct mutex *lock;
|
|
struct device *mfd;
|
|
struct regmap *regmap;
|
|
struct idtfc3_hw_param hw_param;
|
|
u32 sub_sync_count;
|
|
u32 ns_per_sync;
|
|
int tdc_offset_sign;
|
|
u64 tdc_apll_freq;
|
|
u32 time_ref_freq;
|
|
u16 fod_n;
|
|
u8 lpf_mode;
|
|
/* Time counter */
|
|
u32 last_counter;
|
|
s64 ns;
|
|
u32 ns_per_counter;
|
|
u32 tc_update_period;
|
|
u32 tc_write_timeout;
|
|
s64 tod_write_overhead;
|
|
};
|
|
|
|
#endif /* PTP_IDTFC3_H */
|