1 /*- 2 ******************************************************************************** 3 Copyright (C) 2015 Annapurna Labs Ltd. 4 5 This file may be licensed under the terms of the Annapurna Labs Commercial 6 License Agreement. 7 8 Alternatively, this file can be distributed under the terms of the GNU General 9 Public License V2 as published by the Free Software Foundation and can be 10 found at http://www.gnu.org/licenses/gpl-2.0.html 11 12 Alternatively, redistribution and use in source and binary forms, with or 13 without modification, are permitted provided that the following conditions are 14 met: 15 16 * Redistributions of source code must retain the above copyright notice, 17 this list of conditions and the following disclaimer. 18 19 * Redistributions in binary form must reproduce the above copyright 20 notice, this list of conditions and the following disclaimer in 21 the documentation and/or other materials provided with the 22 distribution. 23 24 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 25 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 26 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 27 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR 28 ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 29 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 30 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 31 ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 32 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 33 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34 35 *******************************************************************************/ 36 37 #ifndef __AL_HAL_PCIE_REGS_H__ 38 #define __AL_HAL_PCIE_REGS_H__ 39 40 /* Note: Definitions before the includes so axi/wrapper regs sees them */ 41 42 /** Maximum physical functions supported */ 43 #define REV1_2_MAX_NUM_OF_PFS 1 44 #define REV3_MAX_NUM_OF_PFS 4 45 #define AL_MAX_NUM_OF_PFS 4 /* the maximum between all Revisions */ 46 47 #include "al_hal_pcie_axi_reg.h" 48 #ifndef AL_PCIE_EX 49 #include "al_hal_pcie_w_reg.h" 50 #else 51 #include "al_hal_pcie_w_reg_ex.h" 52 #endif 53 54 #define AL_PCIE_AXI_REGS_OFFSET 0x0 55 #define AL_PCIE_REV_1_2_APP_REGS_OFFSET 0x1000 56 #define AL_PCIE_REV_3_APP_REGS_OFFSET 0x2000 57 #define AL_PCIE_REV_1_2_CORE_CONF_BASE_OFFSET 0x2000 58 #define AL_PCIE_REV_3_CORE_CONF_BASE_OFFSET 0x10000 59 60 /** Maximum number of lanes supported */ 61 #define REV1_2_MAX_NUM_LANES 4 62 #define REV3_MAX_NUM_LANES 8 63 #define AL_MAX_NUM_OF_LANES 8 /* the maximum between all Revisions */ 64 65 /** Number of outbound atu regions - rev 1/2 */ 66 #define AL_PCIE_REV_1_2_ATU_NUM_OUTBOUND_REGIONS 12 67 /** Number of outbound atu regions - rev 3 */ 68 #define AL_PCIE_REV_3_ATU_NUM_OUTBOUND_REGIONS 16 69 70 struct al_pcie_core_iatu_regs { 71 uint32_t index; 72 uint32_t cr1; 73 uint32_t cr2; 74 uint32_t lower_base_addr; 75 uint32_t upper_base_addr; 76 uint32_t limit_addr; 77 uint32_t lower_target_addr; 78 uint32_t upper_target_addr; 79 uint32_t cr3; 80 uint32_t rsrvd[(0x270 - 0x224) >> 2]; 81 }; 82 83 struct al_pcie_core_port_regs { 84 uint32_t ack_lat_rply_timer; 85 uint32_t reserved1[(0x10 - 0x4) >> 2]; 86 uint32_t port_link_ctrl; 87 uint32_t reserved2[(0x18 - 0x14) >> 2]; 88 uint32_t timer_ctrl_max_func_num; 89 uint32_t filter_mask_reg_1; 90 uint32_t reserved3[(0x48 - 0x20) >> 2]; 91 uint32_t vc0_posted_rcv_q_ctrl; 92 uint32_t vc0_non_posted_rcv_q_ctrl; 93 uint32_t vc0_comp_rcv_q_ctrl; 94 uint32_t reserved4[(0x10C - 0x54) >> 2]; 95 uint32_t gen2_ctrl; 96 uint32_t reserved5[(0x190 - 0x110) >> 2]; 97 uint32_t gen3_ctrl; 98 uint32_t gen3_eq_fs_lf; 99 uint32_t gen3_eq_preset_to_coef_map; 100 uint32_t gen3_eq_preset_idx; 101 uint32_t reserved6; 102 uint32_t gen3_eq_status; 103 uint32_t gen3_eq_ctrl; 104 uint32_t reserved7[(0x1B8 - 0x1AC) >> 2]; 105 uint32_t pipe_loopback_ctrl; 106 uint32_t rd_only_wr_en; 107 uint32_t reserved8[(0x1D0 - 0x1C0) >> 2]; 108 uint32_t axi_slave_err_resp; 109 uint32_t reserved9[(0x200 - 0x1D4) >> 2]; 110 struct al_pcie_core_iatu_regs iatu; 111 uint32_t reserved10[(0x448 - 0x270) >> 2]; 112 }; 113 114 struct al_pcie_core_aer_regs { 115 /* 0x0 - PCI Express Extended Capability Header */ 116 uint32_t header; 117 /* 0x4 - Uncorrectable Error Status Register */ 118 uint32_t uncorr_err_stat; 119 /* 0x8 - Uncorrectable Error Mask Register */ 120 uint32_t uncorr_err_mask; 121 /* 0xc - Uncorrectable Error Severity Register */ 122 uint32_t uncorr_err_severity; 123 /* 0x10 - Correctable Error Status Register */ 124 uint32_t corr_err_stat; 125 /* 0x14 - Correctable Error Mask Register */ 126 uint32_t corr_err_mask; 127 /* 0x18 - Advanced Error Capabilities and Control Register */ 128 uint32_t cap_and_ctrl; 129 /* 0x1c - Header Log Registers */ 130 uint32_t header_log[4]; 131 /* 0x2c - Root Error Command Register */ 132 uint32_t root_err_cmd; 133 /* 0x30 - Root Error Status Register */ 134 uint32_t root_err_stat; 135 /* 0x34 - Error Source Identification Register */ 136 uint32_t err_src_id; 137 }; 138 139 struct al_pcie_core_reg_space_rev_1_2 { 140 uint32_t config_header[0x40 >> 2]; 141 uint32_t pcie_pm_cap_base; 142 uint32_t reserved1[(0x70 - 0x44) >> 2]; 143 uint32_t pcie_cap_base; 144 uint32_t pcie_dev_cap_base; 145 uint32_t pcie_dev_ctrl_status; 146 uint32_t pcie_link_cap_base; 147 uint32_t reserved2[(0xB0 - 0x80) >> 2]; 148 uint32_t msix_cap_base; 149 uint32_t reserved3[(0x100 - 0xB4) >> 2]; 150 struct al_pcie_core_aer_regs aer; 151 uint32_t reserved4[(0x150 - 152 (0x100 + 153 sizeof(struct al_pcie_core_aer_regs))) >> 2]; 154 uint32_t pcie_sec_ext_cap_base; 155 uint32_t reserved5[(0x700 - 0x154) >> 2]; 156 struct al_pcie_core_port_regs port_regs; 157 uint32_t reserved6[(0x1000 - 158 (0x700 + 159 sizeof(struct al_pcie_core_port_regs))) >> 2]; 160 }; 161 162 struct al_pcie_core_reg_space_rev_3 { 163 uint32_t config_header[0x40 >> 2]; 164 uint32_t pcie_pm_cap_base; 165 uint32_t reserved1[(0x70 - 0x44) >> 2]; 166 uint32_t pcie_cap_base; 167 uint32_t pcie_dev_cap_base; 168 uint32_t pcie_dev_ctrl_status; 169 uint32_t pcie_link_cap_base; 170 uint32_t reserved2[(0xB0 - 0x80) >> 2]; 171 uint32_t msix_cap_base; 172 uint32_t reserved3[(0x100 - 0xB4) >> 2]; 173 struct al_pcie_core_aer_regs aer; 174 uint32_t reserved4[(0x158 - 175 (0x100 + 176 sizeof(struct al_pcie_core_aer_regs))) >> 2]; 177 /* pcie_sec_cap is only applicable for function 0 */ 178 uint32_t pcie_sec_ext_cap_base; 179 uint32_t reserved5[(0x178 - 0x15C) >> 2]; 180 /* tph capability is only applicable for rev3 */ 181 uint32_t tph_cap_base; 182 uint32_t reserved6[(0x700 - 0x17C) >> 2]; 183 /* port_regs is only applicable for function 0 */ 184 struct al_pcie_core_port_regs port_regs; 185 uint32_t reserved7[(0x1000 - 186 (0x700 + 187 sizeof(struct al_pcie_core_port_regs))) >> 2]; 188 }; 189 190 struct al_pcie_rev3_core_reg_space { 191 struct al_pcie_core_reg_space_rev_3 func[REV3_MAX_NUM_OF_PFS]; 192 }; 193 194 struct al_pcie_core_reg_space { 195 uint32_t *config_header; 196 uint32_t *pcie_pm_cap_base; 197 uint32_t *pcie_cap_base; 198 uint32_t *pcie_dev_cap_base; 199 uint32_t *pcie_dev_ctrl_status; 200 uint32_t *pcie_link_cap_base; 201 uint32_t *msix_cap_base; 202 struct al_pcie_core_aer_regs *aer; 203 uint32_t *pcie_sec_ext_cap_base; 204 uint32_t *tph_cap_base; 205 }; 206 207 struct al_pcie_revx_regs { 208 struct al_pcie_revx_axi_regs __iomem axi; 209 }; 210 211 struct al_pcie_rev1_regs { 212 struct al_pcie_rev1_axi_regs __iomem axi; 213 uint32_t reserved1[(AL_PCIE_REV_1_2_APP_REGS_OFFSET - 214 (AL_PCIE_AXI_REGS_OFFSET + 215 sizeof(struct al_pcie_rev1_axi_regs))) >> 2]; 216 struct al_pcie_rev1_w_regs __iomem app; 217 uint32_t reserved2[(AL_PCIE_REV_1_2_CORE_CONF_BASE_OFFSET - 218 (AL_PCIE_REV_1_2_APP_REGS_OFFSET + 219 sizeof(struct al_pcie_rev1_w_regs))) >> 2]; 220 struct al_pcie_core_reg_space_rev_1_2 core_space; 221 }; 222 223 struct al_pcie_rev2_regs { 224 struct al_pcie_rev2_axi_regs __iomem axi; 225 uint32_t reserved1[(AL_PCIE_REV_1_2_APP_REGS_OFFSET - 226 (AL_PCIE_AXI_REGS_OFFSET + 227 sizeof(struct al_pcie_rev2_axi_regs))) >> 2]; 228 struct al_pcie_rev2_w_regs __iomem app; 229 uint32_t reserved2[(AL_PCIE_REV_1_2_CORE_CONF_BASE_OFFSET - 230 (AL_PCIE_REV_1_2_APP_REGS_OFFSET + 231 sizeof(struct al_pcie_rev2_w_regs))) >> 2]; 232 struct al_pcie_core_reg_space_rev_1_2 core_space; 233 }; 234 235 struct al_pcie_rev3_regs { 236 struct al_pcie_rev3_axi_regs __iomem axi; 237 uint32_t reserved1[(AL_PCIE_REV_3_APP_REGS_OFFSET - 238 (AL_PCIE_AXI_REGS_OFFSET + 239 sizeof(struct al_pcie_rev3_axi_regs))) >> 2]; 240 struct al_pcie_rev3_w_regs __iomem app; 241 uint32_t reserved2[(AL_PCIE_REV_3_CORE_CONF_BASE_OFFSET - 242 (AL_PCIE_REV_3_APP_REGS_OFFSET + 243 sizeof(struct al_pcie_rev3_w_regs))) >> 2]; 244 struct al_pcie_rev3_core_reg_space core_space; 245 }; 246 247 struct al_pcie_axi_ctrl { 248 uint32_t *global; 249 uint32_t *master_rctl; 250 uint32_t *master_arctl; 251 uint32_t *master_awctl; 252 uint32_t *master_ctl; 253 uint32_t *slv_ctl; 254 }; 255 256 struct al_pcie_axi_ob_ctrl { 257 uint32_t *cfg_target_bus; 258 uint32_t *cfg_control; 259 uint32_t *io_start_l; 260 uint32_t *io_start_h; 261 uint32_t *io_limit_l; 262 uint32_t *io_limit_h; 263 uint32_t *io_addr_mask_h; /* Rev 3 only */ 264 uint32_t *ar_msg_addr_mask_h; /* Rev 3 only */ 265 uint32_t *aw_msg_addr_mask_h; /* Rev 3 only */ 266 uint32_t *tgtid_reg_ovrd; /* Rev 2/3 only */ 267 uint32_t *addr_high_reg_ovrd_value; /* Rev 2/3 only */ 268 uint32_t *addr_high_reg_ovrd_sel; /* Rev 2/3 only */ 269 uint32_t *addr_size_replace; /* Rev 2/3 only */ 270 }; 271 272 struct al_pcie_axi_pcie_global { 273 uint32_t *conf; 274 }; 275 276 struct al_pcie_axi_conf { 277 uint32_t *zero_lane0; 278 uint32_t *zero_lane1; 279 uint32_t *zero_lane2; 280 uint32_t *zero_lane3; 281 uint32_t *zero_lane4; 282 uint32_t *zero_lane5; 283 uint32_t *zero_lane6; 284 uint32_t *zero_lane7; 285 }; 286 287 struct al_pcie_axi_status { 288 uint32_t *lane[AL_MAX_NUM_OF_LANES]; 289 }; 290 291 struct al_pcie_axi_parity { 292 uint32_t *en_axi; 293 }; 294 295 struct al_pcie_axi_ordering { 296 uint32_t *pos_cntl; 297 }; 298 299 struct al_pcie_axi_pre_configuration { 300 uint32_t *pcie_core_setup; 301 }; 302 303 struct al_pcie_axi_init_fc { 304 uint32_t *cfg; 305 }; 306 307 struct al_pcie_axi_attr_ovrd { 308 uint32_t *write_msg_ctrl_0; 309 uint32_t *write_msg_ctrl_1; 310 uint32_t *pf_sel; 311 }; 312 313 struct al_pcie_axi_pf_axi_attr_ovrd { 314 uint32_t *func_ctrl_0; 315 uint32_t *func_ctrl_1; 316 uint32_t *func_ctrl_2; 317 uint32_t *func_ctrl_3; 318 uint32_t *func_ctrl_4; 319 uint32_t *func_ctrl_5; 320 uint32_t *func_ctrl_6; 321 uint32_t *func_ctrl_7; 322 uint32_t *func_ctrl_8; 323 uint32_t *func_ctrl_9; 324 }; 325 326 struct al_pcie_axi_msg_attr_axuser_table { 327 uint32_t *entry_vec; 328 }; 329 330 struct al_pcie_axi_regs { 331 struct al_pcie_axi_ctrl ctrl; 332 struct al_pcie_axi_ob_ctrl ob_ctrl; 333 struct al_pcie_axi_pcie_global pcie_global; 334 struct al_pcie_axi_conf conf; 335 struct al_pcie_axi_status status; 336 struct al_pcie_axi_parity parity; 337 struct al_pcie_axi_ordering ordering; 338 struct al_pcie_axi_pre_configuration pre_configuration; 339 struct al_pcie_axi_init_fc init_fc; 340 struct al_pcie_revx_axi_int_grp_a_axi *int_grp_a; 341 /* Rev3 only */ 342 struct al_pcie_axi_attr_ovrd axi_attr_ovrd; 343 struct al_pcie_axi_pf_axi_attr_ovrd pf_axi_attr_ovrd[REV3_MAX_NUM_OF_PFS]; 344 struct al_pcie_axi_msg_attr_axuser_table msg_attr_axuser_table; 345 }; 346 347 struct al_pcie_w_global_ctrl { 348 uint32_t *port_init; 349 uint32_t *pm_control; 350 uint32_t *events_gen[REV3_MAX_NUM_OF_PFS]; 351 uint32_t *corr_err_sts_int; 352 uint32_t *uncorr_err_sts_int; 353 uint32_t *sris_kp_counter; 354 }; 355 356 struct al_pcie_w_soc_int { 357 uint32_t *status_0; 358 uint32_t *status_1; 359 uint32_t *status_2; 360 uint32_t *status_3; /* Rev 2/3 only */ 361 uint32_t *mask_inta_leg_0; 362 uint32_t *mask_inta_leg_1; 363 uint32_t *mask_inta_leg_2; 364 uint32_t *mask_inta_leg_3; /* Rev 2/3 only */ 365 uint32_t *mask_msi_leg_0; 366 uint32_t *mask_msi_leg_1; 367 uint32_t *mask_msi_leg_2; 368 uint32_t *mask_msi_leg_3; /* Rev 2/3 only */ 369 }; 370 struct al_pcie_w_atu { 371 uint32_t *in_mask_pair; 372 uint32_t *out_mask_pair; 373 uint32_t *reg_out_mask; /* Rev 3 only */ 374 }; 375 376 struct al_pcie_w_regs { 377 struct al_pcie_w_global_ctrl global_ctrl; 378 struct al_pcie_revx_w_debug *debug; 379 struct al_pcie_revx_w_ap_user_send_msg *ap_user_send_msg; 380 struct al_pcie_w_soc_int soc_int[REV3_MAX_NUM_OF_PFS]; 381 struct al_pcie_revx_w_cntl_gen *ctrl_gen; 382 struct al_pcie_revx_w_parity *parity; 383 struct al_pcie_w_atu atu; 384 struct al_pcie_revx_w_status_per_func *status_per_func[REV3_MAX_NUM_OF_PFS]; 385 struct al_pcie_revx_w_int_grp *int_grp_a; 386 struct al_pcie_revx_w_int_grp *int_grp_b; 387 struct al_pcie_revx_w_int_grp *int_grp_c; 388 struct al_pcie_revx_w_int_grp *int_grp_d; 389 struct al_pcie_rev3_w_cfg_func_ext *cfg_func_ext; /* Rev 3 only */ 390 }; 391 392 struct al_pcie_regs { 393 struct al_pcie_axi_regs axi; 394 struct al_pcie_w_regs app; 395 struct al_pcie_core_port_regs *port_regs; 396 struct al_pcie_core_reg_space core_space[REV3_MAX_NUM_OF_PFS]; 397 }; 398 399 #define PCIE_AXI_MISC_PCIE_GLOBAL_CONF_DEV_TYPE_EP 0 400 #define PCIE_AXI_MISC_PCIE_GLOBAL_CONF_DEV_TYPE_RC 4 401 402 #define PCIE_PORT_GEN2_CTRL_DIRECT_SPEED_CHANGE AL_BIT(17) 403 #define PCIE_PORT_GEN2_CTRL_TX_SWING_LOW_SHIFT 18 404 #define PCIE_PORT_GEN2_CTRL_TX_COMPLIANCE_RCV_SHIFT 19 405 #define PCIE_PORT_GEN2_CTRL_DEEMPHASIS_SET_SHIFT 20 406 #define PCIE_PORT_GEN2_CTRL_NUM_OF_LANES_MASK AL_FIELD_MASK(12, 8) 407 #define PCIE_PORT_GEN2_CTRL_NUM_OF_LANES_SHIFT 8 408 409 #define PCIE_PORT_GEN3_CTRL_EQ_PHASE_2_3_DISABLE_SHIFT 9 410 #define PCIE_PORT_GEN3_CTRL_EQ_DISABLE_SHIFT 16 411 412 #define PCIE_PORT_GEN3_EQ_LF_SHIFT 0 413 #define PCIE_PORT_GEN3_EQ_LF_MASK 0x3f 414 #define PCIE_PORT_GEN3_EQ_FS_SHIFT 6 415 #define PCIE_PORT_GEN3_EQ_FS_MASK (0x3f << PCIE_PORT_GEN3_EQ_FS_SHIFT) 416 417 #define PCIE_PORT_LINK_CTRL_LB_EN_SHIFT 2 418 #define PCIE_PORT_LINK_CTRL_FAST_LINK_EN_SHIFT 7 419 #define PCIE_PORT_LINK_CTRL_LINK_CAPABLE_MASK AL_FIELD_MASK(21, 16) 420 #define PCIE_PORT_LINK_CTRL_LINK_CAPABLE_SHIFT 16 421 422 #define PCIE_PORT_PIPE_LOOPBACK_CTRL_PIPE_LB_EN_SHIFT 31 423 424 #define PCIE_PORT_AXI_SLAVE_ERR_RESP_ALL_MAPPING_SHIFT 0 425 426 /** timer_ctrl_max_func_num register 427 * Max physical function number (for example: 0 for 1PF, 3 for 4PFs) 428 */ 429 #define PCIE_PORT_GEN3_MAX_FUNC_NUM AL_FIELD_MASK(7, 0) 430 431 /* filter_mask_reg_1 register */ 432 /** 433 * SKP Interval Value. 434 * The number of symbol times to wait between transmitting SKP ordered sets 435 */ 436 #define PCIE_FLT_MASK_SKP_INT_VAL_MASK AL_FIELD_MASK(10, 0) 437 438 /* 439 * 0: Treat Function MisMatched TLPs as UR 440 * 1: Treat Function MisMatched TLPs as Supported 441 */ 442 #define CX_FLT_MASK_UR_FUNC_MISMATCH AL_BIT(16) 443 444 /* 445 * 0: Treat CFG type1 TLPs as UR for EP; Supported for RC 446 * 1: Treat CFG type1 TLPs as Supported for EP; UR for RC 447 */ 448 #define CX_FLT_MASK_CFG_TYPE1_RE_AS_UR AL_BIT(19) 449 450 /* 451 * 0: Enforce requester id match for received CPL TLPs. 452 * A violation results in cpl_abort, and possibly AER of unexp_cpl_err, 453 * cpl_rcvd_ur, cpl_rcvd_ca 454 * 1: Mask requester id match for received CPL TLPs 455 */ 456 #define CX_FLT_MASK_CPL_REQID_MATCH AL_BIT(22) 457 458 /* 459 * 0: Enforce function match for received CPL TLPs. 460 * A violation results in cpl_abort, and possibly AER of unexp_cpl_err, 461 * cpl_rcvd_ur, cpl_rcvd_ca 462 * 1: Mask function match for received CPL TLPs 463 */ 464 #define CX_FLT_MASK_CPL_FUNC_MATCH AL_BIT(23) 465 466 /* vc0_posted_rcv_q_ctrl register */ 467 #define RADM_PQ_HCRD_VC0_MASK AL_FIELD_MASK(19, 12) 468 #define RADM_PQ_HCRD_VC0_SHIFT 12 469 470 /* vc0_non_posted_rcv_q_ctrl register */ 471 #define RADM_NPQ_HCRD_VC0_MASK AL_FIELD_MASK(19, 12) 472 #define RADM_NPQ_HCRD_VC0_SHIFT 12 473 474 /* vc0_comp_rcv_q_ctrl register */ 475 #define RADM_CPLQ_HCRD_VC0_MASK AL_FIELD_MASK(19, 12) 476 #define RADM_CPLQ_HCRD_VC0_SHIFT 12 477 478 /**** iATU, Control Register 1 ****/ 479 480 /** 481 * When the Address and BAR matching logic in the core indicate that a MEM-I/O 482 * transaction matches a BAR in the function corresponding to this value, then 483 * address translation proceeds. This check is only performed if the "Function 484 * Number Match Enable" bit of the "iATU Control 2 Register" is set 485 */ 486 #define PCIE_IATU_CR1_FUNC_NUM_MASK AL_FIELD_MASK(24, 20) 487 #define PCIE_IATU_CR1_FUNC_NUM_SHIFT 20 488 489 /**** iATU, Control Register 2 ****/ 490 /** For outbound regions, the Function Number Translation Bypass mode enables 491 * taking the function number of the translated TLP from the PCIe core 492 * interface and not from the "Function Number" field of CR1. 493 * For inbound regions, this bit should be asserted when physical function 494 * match mode needs to be enabled 495 */ 496 #define PCIE_IATU_CR2_FUNC_NUM_TRANS_BYPASS_FUNC_MATCH_ENABLE_MASK AL_BIT(19) 497 #define PCIE_IATU_CR2_FUNC_NUM_TRANS_BYPASS_FUNC_MATCH_ENABLE_SHIFT 19 498 499 /* pcie_dev_ctrl_status register */ 500 #define PCIE_PORT_DEV_CTRL_STATUS_CORR_ERR_REPORT_EN AL_BIT(0) 501 #define PCIE_PORT_DEV_CTRL_STATUS_NON_FTL_ERR_REPORT_EN AL_BIT(1) 502 #define PCIE_PORT_DEV_CTRL_STATUS_FTL_ERR_REPORT_EN AL_BIT(2) 503 #define PCIE_PORT_DEV_CTRL_STATUS_UNSUP_REQ_REPORT_EN AL_BIT(3) 504 505 #define PCIE_PORT_DEV_CTRL_STATUS_MPS_MASK AL_FIELD_MASK(7, 5) 506 #define PCIE_PORT_DEV_CTRL_STATUS_MPS_SHIFT 5 507 #define PCIE_PORT_DEV_CTRL_STATUS_MPS_VAL_256 (1 << PCIE_PORT_DEV_CTRL_STATUS_MPS_SHIFT) 508 509 #define PCIE_PORT_DEV_CTRL_STATUS_MRRS_MASK AL_FIELD_MASK(14, 12) 510 #define PCIE_PORT_DEV_CTRL_STATUS_MRRS_SHIFT 12 511 #define PCIE_PORT_DEV_CTRL_STATUS_MRRS_VAL_256 (1 << PCIE_PORT_DEV_CTRL_STATUS_MRRS_SHIFT) 512 513 /****************************************************************************** 514 * AER registers 515 ******************************************************************************/ 516 /* PCI Express Extended Capability ID */ 517 #define PCIE_AER_CAP_ID_MASK AL_FIELD_MASK(15, 0) 518 #define PCIE_AER_CAP_ID_SHIFT 0 519 #define PCIE_AER_CAP_ID_VAL 1 520 /* Capability Version */ 521 #define PCIE_AER_CAP_VER_MASK AL_FIELD_MASK(19, 16) 522 #define PCIE_AER_CAP_VER_SHIFT 16 523 #define PCIE_AER_CAP_VER_VAL 2 524 525 /* First Error Pointer */ 526 #define PCIE_AER_CTRL_STAT_FIRST_ERR_PTR_MASK AL_FIELD_MASK(4, 0) 527 #define PCIE_AER_CTRL_STAT_FIRST_ERR_PTR_SHIFT 0 528 /* ECRC Generation Capability */ 529 #define PCIE_AER_CTRL_STAT_ECRC_GEN_SUPPORTED AL_BIT(5) 530 /* ECRC Generation Enable */ 531 #define PCIE_AER_CTRL_STAT_ECRC_GEN_EN AL_BIT(6) 532 /* ECRC Check Capable */ 533 #define PCIE_AER_CTRL_STAT_ECRC_CHK_SUPPORTED AL_BIT(7) 534 /* ECRC Check Enable */ 535 #define PCIE_AER_CTRL_STAT_ECRC_CHK_EN AL_BIT(8) 536 537 /* Correctable Error Reporting Enable */ 538 #define PCIE_AER_ROOT_ERR_CMD_CORR_ERR_RPRT_EN AL_BIT(0) 539 /* Non-Fatal Error Reporting Enable */ 540 #define PCIE_AER_ROOT_ERR_CMD_NON_FTL_ERR_RPRT_EN AL_BIT(1) 541 /* Fatal Error Reporting Enable */ 542 #define PCIE_AER_ROOT_ERR_CMD_FTL_ERR_RPRT_EN AL_BIT(2) 543 544 /* ERR_COR Received */ 545 #define PCIE_AER_ROOT_ERR_STAT_CORR_ERR AL_BIT(0) 546 /* Multiple ERR_COR Received */ 547 #define PCIE_AER_ROOT_ERR_STAT_CORR_ERR_MULTI AL_BIT(1) 548 /* ERR_FATAL/NONFATAL Received */ 549 #define PCIE_AER_ROOT_ERR_STAT_FTL_NON_FTL_ERR AL_BIT(2) 550 /* Multiple ERR_FATAL/NONFATAL Received */ 551 #define PCIE_AER_ROOT_ERR_STAT_FTL_NON_FTL_ERR_MULTI AL_BIT(3) 552 /* First Uncorrectable Fatal */ 553 #define PCIE_AER_ROOT_ERR_STAT_FIRST_UNCORR_FTL AL_BIT(4) 554 /* Non-Fatal Error Messages Received */ 555 #define PCIE_AER_ROOT_ERR_STAT_NON_FTL_RCVD AL_BIT(5) 556 /* Fatal Error Messages Received */ 557 #define PCIE_AER_ROOT_ERR_STAT_FTL_RCVD AL_BIT(6) 558 /* Advanced Error Interrupt Message Number */ 559 #define PCIE_AER_ROOT_ERR_STAT_ERR_INT_MSG_NUM_MASK AL_FIELD_MASK(31, 27) 560 #define PCIE_AER_ROOT_ERR_STAT_ERR_INT_MSG_NUM_SHIFT 27 561 562 /* ERR_COR Source Identification */ 563 #define PCIE_AER_SRC_ID_CORR_ERR_MASK AL_FIELD_MASK(15, 0) 564 #define PCIE_AER_SRC_ID_CORR_ERR_SHIFT 0 565 /* ERR_FATAL/NONFATAL Source Identification */ 566 #define PCIE_AER_SRC_ID_CORR_ERR_FTL_NON_FTL_MASK AL_FIELD_MASK(31, 16) 567 #define PCIE_AER_SRC_ID_CORR_ERR_FTL_NON_FTL_SHIFT 16 568 569 /* AER message */ 570 #define PCIE_AER_MSG_REQID_MASK AL_FIELD_MASK(31, 16) 571 #define PCIE_AER_MSG_REQID_SHIFT 16 572 #define PCIE_AER_MSG_TYPE_MASK AL_FIELD_MASK(15, 8) 573 #define PCIE_AER_MSG_TYPE_SHIFT 8 574 #define PCIE_AER_MSG_RESERVED AL_FIELD_MASK(7, 1) 575 #define PCIE_AER_MSG_VALID AL_BIT(0) 576 /* AER message ack */ 577 #define PCIE_AER_MSG_ACK AL_BIT(0) 578 /* AER errors definitions */ 579 #define AL_PCIE_AER_TYPE_CORR (0x30) 580 #define AL_PCIE_AER_TYPE_NON_FATAL (0x31) 581 #define AL_PCIE_AER_TYPE_FATAL (0x33) 582 /* Requester ID Bus */ 583 #define AL_PCIE_REQID_BUS_NUM_SHIFT (8) 584 585 /****************************************************************************** 586 * TPH registers 587 ******************************************************************************/ 588 #define PCIE_TPH_NEXT_POINTER AL_FIELD_MASK(31, 20) 589 590 /****************************************************************************** 591 * Config Header registers 592 ******************************************************************************/ 593 /** 594 * see BIST_HEADER_TYPE_LATENCY_CACHE_LINE_SIZE_REG in core spec 595 * Note: valid only for EP mode 596 */ 597 #define PCIE_BIST_HEADER_TYPE_BASE 0xc 598 #define PCIE_BIST_HEADER_TYPE_MULTI_FUNC_MASK AL_BIT(23) 599 600 /****************************************************************************** 601 * SRIS KP counters default values 602 ******************************************************************************/ 603 #define PCIE_SRIS_KP_COUNTER_GEN3_DEFAULT_VAL (0x24) 604 #define PCIE_SRIS_KP_COUNTER_GEN21_DEFAULT_VAL (0x4B) 605 606 #endif 607