diff options
author | Min Li <min.li.xe@renesas.com> | 2022-05-16 10:47:06 -0400 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2022-05-17 17:49:04 -0700 |
commit | bec67592521ec816371f5f072b1a340e1c2ad434 (patch) | |
tree | 78896d64f1988052b8a905195bdf933178ba5803 /drivers/ptp/ptp_clockmatrix.h | |
parent | 5ff0348b7f755aac2770bbfc244f5371e4e55224 (diff) | |
download | linux-stable-bec67592521ec816371f5f072b1a340e1c2ad434.tar.gz linux-stable-bec67592521ec816371f5f072b1a340e1c2ad434.tar.bz2 linux-stable-bec67592521ec816371f5f072b1a340e1c2ad434.zip |
ptp: ptp_clockmatrix: Add PTP_CLK_REQ_EXTTS support
Use TOD_READ_SECONDARY for extts to keep TOD_READ_PRIMARY
for gettime and settime exclusively. Before this change,
TOD_READ_PRIMARY was used for both extts and gettime/settime,
which would result in changing TOD read/write triggers between
operations. Using TOD_READ_SECONDARY would make extts
independent of gettime/settime operation
Signed-off-by: Min Li <min.li.xe@renesas.com>
Acked-by: Richard Cochran <richardcochran@gmail.com>
Link: https://lore.kernel.org/r/1652712427-14703-1-git-send-email-min.li.xe@renesas.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'drivers/ptp/ptp_clockmatrix.h')
-rw-r--r-- | drivers/ptp/ptp_clockmatrix.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/ptp/ptp_clockmatrix.h b/drivers/ptp/ptp_clockmatrix.h index 0f3059ae1fff..43796508031f 100644 --- a/drivers/ptp/ptp_clockmatrix.h +++ b/drivers/ptp/ptp_clockmatrix.h @@ -10,11 +10,13 @@ #include <linux/ktime.h> #include <linux/mfd/idt8a340_reg.h> +#include <linux/ptp_clock.h> #include <linux/regmap.h> #define FW_FILENAME "idtcm.bin" #define MAX_TOD (4) #define MAX_PLL (8) +#define MAX_REF_CLK (16) #define MAX_ABS_WRITE_PHASE_PICOSECONDS (107374182350LL) @@ -90,6 +92,7 @@ struct idtcm_channel { u16 dpll_ctrl_n; u16 dpll_phase_pull_in; u16 tod_read_primary; + u16 tod_read_secondary; u16 tod_write; u16 tod_n; u16 hw_dpll_n; @@ -105,6 +108,7 @@ struct idtcm_channel { /* last input trigger for extts */ u8 refn; u8 pll; + u8 tod; u16 output_mask; }; @@ -116,6 +120,7 @@ struct idtcm { enum fw_version fw_ver; /* Polls for external time stamps */ u8 extts_mask; + bool extts_single_shot; struct delayed_work extts_work; /* Remember the ptp channel to report extts */ struct idtcm_channel *event_channel[MAX_TOD]; |