1 /***********************license start*************** 2 * Author: Cavium Networks 3 * 4 * Contact: support@caviumnetworks.com 5 * This file is part of the OCTEON SDK 6 * 7 * Copyright (c) 2003-2008 Cavium Networks 8 * 9 * This file is free software; you can redistribute it and/or modify 10 * it under the terms of the GNU General Public License, Version 2, as 11 * published by the Free Software Foundation. 12 * 13 * This file is distributed in the hope that it will be useful, but 14 * AS-IS and WITHOUT ANY WARRANTY; without even the implied warranty 15 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, TITLE, or 16 * NONINFRINGEMENT. See the GNU General Public License for more 17 * details. 18 * 19 * You should have received a copy of the GNU General Public License 20 * along with this file; if not, write to the Free Software 21 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 22 * or visit http://www.gnu.org/licenses/. 23 * 24 * This file may also be available under a different license from Cavium. 25 * Contact Cavium Networks for more information 26 ***********************license end**************************************/ 27 28 #ifndef __CVMX_IPD_DEFS_H__ 29 #define __CVMX_IPD_DEFS_H__ 30 31 #define CVMX_IPD_1ST_MBUFF_SKIP \ 32 CVMX_ADD_IO_SEG(0x00014F0000000000ull) 33 #define CVMX_IPD_1st_NEXT_PTR_BACK \ 34 CVMX_ADD_IO_SEG(0x00014F0000000150ull) 35 #define CVMX_IPD_2nd_NEXT_PTR_BACK \ 36 CVMX_ADD_IO_SEG(0x00014F0000000158ull) 37 #define CVMX_IPD_BIST_STATUS \ 38 CVMX_ADD_IO_SEG(0x00014F00000007F8ull) 39 #define CVMX_IPD_BP_PRT_RED_END \ 40 CVMX_ADD_IO_SEG(0x00014F0000000328ull) 41 #define CVMX_IPD_CLK_COUNT \ 42 CVMX_ADD_IO_SEG(0x00014F0000000338ull) 43 #define CVMX_IPD_CTL_STATUS \ 44 CVMX_ADD_IO_SEG(0x00014F0000000018ull) 45 #define CVMX_IPD_INT_ENB \ 46 CVMX_ADD_IO_SEG(0x00014F0000000160ull) 47 #define CVMX_IPD_INT_SUM \ 48 CVMX_ADD_IO_SEG(0x00014F0000000168ull) 49 #define CVMX_IPD_NOT_1ST_MBUFF_SKIP \ 50 CVMX_ADD_IO_SEG(0x00014F0000000008ull) 51 #define CVMX_IPD_PACKET_MBUFF_SIZE \ 52 CVMX_ADD_IO_SEG(0x00014F0000000010ull) 53 #define CVMX_IPD_PKT_PTR_VALID \ 54 CVMX_ADD_IO_SEG(0x00014F0000000358ull) 55 #define CVMX_IPD_PORTX_BP_PAGE_CNT(offset) \ 56 CVMX_ADD_IO_SEG(0x00014F0000000028ull + (((offset) & 63) * 8)) 57 #define CVMX_IPD_PORTX_BP_PAGE_CNT2(offset) \ 58 CVMX_ADD_IO_SEG(0x00014F0000000368ull + (((offset) & 63) * 8) - 8 * 36) 59 #define CVMX_IPD_PORT_BP_COUNTERS2_PAIRX(offset) \ 60 CVMX_ADD_IO_SEG(0x00014F0000000388ull + (((offset) & 63) * 8) - 8 * 36) 61 #define CVMX_IPD_PORT_BP_COUNTERS_PAIRX(offset) \ 62 CVMX_ADD_IO_SEG(0x00014F00000001B8ull + (((offset) & 63) * 8)) 63 #define CVMX_IPD_PORT_QOS_INTX(offset) \ 64 CVMX_ADD_IO_SEG(0x00014F0000000808ull + (((offset) & 7) * 8)) 65 #define CVMX_IPD_PORT_QOS_INT_ENBX(offset) \ 66 CVMX_ADD_IO_SEG(0x00014F0000000848ull + (((offset) & 7) * 8)) 67 #define CVMX_IPD_PORT_QOS_X_CNT(offset) \ 68 CVMX_ADD_IO_SEG(0x00014F0000000888ull + (((offset) & 511) * 8)) 69 #define CVMX_IPD_PRC_HOLD_PTR_FIFO_CTL \ 70 CVMX_ADD_IO_SEG(0x00014F0000000348ull) 71 #define CVMX_IPD_PRC_PORT_PTR_FIFO_CTL \ 72 CVMX_ADD_IO_SEG(0x00014F0000000350ull) 73 #define CVMX_IPD_PTR_COUNT \ 74 CVMX_ADD_IO_SEG(0x00014F0000000320ull) 75 #define CVMX_IPD_PWP_PTR_FIFO_CTL \ 76 CVMX_ADD_IO_SEG(0x00014F0000000340ull) 77 #define CVMX_IPD_QOS0_RED_MARKS \ 78 CVMX_ADD_IO_SEG(0x00014F0000000178ull) 79 #define CVMX_IPD_QOS1_RED_MARKS \ 80 CVMX_ADD_IO_SEG(0x00014F0000000180ull) 81 #define CVMX_IPD_QOS2_RED_MARKS \ 82 CVMX_ADD_IO_SEG(0x00014F0000000188ull) 83 #define CVMX_IPD_QOS3_RED_MARKS \ 84 CVMX_ADD_IO_SEG(0x00014F0000000190ull) 85 #define CVMX_IPD_QOS4_RED_MARKS \ 86 CVMX_ADD_IO_SEG(0x00014F0000000198ull) 87 #define CVMX_IPD_QOS5_RED_MARKS \ 88 CVMX_ADD_IO_SEG(0x00014F00000001A0ull) 89 #define CVMX_IPD_QOS6_RED_MARKS \ 90 CVMX_ADD_IO_SEG(0x00014F00000001A8ull) 91 #define CVMX_IPD_QOS7_RED_MARKS \ 92 CVMX_ADD_IO_SEG(0x00014F00000001B0ull) 93 #define CVMX_IPD_QOSX_RED_MARKS(offset) \ 94 CVMX_ADD_IO_SEG(0x00014F0000000178ull + (((offset) & 7) * 8)) 95 #define CVMX_IPD_QUE0_FREE_PAGE_CNT \ 96 CVMX_ADD_IO_SEG(0x00014F0000000330ull) 97 #define CVMX_IPD_RED_PORT_ENABLE \ 98 CVMX_ADD_IO_SEG(0x00014F00000002D8ull) 99 #define CVMX_IPD_RED_PORT_ENABLE2 \ 100 CVMX_ADD_IO_SEG(0x00014F00000003A8ull) 101 #define CVMX_IPD_RED_QUE0_PARAM \ 102 CVMX_ADD_IO_SEG(0x00014F00000002E0ull) 103 #define CVMX_IPD_RED_QUE1_PARAM \ 104 CVMX_ADD_IO_SEG(0x00014F00000002E8ull) 105 #define CVMX_IPD_RED_QUE2_PARAM \ 106 CVMX_ADD_IO_SEG(0x00014F00000002F0ull) 107 #define CVMX_IPD_RED_QUE3_PARAM \ 108 CVMX_ADD_IO_SEG(0x00014F00000002F8ull) 109 #define CVMX_IPD_RED_QUE4_PARAM \ 110 CVMX_ADD_IO_SEG(0x00014F0000000300ull) 111 #define CVMX_IPD_RED_QUE5_PARAM \ 112 CVMX_ADD_IO_SEG(0x00014F0000000308ull) 113 #define CVMX_IPD_RED_QUE6_PARAM \ 114 CVMX_ADD_IO_SEG(0x00014F0000000310ull) 115 #define CVMX_IPD_RED_QUE7_PARAM \ 116 CVMX_ADD_IO_SEG(0x00014F0000000318ull) 117 #define CVMX_IPD_RED_QUEX_PARAM(offset) \ 118 CVMX_ADD_IO_SEG(0x00014F00000002E0ull + (((offset) & 7) * 8)) 119 #define CVMX_IPD_SUB_PORT_BP_PAGE_CNT \ 120 CVMX_ADD_IO_SEG(0x00014F0000000148ull) 121 #define CVMX_IPD_SUB_PORT_FCS \ 122 CVMX_ADD_IO_SEG(0x00014F0000000170ull) 123 #define CVMX_IPD_SUB_PORT_QOS_CNT \ 124 CVMX_ADD_IO_SEG(0x00014F0000000800ull) 125 #define CVMX_IPD_WQE_FPA_QUEUE \ 126 CVMX_ADD_IO_SEG(0x00014F0000000020ull) 127 #define CVMX_IPD_WQE_PTR_VALID \ 128 CVMX_ADD_IO_SEG(0x00014F0000000360ull) 129 130 union cvmx_ipd_1st_mbuff_skip { 131 uint64_t u64; 132 struct cvmx_ipd_1st_mbuff_skip_s { 133 uint64_t reserved_6_63:58; 134 uint64_t skip_sz:6; 135 } s; 136 struct cvmx_ipd_1st_mbuff_skip_s cn30xx; 137 struct cvmx_ipd_1st_mbuff_skip_s cn31xx; 138 struct cvmx_ipd_1st_mbuff_skip_s cn38xx; 139 struct cvmx_ipd_1st_mbuff_skip_s cn38xxp2; 140 struct cvmx_ipd_1st_mbuff_skip_s cn50xx; 141 struct cvmx_ipd_1st_mbuff_skip_s cn52xx; 142 struct cvmx_ipd_1st_mbuff_skip_s cn52xxp1; 143 struct cvmx_ipd_1st_mbuff_skip_s cn56xx; 144 struct cvmx_ipd_1st_mbuff_skip_s cn56xxp1; 145 struct cvmx_ipd_1st_mbuff_skip_s cn58xx; 146 struct cvmx_ipd_1st_mbuff_skip_s cn58xxp1; 147 }; 148 149 union cvmx_ipd_1st_next_ptr_back { 150 uint64_t u64; 151 struct cvmx_ipd_1st_next_ptr_back_s { 152 uint64_t reserved_4_63:60; 153 uint64_t back:4; 154 } s; 155 struct cvmx_ipd_1st_next_ptr_back_s cn30xx; 156 struct cvmx_ipd_1st_next_ptr_back_s cn31xx; 157 struct cvmx_ipd_1st_next_ptr_back_s cn38xx; 158 struct cvmx_ipd_1st_next_ptr_back_s cn38xxp2; 159 struct cvmx_ipd_1st_next_ptr_back_s cn50xx; 160 struct cvmx_ipd_1st_next_ptr_back_s cn52xx; 161 struct cvmx_ipd_1st_next_ptr_back_s cn52xxp1; 162 struct cvmx_ipd_1st_next_ptr_back_s cn56xx; 163 struct cvmx_ipd_1st_next_ptr_back_s cn56xxp1; 164 struct cvmx_ipd_1st_next_ptr_back_s cn58xx; 165 struct cvmx_ipd_1st_next_ptr_back_s cn58xxp1; 166 }; 167 168 union cvmx_ipd_2nd_next_ptr_back { 169 uint64_t u64; 170 struct cvmx_ipd_2nd_next_ptr_back_s { 171 uint64_t reserved_4_63:60; 172 uint64_t back:4; 173 } s; 174 struct cvmx_ipd_2nd_next_ptr_back_s cn30xx; 175 struct cvmx_ipd_2nd_next_ptr_back_s cn31xx; 176 struct cvmx_ipd_2nd_next_ptr_back_s cn38xx; 177 struct cvmx_ipd_2nd_next_ptr_back_s cn38xxp2; 178 struct cvmx_ipd_2nd_next_ptr_back_s cn50xx; 179 struct cvmx_ipd_2nd_next_ptr_back_s cn52xx; 180 struct cvmx_ipd_2nd_next_ptr_back_s cn52xxp1; 181 struct cvmx_ipd_2nd_next_ptr_back_s cn56xx; 182 struct cvmx_ipd_2nd_next_ptr_back_s cn56xxp1; 183 struct cvmx_ipd_2nd_next_ptr_back_s cn58xx; 184 struct cvmx_ipd_2nd_next_ptr_back_s cn58xxp1; 185 }; 186 187 union cvmx_ipd_bist_status { 188 uint64_t u64; 189 struct cvmx_ipd_bist_status_s { 190 uint64_t reserved_18_63:46; 191 uint64_t csr_mem:1; 192 uint64_t csr_ncmd:1; 193 uint64_t pwq_wqed:1; 194 uint64_t pwq_wp1:1; 195 uint64_t pwq_pow:1; 196 uint64_t ipq_pbe1:1; 197 uint64_t ipq_pbe0:1; 198 uint64_t pbm3:1; 199 uint64_t pbm2:1; 200 uint64_t pbm1:1; 201 uint64_t pbm0:1; 202 uint64_t pbm_word:1; 203 uint64_t pwq1:1; 204 uint64_t pwq0:1; 205 uint64_t prc_off:1; 206 uint64_t ipd_old:1; 207 uint64_t ipd_new:1; 208 uint64_t pwp:1; 209 } s; 210 struct cvmx_ipd_bist_status_cn30xx { 211 uint64_t reserved_16_63:48; 212 uint64_t pwq_wqed:1; 213 uint64_t pwq_wp1:1; 214 uint64_t pwq_pow:1; 215 uint64_t ipq_pbe1:1; 216 uint64_t ipq_pbe0:1; 217 uint64_t pbm3:1; 218 uint64_t pbm2:1; 219 uint64_t pbm1:1; 220 uint64_t pbm0:1; 221 uint64_t pbm_word:1; 222 uint64_t pwq1:1; 223 uint64_t pwq0:1; 224 uint64_t prc_off:1; 225 uint64_t ipd_old:1; 226 uint64_t ipd_new:1; 227 uint64_t pwp:1; 228 } cn30xx; 229 struct cvmx_ipd_bist_status_cn30xx cn31xx; 230 struct cvmx_ipd_bist_status_cn30xx cn38xx; 231 struct cvmx_ipd_bist_status_cn30xx cn38xxp2; 232 struct cvmx_ipd_bist_status_cn30xx cn50xx; 233 struct cvmx_ipd_bist_status_s cn52xx; 234 struct cvmx_ipd_bist_status_s cn52xxp1; 235 struct cvmx_ipd_bist_status_s cn56xx; 236 struct cvmx_ipd_bist_status_s cn56xxp1; 237 struct cvmx_ipd_bist_status_cn30xx cn58xx; 238 struct cvmx_ipd_bist_status_cn30xx cn58xxp1; 239 }; 240 241 union cvmx_ipd_bp_prt_red_end { 242 uint64_t u64; 243 struct cvmx_ipd_bp_prt_red_end_s { 244 uint64_t reserved_40_63:24; 245 uint64_t prt_enb:40; 246 } s; 247 struct cvmx_ipd_bp_prt_red_end_cn30xx { 248 uint64_t reserved_36_63:28; 249 uint64_t prt_enb:36; 250 } cn30xx; 251 struct cvmx_ipd_bp_prt_red_end_cn30xx cn31xx; 252 struct cvmx_ipd_bp_prt_red_end_cn30xx cn38xx; 253 struct cvmx_ipd_bp_prt_red_end_cn30xx cn38xxp2; 254 struct cvmx_ipd_bp_prt_red_end_cn30xx cn50xx; 255 struct cvmx_ipd_bp_prt_red_end_s cn52xx; 256 struct cvmx_ipd_bp_prt_red_end_s cn52xxp1; 257 struct cvmx_ipd_bp_prt_red_end_s cn56xx; 258 struct cvmx_ipd_bp_prt_red_end_s cn56xxp1; 259 struct cvmx_ipd_bp_prt_red_end_cn30xx cn58xx; 260 struct cvmx_ipd_bp_prt_red_end_cn30xx cn58xxp1; 261 }; 262 263 union cvmx_ipd_clk_count { 264 uint64_t u64; 265 struct cvmx_ipd_clk_count_s { 266 uint64_t clk_cnt:64; 267 } s; 268 struct cvmx_ipd_clk_count_s cn30xx; 269 struct cvmx_ipd_clk_count_s cn31xx; 270 struct cvmx_ipd_clk_count_s cn38xx; 271 struct cvmx_ipd_clk_count_s cn38xxp2; 272 struct cvmx_ipd_clk_count_s cn50xx; 273 struct cvmx_ipd_clk_count_s cn52xx; 274 struct cvmx_ipd_clk_count_s cn52xxp1; 275 struct cvmx_ipd_clk_count_s cn56xx; 276 struct cvmx_ipd_clk_count_s cn56xxp1; 277 struct cvmx_ipd_clk_count_s cn58xx; 278 struct cvmx_ipd_clk_count_s cn58xxp1; 279 }; 280 281 union cvmx_ipd_ctl_status { 282 uint64_t u64; 283 struct cvmx_ipd_ctl_status_s { 284 uint64_t reserved_15_63:49; 285 uint64_t no_wptr:1; 286 uint64_t pq_apkt:1; 287 uint64_t pq_nabuf:1; 288 uint64_t ipd_full:1; 289 uint64_t pkt_off:1; 290 uint64_t len_m8:1; 291 uint64_t reset:1; 292 uint64_t addpkt:1; 293 uint64_t naddbuf:1; 294 uint64_t pkt_lend:1; 295 uint64_t wqe_lend:1; 296 uint64_t pbp_en:1; 297 uint64_t opc_mode:2; 298 uint64_t ipd_en:1; 299 } s; 300 struct cvmx_ipd_ctl_status_cn30xx { 301 uint64_t reserved_10_63:54; 302 uint64_t len_m8:1; 303 uint64_t reset:1; 304 uint64_t addpkt:1; 305 uint64_t naddbuf:1; 306 uint64_t pkt_lend:1; 307 uint64_t wqe_lend:1; 308 uint64_t pbp_en:1; 309 uint64_t opc_mode:2; 310 uint64_t ipd_en:1; 311 } cn30xx; 312 struct cvmx_ipd_ctl_status_cn30xx cn31xx; 313 struct cvmx_ipd_ctl_status_cn30xx cn38xx; 314 struct cvmx_ipd_ctl_status_cn38xxp2 { 315 uint64_t reserved_9_63:55; 316 uint64_t reset:1; 317 uint64_t addpkt:1; 318 uint64_t naddbuf:1; 319 uint64_t pkt_lend:1; 320 uint64_t wqe_lend:1; 321 uint64_t pbp_en:1; 322 uint64_t opc_mode:2; 323 uint64_t ipd_en:1; 324 } cn38xxp2; 325 struct cvmx_ipd_ctl_status_s cn50xx; 326 struct cvmx_ipd_ctl_status_s cn52xx; 327 struct cvmx_ipd_ctl_status_s cn52xxp1; 328 struct cvmx_ipd_ctl_status_s cn56xx; 329 struct cvmx_ipd_ctl_status_s cn56xxp1; 330 struct cvmx_ipd_ctl_status_cn58xx { 331 uint64_t reserved_12_63:52; 332 uint64_t ipd_full:1; 333 uint64_t pkt_off:1; 334 uint64_t len_m8:1; 335 uint64_t reset:1; 336 uint64_t addpkt:1; 337 uint64_t naddbuf:1; 338 uint64_t pkt_lend:1; 339 uint64_t wqe_lend:1; 340 uint64_t pbp_en:1; 341 uint64_t opc_mode:2; 342 uint64_t ipd_en:1; 343 } cn58xx; 344 struct cvmx_ipd_ctl_status_cn58xx cn58xxp1; 345 }; 346 347 union cvmx_ipd_int_enb { 348 uint64_t u64; 349 struct cvmx_ipd_int_enb_s { 350 uint64_t reserved_12_63:52; 351 uint64_t pq_sub:1; 352 uint64_t pq_add:1; 353 uint64_t bc_ovr:1; 354 uint64_t d_coll:1; 355 uint64_t c_coll:1; 356 uint64_t cc_ovr:1; 357 uint64_t dc_ovr:1; 358 uint64_t bp_sub:1; 359 uint64_t prc_par3:1; 360 uint64_t prc_par2:1; 361 uint64_t prc_par1:1; 362 uint64_t prc_par0:1; 363 } s; 364 struct cvmx_ipd_int_enb_cn30xx { 365 uint64_t reserved_5_63:59; 366 uint64_t bp_sub:1; 367 uint64_t prc_par3:1; 368 uint64_t prc_par2:1; 369 uint64_t prc_par1:1; 370 uint64_t prc_par0:1; 371 } cn30xx; 372 struct cvmx_ipd_int_enb_cn30xx cn31xx; 373 struct cvmx_ipd_int_enb_cn38xx { 374 uint64_t reserved_10_63:54; 375 uint64_t bc_ovr:1; 376 uint64_t d_coll:1; 377 uint64_t c_coll:1; 378 uint64_t cc_ovr:1; 379 uint64_t dc_ovr:1; 380 uint64_t bp_sub:1; 381 uint64_t prc_par3:1; 382 uint64_t prc_par2:1; 383 uint64_t prc_par1:1; 384 uint64_t prc_par0:1; 385 } cn38xx; 386 struct cvmx_ipd_int_enb_cn30xx cn38xxp2; 387 struct cvmx_ipd_int_enb_cn38xx cn50xx; 388 struct cvmx_ipd_int_enb_s cn52xx; 389 struct cvmx_ipd_int_enb_s cn52xxp1; 390 struct cvmx_ipd_int_enb_s cn56xx; 391 struct cvmx_ipd_int_enb_s cn56xxp1; 392 struct cvmx_ipd_int_enb_cn38xx cn58xx; 393 struct cvmx_ipd_int_enb_cn38xx cn58xxp1; 394 }; 395 396 union cvmx_ipd_int_sum { 397 uint64_t u64; 398 struct cvmx_ipd_int_sum_s { 399 uint64_t reserved_12_63:52; 400 uint64_t pq_sub:1; 401 uint64_t pq_add:1; 402 uint64_t bc_ovr:1; 403 uint64_t d_coll:1; 404 uint64_t c_coll:1; 405 uint64_t cc_ovr:1; 406 uint64_t dc_ovr:1; 407 uint64_t bp_sub:1; 408 uint64_t prc_par3:1; 409 uint64_t prc_par2:1; 410 uint64_t prc_par1:1; 411 uint64_t prc_par0:1; 412 } s; 413 struct cvmx_ipd_int_sum_cn30xx { 414 uint64_t reserved_5_63:59; 415 uint64_t bp_sub:1; 416 uint64_t prc_par3:1; 417 uint64_t prc_par2:1; 418 uint64_t prc_par1:1; 419 uint64_t prc_par0:1; 420 } cn30xx; 421 struct cvmx_ipd_int_sum_cn30xx cn31xx; 422 struct cvmx_ipd_int_sum_cn38xx { 423 uint64_t reserved_10_63:54; 424 uint64_t bc_ovr:1; 425 uint64_t d_coll:1; 426 uint64_t c_coll:1; 427 uint64_t cc_ovr:1; 428 uint64_t dc_ovr:1; 429 uint64_t bp_sub:1; 430 uint64_t prc_par3:1; 431 uint64_t prc_par2:1; 432 uint64_t prc_par1:1; 433 uint64_t prc_par0:1; 434 } cn38xx; 435 struct cvmx_ipd_int_sum_cn30xx cn38xxp2; 436 struct cvmx_ipd_int_sum_cn38xx cn50xx; 437 struct cvmx_ipd_int_sum_s cn52xx; 438 struct cvmx_ipd_int_sum_s cn52xxp1; 439 struct cvmx_ipd_int_sum_s cn56xx; 440 struct cvmx_ipd_int_sum_s cn56xxp1; 441 struct cvmx_ipd_int_sum_cn38xx cn58xx; 442 struct cvmx_ipd_int_sum_cn38xx cn58xxp1; 443 }; 444 445 union cvmx_ipd_not_1st_mbuff_skip { 446 uint64_t u64; 447 struct cvmx_ipd_not_1st_mbuff_skip_s { 448 uint64_t reserved_6_63:58; 449 uint64_t skip_sz:6; 450 } s; 451 struct cvmx_ipd_not_1st_mbuff_skip_s cn30xx; 452 struct cvmx_ipd_not_1st_mbuff_skip_s cn31xx; 453 struct cvmx_ipd_not_1st_mbuff_skip_s cn38xx; 454 struct cvmx_ipd_not_1st_mbuff_skip_s cn38xxp2; 455 struct cvmx_ipd_not_1st_mbuff_skip_s cn50xx; 456 struct cvmx_ipd_not_1st_mbuff_skip_s cn52xx; 457 struct cvmx_ipd_not_1st_mbuff_skip_s cn52xxp1; 458 struct cvmx_ipd_not_1st_mbuff_skip_s cn56xx; 459 struct cvmx_ipd_not_1st_mbuff_skip_s cn56xxp1; 460 struct cvmx_ipd_not_1st_mbuff_skip_s cn58xx; 461 struct cvmx_ipd_not_1st_mbuff_skip_s cn58xxp1; 462 }; 463 464 union cvmx_ipd_packet_mbuff_size { 465 uint64_t u64; 466 struct cvmx_ipd_packet_mbuff_size_s { 467 uint64_t reserved_12_63:52; 468 uint64_t mb_size:12; 469 } s; 470 struct cvmx_ipd_packet_mbuff_size_s cn30xx; 471 struct cvmx_ipd_packet_mbuff_size_s cn31xx; 472 struct cvmx_ipd_packet_mbuff_size_s cn38xx; 473 struct cvmx_ipd_packet_mbuff_size_s cn38xxp2; 474 struct cvmx_ipd_packet_mbuff_size_s cn50xx; 475 struct cvmx_ipd_packet_mbuff_size_s cn52xx; 476 struct cvmx_ipd_packet_mbuff_size_s cn52xxp1; 477 struct cvmx_ipd_packet_mbuff_size_s cn56xx; 478 struct cvmx_ipd_packet_mbuff_size_s cn56xxp1; 479 struct cvmx_ipd_packet_mbuff_size_s cn58xx; 480 struct cvmx_ipd_packet_mbuff_size_s cn58xxp1; 481 }; 482 483 union cvmx_ipd_pkt_ptr_valid { 484 uint64_t u64; 485 struct cvmx_ipd_pkt_ptr_valid_s { 486 uint64_t reserved_29_63:35; 487 uint64_t ptr:29; 488 } s; 489 struct cvmx_ipd_pkt_ptr_valid_s cn30xx; 490 struct cvmx_ipd_pkt_ptr_valid_s cn31xx; 491 struct cvmx_ipd_pkt_ptr_valid_s cn38xx; 492 struct cvmx_ipd_pkt_ptr_valid_s cn50xx; 493 struct cvmx_ipd_pkt_ptr_valid_s cn52xx; 494 struct cvmx_ipd_pkt_ptr_valid_s cn52xxp1; 495 struct cvmx_ipd_pkt_ptr_valid_s cn56xx; 496 struct cvmx_ipd_pkt_ptr_valid_s cn56xxp1; 497 struct cvmx_ipd_pkt_ptr_valid_s cn58xx; 498 struct cvmx_ipd_pkt_ptr_valid_s cn58xxp1; 499 }; 500 501 union cvmx_ipd_portx_bp_page_cnt { 502 uint64_t u64; 503 struct cvmx_ipd_portx_bp_page_cnt_s { 504 uint64_t reserved_18_63:46; 505 uint64_t bp_enb:1; 506 uint64_t page_cnt:17; 507 } s; 508 struct cvmx_ipd_portx_bp_page_cnt_s cn30xx; 509 struct cvmx_ipd_portx_bp_page_cnt_s cn31xx; 510 struct cvmx_ipd_portx_bp_page_cnt_s cn38xx; 511 struct cvmx_ipd_portx_bp_page_cnt_s cn38xxp2; 512 struct cvmx_ipd_portx_bp_page_cnt_s cn50xx; 513 struct cvmx_ipd_portx_bp_page_cnt_s cn52xx; 514 struct cvmx_ipd_portx_bp_page_cnt_s cn52xxp1; 515 struct cvmx_ipd_portx_bp_page_cnt_s cn56xx; 516 struct cvmx_ipd_portx_bp_page_cnt_s cn56xxp1; 517 struct cvmx_ipd_portx_bp_page_cnt_s cn58xx; 518 struct cvmx_ipd_portx_bp_page_cnt_s cn58xxp1; 519 }; 520 521 union cvmx_ipd_portx_bp_page_cnt2 { 522 uint64_t u64; 523 struct cvmx_ipd_portx_bp_page_cnt2_s { 524 uint64_t reserved_18_63:46; 525 uint64_t bp_enb:1; 526 uint64_t page_cnt:17; 527 } s; 528 struct cvmx_ipd_portx_bp_page_cnt2_s cn52xx; 529 struct cvmx_ipd_portx_bp_page_cnt2_s cn52xxp1; 530 struct cvmx_ipd_portx_bp_page_cnt2_s cn56xx; 531 struct cvmx_ipd_portx_bp_page_cnt2_s cn56xxp1; 532 }; 533 534 union cvmx_ipd_port_bp_counters2_pairx { 535 uint64_t u64; 536 struct cvmx_ipd_port_bp_counters2_pairx_s { 537 uint64_t reserved_25_63:39; 538 uint64_t cnt_val:25; 539 } s; 540 struct cvmx_ipd_port_bp_counters2_pairx_s cn52xx; 541 struct cvmx_ipd_port_bp_counters2_pairx_s cn52xxp1; 542 struct cvmx_ipd_port_bp_counters2_pairx_s cn56xx; 543 struct cvmx_ipd_port_bp_counters2_pairx_s cn56xxp1; 544 }; 545 546 union cvmx_ipd_port_bp_counters_pairx { 547 uint64_t u64; 548 struct cvmx_ipd_port_bp_counters_pairx_s { 549 uint64_t reserved_25_63:39; 550 uint64_t cnt_val:25; 551 } s; 552 struct cvmx_ipd_port_bp_counters_pairx_s cn30xx; 553 struct cvmx_ipd_port_bp_counters_pairx_s cn31xx; 554 struct cvmx_ipd_port_bp_counters_pairx_s cn38xx; 555 struct cvmx_ipd_port_bp_counters_pairx_s cn38xxp2; 556 struct cvmx_ipd_port_bp_counters_pairx_s cn50xx; 557 struct cvmx_ipd_port_bp_counters_pairx_s cn52xx; 558 struct cvmx_ipd_port_bp_counters_pairx_s cn52xxp1; 559 struct cvmx_ipd_port_bp_counters_pairx_s cn56xx; 560 struct cvmx_ipd_port_bp_counters_pairx_s cn56xxp1; 561 struct cvmx_ipd_port_bp_counters_pairx_s cn58xx; 562 struct cvmx_ipd_port_bp_counters_pairx_s cn58xxp1; 563 }; 564 565 union cvmx_ipd_port_qos_x_cnt { 566 uint64_t u64; 567 struct cvmx_ipd_port_qos_x_cnt_s { 568 uint64_t wmark:32; 569 uint64_t cnt:32; 570 } s; 571 struct cvmx_ipd_port_qos_x_cnt_s cn52xx; 572 struct cvmx_ipd_port_qos_x_cnt_s cn52xxp1; 573 struct cvmx_ipd_port_qos_x_cnt_s cn56xx; 574 struct cvmx_ipd_port_qos_x_cnt_s cn56xxp1; 575 }; 576 577 union cvmx_ipd_port_qos_intx { 578 uint64_t u64; 579 struct cvmx_ipd_port_qos_intx_s { 580 uint64_t intr:64; 581 } s; 582 struct cvmx_ipd_port_qos_intx_s cn52xx; 583 struct cvmx_ipd_port_qos_intx_s cn52xxp1; 584 struct cvmx_ipd_port_qos_intx_s cn56xx; 585 struct cvmx_ipd_port_qos_intx_s cn56xxp1; 586 }; 587 588 union cvmx_ipd_port_qos_int_enbx { 589 uint64_t u64; 590 struct cvmx_ipd_port_qos_int_enbx_s { 591 uint64_t enb:64; 592 } s; 593 struct cvmx_ipd_port_qos_int_enbx_s cn52xx; 594 struct cvmx_ipd_port_qos_int_enbx_s cn52xxp1; 595 struct cvmx_ipd_port_qos_int_enbx_s cn56xx; 596 struct cvmx_ipd_port_qos_int_enbx_s cn56xxp1; 597 }; 598 599 union cvmx_ipd_prc_hold_ptr_fifo_ctl { 600 uint64_t u64; 601 struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s { 602 uint64_t reserved_39_63:25; 603 uint64_t max_pkt:3; 604 uint64_t praddr:3; 605 uint64_t ptr:29; 606 uint64_t cena:1; 607 uint64_t raddr:3; 608 } s; 609 struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn30xx; 610 struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn31xx; 611 struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn38xx; 612 struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn50xx; 613 struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn52xx; 614 struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn52xxp1; 615 struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn56xx; 616 struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn56xxp1; 617 struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn58xx; 618 struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn58xxp1; 619 }; 620 621 union cvmx_ipd_prc_port_ptr_fifo_ctl { 622 uint64_t u64; 623 struct cvmx_ipd_prc_port_ptr_fifo_ctl_s { 624 uint64_t reserved_44_63:20; 625 uint64_t max_pkt:7; 626 uint64_t ptr:29; 627 uint64_t cena:1; 628 uint64_t raddr:7; 629 } s; 630 struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn30xx; 631 struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn31xx; 632 struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn38xx; 633 struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn50xx; 634 struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn52xx; 635 struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn52xxp1; 636 struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn56xx; 637 struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn56xxp1; 638 struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn58xx; 639 struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn58xxp1; 640 }; 641 642 union cvmx_ipd_ptr_count { 643 uint64_t u64; 644 struct cvmx_ipd_ptr_count_s { 645 uint64_t reserved_19_63:45; 646 uint64_t pktv_cnt:1; 647 uint64_t wqev_cnt:1; 648 uint64_t pfif_cnt:3; 649 uint64_t pkt_pcnt:7; 650 uint64_t wqe_pcnt:7; 651 } s; 652 struct cvmx_ipd_ptr_count_s cn30xx; 653 struct cvmx_ipd_ptr_count_s cn31xx; 654 struct cvmx_ipd_ptr_count_s cn38xx; 655 struct cvmx_ipd_ptr_count_s cn38xxp2; 656 struct cvmx_ipd_ptr_count_s cn50xx; 657 struct cvmx_ipd_ptr_count_s cn52xx; 658 struct cvmx_ipd_ptr_count_s cn52xxp1; 659 struct cvmx_ipd_ptr_count_s cn56xx; 660 struct cvmx_ipd_ptr_count_s cn56xxp1; 661 struct cvmx_ipd_ptr_count_s cn58xx; 662 struct cvmx_ipd_ptr_count_s cn58xxp1; 663 }; 664 665 union cvmx_ipd_pwp_ptr_fifo_ctl { 666 uint64_t u64; 667 struct cvmx_ipd_pwp_ptr_fifo_ctl_s { 668 uint64_t reserved_61_63:3; 669 uint64_t max_cnts:7; 670 uint64_t wraddr:8; 671 uint64_t praddr:8; 672 uint64_t ptr:29; 673 uint64_t cena:1; 674 uint64_t raddr:8; 675 } s; 676 struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn30xx; 677 struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn31xx; 678 struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn38xx; 679 struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn50xx; 680 struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn52xx; 681 struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn52xxp1; 682 struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn56xx; 683 struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn56xxp1; 684 struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn58xx; 685 struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn58xxp1; 686 }; 687 688 union cvmx_ipd_qosx_red_marks { 689 uint64_t u64; 690 struct cvmx_ipd_qosx_red_marks_s { 691 uint64_t drop:32; 692 uint64_t pass:32; 693 } s; 694 struct cvmx_ipd_qosx_red_marks_s cn30xx; 695 struct cvmx_ipd_qosx_red_marks_s cn31xx; 696 struct cvmx_ipd_qosx_red_marks_s cn38xx; 697 struct cvmx_ipd_qosx_red_marks_s cn38xxp2; 698 struct cvmx_ipd_qosx_red_marks_s cn50xx; 699 struct cvmx_ipd_qosx_red_marks_s cn52xx; 700 struct cvmx_ipd_qosx_red_marks_s cn52xxp1; 701 struct cvmx_ipd_qosx_red_marks_s cn56xx; 702 struct cvmx_ipd_qosx_red_marks_s cn56xxp1; 703 struct cvmx_ipd_qosx_red_marks_s cn58xx; 704 struct cvmx_ipd_qosx_red_marks_s cn58xxp1; 705 }; 706 707 union cvmx_ipd_que0_free_page_cnt { 708 uint64_t u64; 709 struct cvmx_ipd_que0_free_page_cnt_s { 710 uint64_t reserved_32_63:32; 711 uint64_t q0_pcnt:32; 712 } s; 713 struct cvmx_ipd_que0_free_page_cnt_s cn30xx; 714 struct cvmx_ipd_que0_free_page_cnt_s cn31xx; 715 struct cvmx_ipd_que0_free_page_cnt_s cn38xx; 716 struct cvmx_ipd_que0_free_page_cnt_s cn38xxp2; 717 struct cvmx_ipd_que0_free_page_cnt_s cn50xx; 718 struct cvmx_ipd_que0_free_page_cnt_s cn52xx; 719 struct cvmx_ipd_que0_free_page_cnt_s cn52xxp1; 720 struct cvmx_ipd_que0_free_page_cnt_s cn56xx; 721 struct cvmx_ipd_que0_free_page_cnt_s cn56xxp1; 722 struct cvmx_ipd_que0_free_page_cnt_s cn58xx; 723 struct cvmx_ipd_que0_free_page_cnt_s cn58xxp1; 724 }; 725 726 union cvmx_ipd_red_port_enable { 727 uint64_t u64; 728 struct cvmx_ipd_red_port_enable_s { 729 uint64_t prb_dly:14; 730 uint64_t avg_dly:14; 731 uint64_t prt_enb:36; 732 } s; 733 struct cvmx_ipd_red_port_enable_s cn30xx; 734 struct cvmx_ipd_red_port_enable_s cn31xx; 735 struct cvmx_ipd_red_port_enable_s cn38xx; 736 struct cvmx_ipd_red_port_enable_s cn38xxp2; 737 struct cvmx_ipd_red_port_enable_s cn50xx; 738 struct cvmx_ipd_red_port_enable_s cn52xx; 739 struct cvmx_ipd_red_port_enable_s cn52xxp1; 740 struct cvmx_ipd_red_port_enable_s cn56xx; 741 struct cvmx_ipd_red_port_enable_s cn56xxp1; 742 struct cvmx_ipd_red_port_enable_s cn58xx; 743 struct cvmx_ipd_red_port_enable_s cn58xxp1; 744 }; 745 746 union cvmx_ipd_red_port_enable2 { 747 uint64_t u64; 748 struct cvmx_ipd_red_port_enable2_s { 749 uint64_t reserved_4_63:60; 750 uint64_t prt_enb:4; 751 } s; 752 struct cvmx_ipd_red_port_enable2_s cn52xx; 753 struct cvmx_ipd_red_port_enable2_s cn52xxp1; 754 struct cvmx_ipd_red_port_enable2_s cn56xx; 755 struct cvmx_ipd_red_port_enable2_s cn56xxp1; 756 }; 757 758 union cvmx_ipd_red_quex_param { 759 uint64_t u64; 760 struct cvmx_ipd_red_quex_param_s { 761 uint64_t reserved_49_63:15; 762 uint64_t use_pcnt:1; 763 uint64_t new_con:8; 764 uint64_t avg_con:8; 765 uint64_t prb_con:32; 766 } s; 767 struct cvmx_ipd_red_quex_param_s cn30xx; 768 struct cvmx_ipd_red_quex_param_s cn31xx; 769 struct cvmx_ipd_red_quex_param_s cn38xx; 770 struct cvmx_ipd_red_quex_param_s cn38xxp2; 771 struct cvmx_ipd_red_quex_param_s cn50xx; 772 struct cvmx_ipd_red_quex_param_s cn52xx; 773 struct cvmx_ipd_red_quex_param_s cn52xxp1; 774 struct cvmx_ipd_red_quex_param_s cn56xx; 775 struct cvmx_ipd_red_quex_param_s cn56xxp1; 776 struct cvmx_ipd_red_quex_param_s cn58xx; 777 struct cvmx_ipd_red_quex_param_s cn58xxp1; 778 }; 779 780 union cvmx_ipd_sub_port_bp_page_cnt { 781 uint64_t u64; 782 struct cvmx_ipd_sub_port_bp_page_cnt_s { 783 uint64_t reserved_31_63:33; 784 uint64_t port:6; 785 uint64_t page_cnt:25; 786 } s; 787 struct cvmx_ipd_sub_port_bp_page_cnt_s cn30xx; 788 struct cvmx_ipd_sub_port_bp_page_cnt_s cn31xx; 789 struct cvmx_ipd_sub_port_bp_page_cnt_s cn38xx; 790 struct cvmx_ipd_sub_port_bp_page_cnt_s cn38xxp2; 791 struct cvmx_ipd_sub_port_bp_page_cnt_s cn50xx; 792 struct cvmx_ipd_sub_port_bp_page_cnt_s cn52xx; 793 struct cvmx_ipd_sub_port_bp_page_cnt_s cn52xxp1; 794 struct cvmx_ipd_sub_port_bp_page_cnt_s cn56xx; 795 struct cvmx_ipd_sub_port_bp_page_cnt_s cn56xxp1; 796 struct cvmx_ipd_sub_port_bp_page_cnt_s cn58xx; 797 struct cvmx_ipd_sub_port_bp_page_cnt_s cn58xxp1; 798 }; 799 800 union cvmx_ipd_sub_port_fcs { 801 uint64_t u64; 802 struct cvmx_ipd_sub_port_fcs_s { 803 uint64_t reserved_40_63:24; 804 uint64_t port_bit2:4; 805 uint64_t reserved_32_35:4; 806 uint64_t port_bit:32; 807 } s; 808 struct cvmx_ipd_sub_port_fcs_cn30xx { 809 uint64_t reserved_3_63:61; 810 uint64_t port_bit:3; 811 } cn30xx; 812 struct cvmx_ipd_sub_port_fcs_cn30xx cn31xx; 813 struct cvmx_ipd_sub_port_fcs_cn38xx { 814 uint64_t reserved_32_63:32; 815 uint64_t port_bit:32; 816 } cn38xx; 817 struct cvmx_ipd_sub_port_fcs_cn38xx cn38xxp2; 818 struct cvmx_ipd_sub_port_fcs_cn30xx cn50xx; 819 struct cvmx_ipd_sub_port_fcs_s cn52xx; 820 struct cvmx_ipd_sub_port_fcs_s cn52xxp1; 821 struct cvmx_ipd_sub_port_fcs_s cn56xx; 822 struct cvmx_ipd_sub_port_fcs_s cn56xxp1; 823 struct cvmx_ipd_sub_port_fcs_cn38xx cn58xx; 824 struct cvmx_ipd_sub_port_fcs_cn38xx cn58xxp1; 825 }; 826 827 union cvmx_ipd_sub_port_qos_cnt { 828 uint64_t u64; 829 struct cvmx_ipd_sub_port_qos_cnt_s { 830 uint64_t reserved_41_63:23; 831 uint64_t port_qos:9; 832 uint64_t cnt:32; 833 } s; 834 struct cvmx_ipd_sub_port_qos_cnt_s cn52xx; 835 struct cvmx_ipd_sub_port_qos_cnt_s cn52xxp1; 836 struct cvmx_ipd_sub_port_qos_cnt_s cn56xx; 837 struct cvmx_ipd_sub_port_qos_cnt_s cn56xxp1; 838 }; 839 840 union cvmx_ipd_wqe_fpa_queue { 841 uint64_t u64; 842 struct cvmx_ipd_wqe_fpa_queue_s { 843 uint64_t reserved_3_63:61; 844 uint64_t wqe_pool:3; 845 } s; 846 struct cvmx_ipd_wqe_fpa_queue_s cn30xx; 847 struct cvmx_ipd_wqe_fpa_queue_s cn31xx; 848 struct cvmx_ipd_wqe_fpa_queue_s cn38xx; 849 struct cvmx_ipd_wqe_fpa_queue_s cn38xxp2; 850 struct cvmx_ipd_wqe_fpa_queue_s cn50xx; 851 struct cvmx_ipd_wqe_fpa_queue_s cn52xx; 852 struct cvmx_ipd_wqe_fpa_queue_s cn52xxp1; 853 struct cvmx_ipd_wqe_fpa_queue_s cn56xx; 854 struct cvmx_ipd_wqe_fpa_queue_s cn56xxp1; 855 struct cvmx_ipd_wqe_fpa_queue_s cn58xx; 856 struct cvmx_ipd_wqe_fpa_queue_s cn58xxp1; 857 }; 858 859 union cvmx_ipd_wqe_ptr_valid { 860 uint64_t u64; 861 struct cvmx_ipd_wqe_ptr_valid_s { 862 uint64_t reserved_29_63:35; 863 uint64_t ptr:29; 864 } s; 865 struct cvmx_ipd_wqe_ptr_valid_s cn30xx; 866 struct cvmx_ipd_wqe_ptr_valid_s cn31xx; 867 struct cvmx_ipd_wqe_ptr_valid_s cn38xx; 868 struct cvmx_ipd_wqe_ptr_valid_s cn50xx; 869 struct cvmx_ipd_wqe_ptr_valid_s cn52xx; 870 struct cvmx_ipd_wqe_ptr_valid_s cn52xxp1; 871 struct cvmx_ipd_wqe_ptr_valid_s cn56xx; 872 struct cvmx_ipd_wqe_ptr_valid_s cn56xxp1; 873 struct cvmx_ipd_wqe_ptr_valid_s cn58xx; 874 struct cvmx_ipd_wqe_ptr_valid_s cn58xxp1; 875 }; 876 877 #endif 878