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 * @{ 39f4b37ed0SZbigniew Bodek * @file al_hal_nb_regs.h 40f4b37ed0SZbigniew Bodek * 41f4b37ed0SZbigniew Bodek * @brief North Bridge service registers 42f4b37ed0SZbigniew Bodek * 43f4b37ed0SZbigniew Bodek */ 44f4b37ed0SZbigniew Bodek 45f4b37ed0SZbigniew Bodek #ifndef __AL_HAL_NB_REGS_H__ 46f4b37ed0SZbigniew Bodek #define __AL_HAL_NB_REGS_H__ 47f4b37ed0SZbigniew Bodek 48f4b37ed0SZbigniew Bodek #include "al_hal_plat_types.h" 49f4b37ed0SZbigniew Bodek 50f4b37ed0SZbigniew Bodek #ifdef __cplusplus 51f4b37ed0SZbigniew Bodek extern "C" { 52f4b37ed0SZbigniew Bodek #endif 53f4b37ed0SZbigniew Bodek /* 54f4b37ed0SZbigniew Bodek * Unit Registers 55f4b37ed0SZbigniew Bodek */ 56f4b37ed0SZbigniew Bodek 57f4b37ed0SZbigniew Bodek 58f4b37ed0SZbigniew Bodek 59f4b37ed0SZbigniew Bodek struct al_nb_global { 60f4b37ed0SZbigniew Bodek /* [0x0] */ 61f4b37ed0SZbigniew Bodek uint32_t cpus_config; 62f4b37ed0SZbigniew Bodek /* [0x4] */ 63f4b37ed0SZbigniew Bodek uint32_t cpus_secure; 64f4b37ed0SZbigniew Bodek /* [0x8] Force init reset. */ 65f4b37ed0SZbigniew Bodek uint32_t cpus_init_control; 66f4b37ed0SZbigniew Bodek /* [0xc] Force init reset per DECEI mode. */ 67f4b37ed0SZbigniew Bodek uint32_t cpus_init_status; 68f4b37ed0SZbigniew Bodek /* [0x10] */ 69f4b37ed0SZbigniew Bodek uint32_t nb_int_cause; 70f4b37ed0SZbigniew Bodek /* [0x14] */ 71f4b37ed0SZbigniew Bodek uint32_t sev_int_cause; 72f4b37ed0SZbigniew Bodek /* [0x18] */ 73f4b37ed0SZbigniew Bodek uint32_t pmus_int_cause; 74f4b37ed0SZbigniew Bodek /* [0x1c] */ 75f4b37ed0SZbigniew Bodek uint32_t sev_mask; 76f4b37ed0SZbigniew Bodek /* [0x20] */ 77f4b37ed0SZbigniew Bodek uint32_t cpus_hold_reset; 78f4b37ed0SZbigniew Bodek /* [0x24] */ 79f4b37ed0SZbigniew Bodek uint32_t cpus_software_reset; 80f4b37ed0SZbigniew Bodek /* [0x28] */ 81f4b37ed0SZbigniew Bodek uint32_t wd_timer0_reset; 82f4b37ed0SZbigniew Bodek /* [0x2c] */ 83f4b37ed0SZbigniew Bodek uint32_t wd_timer1_reset; 84f4b37ed0SZbigniew Bodek /* [0x30] */ 85f4b37ed0SZbigniew Bodek uint32_t wd_timer2_reset; 86f4b37ed0SZbigniew Bodek /* [0x34] */ 87f4b37ed0SZbigniew Bodek uint32_t wd_timer3_reset; 88f4b37ed0SZbigniew Bodek /* [0x38] */ 89f4b37ed0SZbigniew Bodek uint32_t ddrc_hold_reset; 90f4b37ed0SZbigniew Bodek /* [0x3c] */ 91f4b37ed0SZbigniew Bodek uint32_t fabric_software_reset; 92f4b37ed0SZbigniew Bodek /* [0x40] */ 93f4b37ed0SZbigniew Bodek uint32_t cpus_power_ctrl; 94f4b37ed0SZbigniew Bodek uint32_t rsrvd_0[7]; 95f4b37ed0SZbigniew Bodek /* [0x60] */ 96f4b37ed0SZbigniew Bodek uint32_t acf_base_high; 97f4b37ed0SZbigniew Bodek /* [0x64] */ 98f4b37ed0SZbigniew Bodek uint32_t acf_base_low; 99f4b37ed0SZbigniew Bodek /* [0x68] */ 100f4b37ed0SZbigniew Bodek uint32_t acf_control_override; 101f4b37ed0SZbigniew Bodek /* [0x6c] Read-only that reflects CPU Cluster Local GIC base high address */ 102f4b37ed0SZbigniew Bodek uint32_t lgic_base_high; 103f4b37ed0SZbigniew Bodek /* [0x70] Read-only that reflects CPU Cluster Local GIC base low address */ 104f4b37ed0SZbigniew Bodek uint32_t lgic_base_low; 105f4b37ed0SZbigniew Bodek /* [0x74] Read-only that reflects the device's IOGIC base high address. */ 106f4b37ed0SZbigniew Bodek uint32_t iogic_base_high; 107f4b37ed0SZbigniew Bodek /* [0x78] Read-only that reflects IOGIC base low address */ 108f4b37ed0SZbigniew Bodek uint32_t iogic_base_low; 109f4b37ed0SZbigniew Bodek /* [0x7c] */ 110f4b37ed0SZbigniew Bodek uint32_t io_wr_split_control; 111f4b37ed0SZbigniew Bodek /* [0x80] */ 112f4b37ed0SZbigniew Bodek uint32_t io_rd_rob_control; 113f4b37ed0SZbigniew Bodek /* [0x84] */ 114f4b37ed0SZbigniew Bodek uint32_t sb_pos_error_log_1; 115f4b37ed0SZbigniew Bodek /* [0x88] */ 116f4b37ed0SZbigniew Bodek uint32_t sb_pos_error_log_0; 117f4b37ed0SZbigniew Bodek /* [0x8c] */ 118f4b37ed0SZbigniew Bodek uint32_t c2swb_config; 119f4b37ed0SZbigniew Bodek /* [0x90] */ 120f4b37ed0SZbigniew Bodek uint32_t msix_error_log; 121f4b37ed0SZbigniew Bodek /* [0x94] */ 122f4b37ed0SZbigniew Bodek uint32_t error_cause; 123f4b37ed0SZbigniew Bodek /* [0x98] */ 124f4b37ed0SZbigniew Bodek uint32_t error_mask; 125f4b37ed0SZbigniew Bodek uint32_t rsrvd_1; 126f4b37ed0SZbigniew Bodek /* [0xa0] */ 127f4b37ed0SZbigniew Bodek uint32_t qos_peak_control; 128f4b37ed0SZbigniew Bodek /* [0xa4] */ 129f4b37ed0SZbigniew Bodek uint32_t qos_set_control; 130f4b37ed0SZbigniew Bodek /* [0xa8] */ 131f4b37ed0SZbigniew Bodek uint32_t ddr_qos; 132f4b37ed0SZbigniew Bodek uint32_t rsrvd_2[9]; 133f4b37ed0SZbigniew Bodek /* [0xd0] */ 134f4b37ed0SZbigniew Bodek uint32_t acf_misc; 135f4b37ed0SZbigniew Bodek /* [0xd4] */ 136f4b37ed0SZbigniew Bodek uint32_t config_bus_control; 137f4b37ed0SZbigniew Bodek uint32_t rsrvd_3[2]; 138f4b37ed0SZbigniew Bodek /* [0xe0] */ 139f4b37ed0SZbigniew Bodek uint32_t pos_id_match; 140f4b37ed0SZbigniew Bodek uint32_t rsrvd_4[3]; 141f4b37ed0SZbigniew Bodek /* [0xf0] */ 142f4b37ed0SZbigniew Bodek uint32_t sb_sel_override_awuser; 143f4b37ed0SZbigniew Bodek /* [0xf4] */ 144f4b37ed0SZbigniew Bodek uint32_t sb_override_awuser; 145f4b37ed0SZbigniew Bodek /* [0xf8] */ 146f4b37ed0SZbigniew Bodek uint32_t sb_sel_override_aruser; 147f4b37ed0SZbigniew Bodek /* [0xfc] */ 148f4b37ed0SZbigniew Bodek uint32_t sb_override_aruser; 149f4b37ed0SZbigniew Bodek /* [0x100] */ 150f4b37ed0SZbigniew Bodek uint32_t cpu_max_pd_timer; 151f4b37ed0SZbigniew Bodek /* [0x104] */ 152f4b37ed0SZbigniew Bodek uint32_t cpu_max_pu_timer; 153f4b37ed0SZbigniew Bodek uint32_t rsrvd_5[2]; 154f4b37ed0SZbigniew Bodek /* [0x110] */ 155f4b37ed0SZbigniew Bodek uint32_t auto_ddr_self_refresh_counter; 156f4b37ed0SZbigniew Bodek uint32_t rsrvd_6[3]; 157f4b37ed0SZbigniew Bodek /* [0x120] */ 158f4b37ed0SZbigniew Bodek uint32_t coresight_pd; 159f4b37ed0SZbigniew Bodek /* [0x124] */ 160f4b37ed0SZbigniew Bodek uint32_t coresight_internal_0; 161f4b37ed0SZbigniew Bodek /* [0x128] */ 162f4b37ed0SZbigniew Bodek uint32_t coresight_dbgromaddr; 163f4b37ed0SZbigniew Bodek /* [0x12c] */ 164f4b37ed0SZbigniew Bodek uint32_t coresight_dbgselfaddr; 165f4b37ed0SZbigniew Bodek /* [0x130] */ 166f4b37ed0SZbigniew Bodek uint32_t coresght_targetid; 167f4b37ed0SZbigniew Bodek /* [0x134] */ 168f4b37ed0SZbigniew Bodek uint32_t coresght_targetid0; 169f4b37ed0SZbigniew Bodek uint32_t rsrvd_7[10]; 170f4b37ed0SZbigniew Bodek /* [0x160] */ 171f4b37ed0SZbigniew Bodek uint32_t sb_force_same_id_cfg_0; 172f4b37ed0SZbigniew Bodek /* [0x164] */ 173f4b37ed0SZbigniew Bodek uint32_t sb_mstr_force_same_id_sel_0; 174f4b37ed0SZbigniew Bodek /* [0x168] */ 175f4b37ed0SZbigniew Bodek uint32_t sb_force_same_id_cfg_1; 176f4b37ed0SZbigniew Bodek /* [0x16c] */ 177f4b37ed0SZbigniew Bodek uint32_t sb_mstr_force_same_id_sel_1; 178f4b37ed0SZbigniew Bodek uint32_t rsrvd[932]; 179f4b37ed0SZbigniew Bodek }; 180f4b37ed0SZbigniew Bodek struct al_nb_system_counter { 181f4b37ed0SZbigniew Bodek /* [0x0] */ 182f4b37ed0SZbigniew Bodek uint32_t cnt_control; 183f4b37ed0SZbigniew Bodek /* [0x4] */ 184f4b37ed0SZbigniew Bodek uint32_t cnt_base_freq; 185f4b37ed0SZbigniew Bodek /* [0x8] */ 186f4b37ed0SZbigniew Bodek uint32_t cnt_low; 187f4b37ed0SZbigniew Bodek /* [0xc] */ 188f4b37ed0SZbigniew Bodek uint32_t cnt_high; 189f4b37ed0SZbigniew Bodek /* [0x10] */ 190f4b37ed0SZbigniew Bodek uint32_t cnt_init_low; 191f4b37ed0SZbigniew Bodek /* [0x14] */ 192f4b37ed0SZbigniew Bodek uint32_t cnt_init_high; 193f4b37ed0SZbigniew Bodek uint32_t rsrvd[58]; 194f4b37ed0SZbigniew Bodek }; 195f4b37ed0SZbigniew Bodek struct al_nb_rams_control_misc { 196f4b37ed0SZbigniew Bodek /* [0x0] */ 197f4b37ed0SZbigniew Bodek uint32_t ca15_rf_misc; 198f4b37ed0SZbigniew Bodek uint32_t rsrvd_0; 199f4b37ed0SZbigniew Bodek /* [0x8] */ 200f4b37ed0SZbigniew Bodek uint32_t nb_rf_misc; 201f4b37ed0SZbigniew Bodek uint32_t rsrvd[61]; 202f4b37ed0SZbigniew Bodek }; 203f4b37ed0SZbigniew Bodek struct al_nb_ca15_rams_control { 204f4b37ed0SZbigniew Bodek /* [0x0] */ 205f4b37ed0SZbigniew Bodek uint32_t rf_0; 206f4b37ed0SZbigniew Bodek /* [0x4] */ 207f4b37ed0SZbigniew Bodek uint32_t rf_1; 208f4b37ed0SZbigniew Bodek /* [0x8] */ 209f4b37ed0SZbigniew Bodek uint32_t rf_2; 210f4b37ed0SZbigniew Bodek uint32_t rsrvd; 211f4b37ed0SZbigniew Bodek }; 212f4b37ed0SZbigniew Bodek struct al_nb_semaphores { 213f4b37ed0SZbigniew Bodek /* [0x0] This configuration is only sampled during reset of the processor */ 214f4b37ed0SZbigniew Bodek uint32_t lockn; 215f4b37ed0SZbigniew Bodek }; 216f4b37ed0SZbigniew Bodek struct al_nb_debug { 217f4b37ed0SZbigniew Bodek /* [0x0] */ 218f4b37ed0SZbigniew Bodek uint32_t ca15_outputs_1; 219f4b37ed0SZbigniew Bodek /* [0x4] */ 220f4b37ed0SZbigniew Bodek uint32_t ca15_outputs_2; 221f4b37ed0SZbigniew Bodek uint32_t rsrvd_0[2]; 222f4b37ed0SZbigniew Bodek /* [0x10] */ 223f4b37ed0SZbigniew Bodek uint32_t cpu_msg[4]; 224f4b37ed0SZbigniew Bodek /* [0x20] */ 225f4b37ed0SZbigniew Bodek uint32_t rsv0_config; 226f4b37ed0SZbigniew Bodek /* [0x24] */ 227f4b37ed0SZbigniew Bodek uint32_t rsv1_config; 228f4b37ed0SZbigniew Bodek uint32_t rsrvd_1[2]; 229f4b37ed0SZbigniew Bodek /* [0x30] */ 230f4b37ed0SZbigniew Bodek uint32_t rsv0_status; 231f4b37ed0SZbigniew Bodek /* [0x34] */ 232f4b37ed0SZbigniew Bodek uint32_t rsv1_status; 233f4b37ed0SZbigniew Bodek uint32_t rsrvd_2[2]; 234f4b37ed0SZbigniew Bodek /* [0x40] */ 235f4b37ed0SZbigniew Bodek uint32_t ddrc; 236f4b37ed0SZbigniew Bodek /* [0x44] */ 237f4b37ed0SZbigniew Bodek uint32_t ddrc_phy_smode_control; 238f4b37ed0SZbigniew Bodek /* [0x48] */ 239f4b37ed0SZbigniew Bodek uint32_t ddrc_phy_smode_status; 240f4b37ed0SZbigniew Bodek uint32_t rsrvd_3[5]; 241f4b37ed0SZbigniew Bodek /* [0x60] */ 242f4b37ed0SZbigniew Bodek uint32_t pmc; 243f4b37ed0SZbigniew Bodek uint32_t rsrvd_4[3]; 244f4b37ed0SZbigniew Bodek /* [0x70] */ 245f4b37ed0SZbigniew Bodek uint32_t cpus_general; 246f4b37ed0SZbigniew Bodek /* [0x74] */ 247f4b37ed0SZbigniew Bodek uint32_t cpus_general_1; 248f4b37ed0SZbigniew Bodek uint32_t rsrvd_5[2]; 249f4b37ed0SZbigniew Bodek /* [0x80] */ 250f4b37ed0SZbigniew Bodek uint32_t cpus_int_out; 251f4b37ed0SZbigniew Bodek uint32_t rsrvd_6[3]; 252f4b37ed0SZbigniew Bodek /* [0x90] */ 253f4b37ed0SZbigniew Bodek uint32_t latch_pc_req; 254f4b37ed0SZbigniew Bodek uint32_t rsrvd_7; 255f4b37ed0SZbigniew Bodek /* [0x98] */ 256f4b37ed0SZbigniew Bodek uint32_t latch_pc_low; 257f4b37ed0SZbigniew Bodek /* [0x9c] */ 258f4b37ed0SZbigniew Bodek uint32_t latch_pc_high; 259f4b37ed0SZbigniew Bodek uint32_t rsrvd_8[24]; 260f4b37ed0SZbigniew Bodek /* [0x100] */ 261f4b37ed0SZbigniew Bodek uint32_t track_dump_ctrl; 262f4b37ed0SZbigniew Bodek /* [0x104] */ 263f4b37ed0SZbigniew Bodek uint32_t track_dump_rdata_0; 264f4b37ed0SZbigniew Bodek /* [0x108] */ 265f4b37ed0SZbigniew Bodek uint32_t track_dump_rdata_1; 266f4b37ed0SZbigniew Bodek uint32_t rsrvd_9[5]; 267f4b37ed0SZbigniew Bodek /* [0x120] */ 268f4b37ed0SZbigniew Bodek uint32_t track_events; 269f4b37ed0SZbigniew Bodek uint32_t rsrvd_10[3]; 270f4b37ed0SZbigniew Bodek /* [0x130] */ 271f4b37ed0SZbigniew Bodek uint32_t pos_track_dump_ctrl; 272f4b37ed0SZbigniew Bodek /* [0x134] */ 273f4b37ed0SZbigniew Bodek uint32_t pos_track_dump_rdata_0; 274f4b37ed0SZbigniew Bodek /* [0x138] */ 275f4b37ed0SZbigniew Bodek uint32_t pos_track_dump_rdata_1; 276f4b37ed0SZbigniew Bodek uint32_t rsrvd_11; 277f4b37ed0SZbigniew Bodek /* [0x140] */ 278f4b37ed0SZbigniew Bodek uint32_t c2swb_track_dump_ctrl; 279f4b37ed0SZbigniew Bodek /* [0x144] */ 280f4b37ed0SZbigniew Bodek uint32_t c2swb_track_dump_rdata_0; 281f4b37ed0SZbigniew Bodek /* [0x148] */ 282f4b37ed0SZbigniew Bodek uint32_t c2swb_track_dump_rdata_1; 283f4b37ed0SZbigniew Bodek uint32_t rsrvd_12; 284f4b37ed0SZbigniew Bodek /* [0x150] */ 285f4b37ed0SZbigniew Bodek uint32_t cpus_track_dump_ctrl; 286f4b37ed0SZbigniew Bodek /* [0x154] */ 287f4b37ed0SZbigniew Bodek uint32_t cpus_track_dump_rdata_0; 288f4b37ed0SZbigniew Bodek /* [0x158] */ 289f4b37ed0SZbigniew Bodek uint32_t cpus_track_dump_rdata_1; 290f4b37ed0SZbigniew Bodek uint32_t rsrvd_13; 291f4b37ed0SZbigniew Bodek /* [0x160] */ 292f4b37ed0SZbigniew Bodek uint32_t c2swb_bar_ovrd_high; 293f4b37ed0SZbigniew Bodek /* [0x164] */ 294f4b37ed0SZbigniew Bodek uint32_t c2swb_bar_ovrd_low; 295f4b37ed0SZbigniew Bodek uint32_t rsrvd[38]; 296f4b37ed0SZbigniew Bodek }; 297f4b37ed0SZbigniew Bodek struct al_nb_cpun_config_status { 298f4b37ed0SZbigniew Bodek /* [0x0] This configuration is only sampled during reset of the processor. */ 299f4b37ed0SZbigniew Bodek uint32_t config; 300f4b37ed0SZbigniew Bodek /* [0x4] This configuration is only sampled during reset of the processor. */ 301f4b37ed0SZbigniew Bodek uint32_t config_aarch64; 302f4b37ed0SZbigniew Bodek /* [0x8] */ 303f4b37ed0SZbigniew Bodek uint32_t local_cause_mask; 304f4b37ed0SZbigniew Bodek uint32_t rsrvd_0; 305f4b37ed0SZbigniew Bodek /* [0x10] */ 306f4b37ed0SZbigniew Bodek uint32_t pmus_cause_mask; 307f4b37ed0SZbigniew Bodek /* [0x14] */ 308f4b37ed0SZbigniew Bodek uint32_t sei_cause_mask; 309f4b37ed0SZbigniew Bodek uint32_t rsrvd_1[2]; 310f4b37ed0SZbigniew Bodek /* [0x20] Specifies the state of the CPU with reference to power modes. */ 311f4b37ed0SZbigniew Bodek uint32_t power_ctrl; 312f4b37ed0SZbigniew Bodek /* [0x24] */ 313f4b37ed0SZbigniew Bodek uint32_t power_status; 314f4b37ed0SZbigniew Bodek /* [0x28] */ 315f4b37ed0SZbigniew Bodek uint32_t resume_addr_l; 316f4b37ed0SZbigniew Bodek /* [0x2c] */ 317f4b37ed0SZbigniew Bodek uint32_t resume_addr_h; 318f4b37ed0SZbigniew Bodek uint32_t rsrvd_2[4]; 319f4b37ed0SZbigniew Bodek /* [0x40] */ 320f4b37ed0SZbigniew Bodek uint32_t warm_rst_ctl; 321f4b37ed0SZbigniew Bodek uint32_t rsrvd_3; 322f4b37ed0SZbigniew Bodek /* [0x48] */ 323f4b37ed0SZbigniew Bodek uint32_t rvbar_low; 324f4b37ed0SZbigniew Bodek /* [0x4c] */ 325f4b37ed0SZbigniew Bodek uint32_t rvbar_high; 326f4b37ed0SZbigniew Bodek /* [0x50] */ 327f4b37ed0SZbigniew Bodek uint32_t pmu_snapshot; 328f4b37ed0SZbigniew Bodek uint32_t rsrvd_4[3]; 329f4b37ed0SZbigniew Bodek /* [0x60] */ 330f4b37ed0SZbigniew Bodek uint32_t cpu_msg_in; 331f4b37ed0SZbigniew Bodek uint32_t rsrvd[39]; 332f4b37ed0SZbigniew Bodek }; 333f4b37ed0SZbigniew Bodek struct al_nb_mc_pmu { 334f4b37ed0SZbigniew Bodek /* [0x0] PMU Global Control Register */ 335f4b37ed0SZbigniew Bodek uint32_t pmu_control; 336f4b37ed0SZbigniew Bodek /* [0x4] PMU Global Control Register */ 337f4b37ed0SZbigniew Bodek uint32_t overflow; 338f4b37ed0SZbigniew Bodek uint32_t rsrvd[62]; 339f4b37ed0SZbigniew Bodek }; 340f4b37ed0SZbigniew Bodek struct al_nb_mc_pmu_counters { 341f4b37ed0SZbigniew Bodek /* [0x0] Counter Configuration Register */ 342f4b37ed0SZbigniew Bodek uint32_t cfg; 343f4b37ed0SZbigniew Bodek /* [0x4] Counter Control Register */ 344f4b37ed0SZbigniew Bodek uint32_t cntl; 345f4b37ed0SZbigniew Bodek /* [0x8] Counter Control Register */ 346f4b37ed0SZbigniew Bodek uint32_t low; 347f4b37ed0SZbigniew Bodek /* [0xc] Counter Control Register */ 348f4b37ed0SZbigniew Bodek uint32_t high; 349f4b37ed0SZbigniew Bodek uint32_t rsrvd[4]; 350f4b37ed0SZbigniew Bodek }; 351f4b37ed0SZbigniew Bodek struct al_nb_nb_version { 352f4b37ed0SZbigniew Bodek /* [0x0] Northbridge Revision */ 353f4b37ed0SZbigniew Bodek uint32_t version; 354f4b37ed0SZbigniew Bodek uint32_t rsrvd; 355f4b37ed0SZbigniew Bodek }; 356f4b37ed0SZbigniew Bodek struct al_nb_sriov { 357f4b37ed0SZbigniew Bodek /* [0x0] */ 358*3fc36ee0SWojciech Macek uint32_t cpu_tgtid[4]; 359f4b37ed0SZbigniew Bodek uint32_t rsrvd[4]; 360f4b37ed0SZbigniew Bodek }; 361f4b37ed0SZbigniew Bodek struct al_nb_dram_channels { 362f4b37ed0SZbigniew Bodek /* [0x0] */ 363f4b37ed0SZbigniew Bodek uint32_t dram_0_control; 364f4b37ed0SZbigniew Bodek uint32_t rsrvd_0; 365f4b37ed0SZbigniew Bodek /* [0x8] */ 366f4b37ed0SZbigniew Bodek uint32_t dram_0_status; 367f4b37ed0SZbigniew Bodek uint32_t rsrvd_1; 368f4b37ed0SZbigniew Bodek /* [0x10] */ 369f4b37ed0SZbigniew Bodek uint32_t ddr_int_cause; 370f4b37ed0SZbigniew Bodek uint32_t rsrvd_2; 371f4b37ed0SZbigniew Bodek /* [0x18] */ 372f4b37ed0SZbigniew Bodek uint32_t ddr_cause_mask; 373f4b37ed0SZbigniew Bodek uint32_t rsrvd_3; 374f4b37ed0SZbigniew Bodek /* [0x20] */ 375f4b37ed0SZbigniew Bodek uint32_t address_map; 376f4b37ed0SZbigniew Bodek uint32_t rsrvd_4[3]; 377f4b37ed0SZbigniew Bodek /* [0x30] */ 378f4b37ed0SZbigniew Bodek uint32_t reorder_id_mask_0; 379f4b37ed0SZbigniew Bodek /* [0x34] */ 380f4b37ed0SZbigniew Bodek uint32_t reorder_id_value_0; 381f4b37ed0SZbigniew Bodek /* [0x38] */ 382f4b37ed0SZbigniew Bodek uint32_t reorder_id_mask_1; 383f4b37ed0SZbigniew Bodek /* [0x3c] */ 384f4b37ed0SZbigniew Bodek uint32_t reorder_id_value_1; 385f4b37ed0SZbigniew Bodek /* [0x40] */ 386f4b37ed0SZbigniew Bodek uint32_t reorder_id_mask_2; 387f4b37ed0SZbigniew Bodek /* [0x44] */ 388f4b37ed0SZbigniew Bodek uint32_t reorder_id_value_2; 389f4b37ed0SZbigniew Bodek /* [0x48] */ 390f4b37ed0SZbigniew Bodek uint32_t reorder_id_mask_3; 391f4b37ed0SZbigniew Bodek /* [0x4c] */ 392f4b37ed0SZbigniew Bodek uint32_t reorder_id_value_3; 393f4b37ed0SZbigniew Bodek /* [0x50] */ 394f4b37ed0SZbigniew Bodek uint32_t mrr_control_status; 395f4b37ed0SZbigniew Bodek uint32_t rsrvd[43]; 396f4b37ed0SZbigniew Bodek }; 397f4b37ed0SZbigniew Bodek struct al_nb_ddr_0_mrr { 398f4b37ed0SZbigniew Bodek /* [0x0] Counter Configuration Register */ 399f4b37ed0SZbigniew Bodek uint32_t val; 400f4b37ed0SZbigniew Bodek }; 401f4b37ed0SZbigniew Bodek struct al_nb_push_packet { 402f4b37ed0SZbigniew Bodek /* [0x0] */ 403f4b37ed0SZbigniew Bodek uint32_t pp_config; 404f4b37ed0SZbigniew Bodek uint32_t rsrvd_0[3]; 405f4b37ed0SZbigniew Bodek /* [0x10] */ 406*3fc36ee0SWojciech Macek uint32_t pp_ext_attr; 407f4b37ed0SZbigniew Bodek uint32_t rsrvd_1[3]; 408f4b37ed0SZbigniew Bodek /* [0x20] */ 409f4b37ed0SZbigniew Bodek uint32_t pp_base_low; 410f4b37ed0SZbigniew Bodek /* [0x24] */ 411f4b37ed0SZbigniew Bodek uint32_t pp_base_high; 412f4b37ed0SZbigniew Bodek uint32_t rsrvd_2[2]; 413f4b37ed0SZbigniew Bodek /* [0x30] */ 414*3fc36ee0SWojciech Macek uint32_t pp_sel_attr; 415f4b37ed0SZbigniew Bodek uint32_t rsrvd[51]; 416f4b37ed0SZbigniew Bodek }; 417f4b37ed0SZbigniew Bodek 418f4b37ed0SZbigniew Bodek struct al_nb_regs { 419f4b37ed0SZbigniew Bodek struct al_nb_global global; /* [0x0] */ 420f4b37ed0SZbigniew Bodek struct al_nb_system_counter system_counter; /* [0x1000] */ 421f4b37ed0SZbigniew Bodek struct al_nb_rams_control_misc rams_control_misc; /* [0x1100] */ 422f4b37ed0SZbigniew Bodek struct al_nb_ca15_rams_control ca15_rams_control[5]; /* [0x1200] */ 423f4b37ed0SZbigniew Bodek uint32_t rsrvd_0[108]; 424f4b37ed0SZbigniew Bodek struct al_nb_semaphores semaphores[64]; /* [0x1400] */ 425f4b37ed0SZbigniew Bodek uint32_t rsrvd_1[320]; 426f4b37ed0SZbigniew Bodek struct al_nb_debug debug; /* [0x1a00] */ 427f4b37ed0SZbigniew Bodek uint32_t rsrvd_2[256]; 428f4b37ed0SZbigniew Bodek struct al_nb_cpun_config_status cpun_config_status[4]; /* [0x2000] */ 429f4b37ed0SZbigniew Bodek uint32_t rsrvd_3[1792]; 430f4b37ed0SZbigniew Bodek struct al_nb_mc_pmu mc_pmu; /* [0x4000] */ 431f4b37ed0SZbigniew Bodek struct al_nb_mc_pmu_counters mc_pmu_counters[4]; /* [0x4100] */ 432f4b37ed0SZbigniew Bodek uint32_t rsrvd_4[160]; 433f4b37ed0SZbigniew Bodek struct al_nb_nb_version nb_version; /* [0x4400] */ 434f4b37ed0SZbigniew Bodek uint32_t rsrvd_5[126]; 435f4b37ed0SZbigniew Bodek struct al_nb_sriov sriov; /* [0x4600] */ 436f4b37ed0SZbigniew Bodek uint32_t rsrvd_6[120]; 437f4b37ed0SZbigniew Bodek struct al_nb_dram_channels dram_channels; /* [0x4800] */ 438f4b37ed0SZbigniew Bodek struct al_nb_ddr_0_mrr ddr_0_mrr[9]; /* [0x4900] */ 439f4b37ed0SZbigniew Bodek uint32_t rsrvd_7[439]; 440f4b37ed0SZbigniew Bodek uint32_t rsrvd_8[1024]; /* [0x5000] */ 441f4b37ed0SZbigniew Bodek struct al_nb_push_packet push_packet; /* [0x6000] */ 442f4b37ed0SZbigniew Bodek }; 443f4b37ed0SZbigniew Bodek 444f4b37ed0SZbigniew Bodek 445f4b37ed0SZbigniew Bodek /* 446f4b37ed0SZbigniew Bodek * Registers Fields 447f4b37ed0SZbigniew Bodek */ 448f4b37ed0SZbigniew Bodek 449f4b37ed0SZbigniew Bodek 450f4b37ed0SZbigniew Bodek /**** CPUs_Config register ****/ 451f4b37ed0SZbigniew Bodek /* Disable broadcast of barrier onto system bus. 452f4b37ed0SZbigniew Bodek Connect to Processor Cluster SYSBARDISABLE. */ 453f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_CONFIG_SYSBARDISABLE (1 << 0) 454f4b37ed0SZbigniew Bodek /* Enable broadcast of inner shareable transactions from CPUs. 455f4b37ed0SZbigniew Bodek Connect to Processor Cluster BROADCASTINNER. */ 456f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_CONFIG_BROADCASTINNER (1 << 1) 457f4b37ed0SZbigniew Bodek /* Disable broadcast of cache maintenance system bus. 458f4b37ed0SZbigniew Bodek Connect to Processor Cluster BROADCASTCACHEMAIN */ 459f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_CONFIG_BROADCASTCACHEMAINT (1 << 2) 460f4b37ed0SZbigniew Bodek /* Enable broadcast of outer shareable transactions from CPUs. 461f4b37ed0SZbigniew Bodek Connect to Processor Cluster BROADCASTOUTER. */ 462f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_CONFIG_BROADCASTOUTER (1 << 3) 463f4b37ed0SZbigniew Bodek /* Defines the internal CPU GIC operating frequency ratio with the main CPU clock. 464f4b37ed0SZbigniew Bodek 0x0: 1:1 465f4b37ed0SZbigniew Bodek 0x1: 1:2 466f4b37ed0SZbigniew Bodek 0x2: 1:3 467f4b37ed0SZbigniew Bodek 0x3: 1:4 468f4b37ed0SZbigniew Bodek 469f4b37ed0SZbigniew Bodek Note: This is not in used with CA57 */ 470f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_CONFIG_PERIPHCLKEN_MASK 0x00000030 471f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_CONFIG_PERIPHCLKEN_SHIFT 4 472f4b37ed0SZbigniew Bodek /* Disables the GIC CPU interface logic and routes the legacy nIRQ, nFIQ, nVIRQ, and nVFIQ 473f4b37ed0SZbigniew Bodek signals directly to the processor: 474f4b37ed0SZbigniew Bodek 0 Enable the GIC CPU interface logic. 475f4b37ed0SZbigniew Bodek 1 Disable the GIC CPU interface logic. 476f4b37ed0SZbigniew Bodek The processor only samples this signal as it exits reset. */ 477f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_CONFIG_GIC_DISABLE (1 << 6) 478f4b37ed0SZbigniew Bodek /* Disable L1 data cache and L2 snoop tag RAMs automatic invalidate on reset functionality */ 479f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_CONFIG_DBG_L1_RESET_DISABLE (1 << 7) 480f4b37ed0SZbigniew Bodek /* Value read in the Cluster ID Affinity Level-1 field, bits[15:8], of the Multiprocessor Affinity 481f4b37ed0SZbigniew Bodek Register (MPIDR). 482f4b37ed0SZbigniew Bodek This signal is only sampled during reset of the processor. */ 483f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_CONFIG_CLUSTERIDAFF1_MASK 0x00FF0000 484f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_CONFIG_CLUSTERIDAFF1_SHIFT 16 485f4b37ed0SZbigniew Bodek /* Value read in the Cluster ID Affinity Level-2 field, bits[23:16], of the Multiprocessor Affinity 486f4b37ed0SZbigniew Bodek Register (MPIDR). 487f4b37ed0SZbigniew Bodek This signal is only sampled during reset of the processor.. */ 488f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_CONFIG_CLUSTERIDAFF2_MASK 0xFF000000 489f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_CONFIG_CLUSTERIDAFF2_SHIFT 24 490f4b37ed0SZbigniew Bodek 491f4b37ed0SZbigniew Bodek /**** CPUs_Secure register ****/ 492f4b37ed0SZbigniew Bodek /* DBGEN 493f4b37ed0SZbigniew Bodek */ 494f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_SECURE_DBGEN (1 << 0) 495f4b37ed0SZbigniew Bodek /* NIDEN 496f4b37ed0SZbigniew Bodek */ 497f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_SECURE_NIDEN (1 << 1) 498f4b37ed0SZbigniew Bodek /* SPIDEN 499f4b37ed0SZbigniew Bodek */ 500f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_SECURE_SPIDEN (1 << 2) 501f4b37ed0SZbigniew Bodek /* SPNIDEN 502f4b37ed0SZbigniew Bodek */ 503f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_SECURE_SPNIDEN (1 << 3) 504f4b37ed0SZbigniew Bodek /* Disable write access to some secure GIC registers */ 505f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_SECURE_CFGSDISABLE (1 << 4) 506f4b37ed0SZbigniew Bodek /* Disable write access to some secure IOGIC registers */ 507f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_SECURE_IOGIC_CFGSDISABLE (1 << 5) 508f4b37ed0SZbigniew Bodek 509f4b37ed0SZbigniew Bodek /**** CPUs_Init_Control register ****/ 510f4b37ed0SZbigniew Bodek /* CPU Init Done 511f4b37ed0SZbigniew Bodek Specifies which CPUs' inits are done and can exit poreset. 512f4b37ed0SZbigniew Bodek By default, CPU0 only exits poreset when the CPUs cluster exits power-on-reset and then kicks other CPUs. 513f4b37ed0SZbigniew Bodek If this bit is cleared for a specific CPU, setting it by primary CPU as part of the initialization process will initiate power-on-reset to this specific CPU. */ 514f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_INIT_CONTROL_CPUS_INITDONE_MASK 0x0000000F 515f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_INIT_CONTROL_CPUS_INITDONE_SHIFT 0 516f4b37ed0SZbigniew Bodek /* DBGPWRDNREQ Mask 517f4b37ed0SZbigniew Bodek When CPU does not exist, its DBGPWRDNREQ must be asserted. 518f4b37ed0SZbigniew Bodek If corresponding mask bit is set, the DBGPWDNREQ is deasserted. */ 519f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_INIT_CONTROL_DBGPWRDNREQ_MASK_MASK 0x000000F0 520f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_INIT_CONTROL_DBGPWRDNREQ_MASK_SHIFT 4 521f4b37ed0SZbigniew Bodek /* Force CPU init power-on-reset exit. 522f4b37ed0SZbigniew Bodek For debug purposes only. */ 523f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_INIT_CONTROL_FORCE_CPUPOR_MASK 0x00000F00 524f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_INIT_CONTROL_FORCE_CPUPOR_SHIFT 8 525f4b37ed0SZbigniew Bodek /* Force dbgpwrdup signal high 526f4b37ed0SZbigniew Bodek If dbgpwrdup is clear on the processor interface it indicates that the process debug resources are not available for APB access. */ 527f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_INIT_CONTROL_FORCE_DBGPWRDUP_MASK 0x0000F000 528f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_INIT_CONTROL_FORCE_DBGPWRDUP_SHIFT 12 529f4b37ed0SZbigniew Bodek 530f4b37ed0SZbigniew Bodek /**** CPUs_Init_Status register ****/ 531f4b37ed0SZbigniew Bodek /* Specifies which CPUs are enabled in the device configuration. 532f4b37ed0SZbigniew Bodek sample at rst_cpus_exist[3:0] reset strap. */ 533f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_INIT_STATUS_CPUS_EXIST_MASK 0x0000000F 534f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_INIT_STATUS_CPUS_EXIST_SHIFT 0 535f4b37ed0SZbigniew Bodek 536f4b37ed0SZbigniew Bodek /**** NB_Int_Cause register ****/ 537f4b37ed0SZbigniew Bodek /* 538f4b37ed0SZbigniew Bodek * Each bit corresponds to an IRQ. 539f4b37ed0SZbigniew Bodek * value is 1 for level irq, 0 for trigger irq 540f4b37ed0SZbigniew Bodek * Level IRQ indices: 12-13, 23, 24, 26-29 541f4b37ed0SZbigniew Bodek */ 542f4b37ed0SZbigniew Bodek #define NB_GLOBAL_NB_INT_CAUSE_LEVEL_IRQ_MASK 0x3D803000 543f4b37ed0SZbigniew Bodek /* Cross trigger interrupt */ 544f4b37ed0SZbigniew Bodek #define NB_GLOBAL_NB_INT_CAUSE_NCTIIRQ_MASK 0x0000000F 545f4b37ed0SZbigniew Bodek #define NB_GLOBAL_NB_INT_CAUSE_NCTIIRQ_SHIFT 0 546f4b37ed0SZbigniew Bodek /* Communications channel receive. Receive portion of Data Transfer Register full flag */ 547f4b37ed0SZbigniew Bodek #define NB_GLOBAL_NB_INT_CAUSE_COMMRX_MASK 0x000000F0 548f4b37ed0SZbigniew Bodek #define NB_GLOBAL_NB_INT_CAUSE_COMMRX_SHIFT 4 549f4b37ed0SZbigniew Bodek /* Communication channel transmit. Transmit portion of Data Transfer Register empty flag. */ 550f4b37ed0SZbigniew Bodek #define NB_GLOBAL_NB_INT_CAUSE_COMMTX_MASK 0x00000F00 551f4b37ed0SZbigniew Bodek #define NB_GLOBAL_NB_INT_CAUSE_COMMTX_SHIFT 8 552f4b37ed0SZbigniew Bodek /* Reserved, read undefined must write as zeros. */ 553f4b37ed0SZbigniew Bodek #define NB_GLOBAL_NB_INT_CAUSE_RESERVED_15_15 (1 << 15) 554f4b37ed0SZbigniew Bodek /* Error indicator for AXI write transactions with a BRESP error condition. Writing 0 to bit[29] of the L2ECTLR clears the error indicator connected to CA15 nAXIERRIRQ. */ 555f4b37ed0SZbigniew Bodek #define NB_GLOBAL_NB_INT_CAUSE_CPU_AXIERRIRQ (1 << 16) 556f4b37ed0SZbigniew Bodek /* Error indicator for: L2 RAM double-bit ECC error, illegal writes to the GIC memory-map region. */ 557f4b37ed0SZbigniew Bodek #define NB_GLOBAL_NB_INT_CAUSE_CPU_INTERRIRQ (1 << 17) 558f4b37ed0SZbigniew Bodek /* Coherent fabric error summary interrupt */ 559f4b37ed0SZbigniew Bodek #define NB_GLOBAL_NB_INT_CAUSE_ACF_ERRORIRQ (1 << 18) 560f4b37ed0SZbigniew Bodek /* DDR Controller ECC Correctable error summary interrupt */ 561f4b37ed0SZbigniew Bodek #define NB_GLOBAL_NB_INT_CAUSE_MCTL_ECC_CORR_ERR (1 << 19) 562f4b37ed0SZbigniew Bodek /* DDR Controller ECC Uncorrectable error summary interrupt */ 563f4b37ed0SZbigniew Bodek #define NB_GLOBAL_NB_INT_CAUSE_MCTL_ECC_UNCORR_ERR (1 << 20) 564f4b37ed0SZbigniew Bodek /* DRAM parity error interrupt */ 565f4b37ed0SZbigniew Bodek #define NB_GLOBAL_NB_INT_CAUSE_MCTL_PARITY_ERR (1 << 21) 566f4b37ed0SZbigniew Bodek /* Reserved, not functional */ 567f4b37ed0SZbigniew Bodek #define NB_GLOBAL_NB_INT_CAUSE_MCTL_WDATARAM_PAR (1 << 22) 568f4b37ed0SZbigniew Bodek /* Error cause summary interrupt */ 569f4b37ed0SZbigniew Bodek #define NB_GLOBAL_NB_INT_CAUSE_ERR_CAUSE_SUM_A0 (1 << 23) 570f4b37ed0SZbigniew Bodek /* SB PoS error */ 571f4b37ed0SZbigniew Bodek #define NB_GLOBAL_NB_INT_CAUSE_SB_POS_ERR (1 << 24) 572f4b37ed0SZbigniew Bodek /* Received msix is not mapped to local GIC or IO-GIC spin */ 573f4b37ed0SZbigniew Bodek #define NB_GLOBAL_NB_INT_CAUSE_MSIX_ERR_INT_M0 (1 << 25) 574f4b37ed0SZbigniew Bodek /* Coresight timestamp overflow */ 575f4b37ed0SZbigniew Bodek #define NB_GLOBAL_NB_INT_CAUSE_CORESIGHT_TS_OVERFLOW_M0 (1 << 26) 576f4b37ed0SZbigniew Bodek 577f4b37ed0SZbigniew Bodek /**** SEV_Int_Cause register ****/ 578f4b37ed0SZbigniew Bodek /* SMMU 0/1 global non-secure fault interrupt */ 579f4b37ed0SZbigniew Bodek #define NB_GLOBAL_SEV_INT_CAUSE_SMMU_GBL_FLT_IRPT_NS_MASK 0x00000003 580f4b37ed0SZbigniew Bodek #define NB_GLOBAL_SEV_INT_CAUSE_SMMU_GBL_FLT_IRPT_NS_SHIFT 0 581f4b37ed0SZbigniew Bodek /* SMMU 0/1 non-secure context interrupt */ 582f4b37ed0SZbigniew Bodek #define NB_GLOBAL_SEV_INT_CAUSE_SMMU_CXT_IRPT_NS_MASK 0x0000000C 583f4b37ed0SZbigniew Bodek #define NB_GLOBAL_SEV_INT_CAUSE_SMMU_CXT_IRPT_NS_SHIFT 2 584f4b37ed0SZbigniew Bodek /* SMMU0/1 Non-secure configuration access fault interrupt */ 585f4b37ed0SZbigniew Bodek #define NB_GLOBAL_SEV_INT_CAUSE_SMMU_CFG_FLT_IRPT_S_MASK 0x00000030 586f4b37ed0SZbigniew Bodek #define NB_GLOBAL_SEV_INT_CAUSE_SMMU_CFG_FLT_IRPT_S_SHIFT 4 587f4b37ed0SZbigniew Bodek /* Reserved. Read undefined; must write as zeros. */ 588f4b37ed0SZbigniew Bodek #define NB_GLOBAL_SEV_INT_CAUSE_RESERVED_11_6_MASK 0x00000FC0 589f4b37ed0SZbigniew Bodek #define NB_GLOBAL_SEV_INT_CAUSE_RESERVED_11_6_SHIFT 6 590f4b37ed0SZbigniew Bodek /* Reserved. Read undefined; must write as zeros. */ 591f4b37ed0SZbigniew Bodek #define NB_GLOBAL_SEV_INT_CAUSE_RESERVED_31_20_MASK 0xFFF00000 592f4b37ed0SZbigniew Bodek #define NB_GLOBAL_SEV_INT_CAUSE_RESERVED_31_20_SHIFT 20 593f4b37ed0SZbigniew Bodek 594f4b37ed0SZbigniew Bodek /**** PMUs_Int_Cause register ****/ 595f4b37ed0SZbigniew Bodek /* CPUs PMU Overflow interrupt */ 596f4b37ed0SZbigniew Bodek #define NB_GLOBAL_PMUS_INT_CAUSE_CPUS_OVFL_MASK 0x0000000F 597f4b37ed0SZbigniew Bodek #define NB_GLOBAL_PMUS_INT_CAUSE_CPUS_OVFL_SHIFT 0 598f4b37ed0SZbigniew Bodek /* Northbridge PMU overflow */ 599f4b37ed0SZbigniew Bodek #define NB_GLOBAL_PMUS_INT_CAUSE_NB_OVFL (1 << 4) 600f4b37ed0SZbigniew Bodek /* Memory Controller PMU overflow */ 601f4b37ed0SZbigniew Bodek #define NB_GLOBAL_PMUS_INT_CAUSE_MCTL_OVFL (1 << 5) 602f4b37ed0SZbigniew Bodek /* Coherency Interconnect PMU overflow */ 603f4b37ed0SZbigniew Bodek #define NB_GLOBAL_PMUS_INT_CAUSE_CCI_OVFL_MASK 0x000007C0 604f4b37ed0SZbigniew Bodek #define NB_GLOBAL_PMUS_INT_CAUSE_CCI_OVFL_SHIFT 6 605f4b37ed0SZbigniew Bodek /* Coherency Interconnect PMU overflow */ 606f4b37ed0SZbigniew Bodek #define NB_GLOBAL_PMUS_INT_CAUSE_SMMU_OVFL_MASK 0x00001800 607f4b37ed0SZbigniew Bodek #define NB_GLOBAL_PMUS_INT_CAUSE_SMMU_OVFL_SHIFT 11 608f4b37ed0SZbigniew Bodek /* Reserved. Read undefined; must write as zeros. */ 609f4b37ed0SZbigniew Bodek #define NB_GLOBAL_PMUS_INT_CAUSE_RESERVED_23_13_MASK 0x00FFE000 610f4b37ed0SZbigniew Bodek #define NB_GLOBAL_PMUS_INT_CAUSE_RESERVED_23_13_SHIFT 13 611f4b37ed0SZbigniew Bodek /* Southbridge PMUs overflow */ 612f4b37ed0SZbigniew Bodek #define NB_GLOBAL_PMUS_INT_CAUSE_SB_PMUS_OVFL_MASK 0xFF000000 613f4b37ed0SZbigniew Bodek #define NB_GLOBAL_PMUS_INT_CAUSE_SB_PMUS_OVFL_SHIFT 24 614f4b37ed0SZbigniew Bodek 615f4b37ed0SZbigniew Bodek /**** CPUs_Hold_Reset register ****/ 616f4b37ed0SZbigniew Bodek /* Shared L2 memory system, interrupt controller and timer logic reset. 617f4b37ed0SZbigniew Bodek Reset is applied only when all processors are in STNDBYWFI state. */ 618f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_HOLD_RESET_L2RESET (1 << 0) 619f4b37ed0SZbigniew Bodek /* Shared debug domain reset */ 620f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_HOLD_RESET_PRESETDBG (1 << 1) 621f4b37ed0SZbigniew Bodek /* Individual CPU debug, PTM, watchpoint and breakpoint logic reset */ 622f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_HOLD_RESET_CPU_DBGRESET_MASK 0x000000F0 623f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_HOLD_RESET_CPU_DBGRESET_SHIFT 4 624f4b37ed0SZbigniew Bodek /* Individual CPU core and VFP/NEON logic reset. 625f4b37ed0SZbigniew Bodek Reset is applied only when specific CPU is in STNDBYWFI state. */ 626f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_HOLD_RESET_CPU_CORERESET_MASK 0x00000F00 627f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_HOLD_RESET_CPU_CORERESET_SHIFT 8 628f4b37ed0SZbigniew Bodek /* Individual CPU por-on-reset. 629f4b37ed0SZbigniew Bodek Reset is applied only when specific CPU is in STNDBYWFI state. */ 630f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_HOLD_RESET_CPU_PORESET_MASK 0x0000F000 631f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_HOLD_RESET_CPU_PORESET_SHIFT 12 632f4b37ed0SZbigniew Bodek /* Wait for interrupt mask. 633f4b37ed0SZbigniew Bodek If set, reset is applied without waiting for the specified CPU's STNDBYWFI state. */ 634f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_HOLD_RESET_WFI_MASK_MASK 0x000F0000 635f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_HOLD_RESET_WFI_MASK_SHIFT 16 636f4b37ed0SZbigniew Bodek 637f4b37ed0SZbigniew Bodek /**** CPUs_Software_Reset register ****/ 638f4b37ed0SZbigniew Bodek /* Write 1. Apply the software reset. */ 639f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_SOFTWARE_RESET_SWRESET_REQ (1 << 0) 640f4b37ed0SZbigniew Bodek /* Defines the level of software reset. 641f4b37ed0SZbigniew Bodek 0x0 - cpu_core: Individual CPU core reset. 642f4b37ed0SZbigniew Bodek 0x1 - cpu_poreset: Individual CPU power-on-reset. 643f4b37ed0SZbigniew Bodek 0x2 - cpu_dbg: Individual CPU debug reset. 644f4b37ed0SZbigniew Bodek 0x3 - cluster_no_dbg: A Cluster reset puts each core into core reset (no dbg) and also resets the interrupt controller and L2 logic. 645f4b37ed0SZbigniew Bodek 0x4 - cluster: A Cluster reset puts each core into power-on-reset and also resets the interrupt controller and L2 logic. Debug is active. 646f4b37ed0SZbigniew Bodek 0x5 - cluster_poreset: A Cluster power-on-reset puts each core into power-on-reset and also resets the interrupt controller and L2 logic. This include the cluster debug logic. */ 647f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_SOFTWARE_RESET_LEVEL_MASK 0x0000000E 648f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_SOFTWARE_RESET_LEVEL_SHIFT 1 649f4b37ed0SZbigniew Bodek /* Individual CPU core reset. */ 650f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_SOFTWARE_RESET_LEVEL_CPU_CORE \ 651f4b37ed0SZbigniew Bodek (0x0 << NB_GLOBAL_CPUS_SOFTWARE_RESET_LEVEL_SHIFT) 652f4b37ed0SZbigniew Bodek /* Individual CPU power-on-reset. */ 653f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_SOFTWARE_RESET_LEVEL_CPU_PORESET \ 654f4b37ed0SZbigniew Bodek (0x1 << NB_GLOBAL_CPUS_SOFTWARE_RESET_LEVEL_SHIFT) 655f4b37ed0SZbigniew Bodek /* Individual CPU debug reset. */ 656f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_SOFTWARE_RESET_LEVEL_CPU_DBG \ 657f4b37ed0SZbigniew Bodek (0x2 << NB_GLOBAL_CPUS_SOFTWARE_RESET_LEVEL_SHIFT) 658f4b37ed0SZbigniew Bodek /* A Cluster reset puts each core into core reset (no dbg) and a ... */ 659f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_SOFTWARE_RESET_LEVEL_CLUSTER_NO_DBG \ 660f4b37ed0SZbigniew Bodek (0x3 << NB_GLOBAL_CPUS_SOFTWARE_RESET_LEVEL_SHIFT) 661f4b37ed0SZbigniew Bodek /* A Cluster reset puts each core into power-on-reset and also r ... */ 662f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_SOFTWARE_RESET_LEVEL_CLUSTER \ 663f4b37ed0SZbigniew Bodek (0x4 << NB_GLOBAL_CPUS_SOFTWARE_RESET_LEVEL_SHIFT) 664f4b37ed0SZbigniew Bodek /* A Cluster power-on-reset puts each core into power-on-reset a ... */ 665f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_SOFTWARE_RESET_LEVEL_CLUSTER_PORESET \ 666f4b37ed0SZbigniew Bodek (0x5 << NB_GLOBAL_CPUS_SOFTWARE_RESET_LEVEL_SHIFT) 667f4b37ed0SZbigniew Bodek /* Defines which cores to reset when no cluster_poreset is requested. */ 668f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_SOFTWARE_RESET_CORES_MASK 0x000000F0 669f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_SOFTWARE_RESET_CORES_SHIFT 4 670f4b37ed0SZbigniew Bodek /* CPUn wait for interrupt enable. 671f4b37ed0SZbigniew Bodek Defines which CPU WFI indication to wait for before applying the software reset. */ 672f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_SOFTWARE_RESET_WFI_MASK_MASK 0x000F0000 673f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_SOFTWARE_RESET_WFI_MASK_SHIFT 16 674f4b37ed0SZbigniew Bodek 675f4b37ed0SZbigniew Bodek /**** WD_Timer0_Reset register ****/ 676f4b37ed0SZbigniew Bodek /* Shared L2 memory system, interrupt controller and timer logic reset */ 677f4b37ed0SZbigniew Bodek #define NB_GLOBAL_WD_TIMER0_RESET_L2RESET (1 << 0) 678f4b37ed0SZbigniew Bodek /* Shared debug domain reset */ 679f4b37ed0SZbigniew Bodek #define NB_GLOBAL_WD_TIMER0_RESET_PRESETDBG (1 << 1) 680f4b37ed0SZbigniew Bodek /* Individual CPU debug PTM, watchpoint and breakpoint logic reset */ 681f4b37ed0SZbigniew Bodek #define NB_GLOBAL_WD_TIMER0_RESET_CPU_DBGRESET_MASK 0x000000F0 682f4b37ed0SZbigniew Bodek #define NB_GLOBAL_WD_TIMER0_RESET_CPU_DBGRESET_SHIFT 4 683f4b37ed0SZbigniew Bodek /* Individual CPU core and VFP/NEON logic reset */ 684f4b37ed0SZbigniew Bodek #define NB_GLOBAL_WD_TIMER0_RESET_CPU_CORERESET_MASK 0x00000F00 685f4b37ed0SZbigniew Bodek #define NB_GLOBAL_WD_TIMER0_RESET_CPU_CORERESET_SHIFT 8 686f4b37ed0SZbigniew Bodek /* Individual CPU por-on-reset */ 687f4b37ed0SZbigniew Bodek #define NB_GLOBAL_WD_TIMER0_RESET_CPU_PORESET_MASK 0x0000F000 688f4b37ed0SZbigniew Bodek #define NB_GLOBAL_WD_TIMER0_RESET_CPU_PORESET_SHIFT 12 689f4b37ed0SZbigniew Bodek 690f4b37ed0SZbigniew Bodek /**** WD_Timer1_Reset register ****/ 691f4b37ed0SZbigniew Bodek /* Shared L2 memory system, interrupt controller and timer logic reset */ 692f4b37ed0SZbigniew Bodek #define NB_GLOBAL_WD_TIMER1_RESET_L2RESET (1 << 0) 693f4b37ed0SZbigniew Bodek /* Shared debug domain reset */ 694f4b37ed0SZbigniew Bodek #define NB_GLOBAL_WD_TIMER1_RESET_PRESETDBG (1 << 1) 695f4b37ed0SZbigniew Bodek /* Individual CPU debug PTM, watchpoint and breakpoint logic reset */ 696f4b37ed0SZbigniew Bodek #define NB_GLOBAL_WD_TIMER1_RESET_CPU_DBGRESET_MASK 0x000000F0 697f4b37ed0SZbigniew Bodek #define NB_GLOBAL_WD_TIMER1_RESET_CPU_DBGRESET_SHIFT 4 698f4b37ed0SZbigniew Bodek /* Individual CPU core and VFP/NEON logic reset */ 699f4b37ed0SZbigniew Bodek #define NB_GLOBAL_WD_TIMER1_RESET_CPU_CORERESET_MASK 0x00000F00 700f4b37ed0SZbigniew Bodek #define NB_GLOBAL_WD_TIMER1_RESET_CPU_CORERESET_SHIFT 8 701f4b37ed0SZbigniew Bodek /* Individual CPU por-on-reset */ 702f4b37ed0SZbigniew Bodek #define NB_GLOBAL_WD_TIMER1_RESET_CPU_PORESET_MASK 0x0000F000 703f4b37ed0SZbigniew Bodek #define NB_GLOBAL_WD_TIMER1_RESET_CPU_PORESET_SHIFT 12 704f4b37ed0SZbigniew Bodek 705f4b37ed0SZbigniew Bodek /**** WD_Timer2_Reset register ****/ 706f4b37ed0SZbigniew Bodek /* Shared L2 memory system, interrupt controller and timer logic reset */ 707f4b37ed0SZbigniew Bodek #define NB_GLOBAL_WD_TIMER2_RESET_L2RESET (1 << 0) 708f4b37ed0SZbigniew Bodek /* Shared debug domain reset */ 709f4b37ed0SZbigniew Bodek #define NB_GLOBAL_WD_TIMER2_RESET_PRESETDBG (1 << 1) 710f4b37ed0SZbigniew Bodek /* Individual CPU debug, PTM, watchpoint and breakpoint logic reset */ 711f4b37ed0SZbigniew Bodek #define NB_GLOBAL_WD_TIMER2_RESET_CPU_DBGRESET_MASK 0x000000F0 712f4b37ed0SZbigniew Bodek #define NB_GLOBAL_WD_TIMER2_RESET_CPU_DBGRESET_SHIFT 4 713f4b37ed0SZbigniew Bodek /* Individual CPU core and VFP/NEON logic reset */ 714f4b37ed0SZbigniew Bodek #define NB_GLOBAL_WD_TIMER2_RESET_CPU_CORERESET_MASK 0x00000F00 715f4b37ed0SZbigniew Bodek #define NB_GLOBAL_WD_TIMER2_RESET_CPU_CORERESET_SHIFT 8 716f4b37ed0SZbigniew Bodek /* Individual CPU por-on-reset */ 717f4b37ed0SZbigniew Bodek #define NB_GLOBAL_WD_TIMER2_RESET_CPU_PORESET_MASK 0x0000F000 718f4b37ed0SZbigniew Bodek #define NB_GLOBAL_WD_TIMER2_RESET_CPU_PORESET_SHIFT 12 719f4b37ed0SZbigniew Bodek 720f4b37ed0SZbigniew Bodek /**** WD_Timer3_Reset register ****/ 721f4b37ed0SZbigniew Bodek /* Shared L2 memory system, interrupt controller and timer logic reset */ 722f4b37ed0SZbigniew Bodek #define NB_GLOBAL_WD_TIMER3_RESET_L2RESET (1 << 0) 723f4b37ed0SZbigniew Bodek /* Shared debug domain reset */ 724f4b37ed0SZbigniew Bodek #define NB_GLOBAL_WD_TIMER3_RESET_PRESETDBG (1 << 1) 725f4b37ed0SZbigniew Bodek /* Individual CPU debug, PTM, watchpoint and breakpoint logic reset */ 726f4b37ed0SZbigniew Bodek #define NB_GLOBAL_WD_TIMER3_RESET_CPU_DBGRESET_MASK 0x000000F0 727f4b37ed0SZbigniew Bodek #define NB_GLOBAL_WD_TIMER3_RESET_CPU_DBGRESET_SHIFT 4 728f4b37ed0SZbigniew Bodek /* Individual CPU core and VFP/NEON logic reset */ 729f4b37ed0SZbigniew Bodek #define NB_GLOBAL_WD_TIMER3_RESET_CPU_CORERESET_MASK 0x00000F00 730f4b37ed0SZbigniew Bodek #define NB_GLOBAL_WD_TIMER3_RESET_CPU_CORERESET_SHIFT 8 731f4b37ed0SZbigniew Bodek /* Individual CPU por-on-reset */ 732f4b37ed0SZbigniew Bodek #define NB_GLOBAL_WD_TIMER3_RESET_CPU_PORESET_MASK 0x0000F000 733f4b37ed0SZbigniew Bodek #define NB_GLOBAL_WD_TIMER3_RESET_CPU_PORESET_SHIFT 12 734f4b37ed0SZbigniew Bodek 735f4b37ed0SZbigniew Bodek /**** DDRC_Hold_Reset register ****/ 736f4b37ed0SZbigniew Bodek /* DDR Control and PHY memory mapped registers reset control 737f4b37ed0SZbigniew Bodek 0 - Reset is deasserted. 738f4b37ed0SZbigniew Bodek 1 - Reset is asserted (active). */ 739f4b37ed0SZbigniew Bodek #define NB_GLOBAL_DDRC_HOLD_RESET_APB_SYNC_RESET (1 << 0) 740f4b37ed0SZbigniew Bodek /* DDR Control Core reset control 741f4b37ed0SZbigniew Bodek 0 - Reset is deasserted. 742f4b37ed0SZbigniew Bodek 1 - Reset is asserted. 743f4b37ed0SZbigniew Bodek This field must be set to 0 to start the initialization process after configuring the DDR Controller registers. */ 744f4b37ed0SZbigniew Bodek #define NB_GLOBAL_DDRC_HOLD_RESET_CORE_SYNC_RESET (1 << 1) 745f4b37ed0SZbigniew Bodek /* DDR Control AXI Interface reset control 746f4b37ed0SZbigniew Bodek 0 - Reset is deasserted. 747f4b37ed0SZbigniew Bodek 1 - Reset is asserted. 748f4b37ed0SZbigniew Bodek This field must not be set to 0 while core_sync_reset is set to 1. */ 749f4b37ed0SZbigniew Bodek #define NB_GLOBAL_DDRC_HOLD_RESET_AXI_SYNC_RESET (1 << 2) 750f4b37ed0SZbigniew Bodek /* DDR PUB Controller reset control 751f4b37ed0SZbigniew Bodek 0 - Reset is deasserted. 752f4b37ed0SZbigniew Bodek 1 - Reset is asserted. 753f4b37ed0SZbigniew Bodek This field must be set to 0 to start the initialization process after configuring the PUB Controller registers. */ 754f4b37ed0SZbigniew Bodek #define NB_GLOBAL_DDRC_HOLD_RESET_PUB_CTL_SYNC_RESET (1 << 3) 755f4b37ed0SZbigniew Bodek /* DDR PUB SDR Controller reset control 756f4b37ed0SZbigniew Bodek 0 - Reset is deasserted. 757f4b37ed0SZbigniew Bodek 1 - Reset is asserted. 758f4b37ed0SZbigniew Bodek This field must be set to 0 to start the initialization process after configuring the PUB Controller registers. */ 759f4b37ed0SZbigniew Bodek #define NB_GLOBAL_DDRC_HOLD_RESET_PUB_SDR_SYNC_RESET (1 << 4) 760f4b37ed0SZbigniew Bodek /* DDR PHY reset control 761f4b37ed0SZbigniew Bodek 0 - Reset is deasserted. 762f4b37ed0SZbigniew Bodek 1 - Reset is asserted. */ 763f4b37ed0SZbigniew Bodek #define NB_GLOBAL_DDRC_HOLD_RESET_PHY_SYNC_RESET (1 << 5) 764f4b37ed0SZbigniew Bodek /* Memory initialization input to DDR SRAM for parity check support */ 765f4b37ed0SZbigniew Bodek #define NB_GLOBAL_DDRC_HOLD_RESET_DDR_UNIT_MEM_INIT (1 << 6) 766f4b37ed0SZbigniew Bodek 767f4b37ed0SZbigniew Bodek /**** Fabric_Software_Reset register ****/ 768f4b37ed0SZbigniew Bodek /* Write 1 apply the software reset. */ 769f4b37ed0SZbigniew Bodek #define NB_GLOBAL_FABRIC_SOFTWARE_RESET_SWRESET_REQ (1 << 0) 770f4b37ed0SZbigniew Bodek /* Defines the level of software reset: 771f4b37ed0SZbigniew Bodek 0x0 - fabric: Fabric reset 772f4b37ed0SZbigniew Bodek 0x1 - gic: GIC reset 773f4b37ed0SZbigniew Bodek 0x2 - smmu: SMMU reset */ 774f4b37ed0SZbigniew Bodek #define NB_GLOBAL_FABRIC_SOFTWARE_RESET_LEVEL_MASK 0x0000000E 775f4b37ed0SZbigniew Bodek #define NB_GLOBAL_FABRIC_SOFTWARE_RESET_LEVEL_SHIFT 1 776f4b37ed0SZbigniew Bodek /* Fabric reset */ 777f4b37ed0SZbigniew Bodek #define NB_GLOBAL_FABRIC_SOFTWARE_RESET_LEVEL_FABRIC \ 778f4b37ed0SZbigniew Bodek (0x0 << NB_GLOBAL_FABRIC_SOFTWARE_RESET_LEVEL_SHIFT) 779f4b37ed0SZbigniew Bodek /* GIC reset */ 780f4b37ed0SZbigniew Bodek #define NB_GLOBAL_FABRIC_SOFTWARE_RESET_LEVEL_GIC \ 781f4b37ed0SZbigniew Bodek (0x1 << NB_GLOBAL_FABRIC_SOFTWARE_RESET_LEVEL_SHIFT) 782f4b37ed0SZbigniew Bodek /* SMMU reset */ 783f4b37ed0SZbigniew Bodek #define NB_GLOBAL_FABRIC_SOFTWARE_RESET_LEVEL_SMMU \ 784f4b37ed0SZbigniew Bodek (0x2 << NB_GLOBAL_FABRIC_SOFTWARE_RESET_LEVEL_SHIFT) 785f4b37ed0SZbigniew Bodek /* CPUn waiting for interrupt enable. 786f4b37ed0SZbigniew Bodek Defines which CPU WFI indication to wait before applying the software reset. */ 787f4b37ed0SZbigniew Bodek #define NB_GLOBAL_FABRIC_SOFTWARE_RESET_WFI_MASK_MASK 0x000F0000 788f4b37ed0SZbigniew Bodek #define NB_GLOBAL_FABRIC_SOFTWARE_RESET_WFI_MASK_SHIFT 16 789f4b37ed0SZbigniew Bodek 790f4b37ed0SZbigniew Bodek /**** CPUs_Power_Ctrl register ****/ 791f4b37ed0SZbigniew Bodek /* L2 WFI enable 792f4b37ed0SZbigniew Bodek When all the processors are in WFI mode or powered-down, the shared L2 memory system Power Management controller resumes clock on any interrupt. 793f4b37ed0SZbigniew Bodek Power management controller resumes clock on snoop request. 794f4b37ed0SZbigniew Bodek NOT IMPLEMENTED */ 795f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_POWER_CTRL_L2WFI_EN (1 << 0) 796f4b37ed0SZbigniew Bodek /* L2 WFI status */ 797f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_POWER_CTRL_L2WFI_STATUS (1 << 1) 798f4b37ed0SZbigniew Bodek /* L2 RAMs Power Down 799f4b37ed0SZbigniew Bodek Power down the L2 RAMs. L2 caches must be flushed prior to entering this state. */ 800f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_POWER_CTRL_L2RAMS_PWRDN_EN (1 << 2) 801f4b37ed0SZbigniew Bodek /* L2 RAMs power down status */ 802f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_POWER_CTRL_L2RAMS_PWRDN_STATUS (1 << 3) 803f4b37ed0SZbigniew Bodek /* CPU state condition to enable L2 RAM power down 804f4b37ed0SZbigniew Bodek 0 - Power down 805f4b37ed0SZbigniew Bodek 1 - WFI 806f4b37ed0SZbigniew Bodek NOT IMPLEMENTED */ 807f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_POWER_CTRL_L2RAMS_PWRDN_CPUS_STATE_MASK 0x000000F0 808f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_POWER_CTRL_L2RAMS_PWRDN_CPUS_STATE_SHIFT 4 809f4b37ed0SZbigniew Bodek /* Enable external debugger over power-down. 810f4b37ed0SZbigniew Bodek Provides support for external debug over power down. If any or all of the processors are powered down, the SoC can still use the debug facilities if the debug PCLKDBG domain is powered up. */ 811f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_POWER_CTRL_EXT_DEBUGGER_OVER_PD_EN (1 << 8) 812f4b37ed0SZbigniew Bodek /* L2 hardware flush request. This signal indicates: 813f4b37ed0SZbigniew Bodek 0 L2 hardware flush request is not asserted. flush is performed by SW 814f4b37ed0SZbigniew Bodek 1 L2 hardware flush request is asserted by power management block as part of cluster rams power down flow. HW starts L2 flush flow when all CPUs are in WFI */ 815f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_POWER_CTRL_L2FLUSH_EN (1 << 9) 816f4b37ed0SZbigniew Bodek /* Force wakeup the CPU in L2RAM power down 817f4b37ed0SZbigniew Bodek INTERNAL DEBUG PURPOSE ONLY */ 818f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_POWER_CTRL_FORCE_CPUS_OK_PWRUP (1 << 27) 819f4b37ed0SZbigniew Bodek /* L2 RAMs power down SM status */ 820f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_POWER_CTRL_L2RAMS_PWRDN_SM_STATUS_MASK 0xF0000000 821f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CPUS_POWER_CTRL_L2RAMS_PWRDN_SM_STATUS_SHIFT 28 822f4b37ed0SZbigniew Bodek 823f4b37ed0SZbigniew Bodek /**** ACF_Base_High register ****/ 824f4b37ed0SZbigniew Bodek /* Coherency Fabric registers base [39:32]. */ 825f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_BASE_HIGH_BASE_39_32_MASK 0x000000FF 826f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_BASE_HIGH_BASE_39_32_SHIFT 0 827f4b37ed0SZbigniew Bodek /* Coherency Fabric registers base [31:15] */ 828f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_BASE_LOW_BASED_31_15_MASK 0xFFFF8000 829f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_BASE_LOW_BASED_31_15_SHIFT 15 830f4b37ed0SZbigniew Bodek 831f4b37ed0SZbigniew Bodek /**** ACF_Control_Override register ****/ 832f4b37ed0SZbigniew Bodek /* Override the AWCACHE[0] and ARCACHE[0] outputs to be 833f4b37ed0SZbigniew Bodek non-bufferable. One bit exists for each master interface. 834f4b37ed0SZbigniew Bodek Connected to BUFFERABLEOVERRIDE[2:0] */ 835f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_CONTROL_OVERRIDE_BUFFOVRD_MASK 0x00000007 836f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_CONTROL_OVERRIDE_BUFFOVRD_SHIFT 0 837f4b37ed0SZbigniew Bodek /* Overrides the ARQOS and AWQOS input signals. One bit exists for each slave 838f4b37ed0SZbigniew Bodek interface. 839f4b37ed0SZbigniew Bodek Connected to QOSOVERRIDE[4:0] */ 840f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_CONTROL_OVERRIDE_QOSOVRD_MASK 0x000000F8 841f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_CONTROL_OVERRIDE_QOSOVRD_SHIFT 3 842f4b37ed0SZbigniew Bodek /* If LOW, then AC requests are never issued on the corresponding slave 843f4b37ed0SZbigniew Bodek interface. One bit exists for each slave interface. 844f4b37ed0SZbigniew Bodek Connected to ACCHANNELEN[4:0]. */ 845f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_CONTROL_OVERRIDE_ACE_CH_EN_MASK 0x00001F00 846f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_CONTROL_OVERRIDE_ACE_CH_EN_SHIFT 8 847f4b37ed0SZbigniew Bodek /* Internal register: 848f4b37ed0SZbigniew Bodek Enables 4k hazard of post-barrier vs pre-barrier transactions. Otherwise, 64B hazard granularity is applied. */ 849f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_CONTROL_OVERRIDE_DMB_4K_HAZARD_EN (1 << 13) 850f4b37ed0SZbigniew Bodek 851f4b37ed0SZbigniew Bodek /**** LGIC_Base_High register ****/ 852f4b37ed0SZbigniew Bodek /* GIC registers base [39:32]. 853f4b37ed0SZbigniew Bodek This value is sampled into the CP15 Configuration Base Address Register (CBAR) at reset. */ 854f4b37ed0SZbigniew Bodek #define NB_GLOBAL_LGIC_BASE_HIGH_BASE_39_32_MASK 0x000000FF 855f4b37ed0SZbigniew Bodek #define NB_GLOBAL_LGIC_BASE_HIGH_BASE_39_32_SHIFT 0 856*3fc36ee0SWojciech Macek #define NB_GLOBAL_LGIC_BASE_HIGH_BASE_43_32_MASK_ALPINE_V2 0x00000FFF 857*3fc36ee0SWojciech Macek #define NB_GLOBAL_LGIC_BASE_HIGH_BASE_43_32_SHIFT_ALPINE_V2 0 858f4b37ed0SZbigniew Bodek /* GIC registers base [31:15]. 859f4b37ed0SZbigniew Bodek This value is sampled into the CP15 Configuration Base Address Register (CBAR) at reset */ 860f4b37ed0SZbigniew Bodek #define NB_GLOBAL_LGIC_BASE_LOW_BASED_31_15_MASK 0xFFFF8000 861f4b37ed0SZbigniew Bodek #define NB_GLOBAL_LGIC_BASE_LOW_BASED_31_15_SHIFT 15 862f4b37ed0SZbigniew Bodek 863f4b37ed0SZbigniew Bodek /**** IOGIC_Base_High register ****/ 864f4b37ed0SZbigniew Bodek /* IOGIC registers base [39:32] */ 865f4b37ed0SZbigniew Bodek #define NB_GLOBAL_IOGIC_BASE_HIGH_BASE_39_32_MASK 0x000000FF 866f4b37ed0SZbigniew Bodek #define NB_GLOBAL_IOGIC_BASE_HIGH_BASE_39_32_SHIFT 0 867f4b37ed0SZbigniew Bodek /* IOGIC registers base [31:15] */ 868f4b37ed0SZbigniew Bodek #define NB_GLOBAL_IOGIC_BASE_LOW_BASED_31_15_MASK 0xFFFF8000 869f4b37ed0SZbigniew Bodek #define NB_GLOBAL_IOGIC_BASE_LOW_BASED_31_15_SHIFT 15 870f4b37ed0SZbigniew Bodek 871f4b37ed0SZbigniew Bodek /**** IO_Wr_Split_Control register ****/ 872f4b37ed0SZbigniew Bodek /* Write splitters bypass. 873f4b37ed0SZbigniew Bodek [0] Splitter 0 bypass enable 874f4b37ed0SZbigniew Bodek [1] Splitter 1 bypass enable */ 875f4b37ed0SZbigniew Bodek #define NB_GLOBAL_IO_WR_SPLIT_CONTROL_WR_SPLT_BYPASS_MASK 0x00000003 876f4b37ed0SZbigniew Bodek #define NB_GLOBAL_IO_WR_SPLIT_CONTROL_WR_SPLT_BYPASS_SHIFT 0 877f4b37ed0SZbigniew Bodek /* Write splitters store and forward. 878f4b37ed0SZbigniew Bodek If store and forward is disabled, splitter does not check non-active BE in the middle of a transaction. */ 879f4b37ed0SZbigniew Bodek #define NB_GLOBAL_IO_WR_SPLIT_CONTROL_WR_SPLT_ST_FW_MASK 0x0000000C 880f4b37ed0SZbigniew Bodek #define NB_GLOBAL_IO_WR_SPLIT_CONTROL_WR_SPLT_ST_FW_SHIFT 2 881f4b37ed0SZbigniew Bodek /* Write splitters unmodify snoop type. 882f4b37ed0SZbigniew Bodek Disables modifying snoop type from Clean & Invalidate to Invalidate when conditions enable it. Only split operation to 64B is applied. */ 883f4b37ed0SZbigniew Bodek #define NB_GLOBAL_IO_WR_SPLIT_CONTROL_WR_SPLT_UNMODIFY_SNP_MASK 0x00000030 884f4b37ed0SZbigniew Bodek #define NB_GLOBAL_IO_WR_SPLIT_CONTROL_WR_SPLT_UNMODIFY_SNP_SHIFT 4 885f4b37ed0SZbigniew Bodek /* Write splitters unsplit non-coherent access. 886f4b37ed0SZbigniew Bodek Disables splitting of non-coherent access to cache-line chunks. */ 887f4b37ed0SZbigniew Bodek #define NB_GLOBAL_IO_WR_SPLIT_CONTROL_WR_SPLT_UNSPLIT_NOSNP_MASK 0x000000C0 888f4b37ed0SZbigniew Bodek #define NB_GLOBAL_IO_WR_SPLIT_CONTROL_WR_SPLT_UNSPLIT_NOSNP_SHIFT 6 889f4b37ed0SZbigniew Bodek /* Write splitter rate limit. */ 890f4b37ed0SZbigniew Bodek #define NB_GLOBAL_IO_WR_SPLIT_CONTROL_WR0_SPLT_RATE_LIMIT_MASK 0x00001F00 891f4b37ed0SZbigniew Bodek #define NB_GLOBAL_IO_WR_SPLIT_CONTROL_WR0_SPLT_RATE_LIMIT_SHIFT 8 892f4b37ed0SZbigniew Bodek /* Write splitter rate limit */ 893f4b37ed0SZbigniew Bodek #define NB_GLOBAL_IO_WR_SPLIT_CONTROL_WR1_SPLT_RATE_LIMIT_MASK 0x0003E000 894f4b37ed0SZbigniew Bodek #define NB_GLOBAL_IO_WR_SPLIT_CONTROL_WR1_SPLT_RATE_LIMIT_SHIFT 13 895f4b37ed0SZbigniew Bodek /* Write splitters 64bit remap enable 896f4b37ed0SZbigniew Bodek Enables remapping of 64bit transactions */ 897f4b37ed0SZbigniew Bodek #define NB_GLOBAL_IO_WR_SPLIT_CONTROL_WR_SPLT_REMAP_64BIT_EN_MASK 0x000C0000 898f4b37ed0SZbigniew Bodek #define NB_GLOBAL_IO_WR_SPLIT_CONTROL_WR_SPLT_REMAP_64BIT_EN_SHIFT 18 899f4b37ed0SZbigniew Bodek /* Clear is not supported. This bit was changed to wr_pack_disable. 900f4b37ed0SZbigniew Bodek In default mode, AWADDR waits for WDATA. */ 901f4b37ed0SZbigniew Bodek #define NB_GLOBAL_IO_WR_SPLIT_CONTROL_WR_SPLT_CLEAR_MASK 0xC0000000 902f4b37ed0SZbigniew Bodek #define NB_GLOBAL_IO_WR_SPLIT_CONTROL_WR_SPLT_CLEAR_SHIFT 30 903f4b37ed0SZbigniew Bodek 904f4b37ed0SZbigniew Bodek /**** IO_Rd_ROB_Control register ****/ 905f4b37ed0SZbigniew Bodek /* Read ROB Bypass 906f4b37ed0SZbigniew Bodek [0] Rd ROB 0 bypass enable. 907f4b37ed0SZbigniew Bodek [1] Rd ROB 1 bypass enable. */ 908f4b37ed0SZbigniew Bodek #define NB_GLOBAL_IO_RD_ROB_CONTROL_RD_ROB_BYPASS_MASK 0x00000003 909f4b37ed0SZbigniew Bodek #define NB_GLOBAL_IO_RD_ROB_CONTROL_RD_ROB_BYPASS_SHIFT 0 910f4b37ed0SZbigniew Bodek /* Read ROB in order. 911f4b37ed0SZbigniew Bodek Return data in the order of request acceptance. */ 912f4b37ed0SZbigniew Bodek #define NB_GLOBAL_IO_RD_ROB_CONTROL_RD_ROB_INORDER_MASK 0x0000000C 913f4b37ed0SZbigniew Bodek #define NB_GLOBAL_IO_RD_ROB_CONTROL_RD_ROB_INORDER_SHIFT 2 914f4b37ed0SZbigniew Bodek /* Read ROB response rate 915f4b37ed0SZbigniew Bodek When enabled drops one cycle from back to back read responses */ 916f4b37ed0SZbigniew Bodek #define NB_GLOBAL_IO_RD_ROB_CONTROL_RD_ROB_RSP_RATE_MASK 0x00000030 917f4b37ed0SZbigniew Bodek #define NB_GLOBAL_IO_RD_ROB_CONTROL_RD_ROB_RSP_RATE_SHIFT 4 918f4b37ed0SZbigniew Bodek /* Read splitter rate limit */ 919f4b37ed0SZbigniew Bodek #define NB_GLOBAL_IO_RD_ROB_CONTROL_RD0_ROB_RATE_LIMIT_MASK 0x00001F00 920f4b37ed0SZbigniew Bodek #define NB_GLOBAL_IO_RD_ROB_CONTROL_RD0_ROB_RATE_LIMIT_SHIFT 8 921f4b37ed0SZbigniew Bodek /* Read splitter rate limit */ 922f4b37ed0SZbigniew Bodek #define NB_GLOBAL_IO_RD_ROB_CONTROL_RD1_ROB_RATE_LIMIT_MASK 0x0003E000 923f4b37ed0SZbigniew Bodek #define NB_GLOBAL_IO_RD_ROB_CONTROL_RD1_ROB_RATE_LIMIT_SHIFT 13 924f4b37ed0SZbigniew Bodek 925f4b37ed0SZbigniew Bodek /**** SB_PoS_Error_Log_1 register ****/ 926f4b37ed0SZbigniew Bodek /* Error Log 1 927f4b37ed0SZbigniew Bodek [7:0] address_high 928f4b37ed0SZbigniew Bodek [16:8] request id 929f4b37ed0SZbigniew Bodek [18:17] bresp */ 930f4b37ed0SZbigniew Bodek #define NB_GLOBAL_SB_POS_ERROR_LOG_1_ERR_LOG_MASK 0x7FFFFFFF 931f4b37ed0SZbigniew Bodek #define NB_GLOBAL_SB_POS_ERROR_LOG_1_ERR_LOG_SHIFT 0 932f4b37ed0SZbigniew Bodek /* Valid logged error 933f4b37ed0SZbigniew Bodek Set on SB PoS error occurrence on capturing the error information. Subsequent errors will not be captured until the valid bit is cleared. 934f4b37ed0SZbigniew Bodek The SB PoS reports on write errors. 935f4b37ed0SZbigniew Bodek When valid, an interrupt is set in the NB Cause Register. */ 936f4b37ed0SZbigniew Bodek #define NB_GLOBAL_SB_POS_ERROR_LOG_1_VALID (1 << 31) 937f4b37ed0SZbigniew Bodek 938f4b37ed0SZbigniew Bodek /**** MSIx_Error_Log register ****/ 939f4b37ed0SZbigniew Bodek /* Error Log 940f4b37ed0SZbigniew Bodek Corresponds to MSIx address message [30:0]. */ 941f4b37ed0SZbigniew Bodek #define NB_GLOBAL_MSIX_ERROR_LOG_ERR_LOG_MASK 0x7FFFFFFF 942f4b37ed0SZbigniew Bodek #define NB_GLOBAL_MSIX_ERROR_LOG_ERR_LOG_SHIFT 0 943f4b37ed0SZbigniew Bodek /* Valid logged error */ 944f4b37ed0SZbigniew Bodek #define NB_GLOBAL_MSIX_ERROR_LOG_VALID (1 << 31) 945f4b37ed0SZbigniew Bodek 946f4b37ed0SZbigniew Bodek /**** Error_Cause register ****/ 947f4b37ed0SZbigniew Bodek /* Received msix is not mapped to local GIC or IO-GIC spin */ 948f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ERROR_CAUSE_MSIX_ERR_INT (1 << 2) 949f4b37ed0SZbigniew Bodek /* Coresight timestamp overflow */ 950f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ERROR_CAUSE_CORESIGHT_TS_OVERFLOW (1 << 3) 951f4b37ed0SZbigniew Bodek /* Write data parity error from SB channel 0. */ 952f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ERROR_CAUSE_SB0_WRDATA_PERR (1 << 4) 953f4b37ed0SZbigniew Bodek /* Write data parity error from SB channel 1. */ 954f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ERROR_CAUSE_SB1_WRDATA_PERR (1 << 5) 955f4b37ed0SZbigniew Bodek /* Read data parity error from SB slaves. */ 956f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ERROR_CAUSE_SB_SLV_RDATA_PERR (1 << 6) 957f4b37ed0SZbigniew Bodek /* Local GIC uncorrectable ECC error */ 958f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ERROR_CAUSE_LOCAL_GIC_ECC_FATAL (1 << 7) 959f4b37ed0SZbigniew Bodek /* SB PoS error */ 960f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ERROR_CAUSE_SB_POS_ERR (1 << 8) 961f4b37ed0SZbigniew Bodek /* Coherent fabric error summary interrupt */ 962f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ERROR_CAUSE_ACF_ERRORIRQ (1 << 9) 963f4b37ed0SZbigniew Bodek /* Error indicator for AXI write transactions with a BRESP error condition. Writing 0 to bit[29] of the L2ECTLR clears the error indicator connected to CA15 nAXIERRIRQ. */ 964f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ERROR_CAUSE_CPU_AXIERRIRQ (1 << 10) 965f4b37ed0SZbigniew Bodek /* Error indicator for: L2 RAM double-bit ECC error, illegal writes to the GIC memory-map region. */ 966f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ERROR_CAUSE_CPU_INTERRIRQ (1 << 12) 967f4b37ed0SZbigniew Bodek /* DDR cause summery interrupt */ 968f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ERROR_CAUSE_DDR_CAUSE_SUM (1 << 14) 969f4b37ed0SZbigniew Bodek 970f4b37ed0SZbigniew Bodek /**** QoS_Peak_Control register ****/ 971f4b37ed0SZbigniew Bodek /* Peak Read Low Threshold 972f4b37ed0SZbigniew Bodek When the number of outstanding read transactions from SB masters is below this value, the CPU is assigned high-priority QoS. */ 973f4b37ed0SZbigniew Bodek #define NB_GLOBAL_QOS_PEAK_CONTROL_PEAK_RD_L_THRESHOLD_MASK 0x0000007F 974f4b37ed0SZbigniew Bodek #define NB_GLOBAL_QOS_PEAK_CONTROL_PEAK_RD_L_THRESHOLD_SHIFT 0 975f4b37ed0SZbigniew Bodek /* Peak Read High Threshold 976f4b37ed0SZbigniew Bodek When the number of outstanding read transactions from SB masters exceeds this value, the CPU is assigned high-priority QoS. */ 977f4b37ed0SZbigniew Bodek #define NB_GLOBAL_QOS_PEAK_CONTROL_PEAK_RD_H_THRESHOLD_MASK 0x00007F00 978f4b37ed0SZbigniew Bodek #define NB_GLOBAL_QOS_PEAK_CONTROL_PEAK_RD_H_THRESHOLD_SHIFT 8 979f4b37ed0SZbigniew Bodek /* Peak Write Low Threshold 980f4b37ed0SZbigniew Bodek When the number of outstanding write transactions from SB masters is below this value, the CPU is assigned high-priority QoS */ 981f4b37ed0SZbigniew Bodek #define NB_GLOBAL_QOS_PEAK_CONTROL_PEAK_WR_L_THRESHOLD_MASK 0x007F0000 982f4b37ed0SZbigniew Bodek #define NB_GLOBAL_QOS_PEAK_CONTROL_PEAK_WR_L_THRESHOLD_SHIFT 16 983f4b37ed0SZbigniew Bodek /* Peak Write High Threshold 984f4b37ed0SZbigniew Bodek When the number of outstanding write transactions from SB masters exceeds this value, the CPU is assigned high-priority QoS. */ 985f4b37ed0SZbigniew Bodek #define NB_GLOBAL_QOS_PEAK_CONTROL_PEAK_WR_H_THRESHOLD_MASK 0x7F000000 986f4b37ed0SZbigniew Bodek #define NB_GLOBAL_QOS_PEAK_CONTROL_PEAK_WR_H_THRESHOLD_SHIFT 24 987f4b37ed0SZbigniew Bodek 988f4b37ed0SZbigniew Bodek /**** QoS_Set_Control register ****/ 989f4b37ed0SZbigniew Bodek /* CPU Low priority Read QoS */ 990f4b37ed0SZbigniew Bodek #define NB_GLOBAL_QOS_SET_CONTROL_CPU_LP_ARQOS_MASK 0x0000000F 991f4b37ed0SZbigniew Bodek #define NB_GLOBAL_QOS_SET_CONTROL_CPU_LP_ARQOS_SHIFT 0 992f4b37ed0SZbigniew Bodek /* CPU High priority Read QoS */ 993f4b37ed0SZbigniew Bodek #define NB_GLOBAL_QOS_SET_CONTROL_CPU_HP_ARQOS_MASK 0x000000F0 994f4b37ed0SZbigniew Bodek #define NB_GLOBAL_QOS_SET_CONTROL_CPU_HP_ARQOS_SHIFT 4 995f4b37ed0SZbigniew Bodek /* CPU Low priority Write QoS */ 996f4b37ed0SZbigniew Bodek #define NB_GLOBAL_QOS_SET_CONTROL_CPU_LP_AWQOS_MASK 0x00000F00 997f4b37ed0SZbigniew Bodek #define NB_GLOBAL_QOS_SET_CONTROL_CPU_LP_AWQOS_SHIFT 8 998f4b37ed0SZbigniew Bodek /* CPU High priority Write QoS */ 999f4b37ed0SZbigniew Bodek #define NB_GLOBAL_QOS_SET_CONTROL_CPU_HP_AWQOS_MASK 0x0000F000 1000f4b37ed0SZbigniew Bodek #define NB_GLOBAL_QOS_SET_CONTROL_CPU_HP_AWQOS_SHIFT 12 1001f4b37ed0SZbigniew Bodek /* SB Low priority Read QoS */ 1002f4b37ed0SZbigniew Bodek #define NB_GLOBAL_QOS_SET_CONTROL_SB_LP_ARQOS_MASK 0x000F0000 1003f4b37ed0SZbigniew Bodek #define NB_GLOBAL_QOS_SET_CONTROL_SB_LP_ARQOS_SHIFT 16 1004f4b37ed0SZbigniew Bodek /* SB Low-priority Write QoS */ 1005f4b37ed0SZbigniew Bodek #define NB_GLOBAL_QOS_SET_CONTROL_SB_LP_AWQOS_MASK 0x00F00000 1006f4b37ed0SZbigniew Bodek #define NB_GLOBAL_QOS_SET_CONTROL_SB_LP_AWQOS_SHIFT 20 1007f4b37ed0SZbigniew Bodek 1008f4b37ed0SZbigniew Bodek /**** DDR_QoS register ****/ 1009f4b37ed0SZbigniew Bodek /* High Priority Read Threshold 1010f4b37ed0SZbigniew Bodek Limits the number of outstanding high priority reads in the system through the memory controller. 1011f4b37ed0SZbigniew Bodek This parameter is programmed in conjunction with number of outstanding high priority reads supported by the DDR controller. */ 1012f4b37ed0SZbigniew Bodek #define NB_GLOBAL_DDR_QOS_HIGH_PRIO_THRESHOLD_MASK 0x0000007F 1013f4b37ed0SZbigniew Bodek #define NB_GLOBAL_DDR_QOS_HIGH_PRIO_THRESHOLD_SHIFT 0 1014f4b37ed0SZbigniew Bodek /* DDR Low Priority QoS 1015f4b37ed0SZbigniew Bodek Fabric priority below this value is mapped to DDR low priority queue. */ 1016f4b37ed0SZbigniew Bodek #define NB_GLOBAL_DDR_QOS_LP_QOS_MASK 0x00000F00 1017f4b37ed0SZbigniew Bodek #define NB_GLOBAL_DDR_QOS_LP_QOS_SHIFT 8 1018f4b37ed0SZbigniew Bodek 1019f4b37ed0SZbigniew Bodek /**** ACF_Misc register ****/ 1020f4b37ed0SZbigniew Bodek /* Disable DDR Write Chop 1021f4b37ed0SZbigniew Bodek Performance optimization feature to chop non-active data beats to the DDR. */ 1022f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_MISC_DDR_WR_CHOP_DIS (1 << 0) 1023f4b37ed0SZbigniew Bodek /* Disable SB-2-SB path through NB fabric. */ 1024f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_MISC_SB2SB_PATH_DIS (1 << 1) 1025f4b37ed0SZbigniew Bodek /* Disable ETR tracing to non-DDR. */ 1026f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_MISC_ETR2SB_PATH_DIS (1 << 2) 1027f4b37ed0SZbigniew Bodek /* Disable ETR tracing to non-DDR. */ 1028f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_MISC_CPU2MSIX_DIS (1 << 3) 1029f4b37ed0SZbigniew Bodek /* Disable CPU generation of MSIx 1030f4b37ed0SZbigniew Bodek By default, the CPU can set any MSIx message results by setting any SPIn bit in the local and IO-GIC. */ 1031f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_MISC_MSIX_TERMINATE_DIS (1 << 4) 1032f4b37ed0SZbigniew Bodek /* Disable snoop override for MSIx 1033f4b37ed0SZbigniew Bodek By default, an MSIx transaction is downgraded to non-coherent. */ 1034f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_MISC_MSIX_SNOOPOVRD_DIS (1 << 5) 1035f4b37ed0SZbigniew Bodek /* POS bypass */ 1036f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_MISC_POS_BYPASS (1 << 6) 1037f4b37ed0SZbigniew Bodek /* PoS ReadStronglyOrdered enable 1038f4b37ed0SZbigniew Bodek SO read forces flushing of all prior writes */ 1039f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_MISC_POS_RSO_EN (1 << 7) 1040f4b37ed0SZbigniew Bodek /* WRAP to INC transfer enable */ 1041f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_MISC_POS_WRAP2INC (1 << 8) 1042f4b37ed0SZbigniew Bodek /* PoS DSB flush Disable 1043f4b37ed0SZbigniew Bodek On DSB from CPU, PoS blocks the progress of post-barrier reads and writes until all pre-barrier writes have been completed. */ 1044f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_MISC_POS_DSB_FLUSH_DIS (1 << 9) 1045f4b37ed0SZbigniew Bodek /* PoS DMB Flush Disable 1046f4b37ed0SZbigniew Bodek On DMB from CPU, the PoS blocks the progress of post-barrier non-buffereable reads or writes when there are outstanding non-bufferable writes that have not yet been completed. 1047f4b37ed0SZbigniew Bodek Other access types are hazard check against the pre-barrier requests. */ 1048f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_MISC_POS_DMB_FLUSH_DIS (1 << 10) 1049f4b37ed0SZbigniew Bodek /* change DMB functionality to DSB (block and drain) */ 1050f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_MISC_POS_DMB_TO_DSB_EN (1 << 11) 1051f4b37ed0SZbigniew Bodek /* Disable write after read stall when accessing IO fabric slaves. */ 1052f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_MISC_M0_WAR_STALL_DIS (1 << 12) 1053f4b37ed0SZbigniew Bodek /* Disable write after read stall when accessing DDR */ 1054f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_MISC_M1_WAR_STALL_DIS (1 << 13) 1055f4b37ed0SZbigniew Bodek /* Disable counter (wait 1000 NB cycles) before applying PoS enable/disable configuration */ 1056f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_MISC_POS_CONFIG_CNT_DIS (1 << 14) 1057f4b37ed0SZbigniew Bodek /* Disable wr spliter A0 bug fixes */ 1058*3fc36ee0SWojciech Macek #define NB_GLOBAL_ACF_MISC_WRSPLT_ALPINE_V1_M0_MODE (1 << 16) 1059*3fc36ee0SWojciech Macek /* Disable wr spliter ALPINE_V2 bug fixes */ 1060*3fc36ee0SWojciech Macek #define NB_GLOBAL_ACF_MISC_WRSPLT_ALPINE_V1_A0_MODE (1 << 17) 1061f4b37ed0SZbigniew Bodek /* Override the address parity calucation for write transactions going to IO-fabric */ 1062f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_MISC_NB_NIC_AWADDR_PAR_OVRD (1 << 18) 1063f4b37ed0SZbigniew Bodek /* Override the data parity calucation for write transactions going to IO-fabric */ 1064f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_MISC_NB_NIC_WDATA_PAR_OVRD (1 << 19) 1065f4b37ed0SZbigniew Bodek /* Override the address parity calucation for read transactions going to IO-fabric */ 1066f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_MISC_NB_NIC_ARADDR_PAR_OVRD (1 << 20) 1067f4b37ed0SZbigniew Bodek /* Halts CPU AXI interface (Ar/Aw channels), not allowing the CPU to send additional transactions */ 1068f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_MISC_CPU_AXI_HALT (1 << 23) 1069f4b37ed0SZbigniew Bodek /* Disable early arbar termination when fabric write buffer is enabled. */ 1070f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_MISC_CCIWB_EARLY_ARBAR_TERM_DIS (1 << 24) 1071f4b37ed0SZbigniew Bodek /* Enable wire interrupts connectivity to IO-GIC IRQs */ 1072f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_MISC_IOGIC_CHIP_SPI_EN (1 << 25) 1073f4b37ed0SZbigniew Bodek /* Enable DMB flush request to NB to SB PoS when barrier is terminted inside the processor cluster */ 1074f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_MISC_CPU_DSB_FLUSH_DIS (1 << 26) 1075f4b37ed0SZbigniew Bodek /* Enable DMB flush request to NB to SB PoS when barrier is terminted inside the processor cluster */ 1076f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_MISC_CPU_DMB_FLUSH_DIS (1 << 27) 1077*3fc36ee0SWojciech Macek /* Alpine V2 only: remap CPU address above 40 bits to Slave Error 1078f4b37ed0SZbigniew Bodek INTERNAL */ 1079f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_MISC_ADDR43_40_REMAP_DIS (1 << 28) 1080f4b37ed0SZbigniew Bodek /* Enable CPU WriteUnique to WriteNoSnoop trasform */ 1081f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_MISC_CPU_WU2WNS_EN (1 << 29) 1082f4b37ed0SZbigniew Bodek /* Disable device after device check */ 1083f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_MISC_WR_POS_DEV_AFTER_DEV_DIS (1 << 30) 1084f4b37ed0SZbigniew Bodek /* Disable wrap to inc on write */ 1085f4b37ed0SZbigniew Bodek #define NB_GLOBAL_ACF_MISC_WR_INC2WRAP_EN (1 << 31) 1086f4b37ed0SZbigniew Bodek 1087f4b37ed0SZbigniew Bodek /**** Config_Bus_Control register ****/ 1088f4b37ed0SZbigniew Bodek /* Write slave error enable */ 1089f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CONFIG_BUS_CONTROL_WR_SLV_ERR_EN (1 << 0) 1090f4b37ed0SZbigniew Bodek /* Write decode error enable */ 1091f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CONFIG_BUS_CONTROL_WR_DEC_ERR_EN (1 << 1) 1092f4b37ed0SZbigniew Bodek /* Read slave error enable */ 1093f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CONFIG_BUS_CONTROL_RD_SLV_ERR_EN (1 << 2) 1094f4b37ed0SZbigniew Bodek /* Read decode error enable */ 1095f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CONFIG_BUS_CONTROL_RD_DEC_ERR_EN (1 << 3) 1096f4b37ed0SZbigniew Bodek /* Ignore Write ID */ 1097f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CONFIG_BUS_CONTROL_IGNORE_WR_ID (1 << 4) 1098f4b37ed0SZbigniew Bodek /* Timeout limit before terminating configuration bus access with slave error */ 1099f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CONFIG_BUS_CONTROL_TIMEOUT_LIMIT_MASK 0xFFFFFF00 1100f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CONFIG_BUS_CONTROL_TIMEOUT_LIMIT_SHIFT 8 1101f4b37ed0SZbigniew Bodek 1102f4b37ed0SZbigniew Bodek /**** Pos_ID_Match register ****/ 1103f4b37ed0SZbigniew Bodek /* Enable Device (GRE and nGRE) after Device ID hazard */ 1104f4b37ed0SZbigniew Bodek #define NB_GLOBAL_POS_ID_MATCH_ENABLE (1 << 0) 1105f4b37ed0SZbigniew Bodek /* ID Field Mask 1106f4b37ed0SZbigniew Bodek If set, corresonpding ID bits are not used for ID match */ 1107f4b37ed0SZbigniew Bodek #define NB_GLOBAL_POS_ID_MATCH_MASK_MASK 0xFFFF0000 1108f4b37ed0SZbigniew Bodek #define NB_GLOBAL_POS_ID_MATCH_MASK_SHIFT 16 1109f4b37ed0SZbigniew Bodek 1110f4b37ed0SZbigniew Bodek /**** sb_sel_override_awuser register ****/ 1111f4b37ed0SZbigniew Bodek /* Select whether to use transaction awuser or sb_override_awuser value for awuser field on outgoing write transactions to SB. 1112f4b37ed0SZbigniew Bodek Each bit if set to 1 selects the corresponding sb_override_awuser bit. Otherwise, selects the corersponding transaction awuser bit. */ 1113f4b37ed0SZbigniew Bodek #define NB_GLOBAL_SB_SEL_OVERRIDE_AWUSER_SEL_MASK 0x03FFFFFF 1114f4b37ed0SZbigniew Bodek #define NB_GLOBAL_SB_SEL_OVERRIDE_AWUSER_SEL_SHIFT 0 1115f4b37ed0SZbigniew Bodek 1116f4b37ed0SZbigniew Bodek /**** sb_override_awuser register ****/ 1117f4b37ed0SZbigniew Bodek /* Awuser to use on overriden transactions 1118f4b37ed0SZbigniew Bodek Only applicable if sel_override_awuser.sel is set to 1'b1 for the coressponding bit */ 1119f4b37ed0SZbigniew Bodek #define NB_GLOBAL_SB_OVERRIDE_AWUSER_AWUSER_MASK 0x03FFFFFF 1120f4b37ed0SZbigniew Bodek #define NB_GLOBAL_SB_OVERRIDE_AWUSER_AWUSER_SHIFT 0 1121f4b37ed0SZbigniew Bodek 1122f4b37ed0SZbigniew Bodek /**** sb_sel_override_aruser register ****/ 1123f4b37ed0SZbigniew Bodek /* Select whether to use transaction aruser or sb_override_aruser value for aruser field on outgoing read transactions to SB. 1124f4b37ed0SZbigniew Bodek Each bit if set to 1 selects the corresponding sb_override_aruser bit. Otherwise, selects the corersponding transaction aruser bit. */ 1125f4b37ed0SZbigniew Bodek #define NB_GLOBAL_SB_SEL_OVERRIDE_ARUSER_SEL_MASK 0x03FFFFFF 1126f4b37ed0SZbigniew Bodek #define NB_GLOBAL_SB_SEL_OVERRIDE_ARUSER_SEL_SHIFT 0 1127f4b37ed0SZbigniew Bodek 1128f4b37ed0SZbigniew Bodek /**** sb_override_aruser register ****/ 1129f4b37ed0SZbigniew Bodek /* Aruser to use on overriden transactions 1130f4b37ed0SZbigniew Bodek Only applicable if sb_sel_override_aruser.sel is set to 1'b1 for the coressponding bit */ 1131f4b37ed0SZbigniew Bodek #define NB_GLOBAL_SB_OVERRIDE_ARUSER_ARUSER_MASK 0x03FFFFFF 1132f4b37ed0SZbigniew Bodek #define NB_GLOBAL_SB_OVERRIDE_ARUSER_ARUSER_SHIFT 0 1133f4b37ed0SZbigniew Bodek 1134f4b37ed0SZbigniew Bodek /**** Coresight_PD register ****/ 1135f4b37ed0SZbigniew Bodek /* ETF0 RAM force power down */ 1136f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CORESIGHT_PD_ETF0_RAM_FORCE_PD (1 << 0) 1137f4b37ed0SZbigniew Bodek /* ETF1 RAM force power down */ 1138f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CORESIGHT_PD_ETF1_RAM_FORCE_PD (1 << 1) 1139f4b37ed0SZbigniew Bodek /* ETF0 RAM force clock gate */ 1140f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CORESIGHT_PD_ETF0_RAM_FORCE_CG (1 << 2) 1141f4b37ed0SZbigniew Bodek /* ETF1 RAM force clock gate */ 1142f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CORESIGHT_PD_ETF1_RAM_FORCE_CG (1 << 3) 1143f4b37ed0SZbigniew Bodek /* APBIC clock enable */ 1144f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CORESIGHT_PD_APBICLKEN (1 << 4) 1145f4b37ed0SZbigniew Bodek /* DAP system clock enable */ 1146f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CORESIGHT_PD_DAP_SYS_CLKEN (1 << 5) 1147f4b37ed0SZbigniew Bodek 1148f4b37ed0SZbigniew Bodek /**** Coresight_INTERNAL_0 register ****/ 1149f4b37ed0SZbigniew Bodek 1150f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CORESIGHT_INTERNAL_0_CTIAPBSBYPASS (1 << 0) 1151f4b37ed0SZbigniew Bodek /* CA15 CTM and Coresight CTI operate at same clock, bypass modes can be enabled but it's being set to bypass disable to break timing path. */ 1152f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CORESIGHT_INTERNAL_0_CISBYPASS (1 << 1) 1153f4b37ed0SZbigniew Bodek /* CA15 CTM and Coresight CTI operate according to the same clock. 1154f4b37ed0SZbigniew Bodek Bypass modes can be enabled, but it is set to bypass disable, to break the timing path. */ 1155f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CORESIGHT_INTERNAL_0_CIHSBYPASS_MASK 0x0000003C 1156f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CORESIGHT_INTERNAL_0_CIHSBYPASS_SHIFT 2 1157f4b37ed0SZbigniew Bodek 1158f4b37ed0SZbigniew Bodek /**** Coresight_DBGROMADDR register ****/ 1159f4b37ed0SZbigniew Bodek /* Valid signal for DBGROMADDR. 1160f4b37ed0SZbigniew Bodek Connected to DBGROMADDRV */ 1161f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CORESIGHT_DBGROMADDR_VALID (1 << 0) 1162f4b37ed0SZbigniew Bodek /* Specifies bits [39:12] of the ROM table physical address. */ 1163f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CORESIGHT_DBGROMADDR_ADDR_39_12_MASK 0x3FFFFFFC 1164f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CORESIGHT_DBGROMADDR_ADDR_39_12_SHIFT 2 1165f4b37ed0SZbigniew Bodek 1166f4b37ed0SZbigniew Bodek /**** Coresight_DBGSELFADDR register ****/ 1167f4b37ed0SZbigniew Bodek /* Valid signal for DBGROMADDR. 1168f4b37ed0SZbigniew Bodek Connected to DBGROMADDRV */ 1169f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CORESIGHT_DBGSELFADDR_VALID (1 << 0) 1170f4b37ed0SZbigniew Bodek /* Specifies bits [18:17] of the two's complement signed offset from the ROM table physical address to the physical address where the debug registers are memory-mapped. 1171f4b37ed0SZbigniew Bodek Note: The CA15 debug unit starts at offset 0x1 within the Coresight cluster. */ 1172f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CORESIGHT_DBGSELFADDR_ADDR_18_17_MASK 0x00000180 1173f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CORESIGHT_DBGSELFADDR_ADDR_18_17_SHIFT 7 1174f4b37ed0SZbigniew Bodek /* Specifies bits [39:19] of the two's complement signed offset from the ROM table physical address to the physical address where the debug registers are memory-mapped. 1175f4b37ed0SZbigniew Bodek Note: The CA15 debug unit starts at offset 0x1 within the Coresight cluster, so this offset if fixed to zero. */ 1176f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CORESIGHT_DBGSELFADDR_ADDR_39_19_MASK 0x3FFFFE00 1177f4b37ed0SZbigniew Bodek #define NB_GLOBAL_CORESIGHT_DBGSELFADDR_ADDR_39_19_SHIFT 9 1178f4b37ed0SZbigniew Bodek 1179f4b37ed0SZbigniew Bodek /**** SB_force_same_id_cfg_0 register ****/ 1180f4b37ed0SZbigniew Bodek /* Enables force same id mechanism for SB port 0 */ 1181f4b37ed0SZbigniew Bodek #define NB_GLOBAL_SB_FORCE_SAME_ID_CFG_0_FORCE_SAME_ID_EN (1 << 0) 1182f4b37ed0SZbigniew Bodek /* Enables MSIx stall when write transactions from same ID mechanism are in progress for SB port 0 */ 1183f4b37ed0SZbigniew Bodek #define NB_GLOBAL_SB_FORCE_SAME_ID_CFG_0_FORCE_SAME_ID_MSIX_STALL_EN (1 << 1) 1184f4b37ed0SZbigniew Bodek /* Mask for choosing which ID bits to match for indicating the originating master */ 1185f4b37ed0SZbigniew Bodek #define NB_GLOBAL_SB_FORCE_SAME_ID_CFG_0_SB_MSTR_ID_MASK_MASK 0x000000F8 1186f4b37ed0SZbigniew Bodek #define NB_GLOBAL_SB_FORCE_SAME_ID_CFG_0_SB_MSTR_ID_MASK_SHIFT 3 1187f4b37ed0SZbigniew Bodek 1188f4b37ed0SZbigniew Bodek /**** SB_force_same_id_cfg_1 register ****/ 1189f4b37ed0SZbigniew Bodek /* Enables force same id mechanism for SB port 1 */ 1190f4b37ed0SZbigniew Bodek #define NB_GLOBAL_SB_FORCE_SAME_ID_CFG_1_FORCE_SAME_ID_EN (1 << 0) 1191f4b37ed0SZbigniew Bodek /* Enables MSIx stall when write transactions from same ID mechanism are in progress for SB port 1 */ 1192f4b37ed0SZbigniew Bodek #define NB_GLOBAL_SB_FORCE_SAME_ID_CFG_1_FORCE_SAME_ID_MSIX_STALL_EN (1 << 1) 1193f4b37ed0SZbigniew Bodek /* Mask for choosing which ID bits to match for indicating the originating master */ 1194f4b37ed0SZbigniew Bodek #define NB_GLOBAL_SB_FORCE_SAME_ID_CFG_1_SB_MSTR_ID_MASK_MASK 0x000000F8 1195f4b37ed0SZbigniew Bodek #define NB_GLOBAL_SB_FORCE_SAME_ID_CFG_1_SB_MSTR_ID_MASK_SHIFT 3 1196f4b37ed0SZbigniew Bodek 1197f4b37ed0SZbigniew Bodek /**** Cnt_Control register ****/ 1198f4b37ed0SZbigniew Bodek /* System counter enable 1199f4b37ed0SZbigniew Bodek Counter is enabled after reset. */ 1200f4b37ed0SZbigniew Bodek #define NB_SYSTEM_COUNTER_CNT_CONTROL_EN (1 << 0) 1201f4b37ed0SZbigniew Bodek /* System counter restart 1202f4b37ed0SZbigniew Bodek Initial value is reloaded from Counter_Init_L and Counter_Init_H registers. 1203f4b37ed0SZbigniew Bodek Transition from 0 to 1 reloads the register. */ 1204f4b37ed0SZbigniew Bodek #define NB_SYSTEM_COUNTER_CNT_CONTROL_RESTART (1 << 1) 1205f4b37ed0SZbigniew Bodek /* Disable CTI trigger out that halt the counter progress */ 1206f4b37ed0SZbigniew Bodek #define NB_SYSTEM_COUNTER_CNT_CONTROL_CTI_TRIGOUT_HALT_DIS (1 << 2) 1207f4b37ed0SZbigniew Bodek /* System counter tick 1208f4b37ed0SZbigniew Bodek Specifies the counter tick rate relative to the Northbridge clock, e.g., the counter is incremented every 16 NB cycles if programmed to 0x0f. */ 1209f4b37ed0SZbigniew Bodek #define NB_SYSTEM_COUNTER_CNT_CONTROL_SCALE_MASK 0x0000FF00 1210f4b37ed0SZbigniew Bodek #define NB_SYSTEM_COUNTER_CNT_CONTROL_SCALE_SHIFT 8 1211f4b37ed0SZbigniew Bodek 1212f4b37ed0SZbigniew Bodek /**** CA15_RF_Misc register ****/ 1213f4b37ed0SZbigniew Bodek 1214f4b37ed0SZbigniew Bodek #define NB_RAMS_CONTROL_MISC_CA15_RF_MISC_NONECPU_RF_MISC_MASK 0x0000000F 1215f4b37ed0SZbigniew Bodek #define NB_RAMS_CONTROL_MISC_CA15_RF_MISC_NONECPU_RF_MISC_SHIFT 0 1216f4b37ed0SZbigniew Bodek 1217f4b37ed0SZbigniew Bodek #define NB_RAMS_CONTROL_MISC_CA15_RF_MISC_CPU_RF_MISC_MASK 0x00FFFF00 1218f4b37ed0SZbigniew Bodek #define NB_RAMS_CONTROL_MISC_CA15_RF_MISC_CPU_RF_MISC_SHIFT 8 1219f4b37ed0SZbigniew Bodek /* Pause for CPUs from the time all power is up to the time the SRAMs start opening. */ 1220f4b37ed0SZbigniew Bodek #define NB_RAMS_CONTROL_MISC_CA15_RF_MISC_PWR_UP_PAUSE_MASK 0xF8000000 1221f4b37ed0SZbigniew Bodek #define NB_RAMS_CONTROL_MISC_CA15_RF_MISC_PWR_UP_PAUSE_SHIFT 27 1222f4b37ed0SZbigniew Bodek 1223f4b37ed0SZbigniew Bodek /**** NB_RF_Misc register ****/ 1224f4b37ed0SZbigniew Bodek /* SMMU TLB RAMs force power down */ 1225f4b37ed0SZbigniew Bodek #define NB_RAMS_CONTROL_MISC_NB_RF_MISC_SMMU_RAM_FORCE_PD (1 << 0) 1226f4b37ed0SZbigniew Bodek 1227f4b37ed0SZbigniew Bodek /**** Lockn register ****/ 1228f4b37ed0SZbigniew Bodek /* Semaphore Lock 1229f4b37ed0SZbigniew Bodek CPU reads it: 1230f4b37ed0SZbigniew Bodek If current value ==0, return 0 to CPU but set bit to 1. (CPU knows it captured the semaphore.) 1231f4b37ed0SZbigniew Bodek If current value ==1, return 1 to CPU. (CPU knows it is already used and waits.) 1232f4b37ed0SZbigniew Bodek CPU writes 0 to it to release the semaphore. */ 1233f4b37ed0SZbigniew Bodek #define NB_SEMAPHORES_LOCKN_LOCK (1 << 0) 1234f4b37ed0SZbigniew Bodek 1235f4b37ed0SZbigniew Bodek /**** CA15_outputs_1 register ****/ 1236f4b37ed0SZbigniew Bodek /* 1237f4b37ed0SZbigniew Bodek */ 1238f4b37ed0SZbigniew Bodek #define NB_DEBUG_CA15_OUTPUTS_1_STANDBYWFI_MASK 0x0000000F 1239f4b37ed0SZbigniew Bodek #define NB_DEBUG_CA15_OUTPUTS_1_STANDBYWFI_SHIFT 0 1240f4b37ed0SZbigniew Bodek /* 1241f4b37ed0SZbigniew Bodek */ 1242f4b37ed0SZbigniew Bodek #define NB_DEBUG_CA15_OUTPUTS_1_CPU_PWR_DN_ACK_MASK 0x000000F0 1243f4b37ed0SZbigniew Bodek #define NB_DEBUG_CA15_OUTPUTS_1_CPU_PWR_DN_ACK_SHIFT 4 1244f4b37ed0SZbigniew Bodek /* 1245f4b37ed0SZbigniew Bodek */ 1246f4b37ed0SZbigniew Bodek #define NB_DEBUG_CA15_OUTPUTS_1_IRQOUT_N_MASK 0x00000F00 1247f4b37ed0SZbigniew Bodek #define NB_DEBUG_CA15_OUTPUTS_1_IRQOUT_N_SHIFT 8 1248f4b37ed0SZbigniew Bodek /* 1249f4b37ed0SZbigniew Bodek */ 1250f4b37ed0SZbigniew Bodek #define NB_DEBUG_CA15_OUTPUTS_1_FIQOUT_N_MASK 0x0000F000 1251f4b37ed0SZbigniew Bodek #define NB_DEBUG_CA15_OUTPUTS_1_FIQOUT_N_SHIFT 12 1252f4b37ed0SZbigniew Bodek /* 1253f4b37ed0SZbigniew Bodek */ 1254f4b37ed0SZbigniew Bodek #define NB_DEBUG_CA15_OUTPUTS_1_CNTHPIRQ_N_MASK 0x000F0000 1255f4b37ed0SZbigniew Bodek #define NB_DEBUG_CA15_OUTPUTS_1_CNTHPIRQ_N_SHIFT 16 1256f4b37ed0SZbigniew Bodek /* 1257f4b37ed0SZbigniew Bodek */ 1258f4b37ed0SZbigniew Bodek #define NB_DEBUG_CA15_OUTPUTS_1_NCNTPNSIRQ_N_MASK 0x00F00000 1259f4b37ed0SZbigniew Bodek #define NB_DEBUG_CA15_OUTPUTS_1_NCNTPNSIRQ_N_SHIFT 20 1260f4b37ed0SZbigniew Bodek /* 1261f4b37ed0SZbigniew Bodek */ 1262f4b37ed0SZbigniew Bodek #define NB_DEBUG_CA15_OUTPUTS_1_NCNTPSIRQ_N_MASK 0x0F000000 1263f4b37ed0SZbigniew Bodek #define NB_DEBUG_CA15_OUTPUTS_1_NCNTPSIRQ_N_SHIFT 24 1264f4b37ed0SZbigniew Bodek /* 1265f4b37ed0SZbigniew Bodek */ 1266f4b37ed0SZbigniew Bodek #define NB_DEBUG_CA15_OUTPUTS_1_NCNTVIRQ_N_MASK 0xF0000000 1267f4b37ed0SZbigniew Bodek #define NB_DEBUG_CA15_OUTPUTS_1_NCNTVIRQ_N_SHIFT 28 1268f4b37ed0SZbigniew Bodek 1269f4b37ed0SZbigniew Bodek /**** CA15_outputs_2 register ****/ 1270f4b37ed0SZbigniew Bodek /* 1271f4b37ed0SZbigniew Bodek */ 1272f4b37ed0SZbigniew Bodek #define NB_DEBUG_CA15_OUTPUTS_2_STANDBYWFIL2 (1 << 0) 1273f4b37ed0SZbigniew Bodek /* 1274f4b37ed0SZbigniew Bodek */ 1275f4b37ed0SZbigniew Bodek #define NB_DEBUG_CA15_OUTPUTS_2_L2RAM_PWR_DN_ACK (1 << 1) 1276f4b37ed0SZbigniew Bodek /* Indicates for each CPU if coherency is enabled 1277f4b37ed0SZbigniew Bodek */ 1278f4b37ed0SZbigniew Bodek #define NB_DEBUG_CA15_OUTPUTS_2_SMPEN_MASK 0x0000003C 1279f4b37ed0SZbigniew Bodek #define NB_DEBUG_CA15_OUTPUTS_2_SMPEN_SHIFT 2 1280f4b37ed0SZbigniew Bodek 1281f4b37ed0SZbigniew Bodek /**** cpu_msg register ****/ 1282f4b37ed0SZbigniew Bodek /* Status/ASCII code */ 1283f4b37ed0SZbigniew Bodek #define NB_DEBUG_CPU_MSG_STATUS_MASK 0x000000FF 1284f4b37ed0SZbigniew Bodek #define NB_DEBUG_CPU_MSG_STATUS_SHIFT 0 1285f4b37ed0SZbigniew Bodek /* Toggle with each ASCII write */ 1286f4b37ed0SZbigniew Bodek #define NB_DEBUG_CPU_MSG_ASCII_TOGGLE (1 << 8) 1287f4b37ed0SZbigniew Bodek /* Signals ASCII */ 1288f4b37ed0SZbigniew Bodek #define NB_DEBUG_CPU_MSG_ASCII (1 << 9) 1289f4b37ed0SZbigniew Bodek 1290f4b37ed0SZbigniew Bodek #define NB_DEBUG_CPU_MSG_RESERVED_11_10_MASK 0x00000C00 1291f4b37ed0SZbigniew Bodek #define NB_DEBUG_CPU_MSG_RESERVED_11_10_SHIFT 10 1292f4b37ed0SZbigniew Bodek /* Signals new section started in S/W */ 1293f4b37ed0SZbigniew Bodek #define NB_DEBUG_CPU_MSG_SECTION_START (1 << 12) 1294f4b37ed0SZbigniew Bodek 1295f4b37ed0SZbigniew Bodek #define NB_DEBUG_CPU_MSG_RESERVED_13 (1 << 13) 1296f4b37ed0SZbigniew Bodek /* Signals a single CPU is done. */ 1297f4b37ed0SZbigniew Bodek #define NB_DEBUG_CPU_MSG_CPU_DONE (1 << 14) 1298f4b37ed0SZbigniew Bodek /* Signals test is done */ 1299f4b37ed0SZbigniew Bodek #define NB_DEBUG_CPU_MSG_TEST_DONE (1 << 15) 1300f4b37ed0SZbigniew Bodek 1301f4b37ed0SZbigniew Bodek /**** ddrc register ****/ 1302f4b37ed0SZbigniew Bodek /* External DLL calibration request. Also compensates for VT variations, such as an external request for the controller (can be performed automatically by the controller at the normal settings). */ 1303f4b37ed0SZbigniew Bodek #define NB_DEBUG_DDRC_DLL_CALIB_EXT_REQ (1 << 0) 1304f4b37ed0SZbigniew Bodek /* External request to perform short (long is performed during initialization) and/or ODT calibration. */ 1305f4b37ed0SZbigniew Bodek #define NB_DEBUG_DDRC_ZQ_SHORT_CALIB_EXT_REQ (1 << 1) 1306f4b37ed0SZbigniew Bodek /* External request to perform a refresh command to a specific bank. Usually performed automatically by the controller, however, the controller supports disabling of the automatic mechanism, and use of an external pulse instead. */ 1307f4b37ed0SZbigniew Bodek #define NB_DEBUG_DDRC_RANK_REFRESH_EXT_REQ_MASK 0x0000003C 1308f4b37ed0SZbigniew Bodek #define NB_DEBUG_DDRC_RANK_REFRESH_EXT_REQ_SHIFT 2 1309f4b37ed0SZbigniew Bodek 1310f4b37ed0SZbigniew Bodek /**** ddrc_phy_smode_control register ****/ 1311f4b37ed0SZbigniew Bodek /* DDR PHY special mode */ 1312f4b37ed0SZbigniew Bodek #define NB_DEBUG_DDRC_PHY_SMODE_CONTROL_CTL_MASK 0x0000FFFF 1313f4b37ed0SZbigniew Bodek #define NB_DEBUG_DDRC_PHY_SMODE_CONTROL_CTL_SHIFT 0 1314f4b37ed0SZbigniew Bodek 1315f4b37ed0SZbigniew Bodek /**** ddrc_phy_smode_status register ****/ 1316f4b37ed0SZbigniew Bodek /* DDR PHY special mode */ 1317f4b37ed0SZbigniew Bodek #define NB_DEBUG_DDRC_PHY_SMODE_STATUS_STT_MASK 0x0000FFFF 1318f4b37ed0SZbigniew Bodek #define NB_DEBUG_DDRC_PHY_SMODE_STATUS_STT_SHIFT 0 1319f4b37ed0SZbigniew Bodek 1320f4b37ed0SZbigniew Bodek /**** pmc register ****/ 1321f4b37ed0SZbigniew Bodek /* Enable system control on NB DRO */ 1322f4b37ed0SZbigniew Bodek #define NB_DEBUG_PMC_SYS_EN (1 << 0) 1323f4b37ed0SZbigniew Bodek /* NB PMC HVT35 counter value */ 1324f4b37ed0SZbigniew Bodek #define NB_DEBUG_PMC_HVT35_VAL_14_0_MASK 0x0000FFFE 1325f4b37ed0SZbigniew Bodek #define NB_DEBUG_PMC_HVT35_VAL_14_0_SHIFT 1 1326f4b37ed0SZbigniew Bodek /* NB PMC SVT31 counter value */ 1327f4b37ed0SZbigniew Bodek #define NB_DEBUG_PMC_SVT31_VAL_14_0_MASK 0x7FFF0000 1328f4b37ed0SZbigniew Bodek #define NB_DEBUG_PMC_SVT31_VAL_14_0_SHIFT 16 1329f4b37ed0SZbigniew Bodek 1330f4b37ed0SZbigniew Bodek /**** cpus_general register ****/ 1331f4b37ed0SZbigniew Bodek /* Swaps sysaddr[16:14] with sysaddr[19:17] for DDR access*/ 1332f4b37ed0SZbigniew Bodek #define NB_DEBUG_CPUS_GENERAL_ADDR_MAP_ECO (1 << 23) 1333f4b37ed0SZbigniew Bodek 1334f4b37ed0SZbigniew Bodek /**** cpus_int_out register ****/ 1335f4b37ed0SZbigniew Bodek /* Defines which CPUs' FIQ will be triggered out through the cpus_int_out[1] pinout. */ 1336f4b37ed0SZbigniew Bodek #define NB_DEBUG_CPUS_INT_OUT_FIQ_EN_MASK 0x0000000F 1337f4b37ed0SZbigniew Bodek #define NB_DEBUG_CPUS_INT_OUT_FIQ_EN_SHIFT 0 1338f4b37ed0SZbigniew Bodek /* Defines which CPUs' IRQ will be triggered out through the cpus_int_out[0] pinout. */ 1339f4b37ed0SZbigniew Bodek #define NB_DEBUG_CPUS_INT_OUT_IRQ_EN_MASK 0x000000F0 1340f4b37ed0SZbigniew Bodek #define NB_DEBUG_CPUS_INT_OUT_IRQ_EN_SHIFT 4 1341f4b37ed0SZbigniew Bodek /* Defines which CPUs' SEI will be triggered out through the cpus_int_out[0] pinout. */ 1342f4b37ed0SZbigniew Bodek #define NB_DEBUG_CPUS_INT_OUT_IRQ_SEI_EN_MASK 0x00000F00 1343f4b37ed0SZbigniew Bodek #define NB_DEBUG_CPUS_INT_OUT_IRQ_SEI_EN_SHIFT 8 1344f4b37ed0SZbigniew Bodek 1345f4b37ed0SZbigniew Bodek /**** latch_pc_req register ****/ 1346f4b37ed0SZbigniew Bodek /* If set, request to latch execution PC from processor cluster */ 1347f4b37ed0SZbigniew Bodek #define NB_DEBUG_LATCH_PC_REQ_EN (1 << 0) 1348f4b37ed0SZbigniew Bodek /* target CPU id to latch its execution PC */ 1349f4b37ed0SZbigniew Bodek #define NB_DEBUG_LATCH_PC_REQ_CPU_ID_MASK 0x000000F0 1350f4b37ed0SZbigniew Bodek #define NB_DEBUG_LATCH_PC_REQ_CPU_ID_SHIFT 4 1351f4b37ed0SZbigniew Bodek 1352f4b37ed0SZbigniew Bodek /**** latch_pc_low register ****/ 1353f4b37ed0SZbigniew Bodek /* Set by hardware when the processor cluster ack the PC latch request. 1354f4b37ed0SZbigniew Bodek Clear on read latch_pc_high */ 1355f4b37ed0SZbigniew Bodek #define NB_DEBUG_LATCH_PC_LOW_VALID (1 << 0) 1356f4b37ed0SZbigniew Bodek /* Latched PC value [31:1] */ 1357f4b37ed0SZbigniew Bodek #define NB_DEBUG_LATCH_PC_LOW_VAL_MASK 0xFFFFFFFE 1358f4b37ed0SZbigniew Bodek #define NB_DEBUG_LATCH_PC_LOW_VAL_SHIFT 1 1359f4b37ed0SZbigniew Bodek 1360f4b37ed0SZbigniew Bodek /**** track_dump_ctrl register ****/ 1361f4b37ed0SZbigniew Bodek /* [24:16]: Queue entry pointer 1362f4b37ed0SZbigniew Bodek [2] Target queue: 1'b0: HazardTrack or 1'b1: AmiRMI queues 1363f4b37ed0SZbigniew Bodek [1:0]: CCI target master: 2'b00: M0, 2'b01: M1, 2'b10: M2 */ 1364f4b37ed0SZbigniew Bodek #define NB_DEBUG_TRACK_DUMP_CTRL_PTR_MASK 0x7FFFFFFF 1365f4b37ed0SZbigniew Bodek #define NB_DEBUG_TRACK_DUMP_CTRL_PTR_SHIFT 0 1366f4b37ed0SZbigniew Bodek /* Track Dump Request 1367f4b37ed0SZbigniew Bodek If set, queue entry info is latched on track_dump_rdata register. 1368f4b37ed0SZbigniew Bodek Program the pointer and target queue. 1369f4b37ed0SZbigniew Bodek This is a full handshake register. 1370f4b37ed0SZbigniew Bodek Read <valid> bit from track_dump_rdata register. If set, clear the request field before triggering a new request. */ 1371f4b37ed0SZbigniew Bodek #define NB_DEBUG_TRACK_DUMP_CTRL_REQ (1 << 31) 1372f4b37ed0SZbigniew Bodek 1373f4b37ed0SZbigniew Bodek /**** track_dump_rdata_0 register ****/ 1374f4b37ed0SZbigniew Bodek /* Valid */ 1375f4b37ed0SZbigniew Bodek #define NB_DEBUG_TRACK_DUMP_RDATA_0_VALID (1 << 0) 1376f4b37ed0SZbigniew Bodek /* Low data */ 1377f4b37ed0SZbigniew Bodek #define NB_DEBUG_TRACK_DUMP_RDATA_0_DATA_MASK 0xFFFFFFFE 1378f4b37ed0SZbigniew Bodek #define NB_DEBUG_TRACK_DUMP_RDATA_0_DATA_SHIFT 1 1379f4b37ed0SZbigniew Bodek 1380f4b37ed0SZbigniew Bodek /**** pos_track_dump_ctrl register ****/ 1381f4b37ed0SZbigniew Bodek /* [24:16]: queue entry pointer */ 1382f4b37ed0SZbigniew Bodek #define NB_DEBUG_POS_TRACK_DUMP_CTRL_PTR_MASK 0x7FFFFFFF 1383f4b37ed0SZbigniew Bodek #define NB_DEBUG_POS_TRACK_DUMP_CTRL_PTR_SHIFT 0 1384f4b37ed0SZbigniew Bodek /* Track Dump Request 1385f4b37ed0SZbigniew Bodek If set, queue entry info is latched on track_dump_rdata register. 1386f4b37ed0SZbigniew Bodek Program the pointer and target queue. 1387f4b37ed0SZbigniew Bodek This is a full handshake register 1388f4b37ed0SZbigniew Bodek Read <valid> bit from track_dump_rdata register. If set, clear the request field before triggering a new request. */ 1389f4b37ed0SZbigniew Bodek #define NB_DEBUG_POS_TRACK_DUMP_CTRL_REQ (1 << 31) 1390f4b37ed0SZbigniew Bodek 1391f4b37ed0SZbigniew Bodek /**** pos_track_dump_rdata_0 register ****/ 1392f4b37ed0SZbigniew Bodek /* Valid */ 1393f4b37ed0SZbigniew Bodek #define NB_DEBUG_POS_TRACK_DUMP_RDATA_0_VALID (1 << 0) 1394f4b37ed0SZbigniew Bodek /* Low data */ 1395f4b37ed0SZbigniew Bodek #define NB_DEBUG_POS_TRACK_DUMP_RDATA_0_DATA_MASK 0xFFFFFFFE 1396f4b37ed0SZbigniew Bodek #define NB_DEBUG_POS_TRACK_DUMP_RDATA_0_DATA_SHIFT 1 1397f4b37ed0SZbigniew Bodek 1398f4b37ed0SZbigniew Bodek /**** c2swb_track_dump_ctrl register ****/ 1399f4b37ed0SZbigniew Bodek /* [24:16]: Queue entry pointer */ 1400f4b37ed0SZbigniew Bodek #define NB_DEBUG_C2SWB_TRACK_DUMP_CTRL_PTR_MASK 0x7FFFFFFF 1401f4b37ed0SZbigniew Bodek #define NB_DEBUG_C2SWB_TRACK_DUMP_CTRL_PTR_SHIFT 0 1402f4b37ed0SZbigniew Bodek /* Track Dump Request 1403f4b37ed0SZbigniew Bodek If set, queue entry info is latched on track_dump_rdata register. 1404f4b37ed0SZbigniew Bodek Program the pointer and target queue. 1405f4b37ed0SZbigniew Bodek This is a full handshake register 1406f4b37ed0SZbigniew Bodek Read <valid> bit from track_dump_rdata register. If set, clear the request field before triggering a new request. */ 1407f4b37ed0SZbigniew Bodek #define NB_DEBUG_C2SWB_TRACK_DUMP_CTRL_REQ (1 << 31) 1408f4b37ed0SZbigniew Bodek 1409f4b37ed0SZbigniew Bodek /**** c2swb_track_dump_rdata_0 register ****/ 1410f4b37ed0SZbigniew Bodek /* Valid */ 1411f4b37ed0SZbigniew Bodek #define NB_DEBUG_C2SWB_TRACK_DUMP_RDATA_0_VALID (1 << 0) 1412f4b37ed0SZbigniew Bodek /* Low data */ 1413f4b37ed0SZbigniew Bodek #define NB_DEBUG_C2SWB_TRACK_DUMP_RDATA_0_DATA_MASK 0xFFFFFFFE 1414f4b37ed0SZbigniew Bodek #define NB_DEBUG_C2SWB_TRACK_DUMP_RDATA_0_DATA_SHIFT 1 1415f4b37ed0SZbigniew Bodek 1416f4b37ed0SZbigniew Bodek /**** cpus_track_dump_ctrl register ****/ 1417f4b37ed0SZbigniew Bodek /* [24:16]: Queue entry pointer 1418f4b37ed0SZbigniew Bodek [3:2] Target queue - 0:ASI, 1: AMI 1419f4b37ed0SZbigniew Bodek [1:0]: Target Processor Cluster - 0: Cluster0, 1: Cluster1 */ 1420f4b37ed0SZbigniew Bodek #define NB_DEBUG_CPUS_TRACK_DUMP_CTRL_PTR_MASK 0x7FFFFFFF 1421f4b37ed0SZbigniew Bodek #define NB_DEBUG_CPUS_TRACK_DUMP_CTRL_PTR_SHIFT 0 1422f4b37ed0SZbigniew Bodek /* Track Dump Request 1423f4b37ed0SZbigniew Bodek If set, queue entry info is latched on track_dump_rdata register. 1424f4b37ed0SZbigniew Bodek Program the pointer and target queue. 1425f4b37ed0SZbigniew Bodek This is a full handshake register 1426f4b37ed0SZbigniew Bodek Read <valid> bit from track_dump_rdata register. If set, clear the request field before triggering a new request. */ 1427f4b37ed0SZbigniew Bodek #define NB_DEBUG_CPUS_TRACK_DUMP_CTRL_REQ (1 << 31) 1428f4b37ed0SZbigniew Bodek 1429f4b37ed0SZbigniew Bodek /**** cpus_track_dump_rdata_0 register ****/ 1430f4b37ed0SZbigniew Bodek /* Valid */ 1431f4b37ed0SZbigniew Bodek #define NB_DEBUG_CPUS_TRACK_DUMP_RDATA_0_VALID (1 << 0) 1432f4b37ed0SZbigniew Bodek /* Low data */ 1433f4b37ed0SZbigniew Bodek #define NB_DEBUG_CPUS_TRACK_DUMP_RDATA_0_DATA_MASK 0xFFFFFFFE 1434f4b37ed0SZbigniew Bodek #define NB_DEBUG_CPUS_TRACK_DUMP_RDATA_0_DATA_SHIFT 1 1435f4b37ed0SZbigniew Bodek 1436f4b37ed0SZbigniew Bodek /**** c2swb_bar_ovrd_high register ****/ 1437f4b37ed0SZbigniew Bodek /* Read barrier is progressed downstream when not terminated in the CCI. 1438f4b37ed0SZbigniew Bodek By specification, barrier address is 0x0. 1439f4b37ed0SZbigniew Bodek This register enables barrier address OVRD to a programmable value. */ 1440f4b37ed0SZbigniew Bodek #define NB_DEBUG_C2SWB_BAR_OVRD_HIGH_RD_ADDR_OVRD_EN (1 << 0) 1441f4b37ed0SZbigniew Bodek /* Address bits 39:32 */ 1442f4b37ed0SZbigniew Bodek #define NB_DEBUG_C2SWB_BAR_OVRD_HIGH_ADDR_39_32_MASK 0x00FF0000 1443f4b37ed0SZbigniew Bodek #define NB_DEBUG_C2SWB_BAR_OVRD_HIGH_ADDR_39_32_SHIFT 16 1444f4b37ed0SZbigniew Bodek 1445f4b37ed0SZbigniew Bodek /**** Config register ****/ 1446f4b37ed0SZbigniew Bodek /* Individual processor control of the endianness configuration at reset. It sets the initial value of the EE bit in the CP15 System Control Register (SCTLR) related to CFGEND<n> input: 1447f4b37ed0SZbigniew Bodek little - 0x0: Little endian 1448f4b37ed0SZbigniew Bodek bit - 0x1: Bit endian */ 1449f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_CONFIG_ENDIAN (1 << 0) 1450f4b37ed0SZbigniew Bodek /* Individual processor control of the default exception handling state. It sets the initial value of the TE bit in the CP15 System Control Register (SCTLR) related to CFGTE<n> input: 1451f4b37ed0SZbigniew Bodek arm: 0x0: Exception operates ARM code. 1452f4b37ed0SZbigniew Bodek Thumb: 0x1: Exception operates Thumb code. */ 1453f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_CONFIG_TE (1 << 1) 1454f4b37ed0SZbigniew Bodek /* Individual processor control of the location of the exception vectors at reset. It sets the initial value of the V bit in the CP15 System Control Register (SCTLR). 1455f4b37ed0SZbigniew Bodek Connected to VINITHIGH<n> input. 1456f4b37ed0SZbigniew Bodek low - 0x0: Exception vectors start at address 0x00000000. 1457f4b37ed0SZbigniew Bodek high - 0x1: Exception vectors start at address 0xFFFF0000. */ 1458f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_CONFIG_VINITHI (1 << 2) 1459f4b37ed0SZbigniew Bodek /* Individual processor control to disable write access to some secure CP15 registers 1460f4b37ed0SZbigniew Bodek connected to CP15SDISABLE<n> input. */ 1461f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_CONFIG_CP15DISABLE (1 << 3) 1462f4b37ed0SZbigniew Bodek /* Force Write init implementation to ConfigAARch64 register */ 1463f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_CONFIG_AARCH64_REG_FORCE_WINIT (1 << 4) 1464f4b37ed0SZbigniew Bodek /* Force Write Once implementation to ConfigAARch64 register. */ 1465f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_CONFIG_AARCH64_REG_FORCE_WONCE (1 << 5) 1466f4b37ed0SZbigniew Bodek 1467f4b37ed0SZbigniew Bodek /**** Config_AARch64 register ****/ 1468f4b37ed0SZbigniew Bodek /* Individual processor register width state. The register width states are: 1469f4b37ed0SZbigniew Bodek 0 AArch32. 1470f4b37ed0SZbigniew Bodek 1 AArch64. 1471f4b37ed0SZbigniew Bodek This signal is only sampled during reset of the processor. 1472f4b37ed0SZbigniew Bodek This is Write Init register */ 1473f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_CONFIG_AARCH64_AA64_NAA32 (1 << 0) 1474f4b37ed0SZbigniew Bodek /* Individual processor Cryptography engine disable: 1475f4b37ed0SZbigniew Bodek 0 Enable the Cryptography engine. 1476f4b37ed0SZbigniew Bodek 1 Disable the Cryptography engine. 1477f4b37ed0SZbigniew Bodek This signal is only sampled during reset of the processor */ 1478f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_CONFIG_AARCH64_CRYPTO_DIS (1 << 1) 1479f4b37ed0SZbigniew Bodek 1480f4b37ed0SZbigniew Bodek /**** Power_Ctrl register ****/ 1481f4b37ed0SZbigniew Bodek /* Individual CPU power mode transition request 1482f4b37ed0SZbigniew Bodek If requested to enter power mode other than normal mode, low power state is resumed whenever CPU reenters STNDBYWFI state: 1483f4b37ed0SZbigniew Bodek normal: 0x0: normal power state 1484f4b37ed0SZbigniew Bodek deep_idle: 0x2: Dormant power mode state 1485f4b37ed0SZbigniew Bodek poweredoff: 0x3: Powered-off power mode */ 1486f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_POWER_CTRL_PM_REQ_MASK 0x00000003 1487f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_POWER_CTRL_PM_REQ_SHIFT 0 1488f4b37ed0SZbigniew Bodek /* Normal power mode state */ 1489f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_POWER_CTRL_PM_REQ_NORMAL \ 1490f4b37ed0SZbigniew Bodek (0x0 << NB_CPUN_CONFIG_STATUS_POWER_CTRL_PM_REQ_SHIFT) 1491f4b37ed0SZbigniew Bodek /* Dormant power mode state */ 1492f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_POWER_CTRL_PM_REQ_DEEP_IDLE \ 1493f4b37ed0SZbigniew Bodek (0x2 << NB_CPUN_CONFIG_STATUS_POWER_CTRL_PM_REQ_SHIFT) 1494f4b37ed0SZbigniew Bodek /* Powered-off power mode */ 1495f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_POWER_CTRL_PM_REQ_POWEREDOFF \ 1496f4b37ed0SZbigniew Bodek (0x3 << NB_CPUN_CONFIG_STATUS_POWER_CTRL_PM_REQ_SHIFT) 1497f4b37ed0SZbigniew Bodek /* Power down regret disable 1498f4b37ed0SZbigniew Bodek When power down regret is enabled, the powerdown enter flow can be halted whenever a valid wakeup event occurs. */ 1499f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_POWER_CTRL_PWRDN_RGRT_DIS (1 << 16) 1500f4b37ed0SZbigniew Bodek /* Power down emulation enable 1501f4b37ed0SZbigniew Bodek If set, the entire power down sequence is applied, but the CPU is placed in soft reset instead of hardware power down. */ 1502f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_POWER_CTRL_PWRDN_EMULATE (1 << 17) 1503f4b37ed0SZbigniew Bodek /* Disable wakeup from Local--GIC FIQ. */ 1504f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_POWER_CTRL_WU_LGIC_FIQ_DIS (1 << 18) 1505f4b37ed0SZbigniew Bodek /* Disable wakeup from Local-GIC IRQ. */ 1506f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_POWER_CTRL_WU_LGIC_IRQ_DIS (1 << 19) 1507f4b37ed0SZbigniew Bodek /* Disable wakeup from IO-GIC FIQ. */ 1508f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_POWER_CTRL_WU_IOGIC_FIQ_DIS (1 << 20) 1509f4b37ed0SZbigniew Bodek /* Disable wakeup from IO-GIC IRQ. */ 1510f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_POWER_CTRL_WU_IOGIC_IRQ_DIS (1 << 21) 1511f4b37ed0SZbigniew Bodek /* Disable scheduling of interrrupts in GIC(500) to non-active CPU */ 1512f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_POWER_CTRL_IOGIC_DIS_CPU (1 << 22) 1513f4b37ed0SZbigniew Bodek 1514f4b37ed0SZbigniew Bodek /**** Power_Status register ****/ 1515f4b37ed0SZbigniew Bodek /* Read-only bits that reflect the individual CPU power mode status. 1516f4b37ed0SZbigniew Bodek Default value for non-exist CPU is 2b11: 1517f4b37ed0SZbigniew Bodek normal - 0x0: Normal mode 1518f4b37ed0SZbigniew Bodek por - 0x1: por on reset mode 1519f4b37ed0SZbigniew Bodek deep_idle - 0x2: Dormant power mode state 1520f4b37ed0SZbigniew Bodek poweredoff - 0x3: Powered-off power mode */ 1521f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_POWER_STATUS_CPU_PM_MASK 0x00000003 1522f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_POWER_STATUS_CPU_PM_SHIFT 0 1523f4b37ed0SZbigniew Bodek /* Normal power mode state */ 1524f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_POWER_STATUS_CPU_PM_NORMAL \ 1525f4b37ed0SZbigniew Bodek (0x0 << NB_CPUN_CONFIG_STATUS_POWER_STATUS_CPU_PM_SHIFT) 1526f4b37ed0SZbigniew Bodek /* Idle power mode state (WFI) */ 1527f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_POWER_STATUS_CPU_PM_IDLE \ 1528f4b37ed0SZbigniew Bodek (0x1 << NB_CPUN_CONFIG_STATUS_POWER_STATUS_CPU_PM_SHIFT) 1529f4b37ed0SZbigniew Bodek /* Dormant power mode state */ 1530f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_POWER_STATUS_CPU_PM_DEEP_IDLE \ 1531f4b37ed0SZbigniew Bodek (0x2 << NB_CPUN_CONFIG_STATUS_POWER_STATUS_CPU_PM_SHIFT) 1532f4b37ed0SZbigniew Bodek /* Powered-off power mode */ 1533f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_POWER_STATUS_CPU_PM_POWEREDOFF \ 1534f4b37ed0SZbigniew Bodek (0x3 << NB_CPUN_CONFIG_STATUS_POWER_STATUS_CPU_PM_SHIFT) 1535f4b37ed0SZbigniew Bodek /* WFI status */ 1536f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_POWER_STATUS_WFI (1 << 2) 1537f4b37ed0SZbigniew Bodek /* WFE status */ 1538f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_POWER_STATUS_WFE (1 << 3) 1539f4b37ed0SZbigniew Bodek 1540f4b37ed0SZbigniew Bodek /**** Warm_Rst_Ctl register ****/ 1541f4b37ed0SZbigniew Bodek /* Disable CPU Warm Reset when warmrstreq is asserted 1542f4b37ed0SZbigniew Bodek 1543f4b37ed0SZbigniew Bodek When the Reset Request bit in the RMR or RMR_EL3 register is set to 1 in the CPU Core , the processor asserts the WARMRSTREQ signal and the SoC reset controller use this request to trigger a Warm reset of the processor and change the register width state. */ 1544f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_WARM_RST_CTL_REQ_DIS (1 << 0) 1545f4b37ed0SZbigniew Bodek /* Disable waiting WFI on Warm Reset */ 1546f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_WARM_RST_CTL_WFI_DIS (1 << 1) 1547f4b37ed0SZbigniew Bodek /* CPU Core AARach64 reset vector bar 1548f4b37ed0SZbigniew Bodek This is Write Once register (controlled by aarch64_reg_force_* fields) */ 1549f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_RVBAR_LOW_ADDR_31_2_MASK 0xFFFFFFFC 1550f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_RVBAR_LOW_ADDR_31_2_SHIFT 2 1551f4b37ed0SZbigniew Bodek 1552f4b37ed0SZbigniew Bodek /**** Rvbar_High register ****/ 1553f4b37ed0SZbigniew Bodek /* CPU Core AARach64 reset vector bar high bits 1554f4b37ed0SZbigniew Bodek This is Write Once register (controlled by aarch64_reg_force_* fields) */ 1555f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_RVBAR_HIGH_ADDR_43_32_MASK 0x00000FFF 1556f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_RVBAR_HIGH_ADDR_43_32_SHIFT 0 1557f4b37ed0SZbigniew Bodek 1558f4b37ed0SZbigniew Bodek /**** pmu_snapshot register ****/ 1559f4b37ed0SZbigniew Bodek /* PMU Snapshot Request */ 1560f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_PMU_SNAPSHOT_REQ (1 << 0) 1561f4b37ed0SZbigniew Bodek /* 0: HW deassert requests when received ack 1562f4b37ed0SZbigniew Bodek 1: SW deasserts request when received done */ 1563f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_PMU_SNAPSHOT_MODE (1 << 1) 1564f4b37ed0SZbigniew Bodek /* Snapshot process completed */ 1565f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_PMU_SNAPSHOT_DONE (1 << 31) 1566f4b37ed0SZbigniew Bodek 1567f4b37ed0SZbigniew Bodek /**** cpu_msg_in register ****/ 1568f4b37ed0SZbigniew Bodek /* CPU read this register to receive input (char) from simulation. */ 1569f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_CPU_MSG_IN_DATA_MASK 0x000000FF 1570f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_CPU_MSG_IN_DATA_SHIFT 0 1571f4b37ed0SZbigniew Bodek /* Indicates the data is valid. 1572f4b37ed0SZbigniew Bodek Cleared on read */ 1573f4b37ed0SZbigniew Bodek #define NB_CPUN_CONFIG_STATUS_CPU_MSG_IN_VALID (1 << 8) 1574f4b37ed0SZbigniew Bodek 1575f4b37ed0SZbigniew Bodek /**** PMU_Control register ****/ 1576f4b37ed0SZbigniew Bodek /* Disable all counters 1577f4b37ed0SZbigniew Bodek When this bit is clear, counter state is determined through the specific counter control register */ 1578f4b37ed0SZbigniew Bodek #define NB_MC_PMU_PMU_CONTROL_DISABLE_ALL (1 << 0) 1579f4b37ed0SZbigniew Bodek /* Pause all counters. 1580f4b37ed0SZbigniew Bodek When this bit is clear, counter state is determined through the specific counter control register. */ 1581f4b37ed0SZbigniew Bodek #define NB_MC_PMU_PMU_CONTROL_PAUSE_ALL (1 << 1) 1582f4b37ed0SZbigniew Bodek /* Overflow interrupt enable: 1583f4b37ed0SZbigniew Bodek disable - 0x0: Disable interrupt on overflow. 1584f4b37ed0SZbigniew Bodek enable - 0x1: Enable interrupt on overflow. */ 1585f4b37ed0SZbigniew Bodek #define NB_MC_PMU_PMU_CONTROL_OVRF_INTR_EN (1 << 2) 1586f4b37ed0SZbigniew Bodek /* Number of monitored events supported by the PMU. */ 1587f4b37ed0SZbigniew Bodek #define NB_MC_PMU_PMU_CONTROL_NUM_OF_EVENTS_MASK 0x00FC0000 1588f4b37ed0SZbigniew Bodek #define NB_MC_PMU_PMU_CONTROL_NUM_OF_EVENTS_SHIFT 18 1589*3fc36ee0SWojciech Macek #define NB_MC_PMU_PMU_CONTROL_NUM_OF_EVENTS_SHIFT_ALPINE_V1 19 1590f4b37ed0SZbigniew Bodek /* Number of counters implemented by PMU. */ 1591f4b37ed0SZbigniew Bodek #define NB_MC_PMU_PMU_CONTROL_NUM_OF_CNTS_MASK 0x0F000000 1592f4b37ed0SZbigniew Bodek #define NB_MC_PMU_PMU_CONTROL_NUM_OF_CNTS_SHIFT 24 1593f4b37ed0SZbigniew Bodek 1594f4b37ed0SZbigniew Bodek /**** Cfg register ****/ 1595f4b37ed0SZbigniew Bodek /* Event select */ 1596f4b37ed0SZbigniew Bodek #define NB_MC_PMU_COUNTERS_CFG_EVENT_SEL_MASK 0x0000003F 1597f4b37ed0SZbigniew Bodek #define NB_MC_PMU_COUNTERS_CFG_EVENT_SEL_SHIFT 0 1598f4b37ed0SZbigniew Bodek /* Enable setting of counter low overflow status bit: 1599f4b37ed0SZbigniew Bodek disable - 0x0: Disable setting. 1600f4b37ed0SZbigniew Bodek enable - 0x1: Enable setting. */ 1601f4b37ed0SZbigniew Bodek #define NB_MC_PMU_COUNTERS_CFG_OVRF_LOW_STT_EN (1 << 6) 1602f4b37ed0SZbigniew Bodek /* Enable setting of counter high overflow status bit: 1603f4b37ed0SZbigniew Bodek disable - 0x0: Disable setting. 1604f4b37ed0SZbigniew Bodek enable - 0x1: Enable setting. */ 1605f4b37ed0SZbigniew Bodek #define NB_MC_PMU_COUNTERS_CFG_OVRF_HIGH_STT_EN (1 << 7) 1606f4b37ed0SZbigniew Bodek /* Enable pause on trigger in assertion: 1607f4b37ed0SZbigniew Bodek disable - 0x0: Disable pause. 1608f4b37ed0SZbigniew Bodek enable - 0x1: Enable pause. */ 1609f4b37ed0SZbigniew Bodek #define NB_MC_PMU_COUNTERS_CFG_TRIGIN_PAUSE_EN (1 << 8) 1610f4b37ed0SZbigniew Bodek /* Enable increment trigger out for trace. 1611f4b37ed0SZbigniew Bodek Trigger is generated whenever counter reaches <granule> value: 1612f4b37ed0SZbigniew Bodek disable - 0x0: Disable trigger out. 1613f4b37ed0SZbigniew Bodek enable - 0x1: Enable trigger out. */ 1614f4b37ed0SZbigniew Bodek #define NB_MC_PMU_COUNTERS_CFG_TRIGOUT_EN (1 << 9) 1615f4b37ed0SZbigniew Bodek /* Trigger out granule value 1616f4b37ed0SZbigniew Bodek Specifies the number of events counted between two consecutive trigger out events 1617f4b37ed0SZbigniew Bodek 0x0: 1 - Trigger out on every event occurrence. 1618f4b37ed0SZbigniew Bodek 0x1: 2 - Trigger out on every two events. 1619f4b37ed0SZbigniew Bodek ... 1620f4b37ed0SZbigniew Bodek 0xn: 2^(n-1) - Trigger out on event 2^(n-1) events. 1621f4b37ed0SZbigniew Bodek ... 1622f4b37ed0SZbigniew Bodek 0x1F: 2^31 */ 1623f4b37ed0SZbigniew Bodek #define NB_MC_PMU_COUNTERS_CFG_TRIGOUT_GRANULA_MASK 0x00007C00 1624f4b37ed0SZbigniew Bodek #define NB_MC_PMU_COUNTERS_CFG_TRIGOUT_GRANULA_SHIFT 10 1625f4b37ed0SZbigniew Bodek /* Pause on overflow bitmask 1626f4b37ed0SZbigniew Bodek If set for counter <i>, current counter pauses counting when counter<i> is overflowed, including self-pause. 1627f4b37ed0SZbigniew Bodek Bit [16]: counter 0 1628f4b37ed0SZbigniew Bodek Bit [17]: counter 1 1629f4b37ed0SZbigniew Bodek Note: This field must be changed for larger counters. */ 1630f4b37ed0SZbigniew Bodek #define NB_MC_PMU_COUNTERS_CFG_PAUSE_ON_OVRF_BITMASK_MASK 0x000F0000 1631f4b37ed0SZbigniew Bodek #define NB_MC_PMU_COUNTERS_CFG_PAUSE_ON_OVRF_BITMASK_SHIFT 16 1632f4b37ed0SZbigniew Bodek 1633f4b37ed0SZbigniew Bodek /**** Cntl register ****/ 1634f4b37ed0SZbigniew Bodek /* Set the counter state to disable, enable, or pause: 1635f4b37ed0SZbigniew Bodek 0x0 - disable: Disable counter. 1636f4b37ed0SZbigniew Bodek 0x1 - enable: Enable counter. 1637f4b37ed0SZbigniew Bodek 0x3 - pause: Pause counter. */ 1638f4b37ed0SZbigniew Bodek #define NB_MC_PMU_COUNTERS_CNTL_CNT_STATE_MASK 0x00000003 1639f4b37ed0SZbigniew Bodek #define NB_MC_PMU_COUNTERS_CNTL_CNT_STATE_SHIFT 0 1640f4b37ed0SZbigniew Bodek /* Disable counter. */ 1641f4b37ed0SZbigniew Bodek #define NB_MC_PMU_COUNTERS_CNTL_CNT_STATE_DISABLE \ 1642f4b37ed0SZbigniew Bodek (0x0 << NB_MC_PMU_COUNTERS_CNTL_CNT_STATE_SHIFT) 1643f4b37ed0SZbigniew Bodek /* Enable counter. */ 1644f4b37ed0SZbigniew Bodek #define NB_MC_PMU_COUNTERS_CNTL_CNT_STATE_ENABLE \ 1645f4b37ed0SZbigniew Bodek (0x1 << NB_MC_PMU_COUNTERS_CNTL_CNT_STATE_SHIFT) 1646f4b37ed0SZbigniew Bodek /* Pause counter. */ 1647f4b37ed0SZbigniew Bodek #define NB_MC_PMU_COUNTERS_CNTL_CNT_STATE_PAUSE \ 1648f4b37ed0SZbigniew Bodek (0x3 << NB_MC_PMU_COUNTERS_CNTL_CNT_STATE_SHIFT) 1649f4b37ed0SZbigniew Bodek 1650f4b37ed0SZbigniew Bodek /**** High register ****/ 1651f4b37ed0SZbigniew Bodek /* Counter high value */ 1652f4b37ed0SZbigniew Bodek #define NB_MC_PMU_COUNTERS_HIGH_COUNTER_MASK 0x0000FFFF 1653f4b37ed0SZbigniew Bodek #define NB_MC_PMU_COUNTERS_HIGH_COUNTER_SHIFT 0 1654f4b37ed0SZbigniew Bodek 1655f4b37ed0SZbigniew Bodek /**** version register ****/ 1656f4b37ed0SZbigniew Bodek /* Revision number (Minor) */ 1657f4b37ed0SZbigniew Bodek #define NB_NB_VERSION_VERSION_RELEASE_NUM_MINOR_MASK 0x000000FF 1658f4b37ed0SZbigniew Bodek #define NB_NB_VERSION_VERSION_RELEASE_NUM_MINOR_SHIFT 0 1659f4b37ed0SZbigniew Bodek /* Revision number (Major) */ 1660f4b37ed0SZbigniew Bodek #define NB_NB_VERSION_VERSION_RELEASE_NUM_MAJOR_MASK 0x0000FF00 1661f4b37ed0SZbigniew Bodek #define NB_NB_VERSION_VERSION_RELEASE_NUM_MAJOR_SHIFT 8 1662*3fc36ee0SWojciech Macek #define NB_NB_VERSION_VERSION_RELEASE_NUM_MAJOR_VAL_ALPINE_V1 2 1663*3fc36ee0SWojciech Macek #define NB_NB_VERSION_VERSION_RELEASE_NUM_MAJOR_VAL_ALPINE_V2 3 1664*3fc36ee0SWojciech Macek #define NB_NB_VERSION_VERSION_RELEASE_NUM_MAJOR_VAL_ALPINE_V3 4 1665f4b37ed0SZbigniew Bodek /* Date of release */ 1666f4b37ed0SZbigniew Bodek #define NB_NB_VERSION_VERSION_DATE_DAY_MASK 0x001F0000 1667f4b37ed0SZbigniew Bodek #define NB_NB_VERSION_VERSION_DATE_DAY_SHIFT 16 1668f4b37ed0SZbigniew Bodek /* Month of release */ 1669f4b37ed0SZbigniew Bodek #define NB_NB_VERSION_VERSION_DATA_MONTH_MASK 0x01E00000 1670f4b37ed0SZbigniew Bodek #define NB_NB_VERSION_VERSION_DATA_MONTH_SHIFT 21 1671f4b37ed0SZbigniew Bodek /* Year of release (starting from 2000) */ 1672f4b37ed0SZbigniew Bodek #define NB_NB_VERSION_VERSION_DATE_YEAR_MASK 0x3E000000 1673f4b37ed0SZbigniew Bodek #define NB_NB_VERSION_VERSION_DATE_YEAR_SHIFT 25 1674f4b37ed0SZbigniew Bodek /* Reserved */ 1675f4b37ed0SZbigniew Bodek #define NB_NB_VERSION_VERSION_RESERVED_MASK 0xC0000000 1676f4b37ed0SZbigniew Bodek #define NB_NB_VERSION_VERSION_RESERVED_SHIFT 30 1677f4b37ed0SZbigniew Bodek 1678*3fc36ee0SWojciech Macek /**** cpu_tgtid register ****/ 1679*3fc36ee0SWojciech Macek /* Target-ID */ 1680*3fc36ee0SWojciech Macek #define NB_SRIOV_CPU_TGTID_VAL_MASK 0x000000FF 1681*3fc36ee0SWojciech Macek #define NB_SRIOV_CPU_TGTID_VAL_SHIFT 0 1682f4b37ed0SZbigniew Bodek 1683f4b37ed0SZbigniew Bodek /**** DRAM_0_Control register ****/ 1684f4b37ed0SZbigniew Bodek /* Controller Idle 1685f4b37ed0SZbigniew Bodek Indicates to the DDR PHY, if set, that the memory controller is idle */ 1686f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_DRAM_0_CONTROL_DDR_PHY_CTL_IDLE (1 << 0) 1687f4b37ed0SZbigniew Bodek /* Disable clear exclusive monitor request from DDR controller to CPU 1688f4b37ed0SZbigniew Bodek Clear request is triggered whenever an exlusive monitor inside the DDR controller is being invalidated. */ 1689f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_DRAM_0_CONTROL_DDR_EXMON_REQ_DIS (1 << 1) 1690f4b37ed0SZbigniew Bodek 1691f4b37ed0SZbigniew Bodek /**** DRAM_0_Status register ****/ 1692f4b37ed0SZbigniew Bodek /* Bypass Mode: Indicates if set that the PHY is in PLL bypass mod */ 1693f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_DRAM_0_STATUS_DDR_PHY_BYP_MODE (1 << 0) 1694f4b37ed0SZbigniew Bodek /* Number of available AXI transactions (used positions) in the DDR controller read address FIFO. */ 1695f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_DRAM_0_STATUS_RAQ_WCOUNT_MASK 0x00000030 1696f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_DRAM_0_STATUS_RAQ_WCOUNT_SHIFT 4 1697f4b37ed0SZbigniew Bodek /* Number of available AXI transactions (used positions) in the DDR controller write address FIFO */ 1698f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_DRAM_0_STATUS_WAQ_WCOUNT_0_MASK 0x000000C0 1699f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_DRAM_0_STATUS_WAQ_WCOUNT_0_SHIFT 6 1700f4b37ed0SZbigniew Bodek /* Number of available Low priority read CAM slots (free positions) in the DDR controller. 1701f4b37ed0SZbigniew Bodek Each slots holds a DRAM burst */ 1702f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_DRAM_0_STATUS_LPR_CREDIT_CNT_MASK 0x00007F00 1703f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_DRAM_0_STATUS_LPR_CREDIT_CNT_SHIFT 8 1704f4b37ed0SZbigniew Bodek /* Number of available High priority read CAM slots (free positions) in the DDR controller. 1705f4b37ed0SZbigniew Bodek Each slots holds a DRAM burst */ 1706f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_DRAM_0_STATUS_HPR_CREDIT_CNT_MASK 0x003F8000 1707f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_DRAM_0_STATUS_HPR_CREDIT_CNT_SHIFT 15 1708f4b37ed0SZbigniew Bodek /* Number of available write CAM slots (free positions) in the DDR controller. 1709f4b37ed0SZbigniew Bodek Each slots holds a DRAM burst */ 1710f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_DRAM_0_STATUS_WR_CREDIT_CNT_MASK 0x1FC00000 1711f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_DRAM_0_STATUS_WR_CREDIT_CNT_SHIFT 22 1712f4b37ed0SZbigniew Bodek 1713f4b37ed0SZbigniew Bodek /**** DDR_Int_Cause register ****/ 1714f4b37ed0SZbigniew Bodek /* This interrupt is asserted when a correctable ECC error is detected */ 1715f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_DDR_INT_CAUSE_ECC_CORRECTED_ERR (1 << 0) 1716f4b37ed0SZbigniew Bodek /* This interrupt is asserted when a uncorrectable ECC error is detected */ 1717f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_DDR_INT_CAUSE_ECC_UNCORRECTED_ERR (1 << 1) 1718f4b37ed0SZbigniew Bodek /* This interrupt is asserted when a parity or CRC error is detected on the DFI interface */ 1719f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_DDR_INT_CAUSE_DFI_ALERT_ERR (1 << 2) 1720f4b37ed0SZbigniew Bodek /* On-Chip Write data parity error interrupt on output */ 1721f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_DDR_INT_CAUSE_PAR_WDATA_OUT_ERR (1 << 3) 1722f4b37ed0SZbigniew Bodek /* This interrupt is asserted when a parity error due to MRS is detected on the DFI interface */ 1723f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_DDR_INT_CAUSE_DFI_ALERT_ERR_FATL (1 << 4) 1724f4b37ed0SZbigniew Bodek /* This interrupt is asserted when the CRC/parity retry counter reaches it maximum value */ 1725f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_DDR_INT_CAUSE_DFI_ALERT_ERR_MAX_REACHED (1 << 5) 1726f4b37ed0SZbigniew Bodek /* AXI Read address parity error interrupt. 1727f4b37ed0SZbigniew Bodek This interrupt is asserted when an on-chip parity error occurred on the DDR controller AXI read address. */ 1728f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_DDR_INT_CAUSE_PAR_RADDR_ERR (1 << 6) 1729f4b37ed0SZbigniew Bodek /* AXI Read data parity error interrupt. 1730f4b37ed0SZbigniew Bodek This interrupt is asserted when an on-chip parity error occurred on the DDR controller AXI read data */ 1731f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_DDR_INT_CAUSE_PAR_RDATA_ERR (1 << 7) 1732f4b37ed0SZbigniew Bodek /* AXI Write address parity error interrupt. 1733f4b37ed0SZbigniew Bodek This interrupt is asserted when an on-chip parity error occurred on the DDR controller AXI write address. */ 1734f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_DDR_INT_CAUSE_PAR_WADDR_ERR (1 << 8) 1735f4b37ed0SZbigniew Bodek /* AXI Write data parity error interrupt on input. 1736f4b37ed0SZbigniew Bodek This interrupt is asserted when an on-chip parity error occurred on the DDR controller AXI write data */ 1737f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_DDR_INT_CAUSE_PAR_WDATA_IN_ERR (1 << 9) 1738f4b37ed0SZbigniew Bodek 1739f4b37ed0SZbigniew Bodek /**** Address_Map register ****/ 1740f4b37ed0SZbigniew Bodek /* Controls which system address bit will be mapped to DDR row bit 2. 1741f4b37ed0SZbigniew Bodek This field is only used when addrmap_part_en == 1 */ 1742f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_ADDRESS_MAP_ADDRMAP_ROW_B2_MASK 0x0000000F 1743f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_ADDRESS_MAP_ADDRMAP_ROW_B2_SHIFT 0 1744f4b37ed0SZbigniew Bodek /* Controls which system address bit will be mapped to DDR row bit 3. 1745f4b37ed0SZbigniew Bodek This field is only used when addrmap_part_en == 1 */ 1746f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_ADDRESS_MAP_ADDRMAP_ROW_B3_MASK 0x000003C0 1747f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_ADDRESS_MAP_ADDRMAP_ROW_B3_SHIFT 6 1748f4b37ed0SZbigniew Bodek /* Controls which system address bit will be mapped to DDR row bit 4. 1749f4b37ed0SZbigniew Bodek This field is only used when addrmap_part_en == 1 */ 1750f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_ADDRESS_MAP_ADDRMAP_ROW_B4_MASK 0x0000F000 1751f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_ADDRESS_MAP_ADDRMAP_ROW_B4_SHIFT 12 1752f4b37ed0SZbigniew Bodek /* Controls which system address bit will be mapped to DDR row bit 5. 1753f4b37ed0SZbigniew Bodek This field is only used when addrmap_part_en == 1 */ 1754f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_ADDRESS_MAP_ADDRMAP_ROW_B5_MASK 0x003C0000 1755f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_ADDRESS_MAP_ADDRMAP_ROW_B5_SHIFT 18 1756f4b37ed0SZbigniew Bodek /* Enables partitioning of the address mapping control. 1757f4b37ed0SZbigniew Bodek When set, addrmap_row_b2-5 are used inside DDR controler instead of the built in address mapping registers */ 1758f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_ADDRESS_MAP_ADDRMAP_PART_EN (1 << 31) 1759f4b37ed0SZbigniew Bodek 1760f4b37ed0SZbigniew Bodek /**** Reorder_ID_Mask register ****/ 1761f4b37ed0SZbigniew Bodek /* DDR Read Reorder buffer ID mask. 1762f4b37ed0SZbigniew Bodek If incoming read transaction ID ANDed with mask is equal Reorder_ID_Value, then the transaction is mapped to the DDR controller bypass channel. 1763f4b37ed0SZbigniew Bodek Setting this register to 0 will disable the check */ 1764f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_REORDER_ID_MASK_MASK_MASK 0x003FFFFF 1765f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_REORDER_ID_MASK_MASK_SHIFT 0 1766f4b37ed0SZbigniew Bodek 1767f4b37ed0SZbigniew Bodek /**** Reorder_ID_Value register ****/ 1768f4b37ed0SZbigniew Bodek /* DDR Read Reorder buffer ID value 1769f4b37ed0SZbigniew Bodek If incoming read transaction ID ANDed with Reorder_ID_Mask is equal to this register, then the transaction is mapped to the DDR controller bypass channel */ 1770f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_REORDER_ID_VALUE_VALUE_MASK 0x003FFFFF 1771f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_REORDER_ID_VALUE_VALUE_SHIFT 0 1772f4b37ed0SZbigniew Bodek 1773f4b37ed0SZbigniew Bodek /**** MRR_Control_Status register ****/ 1774f4b37ed0SZbigniew Bodek /* DDR4 Mode Register Read Data Valid */ 1775f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_MRR_CONTROL_STATUS_MRR_VLD (1 << 0) 1776f4b37ed0SZbigniew Bodek /* MRR Ack, when asserted it clears the mrr_val indication and ready to load new MRR data. Write 1 to clear and then 0 */ 1777f4b37ed0SZbigniew Bodek #define NB_DRAM_CHANNELS_MRR_CONTROL_STATUS_MRR_ACK (1 << 16) 1778f4b37ed0SZbigniew Bodek 1779f4b37ed0SZbigniew Bodek /**** pp_config register ****/ 1780f4b37ed0SZbigniew Bodek /* Bypass PP module (formality equivalent) */ 1781f4b37ed0SZbigniew Bodek #define NB_PUSH_PACKET_PP_CONFIG_FM_BYPASS (1 << 0) 1782f4b37ed0SZbigniew Bodek /* Bypass PP module */ 1783f4b37ed0SZbigniew Bodek #define NB_PUSH_PACKET_PP_CONFIG_BYPASS (1 << 1) 1784f4b37ed0SZbigniew Bodek /* Force Cleanup of entries */ 1785f4b37ed0SZbigniew Bodek #define NB_PUSH_PACKET_PP_CONFIG_CLEAR (1 << 2) 1786f4b37ed0SZbigniew Bodek /* Enable forwarding DECERR response */ 1787f4b37ed0SZbigniew Bodek #define NB_PUSH_PACKET_PP_CONFIG_DECERR_EN (1 << 3) 1788f4b37ed0SZbigniew Bodek /* Enable forwarding SLVERR response */ 1789f4b37ed0SZbigniew Bodek #define NB_PUSH_PACKET_PP_CONFIG_SLVERR_EN (1 << 4) 1790f4b37ed0SZbigniew Bodek /* Enable forwarding of data parity generation */ 1791f4b37ed0SZbigniew Bodek #define NB_PUSH_PACKET_PP_CONFIG_PAR_GEN_EN (1 << 5) 1792f4b37ed0SZbigniew Bodek /* Select channel on 8K boundaries ([15:13]) instead of 64k boundaries ([18:16]). */ 1793f4b37ed0SZbigniew Bodek #define NB_PUSH_PACKET_PP_CONFIG_SEL_8K (1 << 6) 1794f4b37ed0SZbigniew Bodek /* Forces awuser to be as configured in ext_awuser register. 1795f4b37ed0SZbigniew Bodek Not functional */ 1796f4b37ed0SZbigniew Bodek #define NB_PUSH_PACKET_PP_CONFIG_SEL_EXT_AWUSER (1 << 7) 1797f4b37ed0SZbigniew Bodek /* Enables PP channel. 1798f4b37ed0SZbigniew Bodek 1 bit per channel */ 1799f4b37ed0SZbigniew Bodek #define NB_PUSH_PACKET_PP_CONFIG_CHANNEL_ENABLE_MASK 0x00030000 1800f4b37ed0SZbigniew Bodek #define NB_PUSH_PACKET_PP_CONFIG_CHANNEL_ENABLE_SHIFT 16 1801f4b37ed0SZbigniew Bodek 1802f4b37ed0SZbigniew Bodek #define NB_PUSH_PACKET_PP_CONFIG_CHANNEL_ENABLE(i) \ 1803f4b37ed0SZbigniew Bodek (1 << (NB_PUSH_PACKET_PP_CONFIG_CHANNEL_ENABLE_SHIFT + i)) 1804f4b37ed0SZbigniew Bodek 1805f4b37ed0SZbigniew Bodek /**** pp_ext_awuser register ****/ 1806f4b37ed0SZbigniew Bodek /* Awuser to use on PP transactions 1807f4b37ed0SZbigniew Bodek Only applicable if config.sel_ext_awuser is set to 1'b1 1808f4b37ed0SZbigniew Bodek Parity bits are still generated per transaction */ 1809f4b37ed0SZbigniew Bodek #define NB_PUSH_PACKET_PP_EXT_AWUSER_AWUSER_MASK 0x03FFFFFF 1810f4b37ed0SZbigniew Bodek #define NB_PUSH_PACKET_PP_EXT_AWUSER_AWUSER_SHIFT 0 1811f4b37ed0SZbigniew Bodek 1812f4b37ed0SZbigniew Bodek /**** pp_sel_awuser register ****/ 1813*3fc36ee0SWojciech Macek /* Select whether to use addr[63:48] or PP awmisc as tgtid. 1814f4b37ed0SZbigniew Bodek Each bit if set to 1 selects the corresponding address bit. Otherwise, selects the corersponding awmis bit. */ 1815f4b37ed0SZbigniew Bodek #define NB_PUSH_PACKET_PP_SEL_AWUSER_SEL_MASK 0x0000FFFF 1816f4b37ed0SZbigniew Bodek #define NB_PUSH_PACKET_PP_SEL_AWUSER_SEL_SHIFT 0 1817f4b37ed0SZbigniew Bodek 1818f4b37ed0SZbigniew Bodek #ifdef __cplusplus 1819f4b37ed0SZbigniew Bodek } 1820f4b37ed0SZbigniew Bodek #endif 1821f4b37ed0SZbigniew Bodek 1822f4b37ed0SZbigniew Bodek #endif /* __AL_HAL_NB_REGS_H__ */ 1823f4b37ed0SZbigniew Bodek 1824f4b37ed0SZbigniew Bodek /** @} end of ... group */ 1825f4b37ed0SZbigniew Bodek 1826f4b37ed0SZbigniew Bodek 1827