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