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 38f4b37ed0SZbigniew Bodek #ifndef __AL_HAL_PCIE_W_REG_H__ 39f4b37ed0SZbigniew Bodek #define __AL_HAL_PCIE_W_REG_H__ 40f4b37ed0SZbigniew Bodek 41f4b37ed0SZbigniew Bodek #ifdef __cplusplus 42f4b37ed0SZbigniew Bodek extern "C" { 43f4b37ed0SZbigniew Bodek #endif 44f4b37ed0SZbigniew Bodek /* 45f4b37ed0SZbigniew Bodek * Unit Registers 46f4b37ed0SZbigniew Bodek */ 47f4b37ed0SZbigniew Bodek 48f4b37ed0SZbigniew Bodek 49f4b37ed0SZbigniew Bodek 50f4b37ed0SZbigniew Bodek struct al_pcie_rev1_w_global_ctrl { 51f4b37ed0SZbigniew Bodek /* [0x0] */ 52f4b37ed0SZbigniew Bodek uint32_t port_init; 53f4b37ed0SZbigniew Bodek /* [0x4] */ 54f4b37ed0SZbigniew Bodek uint32_t port_status; 55f4b37ed0SZbigniew Bodek /* [0x8] */ 56f4b37ed0SZbigniew Bodek uint32_t pm_control; 57f4b37ed0SZbigniew Bodek uint32_t rsrvd_0; 58f4b37ed0SZbigniew Bodek /* [0x10] */ 59f4b37ed0SZbigniew Bodek uint32_t events_gen; 60f4b37ed0SZbigniew Bodek uint32_t rsrvd[3]; 61f4b37ed0SZbigniew Bodek }; 62f4b37ed0SZbigniew Bodek struct al_pcie_rev2_w_global_ctrl { 63f4b37ed0SZbigniew Bodek /* [0x0] */ 64f4b37ed0SZbigniew Bodek uint32_t port_init; 65f4b37ed0SZbigniew Bodek /* [0x4] */ 66f4b37ed0SZbigniew Bodek uint32_t port_status; 67f4b37ed0SZbigniew Bodek /* [0x8] */ 68f4b37ed0SZbigniew Bodek uint32_t pm_control; 69f4b37ed0SZbigniew Bodek uint32_t rsrvd_0; 70f4b37ed0SZbigniew Bodek /* [0x10] */ 71f4b37ed0SZbigniew Bodek uint32_t events_gen; 72f4b37ed0SZbigniew Bodek /* [0x14] */ 73f4b37ed0SZbigniew Bodek uint32_t pended_corr_err_sts_int; 74f4b37ed0SZbigniew Bodek /* [0x18] */ 75f4b37ed0SZbigniew Bodek uint32_t pended_uncorr_err_sts_int; 76f4b37ed0SZbigniew Bodek /* [0x1c] */ 77f4b37ed0SZbigniew Bodek uint32_t sris_kp_counter_value; 78f4b37ed0SZbigniew Bodek }; 79f4b37ed0SZbigniew Bodek struct al_pcie_rev3_w_global_ctrl { 80f4b37ed0SZbigniew Bodek /* [0x0] */ 81f4b37ed0SZbigniew Bodek uint32_t port_init; 82f4b37ed0SZbigniew Bodek /* [0x4] */ 83f4b37ed0SZbigniew Bodek uint32_t port_status; 84f4b37ed0SZbigniew Bodek /* [0x8] */ 85f4b37ed0SZbigniew Bodek uint32_t pm_control; 86f4b37ed0SZbigniew Bodek /* [0xc] */ 87f4b37ed0SZbigniew Bodek uint32_t pended_corr_err_sts_int; 88f4b37ed0SZbigniew Bodek /* [0x10] */ 89f4b37ed0SZbigniew Bodek uint32_t pended_uncorr_err_sts_int; 90f4b37ed0SZbigniew Bodek /* [0x14] */ 91f4b37ed0SZbigniew Bodek uint32_t sris_kp_counter_value; 92f4b37ed0SZbigniew Bodek uint32_t rsrvd[2]; 93f4b37ed0SZbigniew Bodek }; 94f4b37ed0SZbigniew Bodek 95f4b37ed0SZbigniew Bodek struct al_pcie_rev3_w_events_gen_per_func { 96f4b37ed0SZbigniew Bodek /* [0x0] */ 97f4b37ed0SZbigniew Bodek uint32_t events_gen; 98f4b37ed0SZbigniew Bodek }; 99f4b37ed0SZbigniew Bodek struct al_pcie_rev3_w_pm_state_per_func { 100f4b37ed0SZbigniew Bodek /* [0x0] */ 101f4b37ed0SZbigniew Bodek uint32_t pm_state_per_func; 102f4b37ed0SZbigniew Bodek }; 103f4b37ed0SZbigniew Bodek struct al_pcie_rev3_w_cfg_bars_ovrd { 104f4b37ed0SZbigniew Bodek /* [0x0] */ 105f4b37ed0SZbigniew Bodek uint32_t bar0_mask_lsb; 106f4b37ed0SZbigniew Bodek /* [0x4] */ 107f4b37ed0SZbigniew Bodek uint32_t bar0_mask_msb; 108f4b37ed0SZbigniew Bodek /* [0x8] */ 109f4b37ed0SZbigniew Bodek uint32_t bar0_limit_lsb; 110f4b37ed0SZbigniew Bodek /* [0xc] */ 111f4b37ed0SZbigniew Bodek uint32_t bar0_limit_msb; 112f4b37ed0SZbigniew Bodek /* [0x10] */ 113f4b37ed0SZbigniew Bodek uint32_t bar0_start_lsb; 114f4b37ed0SZbigniew Bodek /* [0x14] */ 115f4b37ed0SZbigniew Bodek uint32_t bar0_start_msb; 116f4b37ed0SZbigniew Bodek /* [0x18] */ 117f4b37ed0SZbigniew Bodek uint32_t bar0_ctrl; 118f4b37ed0SZbigniew Bodek /* [0x1c] */ 119f4b37ed0SZbigniew Bodek uint32_t bar1_mask_lsb; 120f4b37ed0SZbigniew Bodek /* [0x20] */ 121f4b37ed0SZbigniew Bodek uint32_t bar1_mask_msb; 122f4b37ed0SZbigniew Bodek /* [0x24] */ 123f4b37ed0SZbigniew Bodek uint32_t bar1_limit_lsb; 124f4b37ed0SZbigniew Bodek /* [0x28] */ 125f4b37ed0SZbigniew Bodek uint32_t bar1_limit_msb; 126f4b37ed0SZbigniew Bodek /* [0x2c] */ 127f4b37ed0SZbigniew Bodek uint32_t bar1_start_lsb; 128f4b37ed0SZbigniew Bodek /* [0x30] */ 129f4b37ed0SZbigniew Bodek uint32_t bar1_start_msb; 130f4b37ed0SZbigniew Bodek /* [0x34] */ 131f4b37ed0SZbigniew Bodek uint32_t bar1_ctrl; 132f4b37ed0SZbigniew Bodek /* [0x38] */ 133f4b37ed0SZbigniew Bodek uint32_t bar2_mask_lsb; 134f4b37ed0SZbigniew Bodek /* [0x3c] */ 135f4b37ed0SZbigniew Bodek uint32_t bar2_mask_msb; 136f4b37ed0SZbigniew Bodek /* [0x40] */ 137f4b37ed0SZbigniew Bodek uint32_t bar2_limit_lsb; 138f4b37ed0SZbigniew Bodek /* [0x44] */ 139f4b37ed0SZbigniew Bodek uint32_t bar2_limit_msb; 140f4b37ed0SZbigniew Bodek /* [0x48] */ 141f4b37ed0SZbigniew Bodek uint32_t bar2_start_lsb; 142f4b37ed0SZbigniew Bodek /* [0x4c] */ 143f4b37ed0SZbigniew Bodek uint32_t bar2_start_msb; 144f4b37ed0SZbigniew Bodek /* [0x50] */ 145f4b37ed0SZbigniew Bodek uint32_t bar2_ctrl; 146f4b37ed0SZbigniew Bodek /* [0x54] */ 147f4b37ed0SZbigniew Bodek uint32_t bar3_mask_lsb; 148f4b37ed0SZbigniew Bodek /* [0x58] */ 149f4b37ed0SZbigniew Bodek uint32_t bar3_mask_msb; 150f4b37ed0SZbigniew Bodek /* [0x5c] */ 151f4b37ed0SZbigniew Bodek uint32_t bar3_limit_lsb; 152f4b37ed0SZbigniew Bodek /* [0x60] */ 153f4b37ed0SZbigniew Bodek uint32_t bar3_limit_msb; 154f4b37ed0SZbigniew Bodek /* [0x64] */ 155f4b37ed0SZbigniew Bodek uint32_t bar3_start_lsb; 156f4b37ed0SZbigniew Bodek /* [0x68] */ 157f4b37ed0SZbigniew Bodek uint32_t bar3_start_msb; 158f4b37ed0SZbigniew Bodek /* [0x6c] */ 159f4b37ed0SZbigniew Bodek uint32_t bar3_ctrl; 160f4b37ed0SZbigniew Bodek /* [0x70] */ 161f4b37ed0SZbigniew Bodek uint32_t bar4_mask_lsb; 162f4b37ed0SZbigniew Bodek /* [0x74] */ 163f4b37ed0SZbigniew Bodek uint32_t bar4_mask_msb; 164f4b37ed0SZbigniew Bodek /* [0x78] */ 165f4b37ed0SZbigniew Bodek uint32_t bar4_limit_lsb; 166f4b37ed0SZbigniew Bodek /* [0x7c] */ 167f4b37ed0SZbigniew Bodek uint32_t bar4_limit_msb; 168f4b37ed0SZbigniew Bodek /* [0x80] */ 169f4b37ed0SZbigniew Bodek uint32_t bar4_start_lsb; 170f4b37ed0SZbigniew Bodek /* [0x84] */ 171f4b37ed0SZbigniew Bodek uint32_t bar4_start_msb; 172f4b37ed0SZbigniew Bodek /* [0x88] */ 173f4b37ed0SZbigniew Bodek uint32_t bar4_ctrl; 174f4b37ed0SZbigniew Bodek /* [0x8c] */ 175f4b37ed0SZbigniew Bodek uint32_t bar5_mask_lsb; 176f4b37ed0SZbigniew Bodek /* [0x90] */ 177f4b37ed0SZbigniew Bodek uint32_t bar5_mask_msb; 178f4b37ed0SZbigniew Bodek /* [0x94] */ 179f4b37ed0SZbigniew Bodek uint32_t bar5_limit_lsb; 180f4b37ed0SZbigniew Bodek /* [0x98] */ 181f4b37ed0SZbigniew Bodek uint32_t bar5_limit_msb; 182f4b37ed0SZbigniew Bodek /* [0x9c] */ 183f4b37ed0SZbigniew Bodek uint32_t bar5_start_lsb; 184f4b37ed0SZbigniew Bodek /* [0xa0] */ 185f4b37ed0SZbigniew Bodek uint32_t bar5_start_msb; 186f4b37ed0SZbigniew Bodek /* [0xa4] */ 187f4b37ed0SZbigniew Bodek uint32_t bar5_ctrl; 188f4b37ed0SZbigniew Bodek uint32_t rsrvd[2]; 189f4b37ed0SZbigniew Bodek }; 190f4b37ed0SZbigniew Bodek 191f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_debug { 192f4b37ed0SZbigniew Bodek /* [0x0] */ 193f4b37ed0SZbigniew Bodek uint32_t info_0; 194f4b37ed0SZbigniew Bodek /* [0x4] */ 195f4b37ed0SZbigniew Bodek uint32_t info_1; 196f4b37ed0SZbigniew Bodek /* [0x8] */ 197f4b37ed0SZbigniew Bodek uint32_t info_2; 198f4b37ed0SZbigniew Bodek /* [0xc] */ 199f4b37ed0SZbigniew Bodek uint32_t info_3; 200f4b37ed0SZbigniew Bodek }; 201f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_ob_ven_msg { 202f4b37ed0SZbigniew Bodek /* [0x0] */ 203f4b37ed0SZbigniew Bodek uint32_t control; 204f4b37ed0SZbigniew Bodek /* [0x4] */ 205f4b37ed0SZbigniew Bodek uint32_t param_1; 206f4b37ed0SZbigniew Bodek /* [0x8] */ 207f4b37ed0SZbigniew Bodek uint32_t param_2; 208f4b37ed0SZbigniew Bodek /* [0xc] */ 209f4b37ed0SZbigniew Bodek uint32_t data_high; 210f4b37ed0SZbigniew Bodek uint32_t rsrvd_0; 211f4b37ed0SZbigniew Bodek /* [0x14] */ 212f4b37ed0SZbigniew Bodek uint32_t data_low; 213f4b37ed0SZbigniew Bodek }; 214f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_ap_user_send_msg { 215f4b37ed0SZbigniew Bodek /* [0x0] */ 216f4b37ed0SZbigniew Bodek uint32_t req_info; 217f4b37ed0SZbigniew Bodek /* [0x4] */ 218f4b37ed0SZbigniew Bodek uint32_t ack_info; 219f4b37ed0SZbigniew Bodek }; 220f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_link_down { 221f4b37ed0SZbigniew Bodek /* [0x0] */ 222f4b37ed0SZbigniew Bodek uint32_t reset_delay; 223f4b37ed0SZbigniew Bodek /* [0x4] */ 224f4b37ed0SZbigniew Bodek uint32_t reset_extend_rsrvd; 225f4b37ed0SZbigniew Bodek }; 226f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_cntl_gen { 227f4b37ed0SZbigniew Bodek /* [0x0] */ 228f4b37ed0SZbigniew Bodek uint32_t features; 229f4b37ed0SZbigniew Bodek }; 230f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_parity { 231f4b37ed0SZbigniew Bodek /* [0x0] */ 232f4b37ed0SZbigniew Bodek uint32_t en_core; 233f4b37ed0SZbigniew Bodek /* [0x4] */ 234f4b37ed0SZbigniew Bodek uint32_t status_core; 235f4b37ed0SZbigniew Bodek }; 236f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_last_wr { 237f4b37ed0SZbigniew Bodek /* [0x0] */ 238f4b37ed0SZbigniew Bodek uint32_t cfg_addr; 239f4b37ed0SZbigniew Bodek }; 240f4b37ed0SZbigniew Bodek struct al_pcie_rev1_2_w_atu { 241f4b37ed0SZbigniew Bodek /* [0x0] */ 242f4b37ed0SZbigniew Bodek uint32_t in_mask_pair[6]; 243f4b37ed0SZbigniew Bodek /* [0x18] */ 244f4b37ed0SZbigniew Bodek uint32_t out_mask_pair[6]; 245f4b37ed0SZbigniew Bodek }; 246f4b37ed0SZbigniew Bodek struct al_pcie_rev3_w_atu { 247f4b37ed0SZbigniew Bodek /* [0x0] */ 248f4b37ed0SZbigniew Bodek uint32_t in_mask_pair[12]; 249f4b37ed0SZbigniew Bodek /* [0x30] */ 250f4b37ed0SZbigniew Bodek uint32_t out_mask_pair[8]; 251f4b37ed0SZbigniew Bodek /* [0x50] */ 252f4b37ed0SZbigniew Bodek uint32_t reg_out_mask; 253f4b37ed0SZbigniew Bodek uint32_t rsrvd[11]; 254f4b37ed0SZbigniew Bodek }; 255f4b37ed0SZbigniew Bodek struct al_pcie_rev3_w_cfg_func_ext { 256f4b37ed0SZbigniew Bodek /* [0x0] */ 257f4b37ed0SZbigniew Bodek uint32_t cfg; 258f4b37ed0SZbigniew Bodek }; 259f4b37ed0SZbigniew Bodek struct al_pcie_rev3_w_app_hdr_interface_send { 260f4b37ed0SZbigniew Bodek /* [0x0] */ 261f4b37ed0SZbigniew Bodek uint32_t app_hdr_31_0; 262f4b37ed0SZbigniew Bodek /* [0x4] */ 263f4b37ed0SZbigniew Bodek uint32_t app_hdr_63_32; 264f4b37ed0SZbigniew Bodek /* [0x8] */ 265f4b37ed0SZbigniew Bodek uint32_t app_hdr_95_64; 266f4b37ed0SZbigniew Bodek /* [0xc] */ 267f4b37ed0SZbigniew Bodek uint32_t app_hdr_127_96; 268f4b37ed0SZbigniew Bodek /* [0x10] */ 269f4b37ed0SZbigniew Bodek uint32_t app_err_bus; 270f4b37ed0SZbigniew Bodek /* [0x14] */ 271f4b37ed0SZbigniew Bodek uint32_t app_func_num_advisory; 272f4b37ed0SZbigniew Bodek /* [0x18] */ 273f4b37ed0SZbigniew Bodek uint32_t app_hdr_cmd; 274f4b37ed0SZbigniew Bodek }; 275f4b37ed0SZbigniew Bodek struct al_pcie_rev3_w_diag_command { 276f4b37ed0SZbigniew Bodek /* [0x0] */ 277f4b37ed0SZbigniew Bodek uint32_t diag_ctrl; 278f4b37ed0SZbigniew Bodek }; 279f4b37ed0SZbigniew Bodek struct al_pcie_rev1_w_soc_int { 280f4b37ed0SZbigniew Bodek /* [0x0] */ 281f4b37ed0SZbigniew Bodek uint32_t status_0; 282f4b37ed0SZbigniew Bodek /* [0x4] */ 283f4b37ed0SZbigniew Bodek uint32_t status_1; 284f4b37ed0SZbigniew Bodek /* [0x8] */ 285f4b37ed0SZbigniew Bodek uint32_t status_2; 286f4b37ed0SZbigniew Bodek /* [0xc] */ 287f4b37ed0SZbigniew Bodek uint32_t mask_inta_leg_0; 288f4b37ed0SZbigniew Bodek /* [0x10] */ 289f4b37ed0SZbigniew Bodek uint32_t mask_inta_leg_1; 290f4b37ed0SZbigniew Bodek /* [0x14] */ 291f4b37ed0SZbigniew Bodek uint32_t mask_inta_leg_2; 292f4b37ed0SZbigniew Bodek /* [0x18] */ 293f4b37ed0SZbigniew Bodek uint32_t mask_msi_leg_0; 294f4b37ed0SZbigniew Bodek /* [0x1c] */ 295f4b37ed0SZbigniew Bodek uint32_t mask_msi_leg_1; 296f4b37ed0SZbigniew Bodek /* [0x20] */ 297f4b37ed0SZbigniew Bodek uint32_t mask_msi_leg_2; 298f4b37ed0SZbigniew Bodek /* [0x24] */ 299f4b37ed0SZbigniew Bodek uint32_t msi_leg_cntl; 300f4b37ed0SZbigniew Bodek }; 301f4b37ed0SZbigniew Bodek struct al_pcie_rev2_w_soc_int { 302f4b37ed0SZbigniew Bodek /* [0x0] */ 303f4b37ed0SZbigniew Bodek uint32_t status_0; 304f4b37ed0SZbigniew Bodek /* [0x4] */ 305f4b37ed0SZbigniew Bodek uint32_t status_1; 306f4b37ed0SZbigniew Bodek /* [0x8] */ 307f4b37ed0SZbigniew Bodek uint32_t status_2; 308f4b37ed0SZbigniew Bodek /* [0xc] */ 309f4b37ed0SZbigniew Bodek uint32_t status_3; 310f4b37ed0SZbigniew Bodek /* [0x10] */ 311f4b37ed0SZbigniew Bodek uint32_t mask_inta_leg_0; 312f4b37ed0SZbigniew Bodek /* [0x14] */ 313f4b37ed0SZbigniew Bodek uint32_t mask_inta_leg_1; 314f4b37ed0SZbigniew Bodek /* [0x18] */ 315f4b37ed0SZbigniew Bodek uint32_t mask_inta_leg_2; 316f4b37ed0SZbigniew Bodek /* [0x1c] */ 317f4b37ed0SZbigniew Bodek uint32_t mask_inta_leg_3; 318f4b37ed0SZbigniew Bodek /* [0x20] */ 319f4b37ed0SZbigniew Bodek uint32_t mask_msi_leg_0; 320f4b37ed0SZbigniew Bodek /* [0x24] */ 321f4b37ed0SZbigniew Bodek uint32_t mask_msi_leg_1; 322f4b37ed0SZbigniew Bodek /* [0x28] */ 323f4b37ed0SZbigniew Bodek uint32_t mask_msi_leg_2; 324f4b37ed0SZbigniew Bodek /* [0x2c] */ 325f4b37ed0SZbigniew Bodek uint32_t mask_msi_leg_3; 326f4b37ed0SZbigniew Bodek /* [0x30] */ 327f4b37ed0SZbigniew Bodek uint32_t msi_leg_cntl; 328f4b37ed0SZbigniew Bodek }; 329f4b37ed0SZbigniew Bodek struct al_pcie_rev3_w_soc_int_per_func { 330f4b37ed0SZbigniew Bodek /* [0x0] */ 331f4b37ed0SZbigniew Bodek uint32_t status_0; 332f4b37ed0SZbigniew Bodek /* [0x4] */ 333f4b37ed0SZbigniew Bodek uint32_t status_1; 334f4b37ed0SZbigniew Bodek /* [0x8] */ 335f4b37ed0SZbigniew Bodek uint32_t status_2; 336f4b37ed0SZbigniew Bodek /* [0xc] */ 337f4b37ed0SZbigniew Bodek uint32_t status_3; 338f4b37ed0SZbigniew Bodek /* [0x10] */ 339f4b37ed0SZbigniew Bodek uint32_t mask_inta_leg_0; 340f4b37ed0SZbigniew Bodek /* [0x14] */ 341f4b37ed0SZbigniew Bodek uint32_t mask_inta_leg_1; 342f4b37ed0SZbigniew Bodek /* [0x18] */ 343f4b37ed0SZbigniew Bodek uint32_t mask_inta_leg_2; 344f4b37ed0SZbigniew Bodek /* [0x1c] */ 345f4b37ed0SZbigniew Bodek uint32_t mask_inta_leg_3; 346f4b37ed0SZbigniew Bodek /* [0x20] */ 347f4b37ed0SZbigniew Bodek uint32_t mask_msi_leg_0; 348f4b37ed0SZbigniew Bodek /* [0x24] */ 349f4b37ed0SZbigniew Bodek uint32_t mask_msi_leg_1; 350f4b37ed0SZbigniew Bodek /* [0x28] */ 351f4b37ed0SZbigniew Bodek uint32_t mask_msi_leg_2; 352f4b37ed0SZbigniew Bodek /* [0x2c] */ 353f4b37ed0SZbigniew Bodek uint32_t mask_msi_leg_3; 354f4b37ed0SZbigniew Bodek /* [0x30] */ 355f4b37ed0SZbigniew Bodek uint32_t msi_leg_cntl; 356f4b37ed0SZbigniew Bodek }; 357f4b37ed0SZbigniew Bodek 358f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_ap_err { 359f4b37ed0SZbigniew Bodek /* 360f4b37ed0SZbigniew Bodek * [0x0] latch the header in case of any error occur in the core, read 361f4b37ed0SZbigniew Bodek * on clear of the last register in the bind. 362f4b37ed0SZbigniew Bodek */ 363f4b37ed0SZbigniew Bodek uint32_t hdr_log; 364f4b37ed0SZbigniew Bodek }; 365f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_status_per_func { 366f4b37ed0SZbigniew Bodek /* 367f4b37ed0SZbigniew Bodek * [0x0] latch the header in case of any error occure in the core, read 368f4b37ed0SZbigniew Bodek * on clear of the last register in the bind. 369f4b37ed0SZbigniew Bodek */ 370f4b37ed0SZbigniew Bodek uint32_t status_per_func; 371f4b37ed0SZbigniew Bodek }; 372f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_int_grp { 373f4b37ed0SZbigniew Bodek /* 374f4b37ed0SZbigniew Bodek * [0x0] Interrupt Cause Register 375f4b37ed0SZbigniew Bodek * Set by hardware 376f4b37ed0SZbigniew Bodek * - If MSI-X is enabled and auto_clear control bit =TRUE, automatically 377f4b37ed0SZbigniew Bodek * cleared after MSI-X message associated with this specific interrupt 378f4b37ed0SZbigniew Bodek * bit is sent (MSI-X acknowledge is received). 379f4b37ed0SZbigniew Bodek * - Software can set a bit in this register by writing 1 to the 380f4b37ed0SZbigniew Bodek * associated bit in the Interrupt Cause Set register 381f4b37ed0SZbigniew Bodek * Write-0 clears a bit. Write-1 has no effect. 382f4b37ed0SZbigniew Bodek * - On CPU Read - If clear_on_read control bit =TRUE, automatically 383f4b37ed0SZbigniew Bodek * cleared (all bits are cleared). 384f4b37ed0SZbigniew Bodek * When there is a conflict and on the same clock cycle, hardware tries 385f4b37ed0SZbigniew Bodek * to set a bit in the Interrupt Cause register, the specific bit is set 386f4b37ed0SZbigniew Bodek * to ensure the interrupt indication is not lost. 387f4b37ed0SZbigniew Bodek */ 388f4b37ed0SZbigniew Bodek uint32_t cause; 389f4b37ed0SZbigniew Bodek uint32_t rsrvd_0; 390f4b37ed0SZbigniew Bodek /* 391f4b37ed0SZbigniew Bodek * [0x8] Interrupt Cause Set Register 392f4b37ed0SZbigniew Bodek * Writing 1 to a bit in this register sets its corresponding cause bit, 393f4b37ed0SZbigniew Bodek * enabling software to generate a hardware interrupt. Write 0 has no 394f4b37ed0SZbigniew Bodek * effect. 395f4b37ed0SZbigniew Bodek */ 396f4b37ed0SZbigniew Bodek uint32_t cause_set; 397f4b37ed0SZbigniew Bodek uint32_t rsrvd_1; 398f4b37ed0SZbigniew Bodek /* 399f4b37ed0SZbigniew Bodek * [0x10] Interrupt Mask Register 400f4b37ed0SZbigniew Bodek * If Auto-mask control bit =TRUE, automatically set to 1 after MSI-X 401f4b37ed0SZbigniew Bodek * message associatd with the associated interrupt bit is sent (AXI 402f4b37ed0SZbigniew Bodek * write acknowledge is received). 403f4b37ed0SZbigniew Bodek */ 404f4b37ed0SZbigniew Bodek uint32_t mask; 405f4b37ed0SZbigniew Bodek uint32_t rsrvd_2; 406f4b37ed0SZbigniew Bodek /* 407f4b37ed0SZbigniew Bodek * [0x18] Interrupt Mask Clear Register 408f4b37ed0SZbigniew Bodek * Used when auto-mask control bit=True. Enables CPU to clear a specific 409f4b37ed0SZbigniew Bodek * bit. It prevents a scenario in which the CPU overrides another bit 410f4b37ed0SZbigniew Bodek * with 1 (old value) that hardware has just cleared to 0. 411f4b37ed0SZbigniew Bodek * Write 0 to this register clears its corresponding mask bit. Write 1 412f4b37ed0SZbigniew Bodek * has no effect. 413f4b37ed0SZbigniew Bodek */ 414f4b37ed0SZbigniew Bodek uint32_t mask_clear; 415f4b37ed0SZbigniew Bodek uint32_t rsrvd_3; 416f4b37ed0SZbigniew Bodek /* 417f4b37ed0SZbigniew Bodek * [0x20] Interrupt Status Register 418f4b37ed0SZbigniew Bodek * This register latches the status of the interrupt source. 419f4b37ed0SZbigniew Bodek */ 420f4b37ed0SZbigniew Bodek uint32_t status; 421f4b37ed0SZbigniew Bodek uint32_t rsrvd_4; 422f4b37ed0SZbigniew Bodek /* [0x28] Interrupt Control Register */ 423f4b37ed0SZbigniew Bodek uint32_t control; 424f4b37ed0SZbigniew Bodek uint32_t rsrvd_5; 425f4b37ed0SZbigniew Bodek /* 426f4b37ed0SZbigniew Bodek * [0x30] Interrupt Mask Register 427f4b37ed0SZbigniew Bodek * Each bit in this register masks the corresponding cause bit for 428f4b37ed0SZbigniew Bodek * generating an Abort signal. Its default value is determined by unit 429f4b37ed0SZbigniew Bodek * instantiation. 430f4b37ed0SZbigniew Bodek * (Abort = Wire-OR of Cause & !Interrupt_Abort_Mask) 431f4b37ed0SZbigniew Bodek * This register provides error handling configuration for error 432f4b37ed0SZbigniew Bodek * interrupts 433f4b37ed0SZbigniew Bodek */ 434f4b37ed0SZbigniew Bodek uint32_t abort_mask; 435f4b37ed0SZbigniew Bodek uint32_t rsrvd_6; 436f4b37ed0SZbigniew Bodek /* 437f4b37ed0SZbigniew Bodek * [0x38] Interrupt Log Register 438f4b37ed0SZbigniew Bodek * Each bit in this register masks the corresponding cause bit for 439f4b37ed0SZbigniew Bodek * capturing the log registers. Its default value is determined by unit 440f4b37ed0SZbigniew Bodek * instantiation. 441f4b37ed0SZbigniew Bodek * (Log_capture = Wire-OR of Cause & !Interrupt_Log_Mask) 442f4b37ed0SZbigniew Bodek * This register provides error handling configuration for error 443f4b37ed0SZbigniew Bodek * interrupts. 444f4b37ed0SZbigniew Bodek */ 445f4b37ed0SZbigniew Bodek uint32_t log_mask; 446f4b37ed0SZbigniew Bodek uint32_t rsrvd; 447f4b37ed0SZbigniew Bodek }; 448f4b37ed0SZbigniew Bodek 449f4b37ed0SZbigniew Bodek struct al_pcie_rev1_w_regs { 450f4b37ed0SZbigniew Bodek struct al_pcie_rev1_w_global_ctrl global_ctrl; /* [0x0] */ 451f4b37ed0SZbigniew Bodek uint32_t rsrvd_0[24]; 452f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_debug debug; /* [0x80] */ 453f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_ob_ven_msg ob_ven_msg; /* [0x90] */ 454f4b37ed0SZbigniew Bodek uint32_t rsrvd_1[86]; 455f4b37ed0SZbigniew Bodek struct al_pcie_rev1_w_soc_int soc_int; /* [0x200] */ 456f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_link_down link_down; /* [0x228] */ 457f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_cntl_gen ctrl_gen; /* [0x230] */ 458f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_parity parity; /* [0x234] */ 459f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_last_wr last_wr; /* [0x23c] */ 460f4b37ed0SZbigniew Bodek struct al_pcie_rev1_2_w_atu atu; /* [0x240] */ 461f4b37ed0SZbigniew Bodek uint32_t rsrvd_2[36]; 462f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_int_grp int_grp_a_m0; /* [0x300] */ 463f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_int_grp int_grp_b_m0; /* [0x340] */ 464f4b37ed0SZbigniew Bodek uint32_t rsrvd_3[32]; 465f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_int_grp int_grp_a; /* [0x400] */ 466f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_int_grp int_grp_b; /* [0x440] */ 467f4b37ed0SZbigniew Bodek }; 468f4b37ed0SZbigniew Bodek 469f4b37ed0SZbigniew Bodek struct al_pcie_rev2_w_regs { 470f4b37ed0SZbigniew Bodek struct al_pcie_rev2_w_global_ctrl global_ctrl; /* [0x0] */ 471f4b37ed0SZbigniew Bodek uint32_t rsrvd_0[24]; 472f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_debug debug; /* [0x80] */ 473f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_ob_ven_msg ob_ven_msg; /* [0x90] */ 474f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_ap_user_send_msg ap_user_send_msg; /* [0xa8] */ 475f4b37ed0SZbigniew Bodek uint32_t rsrvd_1[20]; 476f4b37ed0SZbigniew Bodek struct al_pcie_rev2_w_soc_int soc_int; /* [0x100] */ 477f4b37ed0SZbigniew Bodek uint32_t rsrvd_2[61]; 478f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_link_down link_down; /* [0x228] */ 479f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_cntl_gen ctrl_gen; /* [0x230] */ 480f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_parity parity; /* [0x234] */ 481f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_last_wr last_wr; /* [0x23c] */ 482f4b37ed0SZbigniew Bodek struct al_pcie_rev1_2_w_atu atu; /* [0x240] */ 483f4b37ed0SZbigniew Bodek uint32_t rsrvd_3[6]; 484f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_ap_err ap_err[4]; /* [0x288] */ 485f4b37ed0SZbigniew Bodek uint32_t rsrvd_4[26]; 486f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_status_per_func status_per_func; /* [0x300] */ 487f4b37ed0SZbigniew Bodek uint32_t rsrvd_5[63]; 488f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_int_grp int_grp_a; /* [0x400] */ 489f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_int_grp int_grp_b; /* [0x440] */ 490f4b37ed0SZbigniew Bodek }; 491f4b37ed0SZbigniew Bodek 492f4b37ed0SZbigniew Bodek struct al_pcie_rev3_w_regs { 493f4b37ed0SZbigniew Bodek struct al_pcie_rev3_w_global_ctrl global_ctrl; /* [0x0] */ 494f4b37ed0SZbigniew Bodek uint32_t rsrvd_0[24]; 495f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_debug debug; /* [0x80] */ 496f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_ob_ven_msg ob_ven_msg; /* [0x90] */ 497f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_ap_user_send_msg ap_user_send_msg; /* [0xa8] */ 498f4b37ed0SZbigniew Bodek uint32_t rsrvd_1[94]; 499f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_link_down link_down; /* [0x228] */ 500f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_cntl_gen ctrl_gen; /* [0x230] */ 501f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_parity parity; /* [0x234] */ 502f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_last_wr last_wr; /* [0x23c] */ 503f4b37ed0SZbigniew Bodek struct al_pcie_rev3_w_atu atu; /* [0x240] */ 504f4b37ed0SZbigniew Bodek uint32_t rsrvd_2[8]; 505f4b37ed0SZbigniew Bodek struct al_pcie_rev3_w_cfg_func_ext cfg_func_ext; /* [0x2e0] */ 506f4b37ed0SZbigniew Bodek struct al_pcie_rev3_w_app_hdr_interface_send app_hdr_interface_send;/* [0x2e4] */ 507f4b37ed0SZbigniew Bodek struct al_pcie_rev3_w_diag_command diag_command; /* [0x300] */ 508f4b37ed0SZbigniew Bodek uint32_t rsrvd_3[3]; 509f4b37ed0SZbigniew Bodek struct al_pcie_rev3_w_soc_int_per_func soc_int_per_func[REV3_MAX_NUM_OF_PFS]; /* [0x310] */ 510f4b37ed0SZbigniew Bodek uint32_t rsrvd_4[44]; 511f4b37ed0SZbigniew Bodek struct al_pcie_rev3_w_events_gen_per_func events_gen_per_func[REV3_MAX_NUM_OF_PFS]; /* [0x490] */ 512f4b37ed0SZbigniew Bodek uint32_t rsrvd_5[4]; 513f4b37ed0SZbigniew Bodek struct al_pcie_rev3_w_pm_state_per_func pm_state_per_func[REV3_MAX_NUM_OF_PFS];/* [0x4b0] */ 514f4b37ed0SZbigniew Bodek uint32_t rsrvd_6[16]; 515f4b37ed0SZbigniew Bodek struct al_pcie_rev3_w_cfg_bars_ovrd cfg_bars_ovrd[REV3_MAX_NUM_OF_PFS]; /* [0x500] */ 516f4b37ed0SZbigniew Bodek uint32_t rsrvd_7[176]; 517f4b37ed0SZbigniew Bodek uint32_t rsrvd_8[16]; 518f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_ap_err ap_err[5]; /* [0xac0] */ 519f4b37ed0SZbigniew Bodek uint32_t rsrvd_9[11]; 520f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_status_per_func status_per_func[4]; /* [0xb00] */ 521f4b37ed0SZbigniew Bodek uint32_t rsrvd_10[316]; 522f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_int_grp int_grp_a; /* [0x1000] */ 523f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_int_grp int_grp_b; /* [0x1040] */ 524f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_int_grp int_grp_c; /* [0x1080] */ 525f4b37ed0SZbigniew Bodek struct al_pcie_revx_w_int_grp int_grp_d; /* [0x10c0] */ 526f4b37ed0SZbigniew Bodek }; 527f4b37ed0SZbigniew Bodek 528f4b37ed0SZbigniew Bodek /* 529f4b37ed0SZbigniew Bodek * Registers Fields 530f4b37ed0SZbigniew Bodek */ 531f4b37ed0SZbigniew Bodek 532f4b37ed0SZbigniew Bodek 533f4b37ed0SZbigniew Bodek /**** Port_Init register ****/ 534f4b37ed0SZbigniew Bodek /* Enable port to start LTSSM Link Training */ 535f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_PORT_INIT_APP_LTSSM_EN_MASK (1 << 0) 536f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_PORT_INIT_APP_LTSSM_EN_SHIFT (0) 537f4b37ed0SZbigniew Bodek /* 538f4b37ed0SZbigniew Bodek * Device Type 539f4b37ed0SZbigniew Bodek * Indicates the specific type of this PCIe Function. It is also used to set the 540f4b37ed0SZbigniew Bodek * Device/Port Type field. 541f4b37ed0SZbigniew Bodek * 4'b0000: PCIe Endpoint 542f4b37ed0SZbigniew Bodek * 4'b0001: Legacy PCIe Endpoint 543f4b37ed0SZbigniew Bodek * 4'b0100: Root Port of PCIe Root Complex 544f4b37ed0SZbigniew Bodek * Must be programmed before link training sequence. According to the reset 545f4b37ed0SZbigniew Bodek * strap 546f4b37ed0SZbigniew Bodek */ 547f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_PORT_INIT_DEVICE_TYPE_MASK 0x000000F0 548f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_PORT_INIT_DEVICE_TYPE_SHIFT 4 549f4b37ed0SZbigniew Bodek /* 550f4b37ed0SZbigniew Bodek * Performs Manual Lane reversal for transmit Lanes. 551f4b37ed0SZbigniew Bodek * Must be programmed before link training sequence. 552f4b37ed0SZbigniew Bodek */ 553f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_PORT_INIT_TX_LANE_FLIP_EN (1 << 8) 554f4b37ed0SZbigniew Bodek /* 555f4b37ed0SZbigniew Bodek * Performs Manual Lane reversal for receive Lanes. 556f4b37ed0SZbigniew Bodek * Must be programmed before link training sequence. 557f4b37ed0SZbigniew Bodek */ 558f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_PORT_INIT_RX_LANE_FLIP_EN (1 << 9) 559f4b37ed0SZbigniew Bodek /* 560f4b37ed0SZbigniew Bodek * Auxiliary Power Detected 561f4b37ed0SZbigniew Bodek * Indicates that auxiliary power (Vaux) is present. This one move to reset 562f4b37ed0SZbigniew Bodek * strap from 563f4b37ed0SZbigniew Bodek */ 564f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_PORT_INIT_SYS_AUX_PWR_DET_NOT_USE (1 << 10) 565f4b37ed0SZbigniew Bodek 566f4b37ed0SZbigniew Bodek /**** Port_Status register ****/ 567f4b37ed0SZbigniew Bodek /* PHY Link up/down indicator */ 568f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_PORT_STS_PHY_LINK_UP (1 << 0) 569f4b37ed0SZbigniew Bodek /* 570f4b37ed0SZbigniew Bodek * Data Link Layer up/down indicator 571f4b37ed0SZbigniew Bodek * This status from the Flow Control Initialization State Machine indicates that 572f4b37ed0SZbigniew Bodek * Flow Control has been initiated and the Data Link Layer is ready to transmit 573f4b37ed0SZbigniew Bodek * and receive packets. 574f4b37ed0SZbigniew Bodek */ 575f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_PORT_STS_DL_LINK_UP (1 << 1) 576f4b37ed0SZbigniew Bodek /* Reset request due to link down status. */ 577f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_PORT_STS_LINK_REQ_RST (1 << 2) 578f4b37ed0SZbigniew Bodek /* Power management is in L0s state.. */ 579f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_PORT_STS_PM_LINKST_IN_L0S (1 << 3) 580f4b37ed0SZbigniew Bodek /* Power management is in L1 state. */ 581f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_PORT_STS_PM_LINKST_IN_L1 (1 << 4) 582f4b37ed0SZbigniew Bodek /* Power management is in L2 state. */ 583f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_PORT_STS_PM_LINKST_IN_L2 (1 << 5) 584f4b37ed0SZbigniew Bodek /* Power management is exiting L2 state. */ 585f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_PORT_STS_PM_LINKST_L2_EXIT (1 << 6) 586f4b37ed0SZbigniew Bodek /* Power state of the device. */ 587f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_PORT_STS_PM_DSTATE_MASK 0x00000380 588f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_PORT_STS_PM_DSTATE_SHIFT 7 589f4b37ed0SZbigniew Bodek /* tie to zero. */ 590f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_PORT_STS_XMLH_IN_RL0S (1 << 10) 591f4b37ed0SZbigniew Bodek /* Timeout count before flush */ 592f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_PORT_STS_LINK_TOUT_FLUSH_NOT (1 << 11) 593f4b37ed0SZbigniew Bodek /* Segmentation buffer not empty */ 594f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_PORT_STS_RADM_Q_NOT_EMPTY (1 << 12) 595f4b37ed0SZbigniew Bodek /* 596f4b37ed0SZbigniew Bodek * Clock Turnoff Request 597f4b37ed0SZbigniew Bodek * Allows clock generation module to turn off core_clk based on the current 598f4b37ed0SZbigniew Bodek * power management state: 599f4b37ed0SZbigniew Bodek * 0: core_clk is required to be active for the current power state. 600f4b37ed0SZbigniew Bodek * 1: The current power state allows core_clk to be shut down. 601f4b37ed0SZbigniew Bodek * This does not indicate the clock requirement for the PHY. 602f4b37ed0SZbigniew Bodek */ 603f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_PORT_STS_CORE_CLK_REQ_N (1 << 31) 604f4b37ed0SZbigniew Bodek 605f4b37ed0SZbigniew Bodek /**** PM_Control register ****/ 606f4b37ed0SZbigniew Bodek /* 607f4b37ed0SZbigniew Bodek * Wake Up. Used by application logic to wake up the PMC state machine from a 608f4b37ed0SZbigniew Bodek * D1, D2, or D3 power state. EP mode only. Change the value from 0 to 1 to send 609f4b37ed0SZbigniew Bodek * the message. Per function the upper bits are not use for ocie core less than 610f4b37ed0SZbigniew Bodek * 8 functions 611f4b37ed0SZbigniew Bodek */ 612f4b37ed0SZbigniew Bodek #define PCIE_W_REV1_2_GLOBAL_CTRL_PM_CONTROL_PM_XMT_PME (1 << 0) 613f4b37ed0SZbigniew Bodek #define PCIE_W_REV3_GLOBAL_CTRL_PM_CONTROL_PM_XMT_PME_FUNC_MASK 0x000000FF 614f4b37ed0SZbigniew Bodek #define PCIE_W_REV3_GLOBAL_CTRL_PM_CONTROL_PM_XMT_PME_FUNC_SHIFT 0 615f4b37ed0SZbigniew Bodek /* 616f4b37ed0SZbigniew Bodek * Request to Enter ASPM L1. 617f4b37ed0SZbigniew Bodek * The core ignores the L1 entry request on app_req_entr_l1 when it is busy 618f4b37ed0SZbigniew Bodek * processing a transaction. 619f4b37ed0SZbigniew Bodek */ 620f4b37ed0SZbigniew Bodek #define PCIE_W_REV1_2_GLOBAL_CTRL_PM_CONTROL_REQ_ENTR_L1 (1 << 3) 621f4b37ed0SZbigniew Bodek #define PCIE_W_REV3_GLOBAL_CTRL_PM_CONTROL_REQ_ENTR_L1 (1 << 8) 622f4b37ed0SZbigniew Bodek /* 623f4b37ed0SZbigniew Bodek * Request to exit ASPM L1. 624f4b37ed0SZbigniew Bodek * Only effective if L1 is enabled. 625f4b37ed0SZbigniew Bodek */ 626f4b37ed0SZbigniew Bodek #define PCIE_W_REV1_2_GLOBAL_CTRL_PM_CONTROL_REQ_EXIT_L1 (1 << 4) 627f4b37ed0SZbigniew Bodek #define PCIE_W_REV3_GLOBAL_CTRL_PM_CONTROL_REQ_EXIT_L1 (1 << 9) 628f4b37ed0SZbigniew Bodek /* 629f4b37ed0SZbigniew Bodek * Indication that component is ready to enter the L23 state. The core delays 630f4b37ed0SZbigniew Bodek * sending PM_Enter_L23 (in response to PM_Turn_Off) until this signal becomes 631f4b37ed0SZbigniew Bodek * active. 632f4b37ed0SZbigniew Bodek * EP mode 633f4b37ed0SZbigniew Bodek */ 634f4b37ed0SZbigniew Bodek #define PCIE_W_REV1_2_GLOBAL_CTRL_PM_CONTROL_READY_ENTR_L23 (1 << 5) 635f4b37ed0SZbigniew Bodek #define PCIE_W_REV3_GLOBAL_CTRL_PM_CONTROL_READY_ENTR_L23 (1 << 10) 636f4b37ed0SZbigniew Bodek /* 637f4b37ed0SZbigniew Bodek * Request to generate a PM_Turn_Off Message to communicate transition to L2/L3 638f4b37ed0SZbigniew Bodek * Ready state to downstream components. Host must wait PM_Turn_Off_Ack messages 639f4b37ed0SZbigniew Bodek * acceptance RC mode. 640f4b37ed0SZbigniew Bodek */ 641f4b37ed0SZbigniew Bodek #define PCIE_W_REV1_2_GLOBAL_CTRL_PM_CONTROL_PM_XMT_TURNOFF (1 << 6) 642f4b37ed0SZbigniew Bodek #define PCIE_W_REV3_GLOBAL_CTRL_PM_CONTROL_PM_XMT_TURNOFF (1 << 11) 643f4b37ed0SZbigniew Bodek /* 644f4b37ed0SZbigniew Bodek * Provides a capability to defer incoming Configuration Requests until 645f4b37ed0SZbigniew Bodek * initialization is complete. When app_req_retry_en is asserted, the core 646f4b37ed0SZbigniew Bodek * completes incoming Configuration Requests with a Configuration Request Retry 647f4b37ed0SZbigniew Bodek * Status. Other incoming Requests complete with Unsupported Request status. 648f4b37ed0SZbigniew Bodek */ 649f4b37ed0SZbigniew Bodek #define PCIE_W_REV1_2_GLOBAL_CTRL_PM_CONTROL_APP_REQ_RETRY_EN (1 << 7) 650f4b37ed0SZbigniew Bodek #define PCIE_W_REV3_GLOBAL_CTRL_PM_CONTROL_APP_REQ_RETRY_EN (1 << 12) 651f4b37ed0SZbigniew Bodek /* 652f4b37ed0SZbigniew Bodek * Core core gate enable 653f4b37ed0SZbigniew Bodek * If set, core_clk is gated off whenever a clock turnoff request allows the 654f4b37ed0SZbigniew Bodek * clock generation module to turn off core_clk (Port_Status.core_clk_req_n 655f4b37ed0SZbigniew Bodek * field), and the PHY supports a request to disable clock gating. If not, the 656f4b37ed0SZbigniew Bodek * core clock turns off in P2 mode in any case (PIPE). 657f4b37ed0SZbigniew Bodek */ 658f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_PM_CONTROL_CORE_CLK_GATE (1 << 31) 659f4b37ed0SZbigniew Bodek 660f4b37ed0SZbigniew Bodek /**** sris_kp_counter_value register ****/ 661f4b37ed0SZbigniew Bodek /* skp counter when SRIS disable */ 662f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_SRIS_KP_COUNTER_VALUE_GEN3_NO_SRIS_MASK 0x000001FF 663f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_SRIS_KP_COUNTER_VALUE_GEN3_NO_SRIS_SHIFT 0 664f4b37ed0SZbigniew Bodek /* skp counter when SRIS enable */ 665f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_SRIS_KP_COUNTER_VALUE_GEN3_SRIS_MASK 0x0003FE00 666f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_SRIS_KP_COUNTER_VALUE_GEN3_SRIS_SHIFT 9 667f4b37ed0SZbigniew Bodek /* skp counter when SRIS enable for gen3 */ 668f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_SRIS_KP_COUNTER_VALUE_GEN21_SRIS_MASK 0x1FFC0000 669f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_SRIS_KP_COUNTER_VALUE_GEN21_SRIS_SHIFT 18 670f4b37ed0SZbigniew Bodek /* mask the interrupt to the soc in case correctable error occur in the ARI. */ 671f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_SRIS_KP_COUNTER_VALUE_RSRVD_MASK 0x60000000 672f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_SRIS_KP_COUNTER_VALUE_RSRVD_SHIFT 29 673f4b37ed0SZbigniew Bodek /* not in use in the pcie_x8 core. */ 674f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_SRIS_KP_COUNTER_VALUE_PCIE_X4_SRIS_EN (1 << 31) 675f4b37ed0SZbigniew Bodek 676f4b37ed0SZbigniew Bodek /**** Events_Gen register ****/ 677f4b37ed0SZbigniew Bodek /* INT_D. Not supported */ 678f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_EVENTS_GEN_ASSERT_INTD (1 << 0) 679f4b37ed0SZbigniew Bodek /* INT_C. Not supported */ 680f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_EVENTS_GEN_ASSERT_INTC (1 << 1) 681f4b37ed0SZbigniew Bodek /* INT_B. Not supported */ 682f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_EVENTS_GEN_ASSERT_INTB (1 << 2) 683f4b37ed0SZbigniew Bodek /* Transmit INT_A Interrupt ControlEvery transition from 0 to 1 ... */ 684f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_EVENTS_GEN_ASSERT_INTA (1 << 3) 685f4b37ed0SZbigniew Bodek /* A request to generate an outbound MSI interrupt when MSI is e ... */ 686f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_EVENTS_GEN_MSI_TRNS_REQ (1 << 4) 687f4b37ed0SZbigniew Bodek /* Set the MSI vector before issuing msi_trans_req. */ 688f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_EVENTS_GEN_MSI_VECTOR_MASK 0x000003E0 689f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_EVENTS_GEN_MSI_VECTOR_SHIFT 5 690f4b37ed0SZbigniew Bodek /* The application requests hot reset to a downstream device */ 691f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_EVENTS_GEN_APP_RST_INIT (1 << 10) 692f4b37ed0SZbigniew Bodek /* The application request unlock message to be sent */ 693f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_EVENTS_GEN_UNLOCK_GEN (1 << 30) 694f4b37ed0SZbigniew Bodek /* Indicates that FLR on a Physical Function has been completed */ 695f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_EVENTS_GEN_FLR_PF_DONE (1 << 31) 696f4b37ed0SZbigniew Bodek 697f4b37ed0SZbigniew Bodek /**** Cpl_TO_Info register ****/ 698f4b37ed0SZbigniew Bodek /* The Traffic Class of the timed out CPL */ 699f4b37ed0SZbigniew Bodek #define PCIE_W_LCL_LOG_CPL_TO_INFO_TC_MASK 0x00000003 700f4b37ed0SZbigniew Bodek #define PCIE_W_LCL_LOG_CPL_TO_INFO_TC_SHIFT 0 701f4b37ed0SZbigniew Bodek /* Indicates which Virtual Function (VF) had a CPL timeout */ 702f4b37ed0SZbigniew Bodek #define PCIE_W_LCL_LOG_CPL_TO_INFO_FUN_NUM_MASK 0x000000FC 703f4b37ed0SZbigniew Bodek #define PCIE_W_LCL_LOG_CPL_TO_INFO_FUN_NUM_SHIFT 2 704f4b37ed0SZbigniew Bodek /* The Tag field of the timed out CPL */ 705f4b37ed0SZbigniew Bodek #define PCIE_W_LCL_LOG_CPL_TO_INFO_TAG_MASK 0x0000FF00 706f4b37ed0SZbigniew Bodek #define PCIE_W_LCL_LOG_CPL_TO_INFO_TAG_SHIFT 8 707f4b37ed0SZbigniew Bodek /* The Attributes field of the timed out CPL */ 708f4b37ed0SZbigniew Bodek #define PCIE_W_LCL_LOG_CPL_TO_INFO_ATTR_MASK 0x00030000 709f4b37ed0SZbigniew Bodek #define PCIE_W_LCL_LOG_CPL_TO_INFO_ATTR_SHIFT 16 710f4b37ed0SZbigniew Bodek /* The Len field of the timed out CPL */ 711f4b37ed0SZbigniew Bodek #define PCIE_W_LCL_LOG_CPL_TO_INFO_LEN_MASK 0x3FFC0000 712f4b37ed0SZbigniew Bodek #define PCIE_W_LCL_LOG_CPL_TO_INFO_LEN_SHIFT 18 713f4b37ed0SZbigniew Bodek /* 714f4b37ed0SZbigniew Bodek * Write 1 to this field to clear the information logged in the register. New 715f4b37ed0SZbigniew Bodek * logged information will only be valid when the interrupt is cleared . 716f4b37ed0SZbigniew Bodek */ 717f4b37ed0SZbigniew Bodek #define PCIE_W_LCL_LOG_CPL_TO_INFO_VALID (1 << 31) 718f4b37ed0SZbigniew Bodek #define PCIE_W_LCL_LOG_CPL_TO_INFO_VALID_SHIFT (31) 719f4b37ed0SZbigniew Bodek 720f4b37ed0SZbigniew Bodek /**** Rcv_Msg0_0 register ****/ 721f4b37ed0SZbigniew Bodek /* The Requester ID of the received message */ 722f4b37ed0SZbigniew Bodek #define PCIE_W_LCL_LOG_RCV_MSG0_0_REQ_ID_MASK 0x0000FFFF 723f4b37ed0SZbigniew Bodek #define PCIE_W_LCL_LOG_RCV_MSG0_0_REQ_ID_SHIFT 0 724f4b37ed0SZbigniew Bodek /* 725f4b37ed0SZbigniew Bodek * Valid logged message 726f4b37ed0SZbigniew Bodek * Writing 1 to this bit enables new message capturing. Write one to clear 727f4b37ed0SZbigniew Bodek */ 728f4b37ed0SZbigniew Bodek #define PCIE_W_LCL_LOG_RCV_MSG0_0_VALID (1 << 31) 729f4b37ed0SZbigniew Bodek 730f4b37ed0SZbigniew Bodek /**** Rcv_Msg1_0 register ****/ 731f4b37ed0SZbigniew Bodek /* The Requester ID of the received message */ 732f4b37ed0SZbigniew Bodek #define PCIE_W_LCL_LOG_RCV_MSG1_0_REQ_ID_MASK 0x0000FFFF 733f4b37ed0SZbigniew Bodek #define PCIE_W_LCL_LOG_RCV_MSG1_0_REQ_ID_SHIFT 0 734f4b37ed0SZbigniew Bodek /* 735f4b37ed0SZbigniew Bodek * Valid logged message 736f4b37ed0SZbigniew Bodek * Writing 1 to this bit enables new message capturing. Write one to clear 737f4b37ed0SZbigniew Bodek */ 738f4b37ed0SZbigniew Bodek #define PCIE_W_LCL_LOG_RCV_MSG1_0_VALID (1 << 31) 739f4b37ed0SZbigniew Bodek 740f4b37ed0SZbigniew Bodek /**** Core_Queues_Status register ****/ 741f4b37ed0SZbigniew Bodek /* 742f4b37ed0SZbigniew Bodek * Indicates which entries in the CPL lookup table 743f4b37ed0SZbigniew Bodek * have valid entries stored. NOT supported. 744f4b37ed0SZbigniew Bodek */ 745f4b37ed0SZbigniew Bodek #define PCIE_W_LCL_LOG_CORE_Q_STATUS_CPL_LUT_VALID_MASK 0x0000FFFF 746f4b37ed0SZbigniew Bodek #define PCIE_W_LCL_LOG_CORE_Q_STATUS_CPL_LUT_VALID_SHIFT 0 747f4b37ed0SZbigniew Bodek 748f4b37ed0SZbigniew Bodek /**** Cpl_to register ****/ 749f4b37ed0SZbigniew Bodek #define PCIE_W_LCL_LOG_CPL_TO_REQID_MASK 0x0000FFFF 750f4b37ed0SZbigniew Bodek #define PCIE_W_LCL_LOG_CPL_TO_REQID_SHIFT 0 751f4b37ed0SZbigniew Bodek 752f4b37ed0SZbigniew Bodek /**** Debug_Info_0 register ****/ 753f4b37ed0SZbigniew Bodek /* Indicates the current power state */ 754f4b37ed0SZbigniew Bodek #define PCIE_W_DEBUG_INFO_0_PM_CURRENT_STATE_MASK 0x00000007 755f4b37ed0SZbigniew Bodek #define PCIE_W_DEBUG_INFO_0_PM_CURRENT_STATE_SHIFT 0 756f4b37ed0SZbigniew Bodek /* Current state of the LTSSM */ 757f4b37ed0SZbigniew Bodek #define PCIE_W_DEBUG_INFO_0_LTSSM_STATE_MASK 0x000001F8 758f4b37ed0SZbigniew Bodek #define PCIE_W_DEBUG_INFO_0_LTSSM_STATE_SHIFT 3 759f4b37ed0SZbigniew Bodek /* Decode of the Recovery. Equalization LTSSM state */ 760f4b37ed0SZbigniew Bodek #define PCIE_W_DEBUG_INFO_0_LTSSM_STATE_RCVRY_EQ (1 << 9) 761f4b37ed0SZbigniew Bodek /* State of selected internal signals, for debug purposes only */ 762f4b37ed0SZbigniew Bodek #define PCIE_W_DEBUG_INFO_0_CXPL_DEBUG_INFO_EI_MASK 0x03FFFC00 763f4b37ed0SZbigniew Bodek #define PCIE_W_DEBUG_INFO_0_CXPL_DEBUG_INFO_EI_SHIFT 10 764f4b37ed0SZbigniew Bodek 765f4b37ed0SZbigniew Bodek /**** control register ****/ 766f4b37ed0SZbigniew Bodek /* Indication to send vendor message; when clear the message was sent. */ 767f4b37ed0SZbigniew Bodek #define PCIE_W_OB_VEN_MSG_CONTROL_REQ (1 << 0) 768f4b37ed0SZbigniew Bodek 769f4b37ed0SZbigniew Bodek /**** param_1 register ****/ 770f4b37ed0SZbigniew Bodek /* Vendor message parameters */ 771f4b37ed0SZbigniew Bodek #define PCIE_W_OB_VEN_MSG_PARAM_1_FMT_MASK 0x00000003 772f4b37ed0SZbigniew Bodek #define PCIE_W_OB_VEN_MSG_PARAM_1_FMT_SHIFT 0 773f4b37ed0SZbigniew Bodek /* Vendor message parameters */ 774f4b37ed0SZbigniew Bodek #define PCIE_W_OB_VEN_MSG_PARAM_1_TYPE_MASK 0x0000007C 775f4b37ed0SZbigniew Bodek #define PCIE_W_OB_VEN_MSG_PARAM_1_TYPE_SHIFT 2 776f4b37ed0SZbigniew Bodek /* Vendor message parameters */ 777f4b37ed0SZbigniew Bodek #define PCIE_W_OB_VEN_MSG_PARAM_1_TC_MASK 0x00000380 778f4b37ed0SZbigniew Bodek #define PCIE_W_OB_VEN_MSG_PARAM_1_TC_SHIFT 7 779f4b37ed0SZbigniew Bodek /* Vendor message parameters */ 780f4b37ed0SZbigniew Bodek #define PCIE_W_OB_VEN_MSG_PARAM_1_TD (1 << 10) 781f4b37ed0SZbigniew Bodek /* Vendor message parameters */ 782f4b37ed0SZbigniew Bodek #define PCIE_W_OB_VEN_MSG_PARAM_1_EP (1 << 11) 783f4b37ed0SZbigniew Bodek /* Vendor message parameters */ 784f4b37ed0SZbigniew Bodek #define PCIE_W_OB_VEN_MSG_PARAM_1_ATTR_MASK 0x00003000 785f4b37ed0SZbigniew Bodek #define PCIE_W_OB_VEN_MSG_PARAM_1_ATTR_SHIFT 12 786f4b37ed0SZbigniew Bodek /* Vendor message parameters */ 787f4b37ed0SZbigniew Bodek #define PCIE_W_OB_VEN_MSG_PARAM_1_LEN_MASK 0x00FFC000 788f4b37ed0SZbigniew Bodek #define PCIE_W_OB_VEN_MSG_PARAM_1_LEN_SHIFT 14 789f4b37ed0SZbigniew Bodek /* Vendor message parameters */ 790f4b37ed0SZbigniew Bodek #define PCIE_W_OB_VEN_MSG_PARAM_1_TAG_MASK 0xFF000000 791f4b37ed0SZbigniew Bodek #define PCIE_W_OB_VEN_MSG_PARAM_1_TAG_SHIFT 24 792f4b37ed0SZbigniew Bodek 793f4b37ed0SZbigniew Bodek /**** param_2 register ****/ 794f4b37ed0SZbigniew Bodek /* Vendor message parameters */ 795f4b37ed0SZbigniew Bodek #define PCIE_W_OB_VEN_MSG_PARAM_2_REQ_ID_MASK 0x0000FFFF 796f4b37ed0SZbigniew Bodek #define PCIE_W_OB_VEN_MSG_PARAM_2_REQ_ID_SHIFT 0 797f4b37ed0SZbigniew Bodek /* Vendor message parameters */ 798f4b37ed0SZbigniew Bodek #define PCIE_W_OB_VEN_MSG_PARAM_2_CODE_MASK 0x00FF0000 799f4b37ed0SZbigniew Bodek #define PCIE_W_OB_VEN_MSG_PARAM_2_CODE_SHIFT 16 800f4b37ed0SZbigniew Bodek /* Vendor message parameters */ 801f4b37ed0SZbigniew Bodek #define PCIE_W_OB_VEN_MSG_PARAM_2_RSVD_31_24_MASK 0xFF000000 802f4b37ed0SZbigniew Bodek #define PCIE_W_OB_VEN_MSG_PARAM_2_RSVD_31_24_SHIFT 24 803f4b37ed0SZbigniew Bodek 804f4b37ed0SZbigniew Bodek /**** ack_info register ****/ 805f4b37ed0SZbigniew Bodek /* Vendor message parameters */ 806f4b37ed0SZbigniew Bodek #define PCIE_W_AP_USER_SEND_MSG_ACK_INFO_ACK (1 << 0) 807f4b37ed0SZbigniew Bodek 808f4b37ed0SZbigniew Bodek /**** features register ****/ 809f4b37ed0SZbigniew Bodek /* Enable MSI fix from the SATA to the PCIe EP - Only valid for port zero */ 810f4b37ed0SZbigniew Bodek #define PCIE_W_CTRL_GEN_FEATURES_SATA_EP_MSI_FIX AL_BIT(16) 811f4b37ed0SZbigniew Bodek 812f4b37ed0SZbigniew Bodek /**** in/out_mask_x_y register ****/ 813f4b37ed0SZbigniew Bodek /* When bit [i] set to 1 it maks the compare in the atu_in/out wind ... */ 814f4b37ed0SZbigniew Bodek #define PCIE_W_ATU_MASK_EVEN_ODD_ATU_MASK_40_32_EVEN_MASK 0x0000FFFF 815f4b37ed0SZbigniew Bodek #define PCIE_W_ATU_MASK_EVEN_ODD_ATU_MASK_40_32_EVEN_SHIFT 0 816f4b37ed0SZbigniew Bodek /* When bit [i] set to 1 it maks the compare in the atu_in/out wind ... */ 817f4b37ed0SZbigniew Bodek #define PCIE_W_ATU_MASK_EVEN_ODD_ATU_MASK_40_32_ODD_MASK 0xFFFF0000 818f4b37ed0SZbigniew Bodek #define PCIE_W_ATU_MASK_EVEN_ODD_ATU_MASK_40_32_ODD_SHIFT 16 819f4b37ed0SZbigniew Bodek 820f4b37ed0SZbigniew Bodek /**** cfg register ****/ 821f4b37ed0SZbigniew Bodek /* 822f4b37ed0SZbigniew Bodek * The 2-bit TPH Requester Enabled field of each TPH 823f4b37ed0SZbigniew Bodek * Requester Control register. 824f4b37ed0SZbigniew Bodek */ 825f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_FUNC_EXT_CFG_CFG_TPH_REQ_EN_MASK 0x000000FF 826f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_FUNC_EXT_CFG_CFG_TPH_REQ_EN_SHIFT 0 827f4b37ed0SZbigniew Bodek /* SRIS mode enable. */ 828f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_FUNC_EXT_CFG_APP_SRIS_MODE (1 << 8) 829f4b37ed0SZbigniew Bodek /* 830f4b37ed0SZbigniew Bodek * 831f4b37ed0SZbigniew Bodek */ 832f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_FUNC_EXT_CFG_RSRVD_MASK 0xFFFFFE00 833f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_FUNC_EXT_CFG_RSRVD_SHIFT 9 834f4b37ed0SZbigniew Bodek 835f4b37ed0SZbigniew Bodek /**** app_func_num_advisory register ****/ 836f4b37ed0SZbigniew Bodek /* 837f4b37ed0SZbigniew Bodek * The number of the function that is reporting the error 838f4b37ed0SZbigniew Bodek * indicated app_err_bus, valid when app_hdr_valid is asserted. 839f4b37ed0SZbigniew Bodek * Correctable and Uncorrected Internal errors (app_err_bus[10:9]) are 840f4b37ed0SZbigniew Bodek * not function specific, and are recorded for all physical functions, 841f4b37ed0SZbigniew Bodek * regardless of the value this bus. Function numbering starts at '0'. 842f4b37ed0SZbigniew Bodek */ 843f4b37ed0SZbigniew Bodek #define PCIE_W_APP_HDR_INTERFACE_SEND_APP_FUNC_NUM_ADVISORY_APP_ERR_FUNC_NUM_MASK 0x0000FFFF 844f4b37ed0SZbigniew Bodek #define PCIE_W_APP_HDR_INTERFACE_SEND_APP_FUNC_NUM_ADVISORY_APP_ERR_FUNC_NUM_SHIFT 0 845f4b37ed0SZbigniew Bodek /* 846f4b37ed0SZbigniew Bodek * Description: Indicates that your application error is an advisory 847f4b37ed0SZbigniew Bodek * error. Your application should assert app_err_advisory under either 848f4b37ed0SZbigniew Bodek * of the following conditions: 849f4b37ed0SZbigniew Bodek * - The core is configured to mask completion timeout errors, your 850f4b37ed0SZbigniew Bodek * application is reporting a completion timeout error app_err_bus, 851f4b37ed0SZbigniew Bodek * and your application intends to resend the request. In such cases 852f4b37ed0SZbigniew Bodek * the error is an advisory error, as described in PCI Express 3.0 853f4b37ed0SZbigniew Bodek * Specification. When your application does not intend to resend 854f4b37ed0SZbigniew Bodek * the request, then your application must keep app_err_advisory 855f4b37ed0SZbigniew Bodek * de-asserted when reporting a completion timeout error. 856f4b37ed0SZbigniew Bodek * - The core is configured to forward poisoned TLPs to your 857f4b37ed0SZbigniew Bodek * application and your application is going to treat the poisoned 858f4b37ed0SZbigniew Bodek * TLP as a normal TLP, as described in PCI Express 3.0 859f4b37ed0SZbigniew Bodek * Specification. Upon receipt of a poisoned TLP, your application 860f4b37ed0SZbigniew Bodek * must report the error app_err_bus, and either assert 861f4b37ed0SZbigniew Bodek * app_err_advisory (to indicate an advisory error) or de-assert 862f4b37ed0SZbigniew Bodek * app_err_advisory (to indicate that your application is dropping the 863f4b37ed0SZbigniew Bodek * TLP). 864f4b37ed0SZbigniew Bodek * For more details, see the PCI Express 3.0 Specification to determine 865f4b37ed0SZbigniew Bodek * when an application error is an advisory error. 866f4b37ed0SZbigniew Bodek */ 867f4b37ed0SZbigniew Bodek #define PCIE_W_APP_HDR_INTERFACE_SEND_APP_FUNC_NUM_ADVISORY_APP_ERR_ADVISORY (1 << 16) 868f4b37ed0SZbigniew Bodek /* 869f4b37ed0SZbigniew Bodek * Rsrvd. 870f4b37ed0SZbigniew Bodek */ 871f4b37ed0SZbigniew Bodek #define PCIE_W_APP_HDR_INTERFACE_SEND_APP_FUNC_NUM_ADVISORY_RSRVD_MASK 0xFFFE0000 872f4b37ed0SZbigniew Bodek #define PCIE_W_APP_HDR_INTERFACE_SEND_APP_FUNC_NUM_ADVISORY_RSRVD_SHIFT 17 873f4b37ed0SZbigniew Bodek 874f4b37ed0SZbigniew Bodek /**** app_hdr_cmd register ****/ 875f4b37ed0SZbigniew Bodek /* 876f4b37ed0SZbigniew Bodek * When set the header is send (need to clear before sending the next message). 877f4b37ed0SZbigniew Bodek */ 878f4b37ed0SZbigniew Bodek #define PCIE_W_APP_HDR_INTERFACE_SEND_APP_HDR_CMD_APP_HDR_VALID (1 << 0) 879f4b37ed0SZbigniew Bodek /* 880f4b37ed0SZbigniew Bodek * Rsrvd. 881f4b37ed0SZbigniew Bodek */ 882f4b37ed0SZbigniew Bodek #define PCIE_W_APP_HDR_INTERFACE_SEND_APP_HDR_CMD_RSRVD_MASK 0xFFFFFFFE 883f4b37ed0SZbigniew Bodek #define PCIE_W_APP_HDR_INTERFACE_SEND_APP_HDR_CMD_RSRVD_SHIFT 1 884f4b37ed0SZbigniew Bodek 885f4b37ed0SZbigniew Bodek /**** diag_ctrl register ****/ 886f4b37ed0SZbigniew Bodek /* 887f4b37ed0SZbigniew Bodek * The 2-bit TPH Requester Enabled field of each TPH 888f4b37ed0SZbigniew Bodek * Requester Control register. 889f4b37ed0SZbigniew Bodek */ 890f4b37ed0SZbigniew Bodek #define PCIE_W_DIAG_COMMAND_DIAG_CTRL_DIAG_CTRL_BUS_MASK 0x00000007 891f4b37ed0SZbigniew Bodek #define PCIE_W_DIAG_COMMAND_DIAG_CTRL_DIAG_CTRL_BUS_SHIFT 0 892f4b37ed0SZbigniew Bodek /* 893f4b37ed0SZbigniew Bodek * 894f4b37ed0SZbigniew Bodek */ 895f4b37ed0SZbigniew Bodek #define PCIE_W_DIAG_COMMAND_DIAG_CTRL_RSRVD_MASK 0xFFFFFFF8 896f4b37ed0SZbigniew Bodek #define PCIE_W_DIAG_COMMAND_DIAG_CTRL_RSRVD_SHIFT 3 897f4b37ed0SZbigniew Bodek 898f4b37ed0SZbigniew Bodek 899f4b37ed0SZbigniew Bodek /**** Events_Gen register ****/ 900f4b37ed0SZbigniew Bodek /* INT_D. Not supported */ 901f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_EVENTS_GEN_ASSERT_INTD (1 << 0) 902f4b37ed0SZbigniew Bodek /* INT_C. Not supported */ 903f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_EVENTS_GEN_ASSERT_INTC (1 << 1) 904f4b37ed0SZbigniew Bodek /* INT_B. Not supported */ 905f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_EVENTS_GEN_ASSERT_INTB (1 << 2) 906f4b37ed0SZbigniew Bodek /* 907f4b37ed0SZbigniew Bodek * Transmit INT_A Interrupt Control 908f4b37ed0SZbigniew Bodek * Every transition from 0 to 1 schedules an Assert_ INT interrupt message for 909f4b37ed0SZbigniew Bodek * transmit. 910f4b37ed0SZbigniew Bodek * Every transition from 1 to 0, schedules a Deassert_INT interrupt message for 911f4b37ed0SZbigniew Bodek * transmit. Which interrupt, the PCIe only use INTA message. 912f4b37ed0SZbigniew Bodek */ 913f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_EVENTS_GEN_ASSERT_INTA (1 << 3) 914f4b37ed0SZbigniew Bodek /* 915f4b37ed0SZbigniew Bodek * A request to generate an outbound MSI interrupt when MSI is enabled. Change 916f4b37ed0SZbigniew Bodek * from 1'b0 to 1'b1 to create an MSI write to be sent. 917f4b37ed0SZbigniew Bodek */ 918f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_EVENTS_GEN_MSI_TRNS_REQ (1 << 4) 919f4b37ed0SZbigniew Bodek /* Set the MSI vector before issuing msi_trans_req. */ 920f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_EVENTS_GEN_MSI_VECTOR_MASK 0x000003E0 921f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_EVENTS_GEN_MSI_VECTOR_SHIFT 5 922f4b37ed0SZbigniew Bodek /* 923f4b37ed0SZbigniew Bodek * The application requests hot reset to a downstream device. Change the value 924f4b37ed0SZbigniew Bodek * from 0 to 1 to send hot reset. Only func 0 is supported. 925f4b37ed0SZbigniew Bodek */ 926f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_EVENTS_GEN_APP_RST_INIT (1 << 10) 927f4b37ed0SZbigniew Bodek /* 928f4b37ed0SZbigniew Bodek * The application request unlock message to be sent. Change the value from 0 to 929f4b37ed0SZbigniew Bodek * 1 to send the message. Only func 0 is supported. 930f4b37ed0SZbigniew Bodek */ 931f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_EVENTS_GEN_UNLOCK_GEN (1 << 30) 932f4b37ed0SZbigniew Bodek /* Indicates that FLR on a Physical Function has been completed. */ 933f4b37ed0SZbigniew Bodek #define PCIE_W_GLOBAL_CTRL_EVENTS_GEN_FLR_PF_DONE (1 << 31) 934f4b37ed0SZbigniew Bodek 935f4b37ed0SZbigniew Bodek /**** pm_state_per_func register ****/ 936f4b37ed0SZbigniew Bodek /* 937f4b37ed0SZbigniew Bodek * Description: The current power management D-state of the 938f4b37ed0SZbigniew Bodek * function: 939f4b37ed0SZbigniew Bodek * \u25a0 000b: D0 940f4b37ed0SZbigniew Bodek * \u25a0 001b: D1 941f4b37ed0SZbigniew Bodek * \u25a0 010b: D2 942f4b37ed0SZbigniew Bodek * \u25a0 011b: D3 943f4b37ed0SZbigniew Bodek * \u25a0 100b: Uninitialized 944f4b37ed0SZbigniew Bodek * \u25a0 Other values: Not applicable 945f4b37ed0SZbigniew Bodek * There are 3 bits of pm_dstate for each configured function. 946f4b37ed0SZbigniew Bodek */ 947f4b37ed0SZbigniew Bodek #define PCIE_W_PM_STATE_PER_FUNC_PM_STATE_PER_FUNC_PM_DSTATE_MASK 0x0000000F 948f4b37ed0SZbigniew Bodek #define PCIE_W_PM_STATE_PER_FUNC_PM_STATE_PER_FUNC_PM_DSTATE_SHIFT 0 949f4b37ed0SZbigniew Bodek /* 950f4b37ed0SZbigniew Bodek * PME Status bit from the PMCSR. There is 1 bit of 951f4b37ed0SZbigniew Bodek * pm_status for each configured function 952f4b37ed0SZbigniew Bodek */ 953f4b37ed0SZbigniew Bodek #define PCIE_W_PM_STATE_PER_FUNC_PM_STATE_PER_FUNC_PM_STATUS (1 << 4) 954f4b37ed0SZbigniew Bodek /* 955f4b37ed0SZbigniew Bodek * PME Enable bit in the PMCSR. There is 1 bit of 956f4b37ed0SZbigniew Bodek * pm_pme_en for each configured function. 957f4b37ed0SZbigniew Bodek */ 958f4b37ed0SZbigniew Bodek #define PCIE_W_PM_STATE_PER_FUNC_PM_STATE_PER_FUNC_PM_PME_EN (1 << 5) 959f4b37ed0SZbigniew Bodek /* 960f4b37ed0SZbigniew Bodek * Auxiliary Power Enable bit in the Device Control 961f4b37ed0SZbigniew Bodek * register. There is 1 bit of aux_pm_en for each configured function. 962f4b37ed0SZbigniew Bodek */ 963f4b37ed0SZbigniew Bodek #define PCIE_W_PM_STATE_PER_FUNC_PM_STATE_PER_FUNC_AUX_PME_EN (1 << 6) 964f4b37ed0SZbigniew Bodek /* 965f4b37ed0SZbigniew Bodek * This field should be set according to the MAX_FUNC_NUM set in the PCIe core, 966f4b37ed0SZbigniew Bodek * it uses as mask (bit per function) to the dsate when set to zero. 967f4b37ed0SZbigniew Bodek */ 968f4b37ed0SZbigniew Bodek #define PCIE_W_PM_STATE_PER_FUNC_PM_STATE_PER_FUNC_ASPM_PF_ENABLE_MAX_FUNC_NUMBER (1 << 7) 969f4b37ed0SZbigniew Bodek /* 970f4b37ed0SZbigniew Bodek * This field should be set according to the MAX_FUNC_NUM set in the PCIe core, 971f4b37ed0SZbigniew Bodek * it uses as mask (bit per function) to the ASPM contrl bit, when set to zero. 972f4b37ed0SZbigniew Bodek */ 973f4b37ed0SZbigniew Bodek #define PCIE_W_PM_STATE_PER_FUNC_PM_STATE_PER_FUNC_DSATE_PF_ENABLE_MAX_FUNC_NUMBER (1 << 8) 974f4b37ed0SZbigniew Bodek 975f4b37ed0SZbigniew Bodek /**** bar0_ctrl register ****/ 976f4b37ed0SZbigniew Bodek /* bar is en and override the internal PF bar. */ 977f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_BARS_OVRD_BAR0_CTRL_BAR_EN_MASK 0x00000003 978f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_BARS_OVRD_BAR0_CTRL_BAR_EN_SHIFT 0 979f4b37ed0SZbigniew Bodek /* bar is io */ 980f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_BARS_OVRD_BAR0_CTRL_BAR_IO_MASK 0x0000000C 981f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_BARS_OVRD_BAR0_CTRL_BAR_IO_SHIFT 2 982f4b37ed0SZbigniew Bodek /* Reserved. */ 983f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_BARS_OVRD_BAR0_CTRL_RSRVS_MASK 0xFFFFFFF0 984f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_BARS_OVRD_BAR0_CTRL_RSRVS_SHIFT 4 985f4b37ed0SZbigniew Bodek 986f4b37ed0SZbigniew Bodek /**** bar1_ctrl register ****/ 987f4b37ed0SZbigniew Bodek /* bar is en and override the internal PF bar. */ 988f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_BARS_OVRD_BAR1_CTRL_BAR_EN_MASK 0x00000003 989f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_BARS_OVRD_BAR1_CTRL_BAR_EN_SHIFT 0 990f4b37ed0SZbigniew Bodek /* bar is io */ 991f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_BARS_OVRD_BAR1_CTRL_BAR_IO_MASK 0x0000000C 992f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_BARS_OVRD_BAR1_CTRL_BAR_IO_SHIFT 2 993f4b37ed0SZbigniew Bodek /* Reserved. */ 994f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_BARS_OVRD_BAR1_CTRL_RSRVS_MASK 0xFFFFFFF0 995f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_BARS_OVRD_BAR1_CTRL_RSRVS_SHIFT 4 996f4b37ed0SZbigniew Bodek 997f4b37ed0SZbigniew Bodek /**** bar2_ctrl register ****/ 998f4b37ed0SZbigniew Bodek /* bar is en and override the internal PF bar. */ 999f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_BARS_OVRD_BAR2_CTRL_BAR_EN_MASK 0x00000003 1000f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_BARS_OVRD_BAR2_CTRL_BAR_EN_SHIFT 0 1001f4b37ed0SZbigniew Bodek /* bar is io */ 1002f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_BARS_OVRD_BAR2_CTRL_BAR_IO_MASK 0x0000000C 1003f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_BARS_OVRD_BAR2_CTRL_BAR_IO_SHIFT 2 1004f4b37ed0SZbigniew Bodek /* Reserved. */ 1005f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_BARS_OVRD_BAR2_CTRL_RSRVS_MASK 0xFFFFFFF0 1006f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_BARS_OVRD_BAR2_CTRL_RSRVS_SHIFT 4 1007f4b37ed0SZbigniew Bodek 1008f4b37ed0SZbigniew Bodek /**** bar3_ctrl register ****/ 1009f4b37ed0SZbigniew Bodek /* bar is en and override the internal PF bar. */ 1010f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_BARS_OVRD_BAR3_CTRL_BAR_EN_MASK 0x00000003 1011f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_BARS_OVRD_BAR3_CTRL_BAR_EN_SHIFT 0 1012f4b37ed0SZbigniew Bodek /* bar is io */ 1013f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_BARS_OVRD_BAR3_CTRL_BAR_IO_MASK 0x0000000C 1014f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_BARS_OVRD_BAR3_CTRL_BAR_IO_SHIFT 2 1015f4b37ed0SZbigniew Bodek /* Reserved. */ 1016f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_BARS_OVRD_BAR3_CTRL_RSRVS_MASK 0xFFFFFFF0 1017f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_BARS_OVRD_BAR3_CTRL_RSRVS_SHIFT 4 1018f4b37ed0SZbigniew Bodek 1019f4b37ed0SZbigniew Bodek /**** bar4_ctrl register ****/ 1020f4b37ed0SZbigniew Bodek /* bar is en and override the internal PF bar. */ 1021f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_BARS_OVRD_BAR4_CTRL_BAR_EN_MASK 0x00000003 1022f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_BARS_OVRD_BAR4_CTRL_BAR_EN_SHIFT 0 1023f4b37ed0SZbigniew Bodek /* bar is io */ 1024f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_BARS_OVRD_BAR4_CTRL_BAR_IO_MASK 0x0000000C 1025f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_BARS_OVRD_BAR4_CTRL_BAR_IO_SHIFT 2 1026f4b37ed0SZbigniew Bodek /* Reserved. */ 1027f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_BARS_OVRD_BAR4_CTRL_RSRVS_MASK 0xFFFFFFF0 1028f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_BARS_OVRD_BAR4_CTRL_RSRVS_SHIFT 4 1029f4b37ed0SZbigniew Bodek 1030f4b37ed0SZbigniew Bodek /**** bar5_ctrl register ****/ 1031f4b37ed0SZbigniew Bodek /* bar is en and override the internal PF bar. */ 1032f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_BARS_OVRD_BAR5_CTRL_BAR_EN_MASK 0x00000003 1033f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_BARS_OVRD_BAR5_CTRL_BAR_EN_SHIFT 0 1034f4b37ed0SZbigniew Bodek /* bar is io */ 1035f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_BARS_OVRD_BAR5_CTRL_BAR_IO_MASK 0x0000000C 1036f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_BARS_OVRD_BAR5_CTRL_BAR_IO_SHIFT 2 1037f4b37ed0SZbigniew Bodek /* Reserved. */ 1038f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_BARS_OVRD_BAR5_CTRL_RSRVS_MASK 0xFFFFFFF0 1039f4b37ed0SZbigniew Bodek #define PCIE_W_CFG_BARS_OVRD_BAR5_CTRL_RSRVS_SHIFT 4 1040f4b37ed0SZbigniew Bodek 1041f4b37ed0SZbigniew Bodek /**** cause_A register ****/ 1042f4b37ed0SZbigniew Bodek /* Deassert_INTD received. Write zero to clear this bit. */ 1043f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_A_CAUSE_A_DEASSERT_INTD (1 << 0) 1044f4b37ed0SZbigniew Bodek /* Deassert_INTC received. Write zero to clear this bit. */ 1045f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_A_CAUSE_A_DEASSERT_INTC (1 << 1) 1046f4b37ed0SZbigniew Bodek /* Deassert_INTB received. Write zero to clear this bit. */ 1047f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_A_CAUSE_A_DEASSERT_INTB (1 << 2) 1048f4b37ed0SZbigniew Bodek /* Deassert_INTA received. Write zero to clear this bit. */ 1049f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_A_CAUSE_A_DEASSERT_INTA (1 << 3) 1050f4b37ed0SZbigniew Bodek /* Assert_INTD received. Write zero to clear this bit. */ 1051f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_A_CAUSE_A_ASSERT_INTD (1 << 4) 1052f4b37ed0SZbigniew Bodek /* Assert_INTC received. Write zero to clear this bit. */ 1053f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_A_CAUSE_A_ASSERT_INTC (1 << 5) 1054f4b37ed0SZbigniew Bodek /* Assert_INTC received. Write zero to clear this bit. */ 1055f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_A_CAUSE_A_ASSERT_INTB (1 << 6) 1056f4b37ed0SZbigniew Bodek /* Assert_INTA received. Write zero to clear this bit. */ 1057f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_A_CAUSE_A_ASSERT_INTA (1 << 7) 1058f4b37ed0SZbigniew Bodek /* 1059f4b37ed0SZbigniew Bodek * MSI Controller Interrupt 1060f4b37ed0SZbigniew Bodek * MSI interrupt is being received. Write zero to clear this bit 1061f4b37ed0SZbigniew Bodek */ 1062f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_A_CAUSE_A_MSI_CNTR_RCV_INT (1 << 8) 1063f4b37ed0SZbigniew Bodek /* 1064f4b37ed0SZbigniew Bodek * MSI sent grant. Write zero to clear this bit. 1065f4b37ed0SZbigniew Bodek */ 1066f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_A_CAUSE_A_MSI_TRNS_GNT (1 << 9) 1067f4b37ed0SZbigniew Bodek /* 1068f4b37ed0SZbigniew Bodek * System error detected 1069f4b37ed0SZbigniew Bodek * Indicates if any device in the hierarchy reports any of the following errors 1070f4b37ed0SZbigniew Bodek * and the associated enable bit is set in the Root Control register: 1071f4b37ed0SZbigniew Bodek * ERR_COR 1072f4b37ed0SZbigniew Bodek * ERR_FATAL 1073f4b37ed0SZbigniew Bodek * ERR_NONFATAL 1074f4b37ed0SZbigniew Bodek * Also asserted when an internal error is detected. Write zero to clear this 1075f4b37ed0SZbigniew Bodek * bit. 1076f4b37ed0SZbigniew Bodek */ 1077f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_A_CAUSE_A_SYS_ERR_RC (1 << 10) 1078f4b37ed0SZbigniew Bodek /* 1079f4b37ed0SZbigniew Bodek * Set when software initiates FLR on a Physical Function by writing to the 1080f4b37ed0SZbigniew Bodek * Initiate FLR register bit of that function Write zero to clear this bit. 1081f4b37ed0SZbigniew Bodek */ 1082f4b37ed0SZbigniew Bodek #define PCIE_W_REV1_2_INT_GRP_A_CAUSE_A_FLR_PF_ACTIVE (1 << 11) 1083f4b37ed0SZbigniew Bodek #define PCIE_W_REV3_INT_GRP_A_CAUSE_A_RSRVD_11 (1 << 11) 1084f4b37ed0SZbigniew Bodek /* 1085f4b37ed0SZbigniew Bodek * Reported error condition causes a bit to be set in the Root Error Status 1086f4b37ed0SZbigniew Bodek * register and the associated error message reporting enable bit is set in the 1087f4b37ed0SZbigniew Bodek * Root Error Command Register. Write zero to clear this bit. 1088f4b37ed0SZbigniew Bodek */ 1089f4b37ed0SZbigniew Bodek #define PCIE_W_REV1_2_INT_GRP_A_CAUSE_A_AER_RC_ERR (1 << 12) 1090f4b37ed0SZbigniew Bodek #define PCIE_W_REV3_INT_GRP_A_CAUSE_A_RSRVD_12 (1 << 12) 1091f4b37ed0SZbigniew Bodek /* 1092f4b37ed0SZbigniew Bodek * The core asserts aer_rc_err_msi when all of the following conditions are 1093f4b37ed0SZbigniew Bodek * true: 1094f4b37ed0SZbigniew Bodek * - MSI or MSI-X is enabled. 1095f4b37ed0SZbigniew Bodek * - A reported error condition causes a bit to be set in the Root Error Status 1096f4b37ed0SZbigniew Bodek * register. 1097f4b37ed0SZbigniew Bodek * - The associated error message reporting enable bit is set in the Root Error 1098f4b37ed0SZbigniew Bodek * Command register Write zero to clear this bit 1099f4b37ed0SZbigniew Bodek */ 1100f4b37ed0SZbigniew Bodek #define PCIE_W_REV1_2_INT_GRP_A_CAUSE_A_AER_RC_ERR_MSI (1 << 13) 1101f4b37ed0SZbigniew Bodek #define PCIE_W_REV3_INT_GRP_A_CAUSE_A_RSRVD_13 (1 << 13) 1102f4b37ed0SZbigniew Bodek /* 1103f4b37ed0SZbigniew Bodek * Wake Up. Wake up from power management unit. 1104f4b37ed0SZbigniew Bodek * The core generates wake to request the system to restore power and clock when 1105f4b37ed0SZbigniew Bodek * a beacon has been detected. wake is an active high signal and its rising edge 1106f4b37ed0SZbigniew Bodek * should be detected to drive the WAKE# on the connector Write zero to clear 1107f4b37ed0SZbigniew Bodek * this bit 1108f4b37ed0SZbigniew Bodek */ 1109f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_A_CAUSE_A_WAKE (1 << 14) 1110f4b37ed0SZbigniew Bodek /* 1111f4b37ed0SZbigniew Bodek * The core asserts cfg_pme_int when all of the following conditions are true: 1112f4b37ed0SZbigniew Bodek * - INTx Assertion Disable bit in the Command register is 0. 1113f4b37ed0SZbigniew Bodek * - PME Interrupt Enable bit in the Root Control register is set to 1. 1114f4b37ed0SZbigniew Bodek * - PME Status bit in the Root Status register is set to 1. Write zero to clear 1115f4b37ed0SZbigniew Bodek * this bit 1116f4b37ed0SZbigniew Bodek */ 1117f4b37ed0SZbigniew Bodek #define PCIE_W_REV1_2_INT_GRP_A_CAUSE_A_PME_INT (1 << 15) 1118f4b37ed0SZbigniew Bodek #define PCIE_W_REV3_INT_GRP_A_CAUSE_A_RSRVD_15 (1 << 15) 1119f4b37ed0SZbigniew Bodek /* 1120f4b37ed0SZbigniew Bodek * The core asserts cfg_pme_msi when all of the following conditions are true: 1121f4b37ed0SZbigniew Bodek * - MSI or MSI-X is enabled. 1122f4b37ed0SZbigniew Bodek * - PME Interrupt Enable bit in the Root Control register is set to 1. 1123f4b37ed0SZbigniew Bodek * - PME Status bit in the Root Status register is set to 1. Write zero to clear 1124f4b37ed0SZbigniew Bodek * this bit 1125f4b37ed0SZbigniew Bodek */ 1126f4b37ed0SZbigniew Bodek #define PCIE_W_REV1_2_INT_GRP_A_CAUSE_A_PME_MSI (1 << 16) 1127f4b37ed0SZbigniew Bodek #define PCIE_W_REV3_INT_GRP_A_CAUSE_A_RSRVD_16 (1 << 16) 1128f4b37ed0SZbigniew Bodek /* 1129f4b37ed0SZbigniew Bodek * The core asserts hp_pme when all of the following conditions are true: 1130f4b37ed0SZbigniew Bodek * - The PME Enable bit in the Power Management Control and Status register is 1131f4b37ed0SZbigniew Bodek * set to 1. 1132f4b37ed0SZbigniew Bodek * - Any bit in the Slot Status register transitions from 0 to 1 and the 1133f4b37ed0SZbigniew Bodek * associated event notification is enabled in the Slot Control register. Write 1134f4b37ed0SZbigniew Bodek * zero to clear this bit 1135f4b37ed0SZbigniew Bodek */ 1136f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_A_CAUSE_A_HP_PME (1 << 17) 1137f4b37ed0SZbigniew Bodek /* 1138f4b37ed0SZbigniew Bodek * The core asserts hp_int when all of the following conditions are true: 1139f4b37ed0SZbigniew Bodek * - INTx Assertion Disable bit in the Command register is 0. 1140f4b37ed0SZbigniew Bodek * - Hot-Plug interrupts are enabled in the Slot Control register. 1141f4b37ed0SZbigniew Bodek * - Any bit in the Slot Status register is equal to 1, and the associated event 1142f4b37ed0SZbigniew Bodek * notification is enabled in the Slot Control register. Write zero to clear 1143f4b37ed0SZbigniew Bodek * this bit 1144f4b37ed0SZbigniew Bodek */ 1145f4b37ed0SZbigniew Bodek #define PCIE_W_REV1_2_INT_GRP_A_CAUSE_A_HP_INT (1 << 18) 1146f4b37ed0SZbigniew Bodek /* The outstanding write counter become full should never happen */ 1147f4b37ed0SZbigniew Bodek #define PCIE_W_REV3_INT_GRP_A_CAUSE_A_WRITE_COUNTER_FULL_ERR (1 << 18) 1148f4b37ed0SZbigniew Bodek 1149f4b37ed0SZbigniew Bodek 1150f4b37ed0SZbigniew Bodek /* 1151f4b37ed0SZbigniew Bodek * The core asserts hp_msi when the logical AND of the following conditions 1152f4b37ed0SZbigniew Bodek * transitions from false to true: 1153f4b37ed0SZbigniew Bodek * - MSI or MSI-X is enabled. 1154f4b37ed0SZbigniew Bodek * - Hot-Plug interrupts are enabled in the Slot Control register. 1155f4b37ed0SZbigniew Bodek * - Any bit in the Slot Status register transitions from 0 to 1 and the 1156f4b37ed0SZbigniew Bodek * associated event notification is enabled in the Slot Control register. 1157f4b37ed0SZbigniew Bodek */ 1158f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_A_CAUSE_A_HP_MSI (1 << 19) 1159f4b37ed0SZbigniew Bodek /* Read VPD registers notification */ 1160f4b37ed0SZbigniew Bodek #define PCIE_W_REV1_2_INT_GRP_A_CAUSE_A_VPD_INT (1 << 20) 1161f4b37ed0SZbigniew Bodek /* not use */ 1162f4b37ed0SZbigniew Bodek #define PCIE_W_REV3_INT_GRP_A_CAUSE_A_NOT_USE (1 << 20) 1163f4b37ed0SZbigniew Bodek 1164f4b37ed0SZbigniew Bodek /* 1165f4b37ed0SZbigniew Bodek * The core assert link down event, whenever the link is going down. Write zero 1166f4b37ed0SZbigniew Bodek * to clear this bit, pulse signal 1167f4b37ed0SZbigniew Bodek */ 1168f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_A_CAUSE_A_LINK_DOWN_EVENT (1 << 21) 1169f4b37ed0SZbigniew Bodek /* 1170f4b37ed0SZbigniew Bodek * When the EP gets a command to shut down, signal the software to block any new 1171f4b37ed0SZbigniew Bodek * TLP. 1172f4b37ed0SZbigniew Bodek */ 1173f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_A_CAUSE_A_PM_XTLH_BLOCK_TLP (1 << 22) 1174f4b37ed0SZbigniew Bodek /* PHY/MAC link up */ 1175f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_A_CAUSE_A_XMLH_LINK_UP (1 << 23) 1176f4b37ed0SZbigniew Bodek /* Data link up */ 1177f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_A_CAUSE_A_RDLH_LINK_UP (1 << 24) 1178f4b37ed0SZbigniew Bodek /* The ltssm is in RCVRY_LOCK state. */ 1179f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_A_CAUSE_A_LTSSM_RCVRY_STATE (1 << 25) 1180f4b37ed0SZbigniew Bodek /* 1181f4b37ed0SZbigniew Bodek * Config write transaction to the config space by the RC peer, enable this 1182f4b37ed0SZbigniew Bodek * interrupt only for EP mode. 1183f4b37ed0SZbigniew Bodek */ 1184f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_A_CAUSE_A_CFG_WR_EVENT (1 << 26) 1185f4b37ed0SZbigniew Bodek /* AER error */ 1186f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_A_CAUSE_A_AP_PENDED_CORR_ERR_STS_INT (1 << 28) 1187f4b37ed0SZbigniew Bodek /* AER error */ 1188f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_A_CAUSE_A_AP_PENDED_UNCORR_ERR_STS_INT (1 << 29) 1189f4b37ed0SZbigniew Bodek 1190f4b37ed0SZbigniew Bodek /**** control_A register ****/ 1191f4b37ed0SZbigniew Bodek /* When Clear_on_Read =1, all bits of Cause register are cleared on read. */ 1192f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_A_CONTROL_A_CLEAR_ON_READ (1 << 0) 1193f4b37ed0SZbigniew Bodek /* 1194f4b37ed0SZbigniew Bodek * (Must be set only when MSIX is enabled.) 1195f4b37ed0SZbigniew Bodek * When Auto-Mask =1 and an MSI-X ACK for this bit is received, its 1196f4b37ed0SZbigniew Bodek * corresponding bit in the Mask register is set, masking future interrupts. 1197f4b37ed0SZbigniew Bodek */ 1198f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_A_CONTROL_A_AUTO_MASK (1 << 1) 1199f4b37ed0SZbigniew Bodek /* 1200f4b37ed0SZbigniew Bodek * Auto_Clear (RW) 1201f4b37ed0SZbigniew Bodek * When Auto-Clear =1, the bits in the Interrupt Cause register are auto-cleared 1202f4b37ed0SZbigniew Bodek * after MSI-X is acknowledged. Must be used only if MSI-X is enabled. 1203f4b37ed0SZbigniew Bodek */ 1204f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_A_CONTROL_A_AUTO_CLEAR (1 << 2) 1205f4b37ed0SZbigniew Bodek /* 1206f4b37ed0SZbigniew Bodek * When Set_on_Posedge =1, the bits in the Interrupt Cause register are set on 1207f4b37ed0SZbigniew Bodek * the posedge of the interrupt source, i.e., when interrupt source =1 and 1208f4b37ed0SZbigniew Bodek * Interrupt Status = 0. 1209f4b37ed0SZbigniew Bodek * When Set_on_Posedge =0, the bits in the Interrupt Cause register are set when 1210f4b37ed0SZbigniew Bodek * interrupt source =1. 1211f4b37ed0SZbigniew Bodek */ 1212f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_A_CONTROL_A_SET_ON_POSEDGE (1 << 3) 1213f4b37ed0SZbigniew Bodek /* 1214f4b37ed0SZbigniew Bodek * When Moderation_Reset =1, all Moderation timers associated with the interrupt 1215f4b37ed0SZbigniew Bodek * cause bits are cleared to 0, enabling immediate interrupt assertion if any 1216f4b37ed0SZbigniew Bodek * unmasked cause bit is set to 1. This bit is self-negated. 1217f4b37ed0SZbigniew Bodek */ 1218f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_A_CONTROL_A_MOD_RST (1 << 4) 1219f4b37ed0SZbigniew Bodek /* 1220f4b37ed0SZbigniew Bodek * When mask_msi_x =1, no MSI-X from this group is sent. This bit must be set to 1221f4b37ed0SZbigniew Bodek * 1 when the associated summary bit in this group is used to generate a single 1222f4b37ed0SZbigniew Bodek * MSI-X for this group. 1223f4b37ed0SZbigniew Bodek */ 1224f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_A_CONTROL_A_MASK_MSI_X (1 << 5) 1225f4b37ed0SZbigniew Bodek /* MSI-X AWID value. Same ID for all cause bits. */ 1226f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_A_CONTROL_A_AWID_MASK 0x00000F00 1227f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_A_CONTROL_A_AWID_SHIFT 8 1228f4b37ed0SZbigniew Bodek /* 1229f4b37ed0SZbigniew Bodek * This value determines the interval between interrupts; writing ZERO disables 1230f4b37ed0SZbigniew Bodek * Moderation. 1231f4b37ed0SZbigniew Bodek */ 1232f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_A_CONTROL_A_MOD_INTV_MASK 0x00FF0000 1233f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_A_CONTROL_A_MOD_INTV_SHIFT 16 1234f4b37ed0SZbigniew Bodek /* 1235f4b37ed0SZbigniew Bodek * This value determines the Moderation_Timer_Clock speed. 1236f4b37ed0SZbigniew Bodek * 0- Moderation-timer is decremented every 1x256 SB clock cycles ~1uS. 1237f4b37ed0SZbigniew Bodek * 1- Moderation-timer is decremented every 2x256 SB clock cycles ~2uS. 1238f4b37ed0SZbigniew Bodek * N- Moderation-timer is decremented every Nx256 SB clock cycles ~(N+1) uS. 1239f4b37ed0SZbigniew Bodek */ 1240f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_A_CONTROL_A_MOD_RES_MASK 0x0F000000 1241f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_A_CONTROL_A_MOD_RES_SHIFT 24 1242f4b37ed0SZbigniew Bodek 1243f4b37ed0SZbigniew Bodek /**** cause_B register ****/ 1244f4b37ed0SZbigniew Bodek /* Indicates that the core received a PM_PME Message. Write Zero to clear. */ 1245f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_B_CAUSE_B_MSG_PM_PME (1 << 0) 1246f4b37ed0SZbigniew Bodek /* 1247f4b37ed0SZbigniew Bodek * Indicates that the core received a PME_TO_Ack Message. Write Zero to clear. 1248f4b37ed0SZbigniew Bodek */ 1249f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_B_CAUSE_B_MSG_PM_TO_ACK (1 << 1) 1250f4b37ed0SZbigniew Bodek /* 1251f4b37ed0SZbigniew Bodek * Indicates that the core received an PME_Turn_Off Message. Write Zero to 1252f4b37ed0SZbigniew Bodek * clear. 1253f4b37ed0SZbigniew Bodek * EP mode only 1254f4b37ed0SZbigniew Bodek */ 1255f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_B_CAUSE_B_MSG_PM_TURNOFF (1 << 2) 1256f4b37ed0SZbigniew Bodek /* Indicates that the core received an ERR_CORR Message. Write Zero to clear. */ 1257f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_B_CAUSE_B_MSG_CORRECTABLE_ERR (1 << 3) 1258f4b37ed0SZbigniew Bodek /* 1259f4b37ed0SZbigniew Bodek * Indicates that the core received an ERR_NONFATAL Message. Write Zero to 1260f4b37ed0SZbigniew Bodek * clear. 1261f4b37ed0SZbigniew Bodek */ 1262f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_B_CAUSE_B_MSG_NONFATAL_ERR (1 << 4) 1263f4b37ed0SZbigniew Bodek /* 1264f4b37ed0SZbigniew Bodek * Indicates that the core received an ERR_FATAL Message. Write Zero to clear. 1265f4b37ed0SZbigniew Bodek */ 1266f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_B_CAUSE_B_MSG_FATAL_ERR (1 << 5) 1267f4b37ed0SZbigniew Bodek /* 1268f4b37ed0SZbigniew Bodek * Indicates that the core received a Vendor Defined Message. Write Zero to 1269f4b37ed0SZbigniew Bodek * clear. 1270f4b37ed0SZbigniew Bodek */ 1271f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_B_CAUSE_B_MSG_VENDOR_0 (1 << 6) 1272f4b37ed0SZbigniew Bodek /* 1273f4b37ed0SZbigniew Bodek * Indicates that the core received a Vendor Defined Message. Write Zero to 1274f4b37ed0SZbigniew Bodek * clear. 1275f4b37ed0SZbigniew Bodek */ 1276f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_B_CAUSE_B_MSG_VENDOR_1 (1 << 7) 1277f4b37ed0SZbigniew Bodek /* Indicates that the core received an Unlock Message. Write Zero to clear. */ 1278f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_B_CAUSE_B_MSG_UNLOCK (1 << 8) 1279f4b37ed0SZbigniew Bodek /* 1280f4b37ed0SZbigniew Bodek * Notification when the Link Autonomous Bandwidth Status register (Link Status 1281f4b37ed0SZbigniew Bodek * register bit 15) is updated and the Link Autonomous Bandwidth Interrupt 1282f4b37ed0SZbigniew Bodek * Enable (Link Control register bit 11) is set. This bit is not applicable to, 1283f4b37ed0SZbigniew Bodek * and is reserved, for Endpoint device. Write Zero to clear 1284f4b37ed0SZbigniew Bodek */ 1285f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_B_CAUSE_B_LINK_AUTO_BW_INT (1 << 12) 1286f4b37ed0SZbigniew Bodek /* 1287f4b37ed0SZbigniew Bodek * Notification that the Link Equalization Request bit in the Link Status 2 1288f4b37ed0SZbigniew Bodek * Register has been set. Write Zero to clear. 1289f4b37ed0SZbigniew Bodek */ 1290f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_B_CAUSE_B_LINK_EQ_REQ_INT (1 << 13) 1291f4b37ed0SZbigniew Bodek /* 1292f4b37ed0SZbigniew Bodek * OB Vendor message request is granted by the PCIe core Write Zero to clear. 1293f4b37ed0SZbigniew Bodek */ 1294f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_B_CAUSE_B_VENDOR_MSG_GRANT (1 << 14) 1295f4b37ed0SZbigniew Bodek /* CPL timeout from the PCIe core inidication. Write Zero to clear */ 1296f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_B_CAUSE_B_CMP_TIME_OUT (1 << 15) 1297f4b37ed0SZbigniew Bodek /* 1298f4b37ed0SZbigniew Bodek * Slave Response Composer Lookup Error 1299f4b37ed0SZbigniew Bodek * Indicates that an overflow occurred in a lookup table of the Inbound 1300f4b37ed0SZbigniew Bodek * responses. This indicates that there was a violation of the number of 1301f4b37ed0SZbigniew Bodek * outstanding NP requests issued for the Outbound direction. Write zero to 1302f4b37ed0SZbigniew Bodek * clear 1303f4b37ed0SZbigniew Bodek */ 1304f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_B_CAUSE_B_RADMX_CMPOSER_LOOKUP_ERR (1 << 16) 1305f4b37ed0SZbigniew Bodek /* Parity Error */ 1306f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_B_CAUSE_B_PARITY_ERROR_CORE (1 << 17) 1307f4b37ed0SZbigniew Bodek 1308f4b37ed0SZbigniew Bodek /**** control_B register ****/ 1309f4b37ed0SZbigniew Bodek /* When Clear_on_Read =1, all bits of the Cause register are cleared on read. */ 1310f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_B_CONTROL_B_CLEAR_ON_READ (1 << 0) 1311f4b37ed0SZbigniew Bodek /* 1312f4b37ed0SZbigniew Bodek * (Must be set only when MSIX is enabled.) 1313f4b37ed0SZbigniew Bodek * When Auto-Mask =1 and an MSI-X ACK for this bit is received, its 1314f4b37ed0SZbigniew Bodek * corresponding bit in the Mask register is set, masking future interrupts. 1315f4b37ed0SZbigniew Bodek */ 1316f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_B_CONTROL_B_AUTO_MASK (1 << 1) 1317f4b37ed0SZbigniew Bodek /* 1318f4b37ed0SZbigniew Bodek * Auto_Clear (RW) 1319f4b37ed0SZbigniew Bodek * When Auto-Clear =1, the bits in the Interrupt Cause register are auto-cleared 1320f4b37ed0SZbigniew Bodek * after MSI-X is acknowledged. Must be used only if MSI-X is enabled. 1321f4b37ed0SZbigniew Bodek */ 1322f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_B_CONTROL_B_AUTO_CLEAR (1 << 2) 1323f4b37ed0SZbigniew Bodek /* 1324f4b37ed0SZbigniew Bodek * When Set_on_Posedge =1, the bits in the interrupt Cause register are set on 1325f4b37ed0SZbigniew Bodek * the posedge of the interrupt source, i.e., when Interrupt Source =1 and 1326f4b37ed0SZbigniew Bodek * Interrupt Status = 0. 1327f4b37ed0SZbigniew Bodek * When Set_on_Posedge =0, the bits in the Interrupt Cause register are set when 1328f4b37ed0SZbigniew Bodek * Interrupt Source =1. 1329f4b37ed0SZbigniew Bodek */ 1330f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_B_CONTROL_B_SET_ON_POSEDGE (1 << 3) 1331f4b37ed0SZbigniew Bodek /* 1332f4b37ed0SZbigniew Bodek * When Moderation_Reset =1, all Moderation timers associated with the interrupt 1333f4b37ed0SZbigniew Bodek * cause bits are cleared to 0, enabling an immediate interrupt assertion if any 1334f4b37ed0SZbigniew Bodek * unmasked cause bit is set to 1. This bit is self-negated. 1335f4b37ed0SZbigniew Bodek */ 1336f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_B_CONTROL_B_MOD_RST (1 << 4) 1337f4b37ed0SZbigniew Bodek /* 1338f4b37ed0SZbigniew Bodek * When mask_msi_x =1, no MSI-X from this group is sent. This bit must be set to 1339f4b37ed0SZbigniew Bodek * 1 when the associated summary bit in this group is used to generate a single 1340f4b37ed0SZbigniew Bodek * MSI-X for this group. 1341f4b37ed0SZbigniew Bodek */ 1342f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_B_CONTROL_B_MASK_MSI_X (1 << 5) 1343f4b37ed0SZbigniew Bodek /* MSI-X AWID value. Same ID for all cause bits. */ 1344f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_B_CONTROL_B_AWID_MASK 0x00000F00 1345f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_B_CONTROL_B_AWID_SHIFT 8 1346f4b37ed0SZbigniew Bodek /* 1347f4b37ed0SZbigniew Bodek * This value determines the interval between interrupts. Writing ZERO disables 1348f4b37ed0SZbigniew Bodek * Moderation. 1349f4b37ed0SZbigniew Bodek */ 1350f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_B_CONTROL_B_MOD_INTV_MASK 0x00FF0000 1351f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_B_CONTROL_B_MOD_INTV_SHIFT 16 1352f4b37ed0SZbigniew Bodek /* 1353f4b37ed0SZbigniew Bodek * This value determines the Moderation_Timer_Clock speed. 1354f4b37ed0SZbigniew Bodek * 0- Moderation-timer is decremented every 1x256 SB clock cycles ~1uS. 1355f4b37ed0SZbigniew Bodek * 1- Moderation-timer is decremented every 2x256 SB clock cycles ~2uS. 1356f4b37ed0SZbigniew Bodek * N- Moderation-timer is decremented every Nx256 SB clock cycles ~(N+1) uS. 1357f4b37ed0SZbigniew Bodek */ 1358f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_B_CONTROL_B_MOD_RES_MASK 0x0F000000 1359f4b37ed0SZbigniew Bodek #define PCIE_W_INT_GRP_B_CONTROL_B_MOD_RES_SHIFT 24 1360f4b37ed0SZbigniew Bodek 1361f4b37ed0SZbigniew Bodek /**** cause_C register ****/ 1362f4b37ed0SZbigniew Bodek /* VPD interrupt, ot read/write frpm EEPROM */ 1363f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_C_INT_CAUSE_GRP_C_VPD_INT_FUNC_MASK 0x0000000F 1364f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_C_INT_CAUSE_GRP_C_VPD_INT_FUNC_SHIFT 0 1365f4b37ed0SZbigniew Bodek /* flr PF active */ 1366f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_C_INT_CAUSE_GRP_C_CFG_FLR_PF_ACTIVE_MASK 0x000000F0 1367f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_C_INT_CAUSE_GRP_C_CFG_FLR_PF_ACTIVE_SHIFT 4 1368f4b37ed0SZbigniew Bodek /* System ERR RC. */ 1369f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_C_INT_CAUSE_GRP_C_CFG_SYS_ERR_RC_MASK 0x00000F00 1370f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_C_INT_CAUSE_GRP_C_CFG_SYS_ERR_RC_SHIFT 8 1371f4b37ed0SZbigniew Bodek /* AER RC INT */ 1372f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_C_INT_CAUSE_GRP_C_CFG_AER_RC_ERR_INT_MASK 0x0000F000 1373f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_C_INT_CAUSE_GRP_C_CFG_AER_RC_ERR_INT_SHIFT 12 1374f4b37ed0SZbigniew Bodek /* AER RC MSI */ 1375f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_C_INT_CAUSE_GRP_C_CFG_AER_RC_ERR_MSI_MASK 0x000F0000 1376f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_C_INT_CAUSE_GRP_C_CFG_AER_RC_ERR_MSI_SHIFT 16 1377f4b37ed0SZbigniew Bodek /* PME MSI */ 1378f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_C_INT_CAUSE_GRP_C_CFG_PME_MSI_MASK 0x00F00000 1379f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_C_INT_CAUSE_GRP_C_CFG_PME_MSI_SHIFT 20 1380f4b37ed0SZbigniew Bodek /* PME int */ 1381f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_C_INT_CAUSE_GRP_C_CFG_PME_INT_MASK 0x0F000000 1382f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_C_INT_CAUSE_GRP_C_CFG_PME_INT_SHIFT 24 1383f4b37ed0SZbigniew Bodek /* SB overflow */ 1384f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_C_INT_CAUSE_GRP_C_RADM_QOVERFLOW (1 << 28) 1385f4b37ed0SZbigniew Bodek /* ecrc was injected through the diag_ctrl bus */ 1386f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_C_INT_CAUSE_GRP_C_ECRC_INJECTED (1 << 29) 1387f4b37ed0SZbigniew Bodek /* lcrc was injected through the diag_ctrl bus */ 1388f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_C_INT_CAUSE_GRP_C_LCRC_INJECTED (1 << 30) 1389f4b37ed0SZbigniew Bodek /* lcrc was injected through the diag_ctrl bus */ 1390f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_C_INT_CAUSE_GRP_C_RSRVD (1 << 31) 1391f4b37ed0SZbigniew Bodek 1392f4b37ed0SZbigniew Bodek /**** control_C register ****/ 1393f4b37ed0SZbigniew Bodek /* When Clear_on_Read =1, all bits of Cause register are cleared on read. */ 1394f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_C_INT_CONTROL_GRP_C_CLEAR_ON_READ (1 << 0) 1395f4b37ed0SZbigniew Bodek /* 1396f4b37ed0SZbigniew Bodek * (Must be set only when MSIX is enabled.) 1397f4b37ed0SZbigniew Bodek * When Auto-Mask =1 and an MSI-X ACK for this bit is received, its 1398f4b37ed0SZbigniew Bodek * corresponding bit in the Mask register is set, masking future interrupts. 1399f4b37ed0SZbigniew Bodek */ 1400f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_C_INT_CONTROL_GRP_C_AUTO_MASK (1 << 1) 1401f4b37ed0SZbigniew Bodek /* 1402f4b37ed0SZbigniew Bodek * Auto_Clear (RW) 1403f4b37ed0SZbigniew Bodek * When Auto-Clear =1, the bits in the Interrupt Cause register are auto-cleared 1404f4b37ed0SZbigniew Bodek * after MSI-X is acknowledged. Must be used only if MSI-X is enabled. 1405f4b37ed0SZbigniew Bodek */ 1406f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_C_INT_CONTROL_GRP_C_AUTO_CLEAR (1 << 2) 1407f4b37ed0SZbigniew Bodek /* 1408f4b37ed0SZbigniew Bodek * When Set_on_Posedge =1, the bits in the Interrupt Cause register are set on 1409f4b37ed0SZbigniew Bodek * the posedge of the interrupt source, i.e., when interrupt source =1 and 1410f4b37ed0SZbigniew Bodek * Interrupt Status = 0. 1411f4b37ed0SZbigniew Bodek * When Set_on_Posedge =0, the bits in the Interrupt Cause register are set when 1412f4b37ed0SZbigniew Bodek * interrupt source =1. 1413f4b37ed0SZbigniew Bodek */ 1414f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_C_INT_CONTROL_GRP_C_SET_ON_POSEDGE (1 << 3) 1415f4b37ed0SZbigniew Bodek /* 1416f4b37ed0SZbigniew Bodek * When Moderation_Reset =1, all Moderation timers associated with the interrupt 1417f4b37ed0SZbigniew Bodek * cause bits are cleared to 0, enabling immediate interrupt assertion if any 1418f4b37ed0SZbigniew Bodek * unmasked cause bit is set to 1. This bit is self-negated. 1419f4b37ed0SZbigniew Bodek */ 1420f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_C_INT_CONTROL_GRP_C_MOD_RST (1 << 4) 1421f4b37ed0SZbigniew Bodek /* 1422f4b37ed0SZbigniew Bodek * When mask_msi_x =1, no MSI-X from this group is sent. This bit must be set to 1423f4b37ed0SZbigniew Bodek * 1 when the associated summary bit in this group is used to generate a single 1424f4b37ed0SZbigniew Bodek * MSI-X for this group. 1425f4b37ed0SZbigniew Bodek */ 1426f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_C_INT_CONTROL_GRP_C_MASK_MSI_X (1 << 5) 1427f4b37ed0SZbigniew Bodek /* MSI-X AWID value. Same ID for all cause bits. */ 1428f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_C_INT_CONTROL_GRP_C_AWID_MASK 0x00000F00 1429f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_C_INT_CONTROL_GRP_C_AWID_SHIFT 8 1430f4b37ed0SZbigniew Bodek /* 1431f4b37ed0SZbigniew Bodek * This value determines the interval between interrupts; writing ZERO disables 1432f4b37ed0SZbigniew Bodek * Moderation. 1433f4b37ed0SZbigniew Bodek */ 1434f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_C_INT_CONTROL_GRP_C_MOD_INTV_MASK 0x00FF0000 1435f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_C_INT_CONTROL_GRP_C_MOD_INTV_SHIFT 16 1436f4b37ed0SZbigniew Bodek /* 1437f4b37ed0SZbigniew Bodek * This value determines the Moderation_Timer_Clock speed. 1438f4b37ed0SZbigniew Bodek * 0- Moderation-timer is decremented every 1x256 SB clock cycles ~1uS. 1439f4b37ed0SZbigniew Bodek * 1- Moderation-timer is decremented every 2x256 SB clock cycles ~2uS. 1440f4b37ed0SZbigniew Bodek * N- Moderation-timer is decremented every Nx256 SB clock cycles ~(N+1) uS. 1441f4b37ed0SZbigniew Bodek */ 1442f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_C_INT_CONTROL_GRP_C_MOD_RES_MASK 0x0F000000 1443f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_C_INT_CONTROL_GRP_C_MOD_RES_SHIFT 24 1444f4b37ed0SZbigniew Bodek 1445f4b37ed0SZbigniew Bodek /**** control_D register ****/ 1446f4b37ed0SZbigniew Bodek /* When Clear_on_Read =1, all bits of Cause register are cleared on read. */ 1447f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_D_INT_CONTROL_GRP_D_CLEAR_ON_READ (1 << 0) 1448f4b37ed0SZbigniew Bodek /* 1449f4b37ed0SZbigniew Bodek * (Must be set only when MSIX is enabled.) 1450f4b37ed0SZbigniew Bodek * When Auto-Mask =1 and an MSI-X ACK for this bit is received, its 1451f4b37ed0SZbigniew Bodek * corresponding bit in the Mask register is set, masking future interrupts. 1452f4b37ed0SZbigniew Bodek */ 1453f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_D_INT_CONTROL_GRP_D_AUTO_MASK (1 << 1) 1454f4b37ed0SZbigniew Bodek /* 1455f4b37ed0SZbigniew Bodek * Auto_Clear (RW) 1456f4b37ed0SZbigniew Bodek * When Auto-Clear =1, the bits in the Interrupt Cause register are auto-cleared 1457f4b37ed0SZbigniew Bodek * after MSI-X is acknowledged. Must be used only if MSI-X is enabled. 1458f4b37ed0SZbigniew Bodek */ 1459f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_D_INT_CONTROL_GRP_D_AUTO_CLEAR (1 << 2) 1460f4b37ed0SZbigniew Bodek /* 1461f4b37ed0SZbigniew Bodek * When Set_on_Posedge =1, the bits in the Interrupt Cause register are set on 1462f4b37ed0SZbigniew Bodek * the posedge of the interrupt source, i.e., when interrupt source =1 and 1463f4b37ed0SZbigniew Bodek * Interrupt Status = 0. 1464f4b37ed0SZbigniew Bodek * When Set_on_Posedge =0, the bits in the Interrupt Cause register are set when 1465f4b37ed0SZbigniew Bodek * interrupt source =1. 1466f4b37ed0SZbigniew Bodek */ 1467f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_D_INT_CONTROL_GRP_D_SET_ON_POSEDGE (1 << 3) 1468f4b37ed0SZbigniew Bodek /* 1469f4b37ed0SZbigniew Bodek * When Moderation_Reset =1, all Moderation timers associated with the interrupt 1470f4b37ed0SZbigniew Bodek * cause bits are cleared to 0, enabling immediate interrupt assertion if any 1471f4b37ed0SZbigniew Bodek * unmasked cause bit is set to 1. This bit is self-negated. 1472f4b37ed0SZbigniew Bodek */ 1473f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_D_INT_CONTROL_GRP_D_MOD_RST (1 << 4) 1474f4b37ed0SZbigniew Bodek /* 1475f4b37ed0SZbigniew Bodek * When mask_msi_x =1, no MSI-X from this group is sent. This bit must be set to 1476f4b37ed0SZbigniew Bodek * 1 when the associated summary bit in this group is used to generate a single 1477f4b37ed0SZbigniew Bodek * MSI-X for this group. 1478f4b37ed0SZbigniew Bodek */ 1479f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_D_INT_CONTROL_GRP_D_MASK_MSI_X (1 << 5) 1480f4b37ed0SZbigniew Bodek /* MSI-X AWID value. Same ID for all cause bits. */ 1481f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_D_INT_CONTROL_GRP_D_AWID_MASK 0x00000F00 1482f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_D_INT_CONTROL_GRP_D_AWID_SHIFT 8 1483f4b37ed0SZbigniew Bodek /* 1484f4b37ed0SZbigniew Bodek * This value determines the interval between interrupts; writing ZERO disables 1485f4b37ed0SZbigniew Bodek * Moderation. 1486f4b37ed0SZbigniew Bodek */ 1487f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_D_INT_CONTROL_GRP_D_MOD_INTV_MASK 0x00FF0000 1488f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_D_INT_CONTROL_GRP_D_MOD_INTV_SHIFT 16 1489f4b37ed0SZbigniew Bodek /* 1490f4b37ed0SZbigniew Bodek * This value determines the Moderation_Timer_Clock speed. 1491f4b37ed0SZbigniew Bodek * 0- Moderation-timer is decremented every 1x256 SB clock cycles ~1uS. 1492f4b37ed0SZbigniew Bodek * 1- Moderation-timer is decremented every 2x256 SB clock cycles ~2uS. 1493f4b37ed0SZbigniew Bodek * N- Moderation-timer is decremented every Nx256 SB clock cycles ~(N+1) uS. 1494f4b37ed0SZbigniew Bodek */ 1495f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_D_INT_CONTROL_GRP_D_MOD_RES_MASK 0x0F000000 1496f4b37ed0SZbigniew Bodek #define PCIE_W_INTERRUPT_GRP_D_INT_CONTROL_GRP_D_MOD_RES_SHIFT 24 1497f4b37ed0SZbigniew Bodek #ifdef __cplusplus 1498f4b37ed0SZbigniew Bodek } 1499f4b37ed0SZbigniew Bodek #endif 1500f4b37ed0SZbigniew Bodek 1501*3fc36ee0SWojciech Macek #endif /* __AL_HAL_pcie_w_REG_H */ 1502f4b37ed0SZbigniew Bodek 1503f4b37ed0SZbigniew Bodek /** @} end of ... group */ 1504f4b37ed0SZbigniew Bodek 1505f4b37ed0SZbigniew Bodek 1506