13a749623SJacob Keller /* SPDX-License-Identifier: GPL-2.0 */ 23a749623SJacob Keller /* Copyright (C) 2018-2021, Intel Corporation. */ 33a749623SJacob Keller 43a749623SJacob Keller #ifndef _ICE_PTP_CONSTS_H_ 53a749623SJacob Keller #define _ICE_PTP_CONSTS_H_ 63a749623SJacob Keller 73a749623SJacob Keller /* Constant definitions related to the hardware clock used for PTP 1588 83a749623SJacob Keller * features and functionality. 93a749623SJacob Keller */ 103a749623SJacob Keller /* Constants defined for the PTP 1588 clock hardware. */ 113a749623SJacob Keller 123a749623SJacob Keller /* struct ice_time_ref_info_e822 133a749623SJacob Keller * 143a749623SJacob Keller * E822 hardware can use different sources as the reference for the PTP 153a749623SJacob Keller * hardware clock. Each clock has different characteristics such as a slightly 163a749623SJacob Keller * different frequency, etc. 173a749623SJacob Keller * 183a749623SJacob Keller * This lookup table defines several constants that depend on the current time 193a749623SJacob Keller * reference. See the struct ice_time_ref_info_e822 for information about the 203a749623SJacob Keller * meaning of each constant. 213a749623SJacob Keller */ 223a749623SJacob Keller const struct ice_time_ref_info_e822 e822_time_ref[NUM_ICE_TIME_REF_FREQ] = { 233a749623SJacob Keller /* ICE_TIME_REF_FREQ_25_000 -> 25 MHz */ 243a749623SJacob Keller { 253a749623SJacob Keller /* pll_freq */ 263a749623SJacob Keller 823437500, /* 823.4375 MHz PLL */ 273a749623SJacob Keller /* nominal_incval */ 283a749623SJacob Keller 0x136e44fabULL, 293a749623SJacob Keller /* pps_delay */ 303a749623SJacob Keller 11, 313a749623SJacob Keller }, 323a749623SJacob Keller 333a749623SJacob Keller /* ICE_TIME_REF_FREQ_122_880 -> 122.88 MHz */ 343a749623SJacob Keller { 353a749623SJacob Keller /* pll_freq */ 363a749623SJacob Keller 783360000, /* 783.36 MHz */ 373a749623SJacob Keller /* nominal_incval */ 383a749623SJacob Keller 0x146cc2177ULL, 393a749623SJacob Keller /* pps_delay */ 403a749623SJacob Keller 12, 413a749623SJacob Keller }, 423a749623SJacob Keller 433a749623SJacob Keller /* ICE_TIME_REF_FREQ_125_000 -> 125 MHz */ 443a749623SJacob Keller { 453a749623SJacob Keller /* pll_freq */ 463a749623SJacob Keller 796875000, /* 796.875 MHz */ 473a749623SJacob Keller /* nominal_incval */ 483a749623SJacob Keller 0x141414141ULL, 493a749623SJacob Keller /* pps_delay */ 503a749623SJacob Keller 12, 513a749623SJacob Keller }, 523a749623SJacob Keller 533a749623SJacob Keller /* ICE_TIME_REF_FREQ_153_600 -> 153.6 MHz */ 543a749623SJacob Keller { 553a749623SJacob Keller /* pll_freq */ 563a749623SJacob Keller 816000000, /* 816 MHz */ 573a749623SJacob Keller /* nominal_incval */ 583a749623SJacob Keller 0x139b9b9baULL, 593a749623SJacob Keller /* pps_delay */ 603a749623SJacob Keller 12, 613a749623SJacob Keller }, 623a749623SJacob Keller 633a749623SJacob Keller /* ICE_TIME_REF_FREQ_156_250 -> 156.25 MHz */ 643a749623SJacob Keller { 653a749623SJacob Keller /* pll_freq */ 663a749623SJacob Keller 830078125, /* 830.78125 MHz */ 673a749623SJacob Keller /* nominal_incval */ 683a749623SJacob Keller 0x134679aceULL, 693a749623SJacob Keller /* pps_delay */ 703a749623SJacob Keller 11, 713a749623SJacob Keller }, 723a749623SJacob Keller 733a749623SJacob Keller /* ICE_TIME_REF_FREQ_245_760 -> 245.76 MHz */ 743a749623SJacob Keller { 753a749623SJacob Keller /* pll_freq */ 763a749623SJacob Keller 783360000, /* 783.36 MHz */ 773a749623SJacob Keller /* nominal_incval */ 783a749623SJacob Keller 0x146cc2177ULL, 793a749623SJacob Keller /* pps_delay */ 803a749623SJacob Keller 12, 813a749623SJacob Keller }, 823a749623SJacob Keller }; 833a749623SJacob Keller 84*b111ab5aSJacob Keller const struct ice_cgu_pll_params_e822 e822_cgu_params[NUM_ICE_TIME_REF_FREQ] = { 85*b111ab5aSJacob Keller /* ICE_TIME_REF_FREQ_25_000 -> 25 MHz */ 86*b111ab5aSJacob Keller { 87*b111ab5aSJacob Keller /* refclk_pre_div */ 88*b111ab5aSJacob Keller 1, 89*b111ab5aSJacob Keller /* feedback_div */ 90*b111ab5aSJacob Keller 197, 91*b111ab5aSJacob Keller /* frac_n_div */ 92*b111ab5aSJacob Keller 2621440, 93*b111ab5aSJacob Keller /* post_pll_div */ 94*b111ab5aSJacob Keller 6, 95*b111ab5aSJacob Keller }, 96*b111ab5aSJacob Keller 97*b111ab5aSJacob Keller /* ICE_TIME_REF_FREQ_122_880 -> 122.88 MHz */ 98*b111ab5aSJacob Keller { 99*b111ab5aSJacob Keller /* refclk_pre_div */ 100*b111ab5aSJacob Keller 5, 101*b111ab5aSJacob Keller /* feedback_div */ 102*b111ab5aSJacob Keller 223, 103*b111ab5aSJacob Keller /* frac_n_div */ 104*b111ab5aSJacob Keller 524288, 105*b111ab5aSJacob Keller /* post_pll_div */ 106*b111ab5aSJacob Keller 7, 107*b111ab5aSJacob Keller }, 108*b111ab5aSJacob Keller 109*b111ab5aSJacob Keller /* ICE_TIME_REF_FREQ_125_000 -> 125 MHz */ 110*b111ab5aSJacob Keller { 111*b111ab5aSJacob Keller /* refclk_pre_div */ 112*b111ab5aSJacob Keller 5, 113*b111ab5aSJacob Keller /* feedback_div */ 114*b111ab5aSJacob Keller 223, 115*b111ab5aSJacob Keller /* frac_n_div */ 116*b111ab5aSJacob Keller 524288, 117*b111ab5aSJacob Keller /* post_pll_div */ 118*b111ab5aSJacob Keller 7, 119*b111ab5aSJacob Keller }, 120*b111ab5aSJacob Keller 121*b111ab5aSJacob Keller /* ICE_TIME_REF_FREQ_153_600 -> 153.6 MHz */ 122*b111ab5aSJacob Keller { 123*b111ab5aSJacob Keller /* refclk_pre_div */ 124*b111ab5aSJacob Keller 5, 125*b111ab5aSJacob Keller /* feedback_div */ 126*b111ab5aSJacob Keller 159, 127*b111ab5aSJacob Keller /* frac_n_div */ 128*b111ab5aSJacob Keller 1572864, 129*b111ab5aSJacob Keller /* post_pll_div */ 130*b111ab5aSJacob Keller 6, 131*b111ab5aSJacob Keller }, 132*b111ab5aSJacob Keller 133*b111ab5aSJacob Keller /* ICE_TIME_REF_FREQ_156_250 -> 156.25 MHz */ 134*b111ab5aSJacob Keller { 135*b111ab5aSJacob Keller /* refclk_pre_div */ 136*b111ab5aSJacob Keller 5, 137*b111ab5aSJacob Keller /* feedback_div */ 138*b111ab5aSJacob Keller 159, 139*b111ab5aSJacob Keller /* frac_n_div */ 140*b111ab5aSJacob Keller 1572864, 141*b111ab5aSJacob Keller /* post_pll_div */ 142*b111ab5aSJacob Keller 6, 143*b111ab5aSJacob Keller }, 144*b111ab5aSJacob Keller 145*b111ab5aSJacob Keller /* ICE_TIME_REF_FREQ_245_760 -> 245.76 MHz */ 146*b111ab5aSJacob Keller { 147*b111ab5aSJacob Keller /* refclk_pre_div */ 148*b111ab5aSJacob Keller 10, 149*b111ab5aSJacob Keller /* feedback_div */ 150*b111ab5aSJacob Keller 223, 151*b111ab5aSJacob Keller /* frac_n_div */ 152*b111ab5aSJacob Keller 524288, 153*b111ab5aSJacob Keller /* post_pll_div */ 154*b111ab5aSJacob Keller 7, 155*b111ab5aSJacob Keller }, 156*b111ab5aSJacob Keller }; 157*b111ab5aSJacob Keller 1583a749623SJacob Keller /* struct ice_vernier_info_e822 1593a749623SJacob Keller * 1603a749623SJacob Keller * E822 hardware calibrates the delay of the timestamp indication from the 1613a749623SJacob Keller * actual packet transmission or reception during the initialization of the 1623a749623SJacob Keller * PHY. To do this, the hardware mechanism uses some conversions between the 1633a749623SJacob Keller * various clocks within the PHY block. This table defines constants used to 1643a749623SJacob Keller * calculate the correct conversion ratios in the PHY registers. 1653a749623SJacob Keller * 1663a749623SJacob Keller * Many of the values relate to the PAR/PCS clock conversion registers. For 1673a749623SJacob Keller * these registers, a value of 0 means that the associated register is not 1683a749623SJacob Keller * used by this link speed, and that the register should be cleared by writing 1693a749623SJacob Keller * 0. Other values specify the clock frequency in Hz. 1703a749623SJacob Keller */ 1713a749623SJacob Keller const struct ice_vernier_info_e822 e822_vernier[NUM_ICE_PTP_LNK_SPD] = { 1723a749623SJacob Keller /* ICE_PTP_LNK_SPD_1G */ 1733a749623SJacob Keller { 1743a749623SJacob Keller /* tx_par_clk */ 1753a749623SJacob Keller 31250000, /* 31.25 MHz */ 1763a749623SJacob Keller /* rx_par_clk */ 1773a749623SJacob Keller 31250000, /* 31.25 MHz */ 1783a749623SJacob Keller /* tx_pcs_clk */ 1793a749623SJacob Keller 125000000, /* 125 MHz */ 1803a749623SJacob Keller /* rx_pcs_clk */ 1813a749623SJacob Keller 125000000, /* 125 MHz */ 1823a749623SJacob Keller /* tx_desk_rsgb_par */ 1833a749623SJacob Keller 0, /* unused */ 1843a749623SJacob Keller /* rx_desk_rsgb_par */ 1853a749623SJacob Keller 0, /* unused */ 1863a749623SJacob Keller /* tx_desk_rsgb_pcs */ 1873a749623SJacob Keller 0, /* unused */ 1883a749623SJacob Keller /* rx_desk_rsgb_pcs */ 1893a749623SJacob Keller 0, /* unused */ 1903a749623SJacob Keller /* tx_fixed_delay */ 1913a749623SJacob Keller 25140, 1923a749623SJacob Keller /* pmd_adj_divisor */ 1933a749623SJacob Keller 10000000, 1943a749623SJacob Keller /* rx_fixed_delay */ 1953a749623SJacob Keller 17372, 1963a749623SJacob Keller }, 1973a749623SJacob Keller /* ICE_PTP_LNK_SPD_10G */ 1983a749623SJacob Keller { 1993a749623SJacob Keller /* tx_par_clk */ 2003a749623SJacob Keller 257812500, /* 257.8125 MHz */ 2013a749623SJacob Keller /* rx_par_clk */ 2023a749623SJacob Keller 257812500, /* 257.8125 MHz */ 2033a749623SJacob Keller /* tx_pcs_clk */ 2043a749623SJacob Keller 156250000, /* 156.25 MHz */ 2053a749623SJacob Keller /* rx_pcs_clk */ 2063a749623SJacob Keller 156250000, /* 156.25 MHz */ 2073a749623SJacob Keller /* tx_desk_rsgb_par */ 2083a749623SJacob Keller 0, /* unused */ 2093a749623SJacob Keller /* rx_desk_rsgb_par */ 2103a749623SJacob Keller 0, /* unused */ 2113a749623SJacob Keller /* tx_desk_rsgb_pcs */ 2123a749623SJacob Keller 0, /* unused */ 2133a749623SJacob Keller /* rx_desk_rsgb_pcs */ 2143a749623SJacob Keller 0, /* unused */ 2153a749623SJacob Keller /* tx_fixed_delay */ 2163a749623SJacob Keller 6938, 2173a749623SJacob Keller /* pmd_adj_divisor */ 2183a749623SJacob Keller 82500000, 2193a749623SJacob Keller /* rx_fixed_delay */ 2203a749623SJacob Keller 6212, 2213a749623SJacob Keller }, 2223a749623SJacob Keller /* ICE_PTP_LNK_SPD_25G */ 2233a749623SJacob Keller { 2243a749623SJacob Keller /* tx_par_clk */ 2253a749623SJacob Keller 644531250, /* 644.53125 MHZ */ 2263a749623SJacob Keller /* rx_par_clk */ 2273a749623SJacob Keller 644531250, /* 644.53125 MHz */ 2283a749623SJacob Keller /* tx_pcs_clk */ 2293a749623SJacob Keller 390625000, /* 390.625 MHz */ 2303a749623SJacob Keller /* rx_pcs_clk */ 2313a749623SJacob Keller 390625000, /* 390.625 MHz */ 2323a749623SJacob Keller /* tx_desk_rsgb_par */ 2333a749623SJacob Keller 0, /* unused */ 2343a749623SJacob Keller /* rx_desk_rsgb_par */ 2353a749623SJacob Keller 0, /* unused */ 2363a749623SJacob Keller /* tx_desk_rsgb_pcs */ 2373a749623SJacob Keller 0, /* unused */ 2383a749623SJacob Keller /* rx_desk_rsgb_pcs */ 2393a749623SJacob Keller 0, /* unused */ 2403a749623SJacob Keller /* tx_fixed_delay */ 2413a749623SJacob Keller 2778, 2423a749623SJacob Keller /* pmd_adj_divisor */ 2433a749623SJacob Keller 206250000, 2443a749623SJacob Keller /* rx_fixed_delay */ 2453a749623SJacob Keller 2491, 2463a749623SJacob Keller }, 2473a749623SJacob Keller /* ICE_PTP_LNK_SPD_25G_RS */ 2483a749623SJacob Keller { 2493a749623SJacob Keller /* tx_par_clk */ 2503a749623SJacob Keller 0, /* unused */ 2513a749623SJacob Keller /* rx_par_clk */ 2523a749623SJacob Keller 0, /* unused */ 2533a749623SJacob Keller /* tx_pcs_clk */ 2543a749623SJacob Keller 0, /* unused */ 2553a749623SJacob Keller /* rx_pcs_clk */ 2563a749623SJacob Keller 0, /* unused */ 2573a749623SJacob Keller /* tx_desk_rsgb_par */ 2583a749623SJacob Keller 161132812, /* 162.1328125 MHz Reed Solomon gearbox */ 2593a749623SJacob Keller /* rx_desk_rsgb_par */ 2603a749623SJacob Keller 161132812, /* 162.1328125 MHz Reed Solomon gearbox */ 2613a749623SJacob Keller /* tx_desk_rsgb_pcs */ 2623a749623SJacob Keller 97656250, /* 97.62625 MHz Reed Solomon gearbox */ 2633a749623SJacob Keller /* rx_desk_rsgb_pcs */ 2643a749623SJacob Keller 97656250, /* 97.62625 MHz Reed Solomon gearbox */ 2653a749623SJacob Keller /* tx_fixed_delay */ 2663a749623SJacob Keller 3928, 2673a749623SJacob Keller /* pmd_adj_divisor */ 2683a749623SJacob Keller 206250000, 2693a749623SJacob Keller /* rx_fixed_delay */ 2703a749623SJacob Keller 29535, 2713a749623SJacob Keller }, 2723a749623SJacob Keller /* ICE_PTP_LNK_SPD_40G */ 2733a749623SJacob Keller { 2743a749623SJacob Keller /* tx_par_clk */ 2753a749623SJacob Keller 257812500, 2763a749623SJacob Keller /* rx_par_clk */ 2773a749623SJacob Keller 257812500, 2783a749623SJacob Keller /* tx_pcs_clk */ 2793a749623SJacob Keller 156250000, /* 156.25 MHz */ 2803a749623SJacob Keller /* rx_pcs_clk */ 2813a749623SJacob Keller 156250000, /* 156.25 MHz */ 2823a749623SJacob Keller /* tx_desk_rsgb_par */ 2833a749623SJacob Keller 0, /* unused */ 2843a749623SJacob Keller /* rx_desk_rsgb_par */ 2853a749623SJacob Keller 156250000, /* 156.25 MHz deskew clock */ 2863a749623SJacob Keller /* tx_desk_rsgb_pcs */ 2873a749623SJacob Keller 0, /* unused */ 2883a749623SJacob Keller /* rx_desk_rsgb_pcs */ 2893a749623SJacob Keller 156250000, /* 156.25 MHz deskew clock */ 2903a749623SJacob Keller /* tx_fixed_delay */ 2913a749623SJacob Keller 5666, 2923a749623SJacob Keller /* pmd_adj_divisor */ 2933a749623SJacob Keller 82500000, 2943a749623SJacob Keller /* rx_fixed_delay */ 2953a749623SJacob Keller 4244, 2963a749623SJacob Keller }, 2973a749623SJacob Keller /* ICE_PTP_LNK_SPD_50G */ 2983a749623SJacob Keller { 2993a749623SJacob Keller /* tx_par_clk */ 3003a749623SJacob Keller 644531250, /* 644.53125 MHZ */ 3013a749623SJacob Keller /* rx_par_clk */ 3023a749623SJacob Keller 644531250, /* 644.53125 MHZ */ 3033a749623SJacob Keller /* tx_pcs_clk */ 3043a749623SJacob Keller 390625000, /* 390.625 MHz */ 3053a749623SJacob Keller /* rx_pcs_clk */ 3063a749623SJacob Keller 390625000, /* 390.625 MHz */ 3073a749623SJacob Keller /* tx_desk_rsgb_par */ 3083a749623SJacob Keller 0, /* unused */ 3093a749623SJacob Keller /* rx_desk_rsgb_par */ 3103a749623SJacob Keller 195312500, /* 193.3125 MHz deskew clock */ 3113a749623SJacob Keller /* tx_desk_rsgb_pcs */ 3123a749623SJacob Keller 0, /* unused */ 3133a749623SJacob Keller /* rx_desk_rsgb_pcs */ 3143a749623SJacob Keller 195312500, /* 193.3125 MHz deskew clock */ 3153a749623SJacob Keller /* tx_fixed_delay */ 3163a749623SJacob Keller 2778, 3173a749623SJacob Keller /* pmd_adj_divisor */ 3183a749623SJacob Keller 206250000, 3193a749623SJacob Keller /* rx_fixed_delay */ 3203a749623SJacob Keller 2868, 3213a749623SJacob Keller }, 3223a749623SJacob Keller /* ICE_PTP_LNK_SPD_50G_RS */ 3233a749623SJacob Keller { 3243a749623SJacob Keller /* tx_par_clk */ 3253a749623SJacob Keller 0, /* unused */ 3263a749623SJacob Keller /* rx_par_clk */ 3273a749623SJacob Keller 644531250, /* 644.53125 MHz */ 3283a749623SJacob Keller /* tx_pcs_clk */ 3293a749623SJacob Keller 0, /* unused */ 3303a749623SJacob Keller /* rx_pcs_clk */ 3313a749623SJacob Keller 644531250, /* 644.53125 MHz */ 3323a749623SJacob Keller /* tx_desk_rsgb_par */ 3333a749623SJacob Keller 322265625, /* 322.265625 MHz Reed Solomon gearbox */ 3343a749623SJacob Keller /* rx_desk_rsgb_par */ 3353a749623SJacob Keller 322265625, /* 322.265625 MHz Reed Solomon gearbox */ 3363a749623SJacob Keller /* tx_desk_rsgb_pcs */ 3373a749623SJacob Keller 644531250, /* 644.53125 MHz Reed Solomon gearbox */ 3383a749623SJacob Keller /* rx_desk_rsgb_pcs */ 3393a749623SJacob Keller 644531250, /* 644.53125 MHz Reed Solomon gearbox */ 3403a749623SJacob Keller /* tx_fixed_delay */ 3413a749623SJacob Keller 2095, 3423a749623SJacob Keller /* pmd_adj_divisor */ 3433a749623SJacob Keller 206250000, 3443a749623SJacob Keller /* rx_fixed_delay */ 3453a749623SJacob Keller 14524, 3463a749623SJacob Keller }, 3473a749623SJacob Keller /* ICE_PTP_LNK_SPD_100G_RS */ 3483a749623SJacob Keller { 3493a749623SJacob Keller /* tx_par_clk */ 3503a749623SJacob Keller 0, /* unused */ 3513a749623SJacob Keller /* rx_par_clk */ 3523a749623SJacob Keller 644531250, /* 644.53125 MHz */ 3533a749623SJacob Keller /* tx_pcs_clk */ 3543a749623SJacob Keller 0, /* unused */ 3553a749623SJacob Keller /* rx_pcs_clk */ 3563a749623SJacob Keller 644531250, /* 644.53125 MHz */ 3573a749623SJacob Keller /* tx_desk_rsgb_par */ 3583a749623SJacob Keller 644531250, /* 644.53125 MHz Reed Solomon gearbox */ 3593a749623SJacob Keller /* rx_desk_rsgb_par */ 3603a749623SJacob Keller 644531250, /* 644.53125 MHz Reed Solomon gearbox */ 3613a749623SJacob Keller /* tx_desk_rsgb_pcs */ 3623a749623SJacob Keller 644531250, /* 644.53125 MHz Reed Solomon gearbox */ 3633a749623SJacob Keller /* rx_desk_rsgb_pcs */ 3643a749623SJacob Keller 644531250, /* 644.53125 MHz Reed Solomon gearbox */ 3653a749623SJacob Keller /* tx_fixed_delay */ 3663a749623SJacob Keller 1620, 3673a749623SJacob Keller /* pmd_adj_divisor */ 3683a749623SJacob Keller 206250000, 3693a749623SJacob Keller /* rx_fixed_delay */ 3703a749623SJacob Keller 7775, 3713a749623SJacob Keller }, 3723a749623SJacob Keller }; 3733a749623SJacob Keller 3743a749623SJacob Keller #endif /* _ICE_PTP_CONSTS_H_ */ 375