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