| /* 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_ */ |