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