]> Git Repo - linux.git/blob - drivers/net/ethernet/intel/ice/ice_ptp_consts.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
[linux.git] / drivers / net / ethernet / intel / ice / ice_ptp_consts.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /* Copyright (C) 2018-2021, Intel Corporation. */
3
4 #ifndef _ICE_PTP_CONSTS_H_
5 #define _ICE_PTP_CONSTS_H_
6
7 /* Constant definitions related to the hardware clock used for PTP 1588
8  * features and functionality.
9  */
10 /* Constants defined for the PTP 1588 clock hardware. */
11
12 /* struct ice_time_ref_info_e822
13  *
14  * E822 hardware can use different sources as the reference for the PTP
15  * hardware clock. Each clock has different characteristics such as a slightly
16  * different frequency, etc.
17  *
18  * This lookup table defines several constants that depend on the current time
19  * reference. See the struct ice_time_ref_info_e822 for information about the
20  * meaning of each constant.
21  */
22 const struct ice_time_ref_info_e822 e822_time_ref[NUM_ICE_TIME_REF_FREQ] = {
23         /* ICE_TIME_REF_FREQ_25_000 -> 25 MHz */
24         {
25                 /* pll_freq */
26                 823437500, /* 823.4375 MHz PLL */
27                 /* nominal_incval */
28                 0x136e44fabULL,
29                 /* pps_delay */
30                 11,
31         },
32
33         /* ICE_TIME_REF_FREQ_122_880 -> 122.88 MHz */
34         {
35                 /* pll_freq */
36                 783360000, /* 783.36 MHz */
37                 /* nominal_incval */
38                 0x146cc2177ULL,
39                 /* pps_delay */
40                 12,
41         },
42
43         /* ICE_TIME_REF_FREQ_125_000 -> 125 MHz */
44         {
45                 /* pll_freq */
46                 796875000, /* 796.875 MHz */
47                 /* nominal_incval */
48                 0x141414141ULL,
49                 /* pps_delay */
50                 12,
51         },
52
53         /* ICE_TIME_REF_FREQ_153_600 -> 153.6 MHz */
54         {
55                 /* pll_freq */
56                 816000000, /* 816 MHz */
57                 /* nominal_incval */
58                 0x139b9b9baULL,
59                 /* pps_delay */
60                 12,
61         },
62
63         /* ICE_TIME_REF_FREQ_156_250 -> 156.25 MHz */
64         {
65                 /* pll_freq */
66                 830078125, /* 830.78125 MHz */
67                 /* nominal_incval */
68                 0x134679aceULL,
69                 /* pps_delay */
70                 11,
71         },
72
73         /* ICE_TIME_REF_FREQ_245_760 -> 245.76 MHz */
74         {
75                 /* pll_freq */
76                 783360000, /* 783.36 MHz */
77                 /* nominal_incval */
78                 0x146cc2177ULL,
79                 /* pps_delay */
80                 12,
81         },
82 };
83
84 const struct ice_cgu_pll_params_e822 e822_cgu_params[NUM_ICE_TIME_REF_FREQ] = {
85         /* ICE_TIME_REF_FREQ_25_000 -> 25 MHz */
86         {
87                 /* refclk_pre_div */
88                 1,
89                 /* feedback_div */
90                 197,
91                 /* frac_n_div */
92                 2621440,
93                 /* post_pll_div */
94                 6,
95         },
96
97         /* ICE_TIME_REF_FREQ_122_880 -> 122.88 MHz */
98         {
99                 /* refclk_pre_div */
100                 5,
101                 /* feedback_div */
102                 223,
103                 /* frac_n_div */
104                 524288,
105                 /* post_pll_div */
106                 7,
107         },
108
109         /* ICE_TIME_REF_FREQ_125_000 -> 125 MHz */
110         {
111                 /* refclk_pre_div */
112                 5,
113                 /* feedback_div */
114                 223,
115                 /* frac_n_div */
116                 524288,
117                 /* post_pll_div */
118                 7,
119         },
120
121         /* ICE_TIME_REF_FREQ_153_600 -> 153.6 MHz */
122         {
123                 /* refclk_pre_div */
124                 5,
125                 /* feedback_div */
126                 159,
127                 /* frac_n_div */
128                 1572864,
129                 /* post_pll_div */
130                 6,
131         },
132
133         /* ICE_TIME_REF_FREQ_156_250 -> 156.25 MHz */
134         {
135                 /* refclk_pre_div */
136                 5,
137                 /* feedback_div */
138                 159,
139                 /* frac_n_div */
140                 1572864,
141                 /* post_pll_div */
142                 6,
143         },
144
145         /* ICE_TIME_REF_FREQ_245_760 -> 245.76 MHz */
146         {
147                 /* refclk_pre_div */
148                 10,
149                 /* feedback_div */
150                 223,
151                 /* frac_n_div */
152                 524288,
153                 /* post_pll_div */
154                 7,
155         },
156 };
157
158 /* struct ice_vernier_info_e822
159  *
160  * E822 hardware calibrates the delay of the timestamp indication from the
161  * actual packet transmission or reception during the initialization of the
162  * PHY. To do this, the hardware mechanism uses some conversions between the
163  * various clocks within the PHY block. This table defines constants used to
164  * calculate the correct conversion ratios in the PHY registers.
165  *
166  * Many of the values relate to the PAR/PCS clock conversion registers. For
167  * these registers, a value of 0 means that the associated register is not
168  * used by this link speed, and that the register should be cleared by writing
169  * 0. Other values specify the clock frequency in Hz.
170  */
171 const struct ice_vernier_info_e822 e822_vernier[NUM_ICE_PTP_LNK_SPD] = {
172         /* ICE_PTP_LNK_SPD_1G */
173         {
174                 /* tx_par_clk */
175                 31250000, /* 31.25 MHz */
176                 /* rx_par_clk */
177                 31250000, /* 31.25 MHz */
178                 /* tx_pcs_clk */
179                 125000000, /* 125 MHz */
180                 /* rx_pcs_clk */
181                 125000000, /* 125 MHz */
182                 /* tx_desk_rsgb_par */
183                 0, /* unused */
184                 /* rx_desk_rsgb_par */
185                 0, /* unused */
186                 /* tx_desk_rsgb_pcs */
187                 0, /* unused */
188                 /* rx_desk_rsgb_pcs */
189                 0, /* unused */
190                 /* tx_fixed_delay */
191                 25140,
192                 /* pmd_adj_divisor */
193                 10000000,
194                 /* rx_fixed_delay */
195                 17372,
196         },
197         /* ICE_PTP_LNK_SPD_10G */
198         {
199                 /* tx_par_clk */
200                 257812500, /* 257.8125 MHz */
201                 /* rx_par_clk */
202                 257812500, /* 257.8125 MHz */
203                 /* tx_pcs_clk */
204                 156250000, /* 156.25 MHz */
205                 /* rx_pcs_clk */
206                 156250000, /* 156.25 MHz */
207                 /* tx_desk_rsgb_par */
208                 0, /* unused */
209                 /* rx_desk_rsgb_par */
210                 0, /* unused */
211                 /* tx_desk_rsgb_pcs */
212                 0, /* unused */
213                 /* rx_desk_rsgb_pcs */
214                 0, /* unused */
215                 /* tx_fixed_delay */
216                 6938,
217                 /* pmd_adj_divisor */
218                 82500000,
219                 /* rx_fixed_delay */
220                 6212,
221         },
222         /* ICE_PTP_LNK_SPD_25G */
223         {
224                 /* tx_par_clk */
225                 644531250, /* 644.53125 MHZ */
226                 /* rx_par_clk */
227                 644531250, /* 644.53125 MHz */
228                 /* tx_pcs_clk */
229                 390625000, /* 390.625 MHz */
230                 /* rx_pcs_clk */
231                 390625000, /* 390.625 MHz */
232                 /* tx_desk_rsgb_par */
233                 0, /* unused */
234                 /* rx_desk_rsgb_par */
235                 0, /* unused */
236                 /* tx_desk_rsgb_pcs */
237                 0, /* unused */
238                 /* rx_desk_rsgb_pcs */
239                 0, /* unused */
240                 /* tx_fixed_delay */
241                 2778,
242                 /* pmd_adj_divisor */
243                 206250000,
244                 /* rx_fixed_delay */
245                 2491,
246         },
247         /* ICE_PTP_LNK_SPD_25G_RS */
248         {
249                 /* tx_par_clk */
250                 0, /* unused */
251                 /* rx_par_clk */
252                 0, /* unused */
253                 /* tx_pcs_clk */
254                 0, /* unused */
255                 /* rx_pcs_clk */
256                 0, /* unused */
257                 /* tx_desk_rsgb_par */
258                 161132812, /* 162.1328125 MHz Reed Solomon gearbox */
259                 /* rx_desk_rsgb_par */
260                 161132812, /* 162.1328125 MHz Reed Solomon gearbox */
261                 /* tx_desk_rsgb_pcs */
262                 97656250, /* 97.62625 MHz Reed Solomon gearbox */
263                 /* rx_desk_rsgb_pcs */
264                 97656250, /* 97.62625 MHz Reed Solomon gearbox */
265                 /* tx_fixed_delay */
266                 3928,
267                 /* pmd_adj_divisor */
268                 206250000,
269                 /* rx_fixed_delay */
270                 29535,
271         },
272         /* ICE_PTP_LNK_SPD_40G */
273         {
274                 /* tx_par_clk */
275                 257812500,
276                 /* rx_par_clk */
277                 257812500,
278                 /* tx_pcs_clk */
279                 156250000, /* 156.25 MHz */
280                 /* rx_pcs_clk */
281                 156250000, /* 156.25 MHz */
282                 /* tx_desk_rsgb_par */
283                 0, /* unused */
284                 /* rx_desk_rsgb_par */
285                 156250000, /* 156.25 MHz deskew clock */
286                 /* tx_desk_rsgb_pcs */
287                 0, /* unused */
288                 /* rx_desk_rsgb_pcs */
289                 156250000, /* 156.25 MHz deskew clock */
290                 /* tx_fixed_delay */
291                 5666,
292                 /* pmd_adj_divisor */
293                 82500000,
294                 /* rx_fixed_delay */
295                 4244,
296         },
297         /* ICE_PTP_LNK_SPD_50G */
298         {
299                 /* tx_par_clk */
300                 644531250, /* 644.53125 MHZ */
301                 /* rx_par_clk */
302                 644531250, /* 644.53125 MHZ */
303                 /* tx_pcs_clk */
304                 390625000, /* 390.625 MHz */
305                 /* rx_pcs_clk */
306                 390625000, /* 390.625 MHz */
307                 /* tx_desk_rsgb_par */
308                 0, /* unused */
309                 /* rx_desk_rsgb_par */
310                 195312500, /* 193.3125 MHz deskew clock */
311                 /* tx_desk_rsgb_pcs */
312                 0, /* unused */
313                 /* rx_desk_rsgb_pcs */
314                 195312500, /* 193.3125 MHz deskew clock */
315                 /* tx_fixed_delay */
316                 2778,
317                 /* pmd_adj_divisor */
318                 206250000,
319                 /* rx_fixed_delay */
320                 2868,
321         },
322         /* ICE_PTP_LNK_SPD_50G_RS */
323         {
324                 /* tx_par_clk */
325                 0, /* unused */
326                 /* rx_par_clk */
327                 644531250, /* 644.53125 MHz */
328                 /* tx_pcs_clk */
329                 0, /* unused */
330                 /* rx_pcs_clk */
331                 644531250, /* 644.53125 MHz */
332                 /* tx_desk_rsgb_par */
333                 322265625, /* 322.265625 MHz Reed Solomon gearbox */
334                 /* rx_desk_rsgb_par */
335                 322265625, /* 322.265625 MHz Reed Solomon gearbox */
336                 /* tx_desk_rsgb_pcs */
337                 644531250, /* 644.53125 MHz Reed Solomon gearbox */
338                 /* rx_desk_rsgb_pcs */
339                 644531250, /* 644.53125 MHz Reed Solomon gearbox */
340                 /* tx_fixed_delay */
341                 2095,
342                 /* pmd_adj_divisor */
343                 206250000,
344                 /* rx_fixed_delay */
345                 14524,
346         },
347         /* ICE_PTP_LNK_SPD_100G_RS */
348         {
349                 /* tx_par_clk */
350                 0, /* unused */
351                 /* rx_par_clk */
352                 644531250, /* 644.53125 MHz */
353                 /* tx_pcs_clk */
354                 0, /* unused */
355                 /* rx_pcs_clk */
356                 644531250, /* 644.53125 MHz */
357                 /* tx_desk_rsgb_par */
358                 644531250, /* 644.53125 MHz Reed Solomon gearbox */
359                 /* rx_desk_rsgb_par */
360                 644531250, /* 644.53125 MHz Reed Solomon gearbox */
361                 /* tx_desk_rsgb_pcs */
362                 644531250, /* 644.53125 MHz Reed Solomon gearbox */
363                 /* rx_desk_rsgb_pcs */
364                 644531250, /* 644.53125 MHz Reed Solomon gearbox */
365                 /* tx_fixed_delay */
366                 1620,
367                 /* pmd_adj_divisor */
368                 206250000,
369                 /* rx_fixed_delay */
370                 7775,
371         },
372 };
373
374 #endif /* _ICE_PTP_CONSTS_H_ */
This page took 0.061081 seconds and 4 git commands to generate.