/* SPDX-License-Identifier: GPL-2.0 */ /* Copyright (C) 2018-2021, Intel Corporation. */ #ifndef _ICE_PTP_CONSTS_H_ #define _ICE_PTP_CONSTS_H_ /* Constant definitions related to the hardware clock used for PTP 1588 * features and functionality. */ /* Constants defined for the PTP 1588 clock hardware. */ /* struct ice_time_ref_info_e82x * * E822 hardware can use different sources as the reference for the PTP * hardware clock. Each clock has different characteristics such as a slightly * different frequency, etc. * * This lookup table defines several constants that depend on the current time * reference. See the struct ice_time_ref_info_e82x for information about the * meaning of each constant. */ const struct ice_time_ref_info_e82x e822_time_ref[NUM_ICE_TIME_REF_FREQ] = { /* ICE_TIME_REF_FREQ_25_000 -> 25 MHz */ { /* pll_freq */ 823437500, /* 823.4375 MHz PLL */ /* nominal_incval */ 0x136e44fabULL, /* pps_delay */ 11, }, /* ICE_TIME_REF_FREQ_122_880 -> 122.88 MHz */ { /* pll_freq */ 783360000, /* 783.36 MHz */ /* nominal_incval */ 0x146cc2177ULL, /* pps_delay */ 12, }, /* ICE_TIME_REF_FREQ_125_000 -> 125 MHz */ { /* pll_freq */ 796875000, /* 796.875 MHz */ /* nominal_incval */ 0x141414141ULL, /* pps_delay */ 12, }, /* ICE_TIME_REF_FREQ_153_600 -> 153.6 MHz */ { /* pll_freq */ 816000000, /* 816 MHz */ /* nominal_incval */ 0x139b9b9baULL, /* pps_delay */ 12, }, /* ICE_TIME_REF_FREQ_156_250 -> 156.25 MHz */ { /* pll_freq */ 830078125, /* 830.78125 MHz */ /* nominal_incval */ 0x134679aceULL, /* pps_delay */ 11, }, /* ICE_TIME_REF_FREQ_245_760 -> 245.76 MHz */ { /* pll_freq */ 783360000, /* 783.36 MHz */ /* nominal_incval */ 0x146cc2177ULL, /* pps_delay */ 12, }, }; const struct ice_cgu_pll_params_e82x e822_cgu_params[NUM_ICE_TIME_REF_FREQ] = { /* ICE_TIME_REF_FREQ_25_000 -> 25 MHz */ { /* refclk_pre_div */ 1, /* feedback_div */ 197, /* frac_n_div */ 2621440, /* post_pll_div */ 6, }, /* ICE_TIME_REF_FREQ_122_880 -> 122.88 MHz */ { /* refclk_pre_div */ 5, /* feedback_div */ 223, /* frac_n_div */ 524288, /* post_pll_div */ 7, }, /* ICE_TIME_REF_FREQ_125_000 -> 125 MHz */ { /* refclk_pre_div */ 5, /* feedback_div */ 223, /* frac_n_div */ 524288, /* post_pll_div */ 7, }, /* ICE_TIME_REF_FREQ_153_600 -> 153.6 MHz */ { /* refclk_pre_div */ 5, /* feedback_div */ 159, /* frac_n_div */ 1572864, /* post_pll_div */ 6, }, /* ICE_TIME_REF_FREQ_156_250 -> 156.25 MHz */ { /* refclk_pre_div */ 5, /* feedback_div */ 159, /* frac_n_div */ 1572864, /* post_pll_div */ 6, }, /* ICE_TIME_REF_FREQ_245_760 -> 245.76 MHz */ { /* refclk_pre_div */ 10, /* feedback_div */ 223, /* frac_n_div */ 524288, /* post_pll_div */ 7, }, }; /* struct ice_vernier_info_e82x * * E822 hardware calibrates the delay of the timestamp indication from the * actual packet transmission or reception during the initialization of the * PHY. To do this, the hardware mechanism uses some conversions between the * various clocks within the PHY block. This table defines constants used to * calculate the correct conversion ratios in the PHY registers. * * Many of the values relate to the PAR/PCS clock conversion registers. For * these registers, a value of 0 means that the associated register is not * used by this link speed, and that the register should be cleared by writing * 0. Other values specify the clock frequency in Hz. */ const struct ice_vernier_info_e82x e822_vernier[NUM_ICE_PTP_LNK_SPD] = { /* ICE_PTP_LNK_SPD_1G */ { /* tx_par_clk */ 31250000, /* 31.25 MHz */ /* rx_par_clk */ 31250000, /* 31.25 MHz */ /* tx_pcs_clk */ 125000000, /* 125 MHz */ /* rx_pcs_clk */ 125000000, /* 125 MHz */ /* tx_desk_rsgb_par */ 0, /* unused */ /* rx_desk_rsgb_par */ 0, /* unused */ /* tx_desk_rsgb_pcs */ 0, /* unused */ /* rx_desk_rsgb_pcs */ 0, /* unused */ /* tx_fixed_delay */ 25140, /* pmd_adj_divisor */ 10000000, /* rx_fixed_delay */ 17372, }, /* ICE_PTP_LNK_SPD_10G */ { /* tx_par_clk */ 257812500, /* 257.8125 MHz */ /* rx_par_clk */ 257812500, /* 257.8125 MHz */ /* tx_pcs_clk */ 156250000, /* 156.25 MHz */ /* rx_pcs_clk */ 156250000, /* 156.25 MHz */ /* tx_desk_rsgb_par */ 0, /* unused */ /* rx_desk_rsgb_par */ 0, /* unused */ /* tx_desk_rsgb_pcs */ 0, /* unused */ /* rx_desk_rsgb_pcs */ 0, /* unused */ /* tx_fixed_delay */ 6938, /* pmd_adj_divisor */ 82500000, /* rx_fixed_delay */ 6212, }, /* ICE_PTP_LNK_SPD_25G */ { /* tx_par_clk */ 644531250, /* 644.53125 MHZ */ /* rx_par_clk */ 644531250, /* 644.53125 MHz */ /* tx_pcs_clk */ 390625000, /* 390.625 MHz */ /* rx_pcs_clk */ 390625000, /* 390.625 MHz */ /* tx_desk_rsgb_par */ 0, /* unused */ /* rx_desk_rsgb_par */ 0, /* unused */ /* tx_desk_rsgb_pcs */ 0, /* unused */ /* rx_desk_rsgb_pcs */ 0, /* unused */ /* tx_fixed_delay */ 2778, /* pmd_adj_divisor */ 206250000, /* rx_fixed_delay */ 2491, }, /* ICE_PTP_LNK_SPD_25G_RS */ { /* tx_par_clk */ 0, /* unused */ /* rx_par_clk */ 0, /* unused */ /* tx_pcs_clk */ 0, /* unused */ /* rx_pcs_clk */ 0, /* unused */ /* tx_desk_rsgb_par */ 161132812, /* 162.1328125 MHz Reed Solomon gearbox */ /* rx_desk_rsgb_par */ 161132812, /* 162.1328125 MHz Reed Solomon gearbox */ /* tx_desk_rsgb_pcs */ 97656250, /* 97.62625 MHz Reed Solomon gearbox */ /* rx_desk_rsgb_pcs */ 97656250, /* 97.62625 MHz Reed Solomon gearbox */ /* tx_fixed_delay */ 3928, /* pmd_adj_divisor */ 206250000, /* rx_fixed_delay */ 29535, }, /* ICE_PTP_LNK_SPD_40G */ { /* tx_par_clk */ 257812500, /* rx_par_clk */ 257812500, /* tx_pcs_clk */ 156250000, /* 156.25 MHz */ /* rx_pcs_clk */ 156250000, /* 156.25 MHz */ /* tx_desk_rsgb_par */ 0, /* unused */ /* rx_desk_rsgb_par */ 156250000, /* 156.25 MHz deskew clock */ /* tx_desk_rsgb_pcs */ 0, /* unused */ /* rx_desk_rsgb_pcs */ 156250000, /* 156.25 MHz deskew clock */ /* tx_fixed_delay */ 5666, /* pmd_adj_divisor */ 82500000, /* rx_fixed_delay */ 4244, }, /* ICE_PTP_LNK_SPD_50G */ { /* tx_par_clk */ 644531250, /* 644.53125 MHZ */ /* rx_par_clk */ 644531250, /* 644.53125 MHZ */ /* tx_pcs_clk */ 390625000, /* 390.625 MHz */ /* rx_pcs_clk */ 390625000, /* 390.625 MHz */ /* tx_desk_rsgb_par */ 0, /* unused */ /* rx_desk_rsgb_par */ 195312500, /* 193.3125 MHz deskew clock */ /* tx_desk_rsgb_pcs */ 0, /* unused */ /* rx_desk_rsgb_pcs */ 195312500, /* 193.3125 MHz deskew clock */ /* tx_fixed_delay */ 2778, /* pmd_adj_divisor */ 206250000, /* rx_fixed_delay */ 2868, }, /* ICE_PTP_LNK_SPD_50G_RS */ { /* tx_par_clk */ 0, /* unused */ /* rx_par_clk */ 644531250, /* 644.53125 MHz */ /* tx_pcs_clk */ 0, /* unused */ /* rx_pcs_clk */ 644531250, /* 644.53125 MHz */ /* tx_desk_rsgb_par */ 322265625, /* 322.265625 MHz Reed Solomon gearbox */ /* rx_desk_rsgb_par */ 322265625, /* 322.265625 MHz Reed Solomon gearbox */ /* tx_desk_rsgb_pcs */ 644531250, /* 644.53125 MHz Reed Solomon gearbox */ /* rx_desk_rsgb_pcs */ 644531250, /* 644.53125 MHz Reed Solomon gearbox */ /* tx_fixed_delay */ 2095, /* pmd_adj_divisor */ 206250000, /* rx_fixed_delay */ 14524, }, /* ICE_PTP_LNK_SPD_100G_RS */ { /* tx_par_clk */ 0, /* unused */ /* rx_par_clk */ 644531250, /* 644.53125 MHz */ /* tx_pcs_clk */ 0, /* unused */ /* rx_pcs_clk */ 644531250, /* 644.53125 MHz */ /* tx_desk_rsgb_par */ 644531250, /* 644.53125 MHz Reed Solomon gearbox */ /* rx_desk_rsgb_par */ 644531250, /* 644.53125 MHz Reed Solomon gearbox */ /* tx_desk_rsgb_pcs */ 644531250, /* 644.53125 MHz Reed Solomon gearbox */ /* rx_desk_rsgb_pcs */ 644531250, /* 644.53125 MHz Reed Solomon gearbox */ /* tx_fixed_delay */ 1620, /* pmd_adj_divisor */ 206250000, /* rx_fixed_delay */ 7775, }, }; #endif /* _ICE_PTP_CONSTS_H_ */