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