1*4b8b8d74SJaiprakash Singh #ifndef __ODY_CSRS_PEM_H__
2*4b8b8d74SJaiprakash Singh #define __ODY_CSRS_PEM_H__
3*4b8b8d74SJaiprakash Singh /* This file is auto-generated. Do not edit */
4*4b8b8d74SJaiprakash Singh
5*4b8b8d74SJaiprakash Singh /***********************license start***********************************
6*4b8b8d74SJaiprakash Singh * Copyright (C) 2021-2026 Marvell.
7*4b8b8d74SJaiprakash Singh * SPDX-License-Identifier: BSD-3-Clause
8*4b8b8d74SJaiprakash Singh * https://spdx.org/licenses
9*4b8b8d74SJaiprakash Singh ***********************license end**************************************/
10*4b8b8d74SJaiprakash Singh
11*4b8b8d74SJaiprakash Singh
12*4b8b8d74SJaiprakash Singh /**
13*4b8b8d74SJaiprakash Singh * @file
14*4b8b8d74SJaiprakash Singh *
15*4b8b8d74SJaiprakash Singh * Configuration and status register (CSR) address and type definitions for
16*4b8b8d74SJaiprakash Singh * PEM.
17*4b8b8d74SJaiprakash Singh *
18*4b8b8d74SJaiprakash Singh * This file is auto generated. Do not edit.
19*4b8b8d74SJaiprakash Singh *
20*4b8b8d74SJaiprakash Singh */
21*4b8b8d74SJaiprakash Singh
22*4b8b8d74SJaiprakash Singh /**
23*4b8b8d74SJaiprakash Singh * Enumeration pem_bar_e
24*4b8b8d74SJaiprakash Singh *
25*4b8b8d74SJaiprakash Singh * PEM Base Address Register Enumeration
26*4b8b8d74SJaiprakash Singh * Enumerates the base address registers.
27*4b8b8d74SJaiprakash Singh */
28*4b8b8d74SJaiprakash Singh #define ODY_PEM_BAR_E_PEMX_PF_BAR0(a) (0x8e0000000000ll + 0x1000000000ll * (a))
29*4b8b8d74SJaiprakash Singh #define ODY_PEM_BAR_E_PEMX_PF_BAR0_SIZE 0x40000000ull
30*4b8b8d74SJaiprakash Singh #define ODY_PEM_BAR_E_PEMX_PF_BAR4(a) (0x8e0f00000000ll + 0x1000000000ll * (a))
31*4b8b8d74SJaiprakash Singh #define ODY_PEM_BAR_E_PEMX_PF_BAR4_SIZE 0x100000ull
32*4b8b8d74SJaiprakash Singh
33*4b8b8d74SJaiprakash Singh /**
34*4b8b8d74SJaiprakash Singh * Enumeration pem_int_vec_e
35*4b8b8d74SJaiprakash Singh *
36*4b8b8d74SJaiprakash Singh * PEM MSI-X Vector Enumeration
37*4b8b8d74SJaiprakash Singh * Enumerates the MSI-X interrupt vectors.
38*4b8b8d74SJaiprakash Singh */
39*4b8b8d74SJaiprakash Singh #define ODY_PEM_INT_VEC_E_INTA (0)
40*4b8b8d74SJaiprakash Singh #define ODY_PEM_INT_VEC_E_INTA_CLEAR (1)
41*4b8b8d74SJaiprakash Singh #define ODY_PEM_INT_VEC_E_INTB (2)
42*4b8b8d74SJaiprakash Singh #define ODY_PEM_INT_VEC_E_INTB_CLEAR (3)
43*4b8b8d74SJaiprakash Singh #define ODY_PEM_INT_VEC_E_INTC (4)
44*4b8b8d74SJaiprakash Singh #define ODY_PEM_INT_VEC_E_INTC_CLEAR (5)
45*4b8b8d74SJaiprakash Singh #define ODY_PEM_INT_VEC_E_INTD (6)
46*4b8b8d74SJaiprakash Singh #define ODY_PEM_INT_VEC_E_INTD_CLEAR (7)
47*4b8b8d74SJaiprakash Singh #define ODY_PEM_INT_VEC_E_INT_SUM (8)
48*4b8b8d74SJaiprakash Singh #define ODY_PEM_INT_VEC_E_PEMOOR_INT (0xa)
49*4b8b8d74SJaiprakash Singh #define ODY_PEM_INT_VEC_E_RST_INT (9)
50*4b8b8d74SJaiprakash Singh #define ODY_PEM_INT_VEC_E_VDMX_INT(a) (0xb + (a))
51*4b8b8d74SJaiprakash Singh
52*4b8b8d74SJaiprakash Singh /**
53*4b8b8d74SJaiprakash Singh * Enumeration pem_perf_bus_e
54*4b8b8d74SJaiprakash Singh *
55*4b8b8d74SJaiprakash Singh * PEM Performance Bus Enumeration
56*4b8b8d74SJaiprakash Singh * Enumerates the internal bus associated with performance tracking registers.
57*4b8b8d74SJaiprakash Singh */
58*4b8b8d74SJaiprakash Singh #define ODY_PEM_PERF_BUS_E_PERF_EBUS (1)
59*4b8b8d74SJaiprakash Singh #define ODY_PEM_PERF_BUS_E_PERF_NCB (0)
60*4b8b8d74SJaiprakash Singh
61*4b8b8d74SJaiprakash Singh /**
62*4b8b8d74SJaiprakash Singh * Enumeration pem_perf_tlp_type_e
63*4b8b8d74SJaiprakash Singh *
64*4b8b8d74SJaiprakash Singh * PEM Performance TLP Type Enumeration
65*4b8b8d74SJaiprakash Singh * Enumerates the TLP type associated with performance tracking registers that are by type.
66*4b8b8d74SJaiprakash Singh */
67*4b8b8d74SJaiprakash Singh #define ODY_PEM_PERF_TLP_TYPE_E_PERF_CPL (2)
68*4b8b8d74SJaiprakash Singh #define ODY_PEM_PERF_TLP_TYPE_E_PERF_NPR (0)
69*4b8b8d74SJaiprakash Singh #define ODY_PEM_PERF_TLP_TYPE_E_PERF_PR (1)
70*4b8b8d74SJaiprakash Singh
71*4b8b8d74SJaiprakash Singh /**
72*4b8b8d74SJaiprakash Singh * Enumeration pem_rst_source_e
73*4b8b8d74SJaiprakash Singh *
74*4b8b8d74SJaiprakash Singh * PEM Reset Cause Enumeration
75*4b8b8d74SJaiprakash Singh * Enumerates the reset sources for both reset domain mapping and cause of last reset,
76*4b8b8d74SJaiprakash Singh * corresponding to the bit numbers of PEM()_RST_LBOOT.
77*4b8b8d74SJaiprakash Singh */
78*4b8b8d74SJaiprakash Singh #define ODY_PEM_RST_SOURCE_E_L2 (2)
79*4b8b8d74SJaiprakash Singh #define ODY_PEM_RST_SOURCE_E_LINKDOWN (1)
80*4b8b8d74SJaiprakash Singh #define ODY_PEM_RST_SOURCE_E_PEM_PFFLR (3)
81*4b8b8d74SJaiprakash Singh #define ODY_PEM_RST_SOURCE_E_PEM_RSVD (4)
82*4b8b8d74SJaiprakash Singh #define ODY_PEM_RST_SOURCE_E_PERST_PIN (0)
83*4b8b8d74SJaiprakash Singh
84*4b8b8d74SJaiprakash Singh /**
85*4b8b8d74SJaiprakash Singh * Structure pem_ncbo_norm_memio_s
86*4b8b8d74SJaiprakash Singh *
87*4b8b8d74SJaiprakash Singh * NCB to MAC Operation Structure
88*4b8b8d74SJaiprakash Singh * Core initiated load and store operations that are initiating MAC transactions form an address
89*4b8b8d74SJaiprakash Singh * with this structure through the PEM()_REG_NORM()_ACC table. 8-bit, 16-bit, 32-bit and 64-bit
90*4b8b8d74SJaiprakash Singh * reads and writes, in addition to atomics are supported to this region.
91*4b8b8d74SJaiprakash Singh */
92*4b8b8d74SJaiprakash Singh union ody_pem_ncbo_norm_memio_s {
93*4b8b8d74SJaiprakash Singh uint64_t u;
94*4b8b8d74SJaiprakash Singh struct ody_pem_ncbo_norm_memio_s_s {
95*4b8b8d74SJaiprakash Singh uint64_t addr : 31;
96*4b8b8d74SJaiprakash Singh uint64_t region : 8;
97*4b8b8d74SJaiprakash Singh uint64_t did_hi : 5;
98*4b8b8d74SJaiprakash Singh uint64_t node : 2;
99*4b8b8d74SJaiprakash Singh uint64_t reserved_46 : 1;
100*4b8b8d74SJaiprakash Singh uint64_t io : 5;
101*4b8b8d74SJaiprakash Singh uint64_t reserved_52_63 : 12;
102*4b8b8d74SJaiprakash Singh } s;
103*4b8b8d74SJaiprakash Singh /* struct ody_pem_ncbo_norm_memio_s_s cn; */
104*4b8b8d74SJaiprakash Singh };
105*4b8b8d74SJaiprakash Singh
106*4b8b8d74SJaiprakash Singh /**
107*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_ats_diag_status
108*4b8b8d74SJaiprakash Singh *
109*4b8b8d74SJaiprakash Singh * PEM ATS Diagnostic Status Register
110*4b8b8d74SJaiprakash Singh * This register contains selection control for the ATS diagnostic bus.
111*4b8b8d74SJaiprakash Singh */
112*4b8b8d74SJaiprakash Singh union ody_pemx_ats_diag_status {
113*4b8b8d74SJaiprakash Singh uint64_t u;
114*4b8b8d74SJaiprakash Singh struct ody_pemx_ats_diag_status_s {
115*4b8b8d74SJaiprakash Singh uint64_t unexpected_dti_sync : 1;
116*4b8b8d74SJaiprakash Singh uint64_t invalidate_response_timeout : 1;
117*4b8b8d74SJaiprakash Singh uint64_t unmatched_translation_id : 1;
118*4b8b8d74SJaiprakash Singh uint64_t invalid_completion_count : 1;
119*4b8b8d74SJaiprakash Singh uint64_t unmatched_itag : 1;
120*4b8b8d74SJaiprakash Singh uint64_t reserved_5 : 1;
121*4b8b8d74SJaiprakash Singh uint64_t malformed_prg_rsp : 1;
122*4b8b8d74SJaiprakash Singh uint64_t malformed_ats_completion : 1;
123*4b8b8d74SJaiprakash Singh uint64_t malformed_ats_req : 1;
124*4b8b8d74SJaiprakash Singh uint64_t dropped_invalidate : 1;
125*4b8b8d74SJaiprakash Singh uint64_t reserved_10_63 : 54;
126*4b8b8d74SJaiprakash Singh } s;
127*4b8b8d74SJaiprakash Singh /* struct ody_pemx_ats_diag_status_s cn; */
128*4b8b8d74SJaiprakash Singh };
129*4b8b8d74SJaiprakash Singh typedef union ody_pemx_ats_diag_status ody_pemx_ats_diag_status_t;
130*4b8b8d74SJaiprakash Singh
131*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_ATS_DIAG_STATUS(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_ATS_DIAG_STATUS(uint64_t a)132*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_ATS_DIAG_STATUS(uint64_t a)
133*4b8b8d74SJaiprakash Singh {
134*4b8b8d74SJaiprakash Singh if (a <= 15)
135*4b8b8d74SJaiprakash Singh return 0x8e0000007d08ll + 0x1000000000ll * ((a) & 0xf);
136*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_ATS_DIAG_STATUS", 1, a, 0, 0, 0, 0, 0);
137*4b8b8d74SJaiprakash Singh }
138*4b8b8d74SJaiprakash Singh
139*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_ATS_DIAG_STATUS(a) ody_pemx_ats_diag_status_t
140*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_ATS_DIAG_STATUS(a) CSR_TYPE_NCB
141*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_ATS_DIAG_STATUS(a) "PEMX_ATS_DIAG_STATUS"
142*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_ATS_DIAG_STATUS(a) 0x0 /* PF_BAR0 */
143*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_ATS_DIAG_STATUS(a) (a)
144*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_ATS_DIAG_STATUS(a) (a), -1, -1, -1
145*4b8b8d74SJaiprakash Singh
146*4b8b8d74SJaiprakash Singh /**
147*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_ats_inv_control
148*4b8b8d74SJaiprakash Singh *
149*4b8b8d74SJaiprakash Singh * PEM ATS Invalidation Control Register
150*4b8b8d74SJaiprakash Singh */
151*4b8b8d74SJaiprakash Singh union ody_pemx_ats_inv_control {
152*4b8b8d74SJaiprakash Singh uint64_t u;
153*4b8b8d74SJaiprakash Singh struct ody_pemx_ats_inv_control_s {
154*4b8b8d74SJaiprakash Singh uint64_t limit : 6;
155*4b8b8d74SJaiprakash Singh uint64_t outstanding_requests : 6;
156*4b8b8d74SJaiprakash Singh uint64_t always_forward : 1;
157*4b8b8d74SJaiprakash Singh uint64_t reserved_13_63 : 51;
158*4b8b8d74SJaiprakash Singh } s;
159*4b8b8d74SJaiprakash Singh /* struct ody_pemx_ats_inv_control_s cn; */
160*4b8b8d74SJaiprakash Singh };
161*4b8b8d74SJaiprakash Singh typedef union ody_pemx_ats_inv_control ody_pemx_ats_inv_control_t;
162*4b8b8d74SJaiprakash Singh
163*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_ATS_INV_CONTROL(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_ATS_INV_CONTROL(uint64_t a)164*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_ATS_INV_CONTROL(uint64_t a)
165*4b8b8d74SJaiprakash Singh {
166*4b8b8d74SJaiprakash Singh if (a <= 15)
167*4b8b8d74SJaiprakash Singh return 0x8e0000007d48ll + 0x1000000000ll * ((a) & 0xf);
168*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_ATS_INV_CONTROL", 1, a, 0, 0, 0, 0, 0);
169*4b8b8d74SJaiprakash Singh }
170*4b8b8d74SJaiprakash Singh
171*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_ATS_INV_CONTROL(a) ody_pemx_ats_inv_control_t
172*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_ATS_INV_CONTROL(a) CSR_TYPE_NCB
173*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_ATS_INV_CONTROL(a) "PEMX_ATS_INV_CONTROL"
174*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_ATS_INV_CONTROL(a) 0x0 /* PF_BAR0 */
175*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_ATS_INV_CONTROL(a) (a)
176*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_ATS_INV_CONTROL(a) (a), -1, -1, -1
177*4b8b8d74SJaiprakash Singh
178*4b8b8d74SJaiprakash Singh /**
179*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_ats_inv_latency_pc
180*4b8b8d74SJaiprakash Singh *
181*4b8b8d74SJaiprakash Singh * PEM ATS Invalidtion Latency Counter Register
182*4b8b8d74SJaiprakash Singh */
183*4b8b8d74SJaiprakash Singh union ody_pemx_ats_inv_latency_pc {
184*4b8b8d74SJaiprakash Singh uint64_t u;
185*4b8b8d74SJaiprakash Singh struct ody_pemx_ats_inv_latency_pc_s {
186*4b8b8d74SJaiprakash Singh uint64_t count : 64;
187*4b8b8d74SJaiprakash Singh } s;
188*4b8b8d74SJaiprakash Singh /* struct ody_pemx_ats_inv_latency_pc_s cn; */
189*4b8b8d74SJaiprakash Singh };
190*4b8b8d74SJaiprakash Singh typedef union ody_pemx_ats_inv_latency_pc ody_pemx_ats_inv_latency_pc_t;
191*4b8b8d74SJaiprakash Singh
192*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_ATS_INV_LATENCY_PC(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_ATS_INV_LATENCY_PC(uint64_t a)193*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_ATS_INV_LATENCY_PC(uint64_t a)
194*4b8b8d74SJaiprakash Singh {
195*4b8b8d74SJaiprakash Singh if (a <= 15)
196*4b8b8d74SJaiprakash Singh return 0x8e0000007d40ll + 0x1000000000ll * ((a) & 0xf);
197*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_ATS_INV_LATENCY_PC", 1, a, 0, 0, 0, 0, 0);
198*4b8b8d74SJaiprakash Singh }
199*4b8b8d74SJaiprakash Singh
200*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_ATS_INV_LATENCY_PC(a) ody_pemx_ats_inv_latency_pc_t
201*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_ATS_INV_LATENCY_PC(a) CSR_TYPE_NCB
202*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_ATS_INV_LATENCY_PC(a) "PEMX_ATS_INV_LATENCY_PC"
203*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_ATS_INV_LATENCY_PC(a) 0x0 /* PF_BAR0 */
204*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_ATS_INV_LATENCY_PC(a) (a)
205*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_ATS_INV_LATENCY_PC(a) (a), -1, -1, -1
206*4b8b8d74SJaiprakash Singh
207*4b8b8d74SJaiprakash Singh /**
208*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_ats_inv_pc
209*4b8b8d74SJaiprakash Singh *
210*4b8b8d74SJaiprakash Singh * PEM ATS Invalidation Performance Counter Register
211*4b8b8d74SJaiprakash Singh */
212*4b8b8d74SJaiprakash Singh union ody_pemx_ats_inv_pc {
213*4b8b8d74SJaiprakash Singh uint64_t u;
214*4b8b8d74SJaiprakash Singh struct ody_pemx_ats_inv_pc_s {
215*4b8b8d74SJaiprakash Singh uint64_t count : 64;
216*4b8b8d74SJaiprakash Singh } s;
217*4b8b8d74SJaiprakash Singh /* struct ody_pemx_ats_inv_pc_s cn; */
218*4b8b8d74SJaiprakash Singh };
219*4b8b8d74SJaiprakash Singh typedef union ody_pemx_ats_inv_pc ody_pemx_ats_inv_pc_t;
220*4b8b8d74SJaiprakash Singh
221*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_ATS_INV_PC(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_ATS_INV_PC(uint64_t a)222*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_ATS_INV_PC(uint64_t a)
223*4b8b8d74SJaiprakash Singh {
224*4b8b8d74SJaiprakash Singh if (a <= 15)
225*4b8b8d74SJaiprakash Singh return 0x8e0000007d38ll + 0x1000000000ll * ((a) & 0xf);
226*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_ATS_INV_PC", 1, a, 0, 0, 0, 0, 0);
227*4b8b8d74SJaiprakash Singh }
228*4b8b8d74SJaiprakash Singh
229*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_ATS_INV_PC(a) ody_pemx_ats_inv_pc_t
230*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_ATS_INV_PC(a) CSR_TYPE_NCB
231*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_ATS_INV_PC(a) "PEMX_ATS_INV_PC"
232*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_ATS_INV_PC(a) 0x0 /* PF_BAR0 */
233*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_ATS_INV_PC(a) (a)
234*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_ATS_INV_PC(a) (a), -1, -1, -1
235*4b8b8d74SJaiprakash Singh
236*4b8b8d74SJaiprakash Singh /**
237*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_ats_inv_sync
238*4b8b8d74SJaiprakash Singh *
239*4b8b8d74SJaiprakash Singh * PEM ATS Invalidation Sync Register
240*4b8b8d74SJaiprakash Singh * This register is used by PEM ATS on an ATC invalidation to synchronize outstanding
241*4b8b8d74SJaiprakash Singh * posted transactions using that translation.
242*4b8b8d74SJaiprakash Singh */
243*4b8b8d74SJaiprakash Singh union ody_pemx_ats_inv_sync {
244*4b8b8d74SJaiprakash Singh uint64_t u;
245*4b8b8d74SJaiprakash Singh struct ody_pemx_ats_inv_sync_s {
246*4b8b8d74SJaiprakash Singh uint64_t sync : 1;
247*4b8b8d74SJaiprakash Singh uint64_t reserved_1_63 : 63;
248*4b8b8d74SJaiprakash Singh } s;
249*4b8b8d74SJaiprakash Singh /* struct ody_pemx_ats_inv_sync_s cn; */
250*4b8b8d74SJaiprakash Singh };
251*4b8b8d74SJaiprakash Singh typedef union ody_pemx_ats_inv_sync ody_pemx_ats_inv_sync_t;
252*4b8b8d74SJaiprakash Singh
253*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_ATS_INV_SYNC(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_ATS_INV_SYNC(uint64_t a)254*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_ATS_INV_SYNC(uint64_t a)
255*4b8b8d74SJaiprakash Singh {
256*4b8b8d74SJaiprakash Singh if (a <= 15)
257*4b8b8d74SJaiprakash Singh return 0x8e0000007d00ll + 0x1000000000ll * ((a) & 0xf);
258*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_ATS_INV_SYNC", 1, a, 0, 0, 0, 0, 0);
259*4b8b8d74SJaiprakash Singh }
260*4b8b8d74SJaiprakash Singh
261*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_ATS_INV_SYNC(a) ody_pemx_ats_inv_sync_t
262*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_ATS_INV_SYNC(a) CSR_TYPE_NCB
263*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_ATS_INV_SYNC(a) "PEMX_ATS_INV_SYNC"
264*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_ATS_INV_SYNC(a) 0x0 /* PF_BAR0 */
265*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_ATS_INV_SYNC(a) (a)
266*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_ATS_INV_SYNC(a) (a), -1, -1, -1
267*4b8b8d74SJaiprakash Singh
268*4b8b8d74SJaiprakash Singh /**
269*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_ats_pri_latency_pc
270*4b8b8d74SJaiprakash Singh *
271*4b8b8d74SJaiprakash Singh * PEM ATS Page Request Latency Counter Register
272*4b8b8d74SJaiprakash Singh */
273*4b8b8d74SJaiprakash Singh union ody_pemx_ats_pri_latency_pc {
274*4b8b8d74SJaiprakash Singh uint64_t u;
275*4b8b8d74SJaiprakash Singh struct ody_pemx_ats_pri_latency_pc_s {
276*4b8b8d74SJaiprakash Singh uint64_t count : 64;
277*4b8b8d74SJaiprakash Singh } s;
278*4b8b8d74SJaiprakash Singh /* struct ody_pemx_ats_pri_latency_pc_s cn; */
279*4b8b8d74SJaiprakash Singh };
280*4b8b8d74SJaiprakash Singh typedef union ody_pemx_ats_pri_latency_pc ody_pemx_ats_pri_latency_pc_t;
281*4b8b8d74SJaiprakash Singh
282*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_ATS_PRI_LATENCY_PC(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_ATS_PRI_LATENCY_PC(uint64_t a)283*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_ATS_PRI_LATENCY_PC(uint64_t a)
284*4b8b8d74SJaiprakash Singh {
285*4b8b8d74SJaiprakash Singh if (a <= 15)
286*4b8b8d74SJaiprakash Singh return 0x8e0000007d30ll + 0x1000000000ll * ((a) & 0xf);
287*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_ATS_PRI_LATENCY_PC", 1, a, 0, 0, 0, 0, 0);
288*4b8b8d74SJaiprakash Singh }
289*4b8b8d74SJaiprakash Singh
290*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_ATS_PRI_LATENCY_PC(a) ody_pemx_ats_pri_latency_pc_t
291*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_ATS_PRI_LATENCY_PC(a) CSR_TYPE_NCB
292*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_ATS_PRI_LATENCY_PC(a) "PEMX_ATS_PRI_LATENCY_PC"
293*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_ATS_PRI_LATENCY_PC(a) 0x0 /* PF_BAR0 */
294*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_ATS_PRI_LATENCY_PC(a) (a)
295*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_ATS_PRI_LATENCY_PC(a) (a), -1, -1, -1
296*4b8b8d74SJaiprakash Singh
297*4b8b8d74SJaiprakash Singh /**
298*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_ats_pri_pc
299*4b8b8d74SJaiprakash Singh *
300*4b8b8d74SJaiprakash Singh * PEM ATS Page Request Performance Counter Register
301*4b8b8d74SJaiprakash Singh */
302*4b8b8d74SJaiprakash Singh union ody_pemx_ats_pri_pc {
303*4b8b8d74SJaiprakash Singh uint64_t u;
304*4b8b8d74SJaiprakash Singh struct ody_pemx_ats_pri_pc_s {
305*4b8b8d74SJaiprakash Singh uint64_t count : 64;
306*4b8b8d74SJaiprakash Singh } s;
307*4b8b8d74SJaiprakash Singh /* struct ody_pemx_ats_pri_pc_s cn; */
308*4b8b8d74SJaiprakash Singh };
309*4b8b8d74SJaiprakash Singh typedef union ody_pemx_ats_pri_pc ody_pemx_ats_pri_pc_t;
310*4b8b8d74SJaiprakash Singh
311*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_ATS_PRI_PC(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_ATS_PRI_PC(uint64_t a)312*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_ATS_PRI_PC(uint64_t a)
313*4b8b8d74SJaiprakash Singh {
314*4b8b8d74SJaiprakash Singh if (a <= 15)
315*4b8b8d74SJaiprakash Singh return 0x8e0000007d28ll + 0x1000000000ll * ((a) & 0xf);
316*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_ATS_PRI_PC", 1, a, 0, 0, 0, 0, 0);
317*4b8b8d74SJaiprakash Singh }
318*4b8b8d74SJaiprakash Singh
319*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_ATS_PRI_PC(a) ody_pemx_ats_pri_pc_t
320*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_ATS_PRI_PC(a) CSR_TYPE_NCB
321*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_ATS_PRI_PC(a) "PEMX_ATS_PRI_PC"
322*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_ATS_PRI_PC(a) 0x0 /* PF_BAR0 */
323*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_ATS_PRI_PC(a) (a)
324*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_ATS_PRI_PC(a) (a), -1, -1, -1
325*4b8b8d74SJaiprakash Singh
326*4b8b8d74SJaiprakash Singh /**
327*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_ats_tid_sts#
328*4b8b8d74SJaiprakash Singh *
329*4b8b8d74SJaiprakash Singh * PEM ATS Translation ID Status Register
330*4b8b8d74SJaiprakash Singh */
331*4b8b8d74SJaiprakash Singh union ody_pemx_ats_tid_stsx {
332*4b8b8d74SJaiprakash Singh uint64_t u;
333*4b8b8d74SJaiprakash Singh struct ody_pemx_ats_tid_stsx_s {
334*4b8b8d74SJaiprakash Singh uint64_t busy : 64;
335*4b8b8d74SJaiprakash Singh } s;
336*4b8b8d74SJaiprakash Singh /* struct ody_pemx_ats_tid_stsx_s cn; */
337*4b8b8d74SJaiprakash Singh };
338*4b8b8d74SJaiprakash Singh typedef union ody_pemx_ats_tid_stsx ody_pemx_ats_tid_stsx_t;
339*4b8b8d74SJaiprakash Singh
340*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_ATS_TID_STSX(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_PEMX_ATS_TID_STSX(uint64_t a,uint64_t b)341*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_ATS_TID_STSX(uint64_t a, uint64_t b)
342*4b8b8d74SJaiprakash Singh {
343*4b8b8d74SJaiprakash Singh if ((a <= 15) && (b <= 3))
344*4b8b8d74SJaiprakash Singh return 0x8e0000007d60ll + 0x1000000000ll * ((a) & 0xf) + 8ll * ((b) & 0x3);
345*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_ATS_TID_STSX", 2, a, b, 0, 0, 0, 0);
346*4b8b8d74SJaiprakash Singh }
347*4b8b8d74SJaiprakash Singh
348*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_ATS_TID_STSX(a, b) ody_pemx_ats_tid_stsx_t
349*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_ATS_TID_STSX(a, b) CSR_TYPE_NCB
350*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_ATS_TID_STSX(a, b) "PEMX_ATS_TID_STSX"
351*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_ATS_TID_STSX(a, b) 0x0 /* PF_BAR0 */
352*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_ATS_TID_STSX(a, b) (a)
353*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_ATS_TID_STSX(a, b) (a), (b), -1, -1
354*4b8b8d74SJaiprakash Singh
355*4b8b8d74SJaiprakash Singh /**
356*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_ats_tlp_credits
357*4b8b8d74SJaiprakash Singh *
358*4b8b8d74SJaiprakash Singh * PEM ATS Inbound TLP Credits Register
359*4b8b8d74SJaiprakash Singh * This register specifies the number of credits for use in moving TLPs. When this register is
360*4b8b8d74SJaiprakash Singh * written, the credit values are reset to the register value. This register is for diagnostic
361*4b8b8d74SJaiprakash Singh * use only, and should only be written when PEM()_CTL_STATUS[LNK_ENB] is clear.
362*4b8b8d74SJaiprakash Singh *
363*4b8b8d74SJaiprakash Singh * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
364*4b8b8d74SJaiprakash Singh *
365*4b8b8d74SJaiprakash Singh * This register is reset on MAC reset.
366*4b8b8d74SJaiprakash Singh */
367*4b8b8d74SJaiprakash Singh union ody_pemx_ats_tlp_credits {
368*4b8b8d74SJaiprakash Singh uint64_t u;
369*4b8b8d74SJaiprakash Singh struct ody_pemx_ats_tlp_credits_s {
370*4b8b8d74SJaiprakash Singh uint64_t ats_p : 11;
371*4b8b8d74SJaiprakash Singh uint64_t ats_np : 10;
372*4b8b8d74SJaiprakash Singh uint64_t reserved_21_63 : 43;
373*4b8b8d74SJaiprakash Singh } s;
374*4b8b8d74SJaiprakash Singh /* struct ody_pemx_ats_tlp_credits_s cn; */
375*4b8b8d74SJaiprakash Singh };
376*4b8b8d74SJaiprakash Singh typedef union ody_pemx_ats_tlp_credits ody_pemx_ats_tlp_credits_t;
377*4b8b8d74SJaiprakash Singh
378*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_ATS_TLP_CREDITS(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_ATS_TLP_CREDITS(uint64_t a)379*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_ATS_TLP_CREDITS(uint64_t a)
380*4b8b8d74SJaiprakash Singh {
381*4b8b8d74SJaiprakash Singh if (a <= 15)
382*4b8b8d74SJaiprakash Singh return 0x8e0000000090ll + 0x1000000000ll * ((a) & 0xf);
383*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_ATS_TLP_CREDITS", 1, a, 0, 0, 0, 0, 0);
384*4b8b8d74SJaiprakash Singh }
385*4b8b8d74SJaiprakash Singh
386*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_ATS_TLP_CREDITS(a) ody_pemx_ats_tlp_credits_t
387*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_ATS_TLP_CREDITS(a) CSR_TYPE_NCB
388*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_ATS_TLP_CREDITS(a) "PEMX_ATS_TLP_CREDITS"
389*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_ATS_TLP_CREDITS(a) 0x0 /* PF_BAR0 */
390*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_ATS_TLP_CREDITS(a) (a)
391*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_ATS_TLP_CREDITS(a) (a), -1, -1, -1
392*4b8b8d74SJaiprakash Singh
393*4b8b8d74SJaiprakash Singh /**
394*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_ats_trans_latency_pc
395*4b8b8d74SJaiprakash Singh *
396*4b8b8d74SJaiprakash Singh * PEM ATS Translation Latency Counter Register
397*4b8b8d74SJaiprakash Singh */
398*4b8b8d74SJaiprakash Singh union ody_pemx_ats_trans_latency_pc {
399*4b8b8d74SJaiprakash Singh uint64_t u;
400*4b8b8d74SJaiprakash Singh struct ody_pemx_ats_trans_latency_pc_s {
401*4b8b8d74SJaiprakash Singh uint64_t count : 64;
402*4b8b8d74SJaiprakash Singh } s;
403*4b8b8d74SJaiprakash Singh /* struct ody_pemx_ats_trans_latency_pc_s cn; */
404*4b8b8d74SJaiprakash Singh };
405*4b8b8d74SJaiprakash Singh typedef union ody_pemx_ats_trans_latency_pc ody_pemx_ats_trans_latency_pc_t;
406*4b8b8d74SJaiprakash Singh
407*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_ATS_TRANS_LATENCY_PC(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_ATS_TRANS_LATENCY_PC(uint64_t a)408*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_ATS_TRANS_LATENCY_PC(uint64_t a)
409*4b8b8d74SJaiprakash Singh {
410*4b8b8d74SJaiprakash Singh if (a <= 15)
411*4b8b8d74SJaiprakash Singh return 0x8e0000007d20ll + 0x1000000000ll * ((a) & 0xf);
412*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_ATS_TRANS_LATENCY_PC", 1, a, 0, 0, 0, 0, 0);
413*4b8b8d74SJaiprakash Singh }
414*4b8b8d74SJaiprakash Singh
415*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_ATS_TRANS_LATENCY_PC(a) ody_pemx_ats_trans_latency_pc_t
416*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_ATS_TRANS_LATENCY_PC(a) CSR_TYPE_NCB
417*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_ATS_TRANS_LATENCY_PC(a) "PEMX_ATS_TRANS_LATENCY_PC"
418*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_ATS_TRANS_LATENCY_PC(a) 0x0 /* PF_BAR0 */
419*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_ATS_TRANS_LATENCY_PC(a) (a)
420*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_ATS_TRANS_LATENCY_PC(a) (a), -1, -1, -1
421*4b8b8d74SJaiprakash Singh
422*4b8b8d74SJaiprakash Singh /**
423*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_ats_trans_pc
424*4b8b8d74SJaiprakash Singh *
425*4b8b8d74SJaiprakash Singh * PEM ATS Translation Performance Counter Register
426*4b8b8d74SJaiprakash Singh */
427*4b8b8d74SJaiprakash Singh union ody_pemx_ats_trans_pc {
428*4b8b8d74SJaiprakash Singh uint64_t u;
429*4b8b8d74SJaiprakash Singh struct ody_pemx_ats_trans_pc_s {
430*4b8b8d74SJaiprakash Singh uint64_t count : 64;
431*4b8b8d74SJaiprakash Singh } s;
432*4b8b8d74SJaiprakash Singh /* struct ody_pemx_ats_trans_pc_s cn; */
433*4b8b8d74SJaiprakash Singh };
434*4b8b8d74SJaiprakash Singh typedef union ody_pemx_ats_trans_pc ody_pemx_ats_trans_pc_t;
435*4b8b8d74SJaiprakash Singh
436*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_ATS_TRANS_PC(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_ATS_TRANS_PC(uint64_t a)437*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_ATS_TRANS_PC(uint64_t a)
438*4b8b8d74SJaiprakash Singh {
439*4b8b8d74SJaiprakash Singh if (a <= 15)
440*4b8b8d74SJaiprakash Singh return 0x8e0000007d18ll + 0x1000000000ll * ((a) & 0xf);
441*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_ATS_TRANS_PC", 1, a, 0, 0, 0, 0, 0);
442*4b8b8d74SJaiprakash Singh }
443*4b8b8d74SJaiprakash Singh
444*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_ATS_TRANS_PC(a) ody_pemx_ats_trans_pc_t
445*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_ATS_TRANS_PC(a) CSR_TYPE_NCB
446*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_ATS_TRANS_PC(a) "PEMX_ATS_TRANS_PC"
447*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_ATS_TRANS_PC(a) 0x0 /* PF_BAR0 */
448*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_ATS_TRANS_PC(a) (a)
449*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_ATS_TRANS_PC(a) (a), -1, -1, -1
450*4b8b8d74SJaiprakash Singh
451*4b8b8d74SJaiprakash Singh /**
452*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_bar2_mask
453*4b8b8d74SJaiprakash Singh *
454*4b8b8d74SJaiprakash Singh * PEM BAR2 Mask Register
455*4b8b8d74SJaiprakash Singh * This register contains the mask pattern that is ANDed with the address from the PCIe core for
456*4b8b8d74SJaiprakash Singh * inbound PF BAR2 hits in either RC or EP mode. This mask is only applied if
457*4b8b8d74SJaiprakash Singh * the address hits in PEM()_P2N_BAR2_START / PEM()_BAR_CTL[BAR2_SIZ] registers.
458*4b8b8d74SJaiprakash Singh *
459*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
460*4b8b8d74SJaiprakash Singh *
461*4b8b8d74SJaiprakash Singh * This register is reset on core domain reset.
462*4b8b8d74SJaiprakash Singh */
463*4b8b8d74SJaiprakash Singh union ody_pemx_bar2_mask {
464*4b8b8d74SJaiprakash Singh uint64_t u;
465*4b8b8d74SJaiprakash Singh struct ody_pemx_bar2_mask_s {
466*4b8b8d74SJaiprakash Singh uint64_t reserved_0_3 : 4;
467*4b8b8d74SJaiprakash Singh uint64_t mask : 49;
468*4b8b8d74SJaiprakash Singh uint64_t reserved_53_63 : 11;
469*4b8b8d74SJaiprakash Singh } s;
470*4b8b8d74SJaiprakash Singh /* struct ody_pemx_bar2_mask_s cn; */
471*4b8b8d74SJaiprakash Singh };
472*4b8b8d74SJaiprakash Singh typedef union ody_pemx_bar2_mask ody_pemx_bar2_mask_t;
473*4b8b8d74SJaiprakash Singh
474*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_BAR2_MASK(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_BAR2_MASK(uint64_t a)475*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_BAR2_MASK(uint64_t a)
476*4b8b8d74SJaiprakash Singh {
477*4b8b8d74SJaiprakash Singh if (a <= 15)
478*4b8b8d74SJaiprakash Singh return 0x8e0000000048ll + 0x1000000000ll * ((a) & 0xf);
479*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_BAR2_MASK", 1, a, 0, 0, 0, 0, 0);
480*4b8b8d74SJaiprakash Singh }
481*4b8b8d74SJaiprakash Singh
482*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_BAR2_MASK(a) ody_pemx_bar2_mask_t
483*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_BAR2_MASK(a) CSR_TYPE_NCB
484*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_BAR2_MASK(a) "PEMX_BAR2_MASK"
485*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_BAR2_MASK(a) 0x0 /* PF_BAR0 */
486*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_BAR2_MASK(a) (a)
487*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_BAR2_MASK(a) (a), -1, -1, -1
488*4b8b8d74SJaiprakash Singh
489*4b8b8d74SJaiprakash Singh /**
490*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_bar4_index#
491*4b8b8d74SJaiprakash Singh *
492*4b8b8d74SJaiprakash Singh * PEM BAR4 Index 0-15 Register
493*4b8b8d74SJaiprakash Singh * This register contains the address index and control bits for access to memory ranges of BAR4.
494*4b8b8d74SJaiprakash Singh * The index is built from the PCI inbound address \<25:22\>.
495*4b8b8d74SJaiprakash Singh *
496*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
497*4b8b8d74SJaiprakash Singh *
498*4b8b8d74SJaiprakash Singh * This register is reset on core domain reset.
499*4b8b8d74SJaiprakash Singh */
500*4b8b8d74SJaiprakash Singh union ody_pemx_bar4_indexx {
501*4b8b8d74SJaiprakash Singh uint64_t u;
502*4b8b8d74SJaiprakash Singh struct ody_pemx_bar4_indexx_s {
503*4b8b8d74SJaiprakash Singh uint64_t addr_v : 1;
504*4b8b8d74SJaiprakash Singh uint64_t reserved_1_2 : 2;
505*4b8b8d74SJaiprakash Singh uint64_t ca : 1;
506*4b8b8d74SJaiprakash Singh uint64_t addr_idx : 31;
507*4b8b8d74SJaiprakash Singh uint64_t reserved_35_63 : 29;
508*4b8b8d74SJaiprakash Singh } s;
509*4b8b8d74SJaiprakash Singh /* struct ody_pemx_bar4_indexx_s cn; */
510*4b8b8d74SJaiprakash Singh };
511*4b8b8d74SJaiprakash Singh typedef union ody_pemx_bar4_indexx ody_pemx_bar4_indexx_t;
512*4b8b8d74SJaiprakash Singh
513*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_BAR4_INDEXX(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_PEMX_BAR4_INDEXX(uint64_t a,uint64_t b)514*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_BAR4_INDEXX(uint64_t a, uint64_t b)
515*4b8b8d74SJaiprakash Singh {
516*4b8b8d74SJaiprakash Singh if ((a <= 15) && (b <= 15))
517*4b8b8d74SJaiprakash Singh return 0x8e0000000700ll + 0x1000000000ll * ((a) & 0xf) + 8ll * ((b) & 0xf);
518*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_BAR4_INDEXX", 2, a, b, 0, 0, 0, 0);
519*4b8b8d74SJaiprakash Singh }
520*4b8b8d74SJaiprakash Singh
521*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_BAR4_INDEXX(a, b) ody_pemx_bar4_indexx_t
522*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_BAR4_INDEXX(a, b) CSR_TYPE_NCB
523*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_BAR4_INDEXX(a, b) "PEMX_BAR4_INDEXX"
524*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_BAR4_INDEXX(a, b) 0x0 /* PF_BAR0 */
525*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_BAR4_INDEXX(a, b) (a)
526*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_BAR4_INDEXX(a, b) (a), (b), -1, -1
527*4b8b8d74SJaiprakash Singh
528*4b8b8d74SJaiprakash Singh /**
529*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_bar_ctl
530*4b8b8d74SJaiprakash Singh *
531*4b8b8d74SJaiprakash Singh * PEM BAR Control Register
532*4b8b8d74SJaiprakash Singh * This register contains control for BAR accesses. This control always
533*4b8b8d74SJaiprakash Singh * applies to memory accesses targeting the NCBI bus. Some of the fields also
534*4b8b8d74SJaiprakash Singh * apply to accesses targeting EBUS in RC mode only, see the individual field
535*4b8b8d74SJaiprakash Singh * descriptions for more detail.
536*4b8b8d74SJaiprakash Singh *
537*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
538*4b8b8d74SJaiprakash Singh *
539*4b8b8d74SJaiprakash Singh * This register is reset on core domain reset.
540*4b8b8d74SJaiprakash Singh */
541*4b8b8d74SJaiprakash Singh union ody_pemx_bar_ctl {
542*4b8b8d74SJaiprakash Singh uint64_t u;
543*4b8b8d74SJaiprakash Singh struct ody_pemx_bar_ctl_s {
544*4b8b8d74SJaiprakash Singh uint64_t bar2_cax : 1;
545*4b8b8d74SJaiprakash Singh uint64_t reserved_1_2 : 2;
546*4b8b8d74SJaiprakash Singh uint64_t bar2_enb : 1;
547*4b8b8d74SJaiprakash Singh uint64_t bar4_siz : 3;
548*4b8b8d74SJaiprakash Singh uint64_t bar2_siz : 6;
549*4b8b8d74SJaiprakash Singh uint64_t bar2_cbit : 6;
550*4b8b8d74SJaiprakash Singh uint64_t reserved_19_24 : 6;
551*4b8b8d74SJaiprakash Singh uint64_t bar0_enb : 1;
552*4b8b8d74SJaiprakash Singh uint64_t bar0_siz : 5;
553*4b8b8d74SJaiprakash Singh uint64_t bar4_enb : 1;
554*4b8b8d74SJaiprakash Singh uint64_t at_enb : 1;
555*4b8b8d74SJaiprakash Singh uint64_t reserved_33_34 : 2;
556*4b8b8d74SJaiprakash Singh uint64_t vf_bar0_enb : 1;
557*4b8b8d74SJaiprakash Singh uint64_t stream_bits : 5;
558*4b8b8d74SJaiprakash Singh uint64_t reserved_41_63 : 23;
559*4b8b8d74SJaiprakash Singh } s;
560*4b8b8d74SJaiprakash Singh /* struct ody_pemx_bar_ctl_s cn; */
561*4b8b8d74SJaiprakash Singh };
562*4b8b8d74SJaiprakash Singh typedef union ody_pemx_bar_ctl ody_pemx_bar_ctl_t;
563*4b8b8d74SJaiprakash Singh
564*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_BAR_CTL(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_BAR_CTL(uint64_t a)565*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_BAR_CTL(uint64_t a)
566*4b8b8d74SJaiprakash Singh {
567*4b8b8d74SJaiprakash Singh if (a <= 15)
568*4b8b8d74SJaiprakash Singh return 0x8e0000000168ll + 0x1000000000ll * ((a) & 0xf);
569*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_BAR_CTL", 1, a, 0, 0, 0, 0, 0);
570*4b8b8d74SJaiprakash Singh }
571*4b8b8d74SJaiprakash Singh
572*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_BAR_CTL(a) ody_pemx_bar_ctl_t
573*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_BAR_CTL(a) CSR_TYPE_NCB
574*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_BAR_CTL(a) "PEMX_BAR_CTL"
575*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_BAR_CTL(a) 0x0 /* PF_BAR0 */
576*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_BAR_CTL(a) (a)
577*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_BAR_CTL(a) (a), -1, -1, -1
578*4b8b8d74SJaiprakash Singh
579*4b8b8d74SJaiprakash Singh /**
580*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_cfg
581*4b8b8d74SJaiprakash Singh *
582*4b8b8d74SJaiprakash Singh * PEM Application Configuration Register
583*4b8b8d74SJaiprakash Singh * This register configures the PCIe application.
584*4b8b8d74SJaiprakash Singh *
585*4b8b8d74SJaiprakash Singh * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
586*4b8b8d74SJaiprakash Singh *
587*4b8b8d74SJaiprakash Singh * This register is reset on cold reset.
588*4b8b8d74SJaiprakash Singh */
589*4b8b8d74SJaiprakash Singh union ody_pemx_cfg {
590*4b8b8d74SJaiprakash Singh uint64_t u;
591*4b8b8d74SJaiprakash Singh struct ody_pemx_cfg_s {
592*4b8b8d74SJaiprakash Singh uint64_t hostmd : 1;
593*4b8b8d74SJaiprakash Singh uint64_t lanes : 3;
594*4b8b8d74SJaiprakash Singh uint64_t pipe : 2;
595*4b8b8d74SJaiprakash Singh uint64_t reserved_6_7 : 2;
596*4b8b8d74SJaiprakash Singh uint64_t auto_dp_clr : 1;
597*4b8b8d74SJaiprakash Singh uint64_t reserved_9_63 : 55;
598*4b8b8d74SJaiprakash Singh } s;
599*4b8b8d74SJaiprakash Singh /* struct ody_pemx_cfg_s cn; */
600*4b8b8d74SJaiprakash Singh };
601*4b8b8d74SJaiprakash Singh typedef union ody_pemx_cfg ody_pemx_cfg_t;
602*4b8b8d74SJaiprakash Singh
603*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_CFG(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_CFG(uint64_t a)604*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_CFG(uint64_t a)
605*4b8b8d74SJaiprakash Singh {
606*4b8b8d74SJaiprakash Singh if (a <= 15)
607*4b8b8d74SJaiprakash Singh return 0x8e00000000d8ll + 0x1000000000ll * ((a) & 0xf);
608*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_CFG", 1, a, 0, 0, 0, 0, 0);
609*4b8b8d74SJaiprakash Singh }
610*4b8b8d74SJaiprakash Singh
611*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_CFG(a) ody_pemx_cfg_t
612*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_CFG(a) CSR_TYPE_NCB
613*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_CFG(a) "PEMX_CFG"
614*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_CFG(a) 0x0 /* PF_BAR0 */
615*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_CFG(a) (a)
616*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_CFG(a) (a), -1, -1, -1
617*4b8b8d74SJaiprakash Singh
618*4b8b8d74SJaiprakash Singh /**
619*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_cfg_tbl#
620*4b8b8d74SJaiprakash Singh *
621*4b8b8d74SJaiprakash Singh * PEM Configuration Table Registers
622*4b8b8d74SJaiprakash Singh * Software managed table with list of config registers to update when
623*4b8b8d74SJaiprakash Singh * PEM()_CTL_STATUS[LNK_ENB] is written with a 1. Typically the last
624*4b8b8d74SJaiprakash Singh * table action should be to set PEM()_CTL_STATUS[SCR_DONE].
625*4b8b8d74SJaiprakash Singh *
626*4b8b8d74SJaiprakash Singh * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
627*4b8b8d74SJaiprakash Singh *
628*4b8b8d74SJaiprakash Singh * This register is reset on cold reset.
629*4b8b8d74SJaiprakash Singh */
630*4b8b8d74SJaiprakash Singh union ody_pemx_cfg_tblx {
631*4b8b8d74SJaiprakash Singh uint64_t u;
632*4b8b8d74SJaiprakash Singh struct ody_pemx_cfg_tblx_s {
633*4b8b8d74SJaiprakash Singh uint64_t offset : 12;
634*4b8b8d74SJaiprakash Singh uint64_t wmask : 4;
635*4b8b8d74SJaiprakash Singh uint64_t shadow : 1;
636*4b8b8d74SJaiprakash Singh uint64_t vf_active : 1;
637*4b8b8d74SJaiprakash Singh uint64_t pf : 1;
638*4b8b8d74SJaiprakash Singh uint64_t reserved_19_21 : 3;
639*4b8b8d74SJaiprakash Singh uint64_t vf : 6;
640*4b8b8d74SJaiprakash Singh uint64_t reserved_28_30 : 3;
641*4b8b8d74SJaiprakash Singh uint64_t broadcast : 1;
642*4b8b8d74SJaiprakash Singh uint64_t data : 32;
643*4b8b8d74SJaiprakash Singh } s;
644*4b8b8d74SJaiprakash Singh /* struct ody_pemx_cfg_tblx_s cn; */
645*4b8b8d74SJaiprakash Singh };
646*4b8b8d74SJaiprakash Singh typedef union ody_pemx_cfg_tblx ody_pemx_cfg_tblx_t;
647*4b8b8d74SJaiprakash Singh
648*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_CFG_TBLX(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_PEMX_CFG_TBLX(uint64_t a,uint64_t b)649*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_CFG_TBLX(uint64_t a, uint64_t b)
650*4b8b8d74SJaiprakash Singh {
651*4b8b8d74SJaiprakash Singh if ((a <= 15) && (b <= 1023))
652*4b8b8d74SJaiprakash Singh return 0x8e0000002000ll + 0x1000000000ll * ((a) & 0xf) + 8ll * ((b) & 0x3ff);
653*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_CFG_TBLX", 2, a, b, 0, 0, 0, 0);
654*4b8b8d74SJaiprakash Singh }
655*4b8b8d74SJaiprakash Singh
656*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_CFG_TBLX(a, b) ody_pemx_cfg_tblx_t
657*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_CFG_TBLX(a, b) CSR_TYPE_NCB
658*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_CFG_TBLX(a, b) "PEMX_CFG_TBLX"
659*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_CFG_TBLX(a, b) 0x0 /* PF_BAR0 */
660*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_CFG_TBLX(a, b) (a)
661*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_CFG_TBLX(a, b) (a), (b), -1, -1
662*4b8b8d74SJaiprakash Singh
663*4b8b8d74SJaiprakash Singh /**
664*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_cfg_tbl_size
665*4b8b8d74SJaiprakash Singh *
666*4b8b8d74SJaiprakash Singh * PEM Configuration Table Size Register
667*4b8b8d74SJaiprakash Singh * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
668*4b8b8d74SJaiprakash Singh *
669*4b8b8d74SJaiprakash Singh * This register is reset on cold reset.
670*4b8b8d74SJaiprakash Singh */
671*4b8b8d74SJaiprakash Singh union ody_pemx_cfg_tbl_size {
672*4b8b8d74SJaiprakash Singh uint64_t u;
673*4b8b8d74SJaiprakash Singh struct ody_pemx_cfg_tbl_size_s {
674*4b8b8d74SJaiprakash Singh uint64_t size : 11;
675*4b8b8d74SJaiprakash Singh uint64_t reserved_11_63 : 53;
676*4b8b8d74SJaiprakash Singh } s;
677*4b8b8d74SJaiprakash Singh /* struct ody_pemx_cfg_tbl_size_s cn; */
678*4b8b8d74SJaiprakash Singh };
679*4b8b8d74SJaiprakash Singh typedef union ody_pemx_cfg_tbl_size ody_pemx_cfg_tbl_size_t;
680*4b8b8d74SJaiprakash Singh
681*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_CFG_TBL_SIZE(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_CFG_TBL_SIZE(uint64_t a)682*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_CFG_TBL_SIZE(uint64_t a)
683*4b8b8d74SJaiprakash Singh {
684*4b8b8d74SJaiprakash Singh if (a <= 15)
685*4b8b8d74SJaiprakash Singh return 0x8e0000000220ll + 0x1000000000ll * ((a) & 0xf);
686*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_CFG_TBL_SIZE", 1, a, 0, 0, 0, 0, 0);
687*4b8b8d74SJaiprakash Singh }
688*4b8b8d74SJaiprakash Singh
689*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_CFG_TBL_SIZE(a) ody_pemx_cfg_tbl_size_t
690*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_CFG_TBL_SIZE(a) CSR_TYPE_NCB
691*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_CFG_TBL_SIZE(a) "PEMX_CFG_TBL_SIZE"
692*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_CFG_TBL_SIZE(a) 0x0 /* PF_BAR0 */
693*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_CFG_TBL_SIZE(a) (a)
694*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_CFG_TBL_SIZE(a) (a), -1, -1, -1
695*4b8b8d74SJaiprakash Singh
696*4b8b8d74SJaiprakash Singh /**
697*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_clk_en
698*4b8b8d74SJaiprakash Singh *
699*4b8b8d74SJaiprakash Singh * PEM Clock Enable Register
700*4b8b8d74SJaiprakash Singh * This register contains the clock enable for CPCLK and PCE_CLK.
701*4b8b8d74SJaiprakash Singh *
702*4b8b8d74SJaiprakash Singh * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
703*4b8b8d74SJaiprakash Singh *
704*4b8b8d74SJaiprakash Singh * This register is reset on cold reset.
705*4b8b8d74SJaiprakash Singh */
706*4b8b8d74SJaiprakash Singh union ody_pemx_clk_en {
707*4b8b8d74SJaiprakash Singh uint64_t u;
708*4b8b8d74SJaiprakash Singh struct ody_pemx_clk_en_s {
709*4b8b8d74SJaiprakash Singh uint64_t pemm_cpclk_force : 1;
710*4b8b8d74SJaiprakash Singh uint64_t pemc_cpclk_gate : 1;
711*4b8b8d74SJaiprakash Singh uint64_t pceclk_gate : 1;
712*4b8b8d74SJaiprakash Singh uint64_t pemc_macclk_force : 1;
713*4b8b8d74SJaiprakash Singh uint64_t pem_mdh_dis : 1;
714*4b8b8d74SJaiprakash Singh uint64_t reserved_5_63 : 59;
715*4b8b8d74SJaiprakash Singh } s;
716*4b8b8d74SJaiprakash Singh /* struct ody_pemx_clk_en_s cn; */
717*4b8b8d74SJaiprakash Singh };
718*4b8b8d74SJaiprakash Singh typedef union ody_pemx_clk_en ody_pemx_clk_en_t;
719*4b8b8d74SJaiprakash Singh
720*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_CLK_EN(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_CLK_EN(uint64_t a)721*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_CLK_EN(uint64_t a)
722*4b8b8d74SJaiprakash Singh {
723*4b8b8d74SJaiprakash Singh if (a <= 15)
724*4b8b8d74SJaiprakash Singh return 0x8e00000000c8ll + 0x1000000000ll * ((a) & 0xf);
725*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_CLK_EN", 1, a, 0, 0, 0, 0, 0);
726*4b8b8d74SJaiprakash Singh }
727*4b8b8d74SJaiprakash Singh
728*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_CLK_EN(a) ody_pemx_clk_en_t
729*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_CLK_EN(a) CSR_TYPE_NCB
730*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_CLK_EN(a) "PEMX_CLK_EN"
731*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_CLK_EN(a) 0x0 /* PF_BAR0 */
732*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_CLK_EN(a) (a)
733*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_CLK_EN(a) (a), -1, -1, -1
734*4b8b8d74SJaiprakash Singh
735*4b8b8d74SJaiprakash Singh /**
736*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_const_acc
737*4b8b8d74SJaiprakash Singh *
738*4b8b8d74SJaiprakash Singh * PEM Constant ACC Register
739*4b8b8d74SJaiprakash Singh * Contains constant attributes related to the PEM ACC tables.
740*4b8b8d74SJaiprakash Singh */
741*4b8b8d74SJaiprakash Singh union ody_pemx_const_acc {
742*4b8b8d74SJaiprakash Singh uint64_t u;
743*4b8b8d74SJaiprakash Singh struct ody_pemx_const_acc_s {
744*4b8b8d74SJaiprakash Singh uint64_t num_norm : 16;
745*4b8b8d74SJaiprakash Singh uint64_t bits_norm : 16;
746*4b8b8d74SJaiprakash Singh uint64_t reserved_32_63 : 32;
747*4b8b8d74SJaiprakash Singh } s;
748*4b8b8d74SJaiprakash Singh /* struct ody_pemx_const_acc_s cn; */
749*4b8b8d74SJaiprakash Singh };
750*4b8b8d74SJaiprakash Singh typedef union ody_pemx_const_acc ody_pemx_const_acc_t;
751*4b8b8d74SJaiprakash Singh
752*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_CONST_ACC(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_CONST_ACC(uint64_t a)753*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_CONST_ACC(uint64_t a)
754*4b8b8d74SJaiprakash Singh {
755*4b8b8d74SJaiprakash Singh if (a <= 15)
756*4b8b8d74SJaiprakash Singh return 0x8e0000000218ll + 0x1000000000ll * ((a) & 0xf);
757*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_CONST_ACC", 1, a, 0, 0, 0, 0, 0);
758*4b8b8d74SJaiprakash Singh }
759*4b8b8d74SJaiprakash Singh
760*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_CONST_ACC(a) ody_pemx_const_acc_t
761*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_CONST_ACC(a) CSR_TYPE_NCB
762*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_CONST_ACC(a) "PEMX_CONST_ACC"
763*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_CONST_ACC(a) 0x0 /* PF_BAR0 */
764*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_CONST_ACC(a) (a)
765*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_CONST_ACC(a) (a), -1, -1, -1
766*4b8b8d74SJaiprakash Singh
767*4b8b8d74SJaiprakash Singh /**
768*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_cpclk_active_pc
769*4b8b8d74SJaiprakash Singh *
770*4b8b8d74SJaiprakash Singh * PEM Conditional Coprocessor Clock Counter Register
771*4b8b8d74SJaiprakash Singh * This register counts conditional clocks for power management.
772*4b8b8d74SJaiprakash Singh *
773*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
774*4b8b8d74SJaiprakash Singh *
775*4b8b8d74SJaiprakash Singh * This register is reset on core domain reset.
776*4b8b8d74SJaiprakash Singh */
777*4b8b8d74SJaiprakash Singh union ody_pemx_cpclk_active_pc {
778*4b8b8d74SJaiprakash Singh uint64_t u;
779*4b8b8d74SJaiprakash Singh struct ody_pemx_cpclk_active_pc_s {
780*4b8b8d74SJaiprakash Singh uint64_t count : 64;
781*4b8b8d74SJaiprakash Singh } s;
782*4b8b8d74SJaiprakash Singh /* struct ody_pemx_cpclk_active_pc_s cn; */
783*4b8b8d74SJaiprakash Singh };
784*4b8b8d74SJaiprakash Singh typedef union ody_pemx_cpclk_active_pc ody_pemx_cpclk_active_pc_t;
785*4b8b8d74SJaiprakash Singh
786*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_CPCLK_ACTIVE_PC(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_CPCLK_ACTIVE_PC(uint64_t a)787*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_CPCLK_ACTIVE_PC(uint64_t a)
788*4b8b8d74SJaiprakash Singh {
789*4b8b8d74SJaiprakash Singh if (a <= 15)
790*4b8b8d74SJaiprakash Singh return 0x8e0000000058ll + 0x1000000000ll * ((a) & 0xf);
791*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_CPCLK_ACTIVE_PC", 1, a, 0, 0, 0, 0, 0);
792*4b8b8d74SJaiprakash Singh }
793*4b8b8d74SJaiprakash Singh
794*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_CPCLK_ACTIVE_PC(a) ody_pemx_cpclk_active_pc_t
795*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_CPCLK_ACTIVE_PC(a) CSR_TYPE_NCB
796*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_CPCLK_ACTIVE_PC(a) "PEMX_CPCLK_ACTIVE_PC"
797*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_CPCLK_ACTIVE_PC(a) 0x0 /* PF_BAR0 */
798*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_CPCLK_ACTIVE_PC(a) (a)
799*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_CPCLK_ACTIVE_PC(a) (a), -1, -1, -1
800*4b8b8d74SJaiprakash Singh
801*4b8b8d74SJaiprakash Singh /**
802*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_cpl_lut_valid
803*4b8b8d74SJaiprakash Singh *
804*4b8b8d74SJaiprakash Singh * PEM Completion Lookup Table Valid Register
805*4b8b8d74SJaiprakash Singh * This register specifies how many tags are outstanding for reads.
806*4b8b8d74SJaiprakash Singh *
807*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
808*4b8b8d74SJaiprakash Singh *
809*4b8b8d74SJaiprakash Singh * This register is reset on MAC reset.
810*4b8b8d74SJaiprakash Singh */
811*4b8b8d74SJaiprakash Singh union ody_pemx_cpl_lut_valid {
812*4b8b8d74SJaiprakash Singh uint64_t u;
813*4b8b8d74SJaiprakash Singh struct ody_pemx_cpl_lut_valid_s {
814*4b8b8d74SJaiprakash Singh uint64_t tag : 10;
815*4b8b8d74SJaiprakash Singh uint64_t reserved_10_63 : 54;
816*4b8b8d74SJaiprakash Singh } s;
817*4b8b8d74SJaiprakash Singh /* struct ody_pemx_cpl_lut_valid_s cn; */
818*4b8b8d74SJaiprakash Singh };
819*4b8b8d74SJaiprakash Singh typedef union ody_pemx_cpl_lut_valid ody_pemx_cpl_lut_valid_t;
820*4b8b8d74SJaiprakash Singh
821*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_CPL_LUT_VALID(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_CPL_LUT_VALID(uint64_t a)822*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_CPL_LUT_VALID(uint64_t a)
823*4b8b8d74SJaiprakash Singh {
824*4b8b8d74SJaiprakash Singh if (a <= 15)
825*4b8b8d74SJaiprakash Singh return 0x8e0000000040ll + 0x1000000000ll * ((a) & 0xf);
826*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_CPL_LUT_VALID", 1, a, 0, 0, 0, 0, 0);
827*4b8b8d74SJaiprakash Singh }
828*4b8b8d74SJaiprakash Singh
829*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_CPL_LUT_VALID(a) ody_pemx_cpl_lut_valid_t
830*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_CPL_LUT_VALID(a) CSR_TYPE_NCB
831*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_CPL_LUT_VALID(a) "PEMX_CPL_LUT_VALID"
832*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_CPL_LUT_VALID(a) 0x0 /* PF_BAR0 */
833*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_CPL_LUT_VALID(a) (a)
834*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_CPL_LUT_VALID(a) (a), -1, -1, -1
835*4b8b8d74SJaiprakash Singh
836*4b8b8d74SJaiprakash Singh /**
837*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_ctl_status
838*4b8b8d74SJaiprakash Singh *
839*4b8b8d74SJaiprakash Singh * PEM Control Status Register
840*4b8b8d74SJaiprakash Singh * This is a general control and status register of the PEM.
841*4b8b8d74SJaiprakash Singh *
842*4b8b8d74SJaiprakash Singh * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
843*4b8b8d74SJaiprakash Singh *
844*4b8b8d74SJaiprakash Singh * This register is reset on cold reset. Note this differs from PEM()_CTL_STATUS2's reset.
845*4b8b8d74SJaiprakash Singh */
846*4b8b8d74SJaiprakash Singh union ody_pemx_ctl_status {
847*4b8b8d74SJaiprakash Singh uint64_t u;
848*4b8b8d74SJaiprakash Singh struct ody_pemx_ctl_status_s {
849*4b8b8d74SJaiprakash Singh uint64_t inv_lcrc : 1;
850*4b8b8d74SJaiprakash Singh uint64_t inv_ecrc : 1;
851*4b8b8d74SJaiprakash Singh uint64_t fast_lm : 1;
852*4b8b8d74SJaiprakash Singh uint64_t l1_exit : 1;
853*4b8b8d74SJaiprakash Singh uint64_t lnk_enb : 1;
854*4b8b8d74SJaiprakash Singh uint64_t frc_retry : 1;
855*4b8b8d74SJaiprakash Singh uint64_t margin_rdy : 1;
856*4b8b8d74SJaiprakash Singh uint64_t rdy_entr_l23 : 1;
857*4b8b8d74SJaiprakash Singh uint64_t clk_req_n : 1;
858*4b8b8d74SJaiprakash Singh uint64_t ccrs : 1;
859*4b8b8d74SJaiprakash Singh uint64_t play : 1;
860*4b8b8d74SJaiprakash Singh uint64_t auto_mode : 1;
861*4b8b8d74SJaiprakash Singh uint64_t pm_xtoff : 1;
862*4b8b8d74SJaiprakash Singh uint64_t scr_done : 1;
863*4b8b8d74SJaiprakash Singh uint64_t spares : 2;
864*4b8b8d74SJaiprakash Singh uint64_t reserved_16_31 : 16;
865*4b8b8d74SJaiprakash Singh uint64_t pbus : 8;
866*4b8b8d74SJaiprakash Singh uint64_t dnum : 5;
867*4b8b8d74SJaiprakash Singh uint64_t auto_sd : 1;
868*4b8b8d74SJaiprakash Singh uint64_t reserved_46_63 : 18;
869*4b8b8d74SJaiprakash Singh } s;
870*4b8b8d74SJaiprakash Singh /* struct ody_pemx_ctl_status_s cn; */
871*4b8b8d74SJaiprakash Singh };
872*4b8b8d74SJaiprakash Singh typedef union ody_pemx_ctl_status ody_pemx_ctl_status_t;
873*4b8b8d74SJaiprakash Singh
874*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_CTL_STATUS(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_CTL_STATUS(uint64_t a)875*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_CTL_STATUS(uint64_t a)
876*4b8b8d74SJaiprakash Singh {
877*4b8b8d74SJaiprakash Singh if (a <= 15)
878*4b8b8d74SJaiprakash Singh return 0x8e0000000000ll + 0x1000000000ll * ((a) & 0xf);
879*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_CTL_STATUS", 1, a, 0, 0, 0, 0, 0);
880*4b8b8d74SJaiprakash Singh }
881*4b8b8d74SJaiprakash Singh
882*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_CTL_STATUS(a) ody_pemx_ctl_status_t
883*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_CTL_STATUS(a) CSR_TYPE_NCB
884*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_CTL_STATUS(a) "PEMX_CTL_STATUS"
885*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_CTL_STATUS(a) 0x0 /* PF_BAR0 */
886*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_CTL_STATUS(a) (a)
887*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_CTL_STATUS(a) (a), -1, -1, -1
888*4b8b8d74SJaiprakash Singh
889*4b8b8d74SJaiprakash Singh /**
890*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_ctl_status2
891*4b8b8d74SJaiprakash Singh *
892*4b8b8d74SJaiprakash Singh * PEM Control Status 2 Register
893*4b8b8d74SJaiprakash Singh * This register contains additional general control and status of the PEM.
894*4b8b8d74SJaiprakash Singh *
895*4b8b8d74SJaiprakash Singh * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
896*4b8b8d74SJaiprakash Singh *
897*4b8b8d74SJaiprakash Singh * This register is reset on core domain reset. Note this differs from PEM()_CTL_STATUS's reset.
898*4b8b8d74SJaiprakash Singh */
899*4b8b8d74SJaiprakash Singh union ody_pemx_ctl_status2 {
900*4b8b8d74SJaiprakash Singh uint64_t u;
901*4b8b8d74SJaiprakash Singh struct ody_pemx_ctl_status2_s {
902*4b8b8d74SJaiprakash Singh uint64_t no_fwd_prg : 16;
903*4b8b8d74SJaiprakash Singh uint64_t cfg_rtry : 16;
904*4b8b8d74SJaiprakash Singh uint64_t trgt1_ecc_cor_dis : 1;
905*4b8b8d74SJaiprakash Singh uint64_t perf_latency_en : 1;
906*4b8b8d74SJaiprakash Singh uint64_t reserved_34_63 : 30;
907*4b8b8d74SJaiprakash Singh } s;
908*4b8b8d74SJaiprakash Singh /* struct ody_pemx_ctl_status2_s cn; */
909*4b8b8d74SJaiprakash Singh };
910*4b8b8d74SJaiprakash Singh typedef union ody_pemx_ctl_status2 ody_pemx_ctl_status2_t;
911*4b8b8d74SJaiprakash Singh
912*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_CTL_STATUS2(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_CTL_STATUS2(uint64_t a)913*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_CTL_STATUS2(uint64_t a)
914*4b8b8d74SJaiprakash Singh {
915*4b8b8d74SJaiprakash Singh if (a <= 15)
916*4b8b8d74SJaiprakash Singh return 0x8e0000000130ll + 0x1000000000ll * ((a) & 0xf);
917*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_CTL_STATUS2", 1, a, 0, 0, 0, 0, 0);
918*4b8b8d74SJaiprakash Singh }
919*4b8b8d74SJaiprakash Singh
920*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_CTL_STATUS2(a) ody_pemx_ctl_status2_t
921*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_CTL_STATUS2(a) CSR_TYPE_NCB
922*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_CTL_STATUS2(a) "PEMX_CTL_STATUS2"
923*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_CTL_STATUS2(a) 0x0 /* PF_BAR0 */
924*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_CTL_STATUS2(a) (a)
925*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_CTL_STATUS2(a) (a), -1, -1, -1
926*4b8b8d74SJaiprakash Singh
927*4b8b8d74SJaiprakash Singh /**
928*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_dbg_info
929*4b8b8d74SJaiprakash Singh *
930*4b8b8d74SJaiprakash Singh * PEM Debug Information Register
931*4b8b8d74SJaiprakash Singh * This is a debug information register of the PEM.
932*4b8b8d74SJaiprakash Singh *
933*4b8b8d74SJaiprakash Singh * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
934*4b8b8d74SJaiprakash Singh *
935*4b8b8d74SJaiprakash Singh * This register is reset on core domain reset.
936*4b8b8d74SJaiprakash Singh */
937*4b8b8d74SJaiprakash Singh union ody_pemx_dbg_info {
938*4b8b8d74SJaiprakash Singh uint64_t u;
939*4b8b8d74SJaiprakash Singh struct ody_pemx_dbg_info_s {
940*4b8b8d74SJaiprakash Singh uint64_t spoison : 1;
941*4b8b8d74SJaiprakash Singh uint64_t rtlpmal : 1;
942*4b8b8d74SJaiprakash Singh uint64_t rtlplle : 1;
943*4b8b8d74SJaiprakash Singh uint64_t recrce : 1;
944*4b8b8d74SJaiprakash Singh uint64_t rpoison : 1;
945*4b8b8d74SJaiprakash Singh uint64_t rcemrc : 1;
946*4b8b8d74SJaiprakash Singh uint64_t rnfemrc : 1;
947*4b8b8d74SJaiprakash Singh uint64_t rfemrc : 1;
948*4b8b8d74SJaiprakash Singh uint64_t rpmerc : 1;
949*4b8b8d74SJaiprakash Singh uint64_t rptamrc : 1;
950*4b8b8d74SJaiprakash Singh uint64_t rumep : 1;
951*4b8b8d74SJaiprakash Singh uint64_t rvdm : 1;
952*4b8b8d74SJaiprakash Singh uint64_t acto : 1;
953*4b8b8d74SJaiprakash Singh uint64_t rte : 1;
954*4b8b8d74SJaiprakash Singh uint64_t mre : 1;
955*4b8b8d74SJaiprakash Singh uint64_t rdwdle : 1;
956*4b8b8d74SJaiprakash Singh uint64_t rtwdle : 1;
957*4b8b8d74SJaiprakash Singh uint64_t dpeoosd : 1;
958*4b8b8d74SJaiprakash Singh uint64_t fcpvwt : 1;
959*4b8b8d74SJaiprakash Singh uint64_t rpe : 1;
960*4b8b8d74SJaiprakash Singh uint64_t fcuv : 1;
961*4b8b8d74SJaiprakash Singh uint64_t rqo : 1;
962*4b8b8d74SJaiprakash Singh uint64_t rauc : 1;
963*4b8b8d74SJaiprakash Singh uint64_t racur : 1;
964*4b8b8d74SJaiprakash Singh uint64_t racca : 1;
965*4b8b8d74SJaiprakash Singh uint64_t caar : 1;
966*4b8b8d74SJaiprakash Singh uint64_t rarwdns : 1;
967*4b8b8d74SJaiprakash Singh uint64_t ramtlp : 1;
968*4b8b8d74SJaiprakash Singh uint64_t racpp : 1;
969*4b8b8d74SJaiprakash Singh uint64_t rawwpp : 1;
970*4b8b8d74SJaiprakash Singh uint64_t ecrc_e : 1;
971*4b8b8d74SJaiprakash Singh uint64_t lofp : 1;
972*4b8b8d74SJaiprakash Singh uint64_t bmd_e : 1;
973*4b8b8d74SJaiprakash Singh uint64_t rasdp : 1;
974*4b8b8d74SJaiprakash Singh uint64_t in_flr : 1;
975*4b8b8d74SJaiprakash Singh uint64_t vf_en_off : 1;
976*4b8b8d74SJaiprakash Singh uint64_t non_mem_load : 1;
977*4b8b8d74SJaiprakash Singh uint64_t atomic_non_mem : 1;
978*4b8b8d74SJaiprakash Singh uint64_t n_ecam_store : 1;
979*4b8b8d74SJaiprakash Singh uint64_t p_ecam_store : 1;
980*4b8b8d74SJaiprakash Singh uint64_t ecam_load : 1;
981*4b8b8d74SJaiprakash Singh uint64_t n_csr_store : 1;
982*4b8b8d74SJaiprakash Singh uint64_t p_csr_store : 1;
983*4b8b8d74SJaiprakash Singh uint64_t csr_load : 1;
984*4b8b8d74SJaiprakash Singh uint64_t atomic_to_csr : 1;
985*4b8b8d74SJaiprakash Singh uint64_t n_store : 1;
986*4b8b8d74SJaiprakash Singh uint64_t p_maps_to_n : 1;
987*4b8b8d74SJaiprakash Singh uint64_t n_store_zero_byte : 1;
988*4b8b8d74SJaiprakash Singh uint64_t p_store_zero_byte : 1;
989*4b8b8d74SJaiprakash Singh uint64_t n_lswst : 1;
990*4b8b8d74SJaiprakash Singh uint64_t p_lswst : 1;
991*4b8b8d74SJaiprakash Singh uint64_t bad_zero : 1;
992*4b8b8d74SJaiprakash Singh uint64_t reserved_52_63 : 12;
993*4b8b8d74SJaiprakash Singh } s;
994*4b8b8d74SJaiprakash Singh /* struct ody_pemx_dbg_info_s cn; */
995*4b8b8d74SJaiprakash Singh };
996*4b8b8d74SJaiprakash Singh typedef union ody_pemx_dbg_info ody_pemx_dbg_info_t;
997*4b8b8d74SJaiprakash Singh
998*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_DBG_INFO(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_DBG_INFO(uint64_t a)999*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_DBG_INFO(uint64_t a)
1000*4b8b8d74SJaiprakash Singh {
1001*4b8b8d74SJaiprakash Singh if (a <= 15)
1002*4b8b8d74SJaiprakash Singh return 0x8e0000000108ll + 0x1000000000ll * ((a) & 0xf);
1003*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_DBG_INFO", 1, a, 0, 0, 0, 0, 0);
1004*4b8b8d74SJaiprakash Singh }
1005*4b8b8d74SJaiprakash Singh
1006*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_DBG_INFO(a) ody_pemx_dbg_info_t
1007*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_DBG_INFO(a) CSR_TYPE_NCB
1008*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_DBG_INFO(a) "PEMX_DBG_INFO"
1009*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_DBG_INFO(a) 0x0 /* PF_BAR0 */
1010*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_DBG_INFO(a) (a)
1011*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_DBG_INFO(a) (a), -1, -1, -1
1012*4b8b8d74SJaiprakash Singh
1013*4b8b8d74SJaiprakash Singh /**
1014*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_debug
1015*4b8b8d74SJaiprakash Singh *
1016*4b8b8d74SJaiprakash Singh * PEM Debug Register
1017*4b8b8d74SJaiprakash Singh * This register contains status of level interrupts for debugging purposes.
1018*4b8b8d74SJaiprakash Singh *
1019*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
1020*4b8b8d74SJaiprakash Singh *
1021*4b8b8d74SJaiprakash Singh * This register is reset on cold reset.
1022*4b8b8d74SJaiprakash Singh */
1023*4b8b8d74SJaiprakash Singh union ody_pemx_debug {
1024*4b8b8d74SJaiprakash Singh uint64_t u;
1025*4b8b8d74SJaiprakash Singh struct ody_pemx_debug_s {
1026*4b8b8d74SJaiprakash Singh uint64_t intval : 6;
1027*4b8b8d74SJaiprakash Singh uint64_t reserved_6_31 : 26;
1028*4b8b8d74SJaiprakash Singh uint64_t ib_drop_why : 32;
1029*4b8b8d74SJaiprakash Singh } s;
1030*4b8b8d74SJaiprakash Singh /* struct ody_pemx_debug_s cn; */
1031*4b8b8d74SJaiprakash Singh };
1032*4b8b8d74SJaiprakash Singh typedef union ody_pemx_debug ody_pemx_debug_t;
1033*4b8b8d74SJaiprakash Singh
1034*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_DEBUG(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_DEBUG(uint64_t a)1035*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_DEBUG(uint64_t a)
1036*4b8b8d74SJaiprakash Singh {
1037*4b8b8d74SJaiprakash Singh if (a <= 15)
1038*4b8b8d74SJaiprakash Singh return 0x8e0000000110ll + 0x1000000000ll * ((a) & 0xf);
1039*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_DEBUG", 1, a, 0, 0, 0, 0, 0);
1040*4b8b8d74SJaiprakash Singh }
1041*4b8b8d74SJaiprakash Singh
1042*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_DEBUG(a) ody_pemx_debug_t
1043*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_DEBUG(a) CSR_TYPE_NCB
1044*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_DEBUG(a) "PEMX_DEBUG"
1045*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_DEBUG(a) 0x0 /* PF_BAR0 */
1046*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_DEBUG(a) (a)
1047*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_DEBUG(a) (a), -1, -1, -1
1048*4b8b8d74SJaiprakash Singh
1049*4b8b8d74SJaiprakash Singh /**
1050*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_diag_status
1051*4b8b8d74SJaiprakash Singh *
1052*4b8b8d74SJaiprakash Singh * PEM Diagnostic Status Register
1053*4b8b8d74SJaiprakash Singh * This register contains selection control for the core diagnostic bus.
1054*4b8b8d74SJaiprakash Singh *
1055*4b8b8d74SJaiprakash Singh * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
1056*4b8b8d74SJaiprakash Singh *
1057*4b8b8d74SJaiprakash Singh * This register is reset on MAC reset.
1058*4b8b8d74SJaiprakash Singh */
1059*4b8b8d74SJaiprakash Singh union ody_pemx_diag_status {
1060*4b8b8d74SJaiprakash Singh uint64_t u;
1061*4b8b8d74SJaiprakash Singh struct ody_pemx_diag_status_s {
1062*4b8b8d74SJaiprakash Singh uint64_t pwrdwn : 4;
1063*4b8b8d74SJaiprakash Singh uint64_t ltssm : 6;
1064*4b8b8d74SJaiprakash Singh uint64_t pclk_rate : 3;
1065*4b8b8d74SJaiprakash Singh uint64_t lnkst_l2_exit : 1;
1066*4b8b8d74SJaiprakash Singh uint64_t lnkst_l2 : 1;
1067*4b8b8d74SJaiprakash Singh uint64_t reserved_15 : 1;
1068*4b8b8d74SJaiprakash Singh uint64_t lnkst_l1 : 1;
1069*4b8b8d74SJaiprakash Singh uint64_t lnk_up : 1;
1070*4b8b8d74SJaiprakash Singh uint64_t sel_aux_clk : 1;
1071*4b8b8d74SJaiprakash Singh uint64_t l1_entry_inprogress : 1;
1072*4b8b8d74SJaiprakash Singh uint64_t pclkreqn : 1;
1073*4b8b8d74SJaiprakash Singh uint64_t l1_aspm_enter_ready : 1;
1074*4b8b8d74SJaiprakash Singh uint64_t reserved_22_23 : 2;
1075*4b8b8d74SJaiprakash Singh uint64_t pm_mst_fsm : 5;
1076*4b8b8d74SJaiprakash Singh uint64_t reserved_29_31 : 3;
1077*4b8b8d74SJaiprakash Singh uint64_t pm_slv_fsm : 5;
1078*4b8b8d74SJaiprakash Singh uint64_t reserved_37_63 : 27;
1079*4b8b8d74SJaiprakash Singh } s;
1080*4b8b8d74SJaiprakash Singh struct ody_pemx_diag_status_cn {
1081*4b8b8d74SJaiprakash Singh uint64_t pwrdwn : 4;
1082*4b8b8d74SJaiprakash Singh uint64_t ltssm : 6;
1083*4b8b8d74SJaiprakash Singh uint64_t pclk_rate : 3;
1084*4b8b8d74SJaiprakash Singh uint64_t lnkst_l2_exit : 1;
1085*4b8b8d74SJaiprakash Singh uint64_t lnkst_l2 : 1;
1086*4b8b8d74SJaiprakash Singh uint64_t reserved_15 : 1;
1087*4b8b8d74SJaiprakash Singh uint64_t lnkst_l1 : 1;
1088*4b8b8d74SJaiprakash Singh uint64_t lnk_up : 1;
1089*4b8b8d74SJaiprakash Singh uint64_t sel_aux_clk : 1;
1090*4b8b8d74SJaiprakash Singh uint64_t l1_entry_inprogress : 1;
1091*4b8b8d74SJaiprakash Singh uint64_t pclkreqn : 1;
1092*4b8b8d74SJaiprakash Singh uint64_t l1_aspm_enter_ready : 1;
1093*4b8b8d74SJaiprakash Singh uint64_t reserved_22_23 : 2;
1094*4b8b8d74SJaiprakash Singh uint64_t pm_mst_fsm : 5;
1095*4b8b8d74SJaiprakash Singh uint64_t reserved_29_31 : 3;
1096*4b8b8d74SJaiprakash Singh uint64_t pm_slv_fsm : 5;
1097*4b8b8d74SJaiprakash Singh uint64_t reserved_37_39 : 3;
1098*4b8b8d74SJaiprakash Singh uint64_t reserved_40_63 : 24;
1099*4b8b8d74SJaiprakash Singh } cn;
1100*4b8b8d74SJaiprakash Singh };
1101*4b8b8d74SJaiprakash Singh typedef union ody_pemx_diag_status ody_pemx_diag_status_t;
1102*4b8b8d74SJaiprakash Singh
1103*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_DIAG_STATUS(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_DIAG_STATUS(uint64_t a)1104*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_DIAG_STATUS(uint64_t a)
1105*4b8b8d74SJaiprakash Singh {
1106*4b8b8d74SJaiprakash Singh if (a <= 15)
1107*4b8b8d74SJaiprakash Singh return 0x8e0000000010ll + 0x1000000000ll * ((a) & 0xf);
1108*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_DIAG_STATUS", 1, a, 0, 0, 0, 0, 0);
1109*4b8b8d74SJaiprakash Singh }
1110*4b8b8d74SJaiprakash Singh
1111*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_DIAG_STATUS(a) ody_pemx_diag_status_t
1112*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_DIAG_STATUS(a) CSR_TYPE_NCB
1113*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_DIAG_STATUS(a) "PEMX_DIAG_STATUS"
1114*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_DIAG_STATUS(a) 0x0 /* PF_BAR0 */
1115*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_DIAG_STATUS(a) (a)
1116*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_DIAG_STATUS(a) (a), -1, -1, -1
1117*4b8b8d74SJaiprakash Singh
1118*4b8b8d74SJaiprakash Singh /**
1119*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_dis_port
1120*4b8b8d74SJaiprakash Singh *
1121*4b8b8d74SJaiprakash Singh * PEM Disable Port Register
1122*4b8b8d74SJaiprakash Singh * This register controls whether traffic is allowed to be sent out the PCIe link.
1123*4b8b8d74SJaiprakash Singh *
1124*4b8b8d74SJaiprakash Singh * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
1125*4b8b8d74SJaiprakash Singh *
1126*4b8b8d74SJaiprakash Singh * This register is reset on core domain reset.
1127*4b8b8d74SJaiprakash Singh */
1128*4b8b8d74SJaiprakash Singh union ody_pemx_dis_port {
1129*4b8b8d74SJaiprakash Singh uint64_t u;
1130*4b8b8d74SJaiprakash Singh struct ody_pemx_dis_port_s {
1131*4b8b8d74SJaiprakash Singh uint64_t dis_port : 1;
1132*4b8b8d74SJaiprakash Singh uint64_t reserved_1_63 : 63;
1133*4b8b8d74SJaiprakash Singh } s;
1134*4b8b8d74SJaiprakash Singh /* struct ody_pemx_dis_port_s cn; */
1135*4b8b8d74SJaiprakash Singh };
1136*4b8b8d74SJaiprakash Singh typedef union ody_pemx_dis_port ody_pemx_dis_port_t;
1137*4b8b8d74SJaiprakash Singh
1138*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_DIS_PORT(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_DIS_PORT(uint64_t a)1139*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_DIS_PORT(uint64_t a)
1140*4b8b8d74SJaiprakash Singh {
1141*4b8b8d74SJaiprakash Singh if (a <= 15)
1142*4b8b8d74SJaiprakash Singh return 0x8e0000000050ll + 0x1000000000ll * ((a) & 0xf);
1143*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_DIS_PORT", 1, a, 0, 0, 0, 0, 0);
1144*4b8b8d74SJaiprakash Singh }
1145*4b8b8d74SJaiprakash Singh
1146*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_DIS_PORT(a) ody_pemx_dis_port_t
1147*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_DIS_PORT(a) CSR_TYPE_NCB
1148*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_DIS_PORT(a) "PEMX_DIS_PORT"
1149*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_DIS_PORT(a) 0x0 /* PF_BAR0 */
1150*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_DIS_PORT(a) (a)
1151*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_DIS_PORT(a) (a), -1, -1, -1
1152*4b8b8d74SJaiprakash Singh
1153*4b8b8d74SJaiprakash Singh /**
1154*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_ebi_tlp_credits
1155*4b8b8d74SJaiprakash Singh *
1156*4b8b8d74SJaiprakash Singh * PEM EBUS TLP Credits Register
1157*4b8b8d74SJaiprakash Singh * This register specifies the number of credits for use in moving TLPs. When this register is
1158*4b8b8d74SJaiprakash Singh * written, the credit values are reset to the register value. This register is for diagnostic
1159*4b8b8d74SJaiprakash Singh * use only, and should only be written when PEM()_CTL_STATUS[LNK_ENB] is clear.
1160*4b8b8d74SJaiprakash Singh *
1161*4b8b8d74SJaiprakash Singh * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
1162*4b8b8d74SJaiprakash Singh *
1163*4b8b8d74SJaiprakash Singh * This register is reset on MAC reset.
1164*4b8b8d74SJaiprakash Singh */
1165*4b8b8d74SJaiprakash Singh union ody_pemx_ebi_tlp_credits {
1166*4b8b8d74SJaiprakash Singh uint64_t u;
1167*4b8b8d74SJaiprakash Singh struct ody_pemx_ebi_tlp_credits_s {
1168*4b8b8d74SJaiprakash Singh uint64_t ebi_p : 11;
1169*4b8b8d74SJaiprakash Singh uint64_t ebi_np : 10;
1170*4b8b8d74SJaiprakash Singh uint64_t ebi_cpl : 11;
1171*4b8b8d74SJaiprakash Singh uint64_t reserved_32_63 : 32;
1172*4b8b8d74SJaiprakash Singh } s;
1173*4b8b8d74SJaiprakash Singh /* struct ody_pemx_ebi_tlp_credits_s cn; */
1174*4b8b8d74SJaiprakash Singh };
1175*4b8b8d74SJaiprakash Singh typedef union ody_pemx_ebi_tlp_credits ody_pemx_ebi_tlp_credits_t;
1176*4b8b8d74SJaiprakash Singh
1177*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_EBI_TLP_CREDITS(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_EBI_TLP_CREDITS(uint64_t a)1178*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_EBI_TLP_CREDITS(uint64_t a)
1179*4b8b8d74SJaiprakash Singh {
1180*4b8b8d74SJaiprakash Singh if (a <= 15)
1181*4b8b8d74SJaiprakash Singh return 0x8e0000000028ll + 0x1000000000ll * ((a) & 0xf);
1182*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_EBI_TLP_CREDITS", 1, a, 0, 0, 0, 0, 0);
1183*4b8b8d74SJaiprakash Singh }
1184*4b8b8d74SJaiprakash Singh
1185*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_EBI_TLP_CREDITS(a) ody_pemx_ebi_tlp_credits_t
1186*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_EBI_TLP_CREDITS(a) CSR_TYPE_NCB
1187*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_EBI_TLP_CREDITS(a) "PEMX_EBI_TLP_CREDITS"
1188*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_EBI_TLP_CREDITS(a) 0x0 /* PF_BAR0 */
1189*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_EBI_TLP_CREDITS(a) (a)
1190*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_EBI_TLP_CREDITS(a) (a), -1, -1, -1
1191*4b8b8d74SJaiprakash Singh
1192*4b8b8d74SJaiprakash Singh /**
1193*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_ebo_fifo_status
1194*4b8b8d74SJaiprakash Singh *
1195*4b8b8d74SJaiprakash Singh * PEM EBO Offloading FIFO Status Register
1196*4b8b8d74SJaiprakash Singh * This register contains status about the PEM EBO offloading FIFOs.
1197*4b8b8d74SJaiprakash Singh *
1198*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
1199*4b8b8d74SJaiprakash Singh *
1200*4b8b8d74SJaiprakash Singh * This register is reset on core domain reset.
1201*4b8b8d74SJaiprakash Singh */
1202*4b8b8d74SJaiprakash Singh union ody_pemx_ebo_fifo_status {
1203*4b8b8d74SJaiprakash Singh uint64_t u;
1204*4b8b8d74SJaiprakash Singh struct ody_pemx_ebo_fifo_status_s {
1205*4b8b8d74SJaiprakash Singh uint64_t p_data_volume : 8;
1206*4b8b8d74SJaiprakash Singh uint64_t reserved_8_11 : 4;
1207*4b8b8d74SJaiprakash Singh uint64_t n_data_volume : 8;
1208*4b8b8d74SJaiprakash Singh uint64_t reserved_20_23 : 4;
1209*4b8b8d74SJaiprakash Singh uint64_t c_data_volume : 8;
1210*4b8b8d74SJaiprakash Singh uint64_t p_cmd_volume : 6;
1211*4b8b8d74SJaiprakash Singh uint64_t reserved_38_39 : 2;
1212*4b8b8d74SJaiprakash Singh uint64_t n_cmd_volume : 6;
1213*4b8b8d74SJaiprakash Singh uint64_t reserved_46_47 : 2;
1214*4b8b8d74SJaiprakash Singh uint64_t c_cmd_volume : 6;
1215*4b8b8d74SJaiprakash Singh uint64_t reserved_54_63 : 10;
1216*4b8b8d74SJaiprakash Singh } s;
1217*4b8b8d74SJaiprakash Singh /* struct ody_pemx_ebo_fifo_status_s cn; */
1218*4b8b8d74SJaiprakash Singh };
1219*4b8b8d74SJaiprakash Singh typedef union ody_pemx_ebo_fifo_status ody_pemx_ebo_fifo_status_t;
1220*4b8b8d74SJaiprakash Singh
1221*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_EBO_FIFO_STATUS(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_EBO_FIFO_STATUS(uint64_t a)1222*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_EBO_FIFO_STATUS(uint64_t a)
1223*4b8b8d74SJaiprakash Singh {
1224*4b8b8d74SJaiprakash Singh if (a <= 15)
1225*4b8b8d74SJaiprakash Singh return 0x8e0000000140ll + 0x1000000000ll * ((a) & 0xf);
1226*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_EBO_FIFO_STATUS", 1, a, 0, 0, 0, 0, 0);
1227*4b8b8d74SJaiprakash Singh }
1228*4b8b8d74SJaiprakash Singh
1229*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_EBO_FIFO_STATUS(a) ody_pemx_ebo_fifo_status_t
1230*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_EBO_FIFO_STATUS(a) CSR_TYPE_NCB
1231*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_EBO_FIFO_STATUS(a) "PEMX_EBO_FIFO_STATUS"
1232*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_EBO_FIFO_STATUS(a) 0x0 /* PF_BAR0 */
1233*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_EBO_FIFO_STATUS(a) (a)
1234*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_EBO_FIFO_STATUS(a) (a), -1, -1, -1
1235*4b8b8d74SJaiprakash Singh
1236*4b8b8d74SJaiprakash Singh /**
1237*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_end_merge
1238*4b8b8d74SJaiprakash Singh *
1239*4b8b8d74SJaiprakash Singh * PEM End Merge Register
1240*4b8b8d74SJaiprakash Singh * Any access (read or write) to this register over NCBO will create a merging barrier
1241*4b8b8d74SJaiprakash Singh * for both the write and read streams within PEM outbound merging stations used by AP
1242*4b8b8d74SJaiprakash Singh * traffic such that no NCBO reads or writes received from AP as the source after this
1243*4b8b8d74SJaiprakash Singh * register's access will merge with any NCBO accesses received from AP as the source
1244*4b8b8d74SJaiprakash Singh * that occurred prior to this register's access. Note that RSL accesses to this register
1245*4b8b8d74SJaiprakash Singh * will have no effect on merging.
1246*4b8b8d74SJaiprakash Singh *
1247*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
1248*4b8b8d74SJaiprakash Singh *
1249*4b8b8d74SJaiprakash Singh * This register is reset on core domain reset.
1250*4b8b8d74SJaiprakash Singh */
1251*4b8b8d74SJaiprakash Singh union ody_pemx_end_merge {
1252*4b8b8d74SJaiprakash Singh uint64_t u;
1253*4b8b8d74SJaiprakash Singh struct ody_pemx_end_merge_s {
1254*4b8b8d74SJaiprakash Singh uint64_t reserved_0_63 : 64;
1255*4b8b8d74SJaiprakash Singh } s;
1256*4b8b8d74SJaiprakash Singh /* struct ody_pemx_end_merge_s cn; */
1257*4b8b8d74SJaiprakash Singh };
1258*4b8b8d74SJaiprakash Singh typedef union ody_pemx_end_merge ody_pemx_end_merge_t;
1259*4b8b8d74SJaiprakash Singh
1260*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_END_MERGE(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_END_MERGE(uint64_t a)1261*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_END_MERGE(uint64_t a)
1262*4b8b8d74SJaiprakash Singh {
1263*4b8b8d74SJaiprakash Singh if (a <= 15)
1264*4b8b8d74SJaiprakash Singh return 0x8e0000000188ll + 0x1000000000ll * ((a) & 0xf);
1265*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_END_MERGE", 1, a, 0, 0, 0, 0, 0);
1266*4b8b8d74SJaiprakash Singh }
1267*4b8b8d74SJaiprakash Singh
1268*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_END_MERGE(a) ody_pemx_end_merge_t
1269*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_END_MERGE(a) CSR_TYPE_NCB
1270*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_END_MERGE(a) "PEMX_END_MERGE"
1271*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_END_MERGE(a) 0x0 /* PF_BAR0 */
1272*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_END_MERGE(a) (a)
1273*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_END_MERGE(a) (a), -1, -1, -1
1274*4b8b8d74SJaiprakash Singh
1275*4b8b8d74SJaiprakash Singh /**
1276*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_ib_latency#_pc#
1277*4b8b8d74SJaiprakash Singh *
1278*4b8b8d74SJaiprakash Singh * PEM Inbound Latency Time Registers
1279*4b8b8d74SJaiprakash Singh * This register resets on core domain reset. It measures the time portion
1280*4b8b8d74SJaiprakash Singh * of the information set needed by software to calculate average inbound
1281*4b8b8d74SJaiprakash Singh * read latency to the target bus.
1282*4b8b8d74SJaiprakash Singh * Index {a} represents the internal target bus and is enumerated by PEM_PERF_BUS_E.
1283*4b8b8d74SJaiprakash Singh * Index {b} represents a set of registers mapped by using PEM_MPAM_ASSOC_PC, however
1284*4b8b8d74SJaiprakash Singh * the MPAM value is not used for these registers and accumulated latency will reflect
1285*4b8b8d74SJaiprakash Singh * all inbound TLPs. All 8 registers will read the same.
1286*4b8b8d74SJaiprakash Singh *
1287*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
1288*4b8b8d74SJaiprakash Singh */
1289*4b8b8d74SJaiprakash Singh union ody_pemx_ib_latencyx_pcx {
1290*4b8b8d74SJaiprakash Singh uint64_t u;
1291*4b8b8d74SJaiprakash Singh struct ody_pemx_ib_latencyx_pcx_s {
1292*4b8b8d74SJaiprakash Singh uint64_t latency : 64;
1293*4b8b8d74SJaiprakash Singh } s;
1294*4b8b8d74SJaiprakash Singh /* struct ody_pemx_ib_latencyx_pcx_s cn; */
1295*4b8b8d74SJaiprakash Singh };
1296*4b8b8d74SJaiprakash Singh typedef union ody_pemx_ib_latencyx_pcx ody_pemx_ib_latencyx_pcx_t;
1297*4b8b8d74SJaiprakash Singh
1298*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_IB_LATENCYX_PCX(uint64_t a, uint64_t b, uint64_t c) __attribute__ ((pure, always_inline));
ODY_PEMX_IB_LATENCYX_PCX(uint64_t a,uint64_t b,uint64_t c)1299*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_IB_LATENCYX_PCX(uint64_t a, uint64_t b, uint64_t c)
1300*4b8b8d74SJaiprakash Singh {
1301*4b8b8d74SJaiprakash Singh if ((a <= 15) && (b == 0) && (c <= 7))
1302*4b8b8d74SJaiprakash Singh return 0x8e0000005200ll + 0x1000000000ll * ((a) & 0xf) + 0x20ll * ((c) & 0x7);
1303*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_IB_LATENCYX_PCX", 3, a, b, c, 0, 0, 0);
1304*4b8b8d74SJaiprakash Singh }
1305*4b8b8d74SJaiprakash Singh
1306*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_IB_LATENCYX_PCX(a, b, c) ody_pemx_ib_latencyx_pcx_t
1307*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_IB_LATENCYX_PCX(a, b, c) CSR_TYPE_NCB
1308*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_IB_LATENCYX_PCX(a, b, c) "PEMX_IB_LATENCYX_PCX"
1309*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_IB_LATENCYX_PCX(a, b, c) 0x0 /* PF_BAR0 */
1310*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_IB_LATENCYX_PCX(a, b, c) (a)
1311*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_IB_LATENCYX_PCX(a, b, c) (a), (b), (c), -1
1312*4b8b8d74SJaiprakash Singh
1313*4b8b8d74SJaiprakash Singh /**
1314*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_ib_reads#_pc#
1315*4b8b8d74SJaiprakash Singh *
1316*4b8b8d74SJaiprakash Singh * PEM Inbound Read Count Registers
1317*4b8b8d74SJaiprakash Singh * This register resets on core domain reset. It measures the count portion
1318*4b8b8d74SJaiprakash Singh * of the information set needed by software to calculate average inbound
1319*4b8b8d74SJaiprakash Singh * read latency to the target bus.
1320*4b8b8d74SJaiprakash Singh * Index {a} represents the internal target bus and is enumerated by PEM_PERF_BUS_E.
1321*4b8b8d74SJaiprakash Singh * Index {b} represents a set of registers mapped by using PEM_MPAM_ASSOC_PC, however
1322*4b8b8d74SJaiprakash Singh * the MPAM value is not used for these registers and accumulated value will reflect
1323*4b8b8d74SJaiprakash Singh * all inbound TLPs. All 8 registers will read the same.
1324*4b8b8d74SJaiprakash Singh *
1325*4b8b8d74SJaiprakash Singh * When PEM_CTL_STATUS2.PERF_LATENCY_EN is clear, this register is clock gated.
1326*4b8b8d74SJaiprakash Singh *
1327*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
1328*4b8b8d74SJaiprakash Singh */
1329*4b8b8d74SJaiprakash Singh union ody_pemx_ib_readsx_pcx {
1330*4b8b8d74SJaiprakash Singh uint64_t u;
1331*4b8b8d74SJaiprakash Singh struct ody_pemx_ib_readsx_pcx_s {
1332*4b8b8d74SJaiprakash Singh uint64_t reads : 64;
1333*4b8b8d74SJaiprakash Singh } s;
1334*4b8b8d74SJaiprakash Singh /* struct ody_pemx_ib_readsx_pcx_s cn; */
1335*4b8b8d74SJaiprakash Singh };
1336*4b8b8d74SJaiprakash Singh typedef union ody_pemx_ib_readsx_pcx ody_pemx_ib_readsx_pcx_t;
1337*4b8b8d74SJaiprakash Singh
1338*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_IB_READSX_PCX(uint64_t a, uint64_t b, uint64_t c) __attribute__ ((pure, always_inline));
ODY_PEMX_IB_READSX_PCX(uint64_t a,uint64_t b,uint64_t c)1339*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_IB_READSX_PCX(uint64_t a, uint64_t b, uint64_t c)
1340*4b8b8d74SJaiprakash Singh {
1341*4b8b8d74SJaiprakash Singh if ((a <= 15) && (b == 0) && (c <= 7))
1342*4b8b8d74SJaiprakash Singh return 0x8e0000005300ll + 0x1000000000ll * ((a) & 0xf) + 0x20ll * ((c) & 0x7);
1343*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_IB_READSX_PCX", 3, a, b, c, 0, 0, 0);
1344*4b8b8d74SJaiprakash Singh }
1345*4b8b8d74SJaiprakash Singh
1346*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_IB_READSX_PCX(a, b, c) ody_pemx_ib_readsx_pcx_t
1347*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_IB_READSX_PCX(a, b, c) CSR_TYPE_NCB
1348*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_IB_READSX_PCX(a, b, c) "PEMX_IB_READSX_PCX"
1349*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_IB_READSX_PCX(a, b, c) 0x0 /* PF_BAR0 */
1350*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_IB_READSX_PCX(a, b, c) (a)
1351*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_IB_READSX_PCX(a, b, c) (a), (b), (c), -1
1352*4b8b8d74SJaiprakash Singh
1353*4b8b8d74SJaiprakash Singh /**
1354*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_ib_req#_no_ro_pc#
1355*4b8b8d74SJaiprakash Singh *
1356*4b8b8d74SJaiprakash Singh * PEM Inbound No Relaxed Ordering Registers
1357*4b8b8d74SJaiprakash Singh * This register resets on core domain reset. It measures the number of inbound requests
1358*4b8b8d74SJaiprakash Singh * (non-posted/posted) directed to the target bus with the RO attribute not set.
1359*4b8b8d74SJaiprakash Singh * Index {a} represents the internal target bus and is enumerated by PEM_PERF_BUS_E.
1360*4b8b8d74SJaiprakash Singh * Index {b} represents a set of registers mapped by using PEM_MPAM_ASSOC_PC,
1361*4b8b8d74SJaiprakash Singh * however the mapping is not used for these registers; instead, all 8 registers are
1362*4b8b8d74SJaiprakash Singh * updated for all MPAM values.
1363*4b8b8d74SJaiprakash Singh *
1364*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
1365*4b8b8d74SJaiprakash Singh */
1366*4b8b8d74SJaiprakash Singh union ody_pemx_ib_reqx_no_ro_pcx {
1367*4b8b8d74SJaiprakash Singh uint64_t u;
1368*4b8b8d74SJaiprakash Singh struct ody_pemx_ib_reqx_no_ro_pcx_s {
1369*4b8b8d74SJaiprakash Singh uint64_t count : 64;
1370*4b8b8d74SJaiprakash Singh } s;
1371*4b8b8d74SJaiprakash Singh /* struct ody_pemx_ib_reqx_no_ro_pcx_s cn; */
1372*4b8b8d74SJaiprakash Singh };
1373*4b8b8d74SJaiprakash Singh typedef union ody_pemx_ib_reqx_no_ro_pcx ody_pemx_ib_reqx_no_ro_pcx_t;
1374*4b8b8d74SJaiprakash Singh
1375*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_IB_REQX_NO_RO_PCX(uint64_t a, uint64_t b, uint64_t c) __attribute__ ((pure, always_inline));
ODY_PEMX_IB_REQX_NO_RO_PCX(uint64_t a,uint64_t b,uint64_t c)1376*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_IB_REQX_NO_RO_PCX(uint64_t a, uint64_t b, uint64_t c)
1377*4b8b8d74SJaiprakash Singh {
1378*4b8b8d74SJaiprakash Singh if ((a <= 15) && (b <= 1) && (c <= 7))
1379*4b8b8d74SJaiprakash Singh return 0x8e0000005400ll + 0x1000000000ll * ((a) & 0xf) + 8ll * ((b) & 0x1) + 0x20ll * ((c) & 0x7);
1380*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_IB_REQX_NO_RO_PCX", 3, a, b, c, 0, 0, 0);
1381*4b8b8d74SJaiprakash Singh }
1382*4b8b8d74SJaiprakash Singh
1383*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_IB_REQX_NO_RO_PCX(a, b, c) ody_pemx_ib_reqx_no_ro_pcx_t
1384*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_IB_REQX_NO_RO_PCX(a, b, c) CSR_TYPE_NCB
1385*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_IB_REQX_NO_RO_PCX(a, b, c) "PEMX_IB_REQX_NO_RO_PCX"
1386*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_IB_REQX_NO_RO_PCX(a, b, c) 0x0 /* PF_BAR0 */
1387*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_IB_REQX_NO_RO_PCX(a, b, c) (a)
1388*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_IB_REQX_NO_RO_PCX(a, b, c) (a), (b), (c), -1
1389*4b8b8d74SJaiprakash Singh
1390*4b8b8d74SJaiprakash Singh /**
1391*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_ib_tlp#_dwords_pc#
1392*4b8b8d74SJaiprakash Singh *
1393*4b8b8d74SJaiprakash Singh * PEM Inbound TLP DWORDS Registers
1394*4b8b8d74SJaiprakash Singh * This register resets on core domain reset. Otherwise, it continuously accumulates
1395*4b8b8d74SJaiprakash Singh * the number of DWORDS (including header overhead) in every inbound TLP received
1396*4b8b8d74SJaiprakash Singh * from PCIe and headed to the target bus.
1397*4b8b8d74SJaiprakash Singh * Index {a} represents the TLP type and is enumerated by PEM_PERF_TLP_TYPE_E.
1398*4b8b8d74SJaiprakash Singh * Index {b} represents a set of registers mapped by using PEM_MPAM_ASSOC_PC,
1399*4b8b8d74SJaiprakash Singh * however the mapping only occurs when Index {a} indicates PERF_CPL; for other
1400*4b8b8d74SJaiprakash Singh * types, all 8 registers are incremented for all MPAM values.
1401*4b8b8d74SJaiprakash Singh *
1402*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
1403*4b8b8d74SJaiprakash Singh */
1404*4b8b8d74SJaiprakash Singh union ody_pemx_ib_tlpx_dwords_pcx {
1405*4b8b8d74SJaiprakash Singh uint64_t u;
1406*4b8b8d74SJaiprakash Singh struct ody_pemx_ib_tlpx_dwords_pcx_s {
1407*4b8b8d74SJaiprakash Singh uint64_t tlp_dwords : 64;
1408*4b8b8d74SJaiprakash Singh } s;
1409*4b8b8d74SJaiprakash Singh /* struct ody_pemx_ib_tlpx_dwords_pcx_s cn; */
1410*4b8b8d74SJaiprakash Singh };
1411*4b8b8d74SJaiprakash Singh typedef union ody_pemx_ib_tlpx_dwords_pcx ody_pemx_ib_tlpx_dwords_pcx_t;
1412*4b8b8d74SJaiprakash Singh
1413*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_IB_TLPX_DWORDS_PCX(uint64_t a, uint64_t b, uint64_t c) __attribute__ ((pure, always_inline));
ODY_PEMX_IB_TLPX_DWORDS_PCX(uint64_t a,uint64_t b,uint64_t c)1414*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_IB_TLPX_DWORDS_PCX(uint64_t a, uint64_t b, uint64_t c)
1415*4b8b8d74SJaiprakash Singh {
1416*4b8b8d74SJaiprakash Singh if ((a <= 15) && (b <= 2) && (c <= 7))
1417*4b8b8d74SJaiprakash Singh return 0x8e0000005100ll + 0x1000000000ll * ((a) & 0xf) + 8ll * ((b) & 0x3) + 0x20ll * ((c) & 0x7);
1418*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_IB_TLPX_DWORDS_PCX", 3, a, b, c, 0, 0, 0);
1419*4b8b8d74SJaiprakash Singh }
1420*4b8b8d74SJaiprakash Singh
1421*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_IB_TLPX_DWORDS_PCX(a, b, c) ody_pemx_ib_tlpx_dwords_pcx_t
1422*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_IB_TLPX_DWORDS_PCX(a, b, c) CSR_TYPE_NCB
1423*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_IB_TLPX_DWORDS_PCX(a, b, c) "PEMX_IB_TLPX_DWORDS_PCX"
1424*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_IB_TLPX_DWORDS_PCX(a, b, c) 0x0 /* PF_BAR0 */
1425*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_IB_TLPX_DWORDS_PCX(a, b, c) (a)
1426*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_IB_TLPX_DWORDS_PCX(a, b, c) (a), (b), (c), -1
1427*4b8b8d74SJaiprakash Singh
1428*4b8b8d74SJaiprakash Singh /**
1429*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_ib_tlp#_pc#
1430*4b8b8d74SJaiprakash Singh *
1431*4b8b8d74SJaiprakash Singh * PEM Inbound TLP Count Registers
1432*4b8b8d74SJaiprakash Singh * This register resets on core domain reset. Otherwise, it continuously increments
1433*4b8b8d74SJaiprakash Singh * on every inbound TLP received from PCIe and headed to the target bus.
1434*4b8b8d74SJaiprakash Singh * Index {a} represents the TLP type and is enumerated by PEM_PERF_TLP_TYPE_E.
1435*4b8b8d74SJaiprakash Singh * Index {b} represents a set of registers mapped by using PEM_MPAM_ASSOC_PC,
1436*4b8b8d74SJaiprakash Singh * however the mapping only occurs when Index {a} indicates PERF_CPL; for other
1437*4b8b8d74SJaiprakash Singh * types, all 8 registers are incremented for all MPAM values.
1438*4b8b8d74SJaiprakash Singh *
1439*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
1440*4b8b8d74SJaiprakash Singh */
1441*4b8b8d74SJaiprakash Singh union ody_pemx_ib_tlpx_pcx {
1442*4b8b8d74SJaiprakash Singh uint64_t u;
1443*4b8b8d74SJaiprakash Singh struct ody_pemx_ib_tlpx_pcx_s {
1444*4b8b8d74SJaiprakash Singh uint64_t count : 64;
1445*4b8b8d74SJaiprakash Singh } s;
1446*4b8b8d74SJaiprakash Singh /* struct ody_pemx_ib_tlpx_pcx_s cn; */
1447*4b8b8d74SJaiprakash Singh };
1448*4b8b8d74SJaiprakash Singh typedef union ody_pemx_ib_tlpx_pcx ody_pemx_ib_tlpx_pcx_t;
1449*4b8b8d74SJaiprakash Singh
1450*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_IB_TLPX_PCX(uint64_t a, uint64_t b, uint64_t c) __attribute__ ((pure, always_inline));
ODY_PEMX_IB_TLPX_PCX(uint64_t a,uint64_t b,uint64_t c)1451*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_IB_TLPX_PCX(uint64_t a, uint64_t b, uint64_t c)
1452*4b8b8d74SJaiprakash Singh {
1453*4b8b8d74SJaiprakash Singh if ((a <= 15) && (b <= 2) && (c <= 7))
1454*4b8b8d74SJaiprakash Singh return 0x8e0000005000ll + 0x1000000000ll * ((a) & 0xf) + 8ll * ((b) & 0x3) + 0x20ll * ((c) & 0x7);
1455*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_IB_TLPX_PCX", 3, a, b, c, 0, 0, 0);
1456*4b8b8d74SJaiprakash Singh }
1457*4b8b8d74SJaiprakash Singh
1458*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_IB_TLPX_PCX(a, b, c) ody_pemx_ib_tlpx_pcx_t
1459*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_IB_TLPX_PCX(a, b, c) CSR_TYPE_NCB
1460*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_IB_TLPX_PCX(a, b, c) "PEMX_IB_TLPX_PCX"
1461*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_IB_TLPX_PCX(a, b, c) 0x0 /* PF_BAR0 */
1462*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_IB_TLPX_PCX(a, b, c) (a)
1463*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_IB_TLPX_PCX(a, b, c) (a), (b), (c), -1
1464*4b8b8d74SJaiprakash Singh
1465*4b8b8d74SJaiprakash Singh /**
1466*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_int_ena_w1c
1467*4b8b8d74SJaiprakash Singh *
1468*4b8b8d74SJaiprakash Singh * PEM Interrupt Enable Clear Register
1469*4b8b8d74SJaiprakash Singh * This register clears interrupt enable bits.
1470*4b8b8d74SJaiprakash Singh */
1471*4b8b8d74SJaiprakash Singh union ody_pemx_int_ena_w1c {
1472*4b8b8d74SJaiprakash Singh uint64_t u;
1473*4b8b8d74SJaiprakash Singh struct ody_pemx_int_ena_w1c_s {
1474*4b8b8d74SJaiprakash Singh uint64_t se : 1;
1475*4b8b8d74SJaiprakash Singh uint64_t up_b3 : 1;
1476*4b8b8d74SJaiprakash Singh uint64_t up_b4 : 1;
1477*4b8b8d74SJaiprakash Singh uint64_t up_b2 : 1;
1478*4b8b8d74SJaiprakash Singh uint64_t up_bx : 1;
1479*4b8b8d74SJaiprakash Singh uint64_t un_b4 : 1;
1480*4b8b8d74SJaiprakash Singh uint64_t un_b2 : 1;
1481*4b8b8d74SJaiprakash Singh uint64_t un_bx : 1;
1482*4b8b8d74SJaiprakash Singh uint64_t rdlk : 1;
1483*4b8b8d74SJaiprakash Singh uint64_t crs_er : 1;
1484*4b8b8d74SJaiprakash Singh uint64_t crs_dr : 1;
1485*4b8b8d74SJaiprakash Singh uint64_t cfg_inf : 1;
1486*4b8b8d74SJaiprakash Singh uint64_t surp_down : 1;
1487*4b8b8d74SJaiprakash Singh uint64_t up_b0 : 1;
1488*4b8b8d74SJaiprakash Singh uint64_t un_b0 : 1;
1489*4b8b8d74SJaiprakash Singh uint64_t ptm_rdy_val : 1;
1490*4b8b8d74SJaiprakash Singh uint64_t reserved_16_17 : 2;
1491*4b8b8d74SJaiprakash Singh uint64_t up_vf_b0 : 1;
1492*4b8b8d74SJaiprakash Singh uint64_t reserved_19_20 : 2;
1493*4b8b8d74SJaiprakash Singh uint64_t un_vf_b0 : 1;
1494*4b8b8d74SJaiprakash Singh uint64_t ptm_rq_replaytx : 1;
1495*4b8b8d74SJaiprakash Singh uint64_t ptm_rq_duprx : 1;
1496*4b8b8d74SJaiprakash Singh uint64_t ptm_rq_unexp_rto : 1;
1497*4b8b8d74SJaiprakash Singh uint64_t un_at : 1;
1498*4b8b8d74SJaiprakash Singh uint64_t up_at : 1;
1499*4b8b8d74SJaiprakash Singh uint64_t ats_itag_er : 1;
1500*4b8b8d74SJaiprakash Singh uint64_t reserved_28_63 : 36;
1501*4b8b8d74SJaiprakash Singh } s;
1502*4b8b8d74SJaiprakash Singh /* struct ody_pemx_int_ena_w1c_s cn; */
1503*4b8b8d74SJaiprakash Singh };
1504*4b8b8d74SJaiprakash Singh typedef union ody_pemx_int_ena_w1c ody_pemx_int_ena_w1c_t;
1505*4b8b8d74SJaiprakash Singh
1506*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_INT_ENA_W1C(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_INT_ENA_W1C(uint64_t a)1507*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_INT_ENA_W1C(uint64_t a)
1508*4b8b8d74SJaiprakash Singh {
1509*4b8b8d74SJaiprakash Singh if (a <= 15)
1510*4b8b8d74SJaiprakash Singh return 0x8e00000000f8ll + 0x1000000000ll * ((a) & 0xf);
1511*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_INT_ENA_W1C", 1, a, 0, 0, 0, 0, 0);
1512*4b8b8d74SJaiprakash Singh }
1513*4b8b8d74SJaiprakash Singh
1514*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_INT_ENA_W1C(a) ody_pemx_int_ena_w1c_t
1515*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_INT_ENA_W1C(a) CSR_TYPE_NCB
1516*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_INT_ENA_W1C(a) "PEMX_INT_ENA_W1C"
1517*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_INT_ENA_W1C(a) 0x0 /* PF_BAR0 */
1518*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_INT_ENA_W1C(a) (a)
1519*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_INT_ENA_W1C(a) (a), -1, -1, -1
1520*4b8b8d74SJaiprakash Singh
1521*4b8b8d74SJaiprakash Singh /**
1522*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_int_ena_w1s
1523*4b8b8d74SJaiprakash Singh *
1524*4b8b8d74SJaiprakash Singh * PEM Interrupt Enable Set Register
1525*4b8b8d74SJaiprakash Singh * This register sets interrupt enable bits.
1526*4b8b8d74SJaiprakash Singh */
1527*4b8b8d74SJaiprakash Singh union ody_pemx_int_ena_w1s {
1528*4b8b8d74SJaiprakash Singh uint64_t u;
1529*4b8b8d74SJaiprakash Singh struct ody_pemx_int_ena_w1s_s {
1530*4b8b8d74SJaiprakash Singh uint64_t se : 1;
1531*4b8b8d74SJaiprakash Singh uint64_t up_b3 : 1;
1532*4b8b8d74SJaiprakash Singh uint64_t up_b4 : 1;
1533*4b8b8d74SJaiprakash Singh uint64_t up_b2 : 1;
1534*4b8b8d74SJaiprakash Singh uint64_t up_bx : 1;
1535*4b8b8d74SJaiprakash Singh uint64_t un_b4 : 1;
1536*4b8b8d74SJaiprakash Singh uint64_t un_b2 : 1;
1537*4b8b8d74SJaiprakash Singh uint64_t un_bx : 1;
1538*4b8b8d74SJaiprakash Singh uint64_t rdlk : 1;
1539*4b8b8d74SJaiprakash Singh uint64_t crs_er : 1;
1540*4b8b8d74SJaiprakash Singh uint64_t crs_dr : 1;
1541*4b8b8d74SJaiprakash Singh uint64_t cfg_inf : 1;
1542*4b8b8d74SJaiprakash Singh uint64_t surp_down : 1;
1543*4b8b8d74SJaiprakash Singh uint64_t up_b0 : 1;
1544*4b8b8d74SJaiprakash Singh uint64_t un_b0 : 1;
1545*4b8b8d74SJaiprakash Singh uint64_t ptm_rdy_val : 1;
1546*4b8b8d74SJaiprakash Singh uint64_t reserved_16_17 : 2;
1547*4b8b8d74SJaiprakash Singh uint64_t up_vf_b0 : 1;
1548*4b8b8d74SJaiprakash Singh uint64_t reserved_19_20 : 2;
1549*4b8b8d74SJaiprakash Singh uint64_t un_vf_b0 : 1;
1550*4b8b8d74SJaiprakash Singh uint64_t ptm_rq_replaytx : 1;
1551*4b8b8d74SJaiprakash Singh uint64_t ptm_rq_duprx : 1;
1552*4b8b8d74SJaiprakash Singh uint64_t ptm_rq_unexp_rto : 1;
1553*4b8b8d74SJaiprakash Singh uint64_t un_at : 1;
1554*4b8b8d74SJaiprakash Singh uint64_t up_at : 1;
1555*4b8b8d74SJaiprakash Singh uint64_t ats_itag_er : 1;
1556*4b8b8d74SJaiprakash Singh uint64_t reserved_28_63 : 36;
1557*4b8b8d74SJaiprakash Singh } s;
1558*4b8b8d74SJaiprakash Singh /* struct ody_pemx_int_ena_w1s_s cn; */
1559*4b8b8d74SJaiprakash Singh };
1560*4b8b8d74SJaiprakash Singh typedef union ody_pemx_int_ena_w1s ody_pemx_int_ena_w1s_t;
1561*4b8b8d74SJaiprakash Singh
1562*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_INT_ENA_W1S(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_INT_ENA_W1S(uint64_t a)1563*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_INT_ENA_W1S(uint64_t a)
1564*4b8b8d74SJaiprakash Singh {
1565*4b8b8d74SJaiprakash Singh if (a <= 15)
1566*4b8b8d74SJaiprakash Singh return 0x8e0000000100ll + 0x1000000000ll * ((a) & 0xf);
1567*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_INT_ENA_W1S", 1, a, 0, 0, 0, 0, 0);
1568*4b8b8d74SJaiprakash Singh }
1569*4b8b8d74SJaiprakash Singh
1570*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_INT_ENA_W1S(a) ody_pemx_int_ena_w1s_t
1571*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_INT_ENA_W1S(a) CSR_TYPE_NCB
1572*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_INT_ENA_W1S(a) "PEMX_INT_ENA_W1S"
1573*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_INT_ENA_W1S(a) 0x0 /* PF_BAR0 */
1574*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_INT_ENA_W1S(a) (a)
1575*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_INT_ENA_W1S(a) (a), -1, -1, -1
1576*4b8b8d74SJaiprakash Singh
1577*4b8b8d74SJaiprakash Singh /**
1578*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_int_sum
1579*4b8b8d74SJaiprakash Singh *
1580*4b8b8d74SJaiprakash Singh * PEM Interrupt Summary Register
1581*4b8b8d74SJaiprakash Singh * This register contains the different interrupt summary bits of the PEM.
1582*4b8b8d74SJaiprakash Singh *
1583*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
1584*4b8b8d74SJaiprakash Singh *
1585*4b8b8d74SJaiprakash Singh * This register is reset on core domain reset.
1586*4b8b8d74SJaiprakash Singh */
1587*4b8b8d74SJaiprakash Singh union ody_pemx_int_sum {
1588*4b8b8d74SJaiprakash Singh uint64_t u;
1589*4b8b8d74SJaiprakash Singh struct ody_pemx_int_sum_s {
1590*4b8b8d74SJaiprakash Singh uint64_t se : 1;
1591*4b8b8d74SJaiprakash Singh uint64_t up_b3 : 1;
1592*4b8b8d74SJaiprakash Singh uint64_t up_b4 : 1;
1593*4b8b8d74SJaiprakash Singh uint64_t up_b2 : 1;
1594*4b8b8d74SJaiprakash Singh uint64_t up_bx : 1;
1595*4b8b8d74SJaiprakash Singh uint64_t un_b4 : 1;
1596*4b8b8d74SJaiprakash Singh uint64_t un_b2 : 1;
1597*4b8b8d74SJaiprakash Singh uint64_t un_bx : 1;
1598*4b8b8d74SJaiprakash Singh uint64_t rdlk : 1;
1599*4b8b8d74SJaiprakash Singh uint64_t crs_er : 1;
1600*4b8b8d74SJaiprakash Singh uint64_t crs_dr : 1;
1601*4b8b8d74SJaiprakash Singh uint64_t cfg_inf : 1;
1602*4b8b8d74SJaiprakash Singh uint64_t surp_down : 1;
1603*4b8b8d74SJaiprakash Singh uint64_t up_b0 : 1;
1604*4b8b8d74SJaiprakash Singh uint64_t un_b0 : 1;
1605*4b8b8d74SJaiprakash Singh uint64_t ptm_rdy_val : 1;
1606*4b8b8d74SJaiprakash Singh uint64_t reserved_16_17 : 2;
1607*4b8b8d74SJaiprakash Singh uint64_t up_vf_b0 : 1;
1608*4b8b8d74SJaiprakash Singh uint64_t reserved_19_20 : 2;
1609*4b8b8d74SJaiprakash Singh uint64_t un_vf_b0 : 1;
1610*4b8b8d74SJaiprakash Singh uint64_t ptm_rq_replaytx : 1;
1611*4b8b8d74SJaiprakash Singh uint64_t ptm_rq_duprx : 1;
1612*4b8b8d74SJaiprakash Singh uint64_t ptm_rq_unexp_rto : 1;
1613*4b8b8d74SJaiprakash Singh uint64_t un_at : 1;
1614*4b8b8d74SJaiprakash Singh uint64_t up_at : 1;
1615*4b8b8d74SJaiprakash Singh uint64_t ats_itag_er : 1;
1616*4b8b8d74SJaiprakash Singh uint64_t reserved_28_63 : 36;
1617*4b8b8d74SJaiprakash Singh } s;
1618*4b8b8d74SJaiprakash Singh /* struct ody_pemx_int_sum_s cn; */
1619*4b8b8d74SJaiprakash Singh };
1620*4b8b8d74SJaiprakash Singh typedef union ody_pemx_int_sum ody_pemx_int_sum_t;
1621*4b8b8d74SJaiprakash Singh
1622*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_INT_SUM(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_INT_SUM(uint64_t a)1623*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_INT_SUM(uint64_t a)
1624*4b8b8d74SJaiprakash Singh {
1625*4b8b8d74SJaiprakash Singh if (a <= 15)
1626*4b8b8d74SJaiprakash Singh return 0x8e00000000e8ll + 0x1000000000ll * ((a) & 0xf);
1627*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_INT_SUM", 1, a, 0, 0, 0, 0, 0);
1628*4b8b8d74SJaiprakash Singh }
1629*4b8b8d74SJaiprakash Singh
1630*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_INT_SUM(a) ody_pemx_int_sum_t
1631*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_INT_SUM(a) CSR_TYPE_NCB
1632*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_INT_SUM(a) "PEMX_INT_SUM"
1633*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_INT_SUM(a) 0x0 /* PF_BAR0 */
1634*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_INT_SUM(a) (a)
1635*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_INT_SUM(a) (a), -1, -1, -1
1636*4b8b8d74SJaiprakash Singh
1637*4b8b8d74SJaiprakash Singh /**
1638*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_int_sum_w1s
1639*4b8b8d74SJaiprakash Singh *
1640*4b8b8d74SJaiprakash Singh * PEM Interrupt Summary Register
1641*4b8b8d74SJaiprakash Singh * This register sets interrupt bits.
1642*4b8b8d74SJaiprakash Singh */
1643*4b8b8d74SJaiprakash Singh union ody_pemx_int_sum_w1s {
1644*4b8b8d74SJaiprakash Singh uint64_t u;
1645*4b8b8d74SJaiprakash Singh struct ody_pemx_int_sum_w1s_s {
1646*4b8b8d74SJaiprakash Singh uint64_t se : 1;
1647*4b8b8d74SJaiprakash Singh uint64_t up_b3 : 1;
1648*4b8b8d74SJaiprakash Singh uint64_t up_b4 : 1;
1649*4b8b8d74SJaiprakash Singh uint64_t up_b2 : 1;
1650*4b8b8d74SJaiprakash Singh uint64_t up_bx : 1;
1651*4b8b8d74SJaiprakash Singh uint64_t un_b4 : 1;
1652*4b8b8d74SJaiprakash Singh uint64_t un_b2 : 1;
1653*4b8b8d74SJaiprakash Singh uint64_t un_bx : 1;
1654*4b8b8d74SJaiprakash Singh uint64_t rdlk : 1;
1655*4b8b8d74SJaiprakash Singh uint64_t crs_er : 1;
1656*4b8b8d74SJaiprakash Singh uint64_t crs_dr : 1;
1657*4b8b8d74SJaiprakash Singh uint64_t cfg_inf : 1;
1658*4b8b8d74SJaiprakash Singh uint64_t surp_down : 1;
1659*4b8b8d74SJaiprakash Singh uint64_t up_b0 : 1;
1660*4b8b8d74SJaiprakash Singh uint64_t un_b0 : 1;
1661*4b8b8d74SJaiprakash Singh uint64_t ptm_rdy_val : 1;
1662*4b8b8d74SJaiprakash Singh uint64_t reserved_16_17 : 2;
1663*4b8b8d74SJaiprakash Singh uint64_t up_vf_b0 : 1;
1664*4b8b8d74SJaiprakash Singh uint64_t reserved_19_20 : 2;
1665*4b8b8d74SJaiprakash Singh uint64_t un_vf_b0 : 1;
1666*4b8b8d74SJaiprakash Singh uint64_t ptm_rq_replaytx : 1;
1667*4b8b8d74SJaiprakash Singh uint64_t ptm_rq_duprx : 1;
1668*4b8b8d74SJaiprakash Singh uint64_t ptm_rq_unexp_rto : 1;
1669*4b8b8d74SJaiprakash Singh uint64_t un_at : 1;
1670*4b8b8d74SJaiprakash Singh uint64_t up_at : 1;
1671*4b8b8d74SJaiprakash Singh uint64_t ats_itag_er : 1;
1672*4b8b8d74SJaiprakash Singh uint64_t reserved_28_63 : 36;
1673*4b8b8d74SJaiprakash Singh } s;
1674*4b8b8d74SJaiprakash Singh /* struct ody_pemx_int_sum_w1s_s cn; */
1675*4b8b8d74SJaiprakash Singh };
1676*4b8b8d74SJaiprakash Singh typedef union ody_pemx_int_sum_w1s ody_pemx_int_sum_w1s_t;
1677*4b8b8d74SJaiprakash Singh
1678*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_INT_SUM_W1S(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_INT_SUM_W1S(uint64_t a)1679*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_INT_SUM_W1S(uint64_t a)
1680*4b8b8d74SJaiprakash Singh {
1681*4b8b8d74SJaiprakash Singh if (a <= 15)
1682*4b8b8d74SJaiprakash Singh return 0x8e00000000f0ll + 0x1000000000ll * ((a) & 0xf);
1683*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_INT_SUM_W1S", 1, a, 0, 0, 0, 0, 0);
1684*4b8b8d74SJaiprakash Singh }
1685*4b8b8d74SJaiprakash Singh
1686*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_INT_SUM_W1S(a) ody_pemx_int_sum_w1s_t
1687*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_INT_SUM_W1S(a) CSR_TYPE_NCB
1688*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_INT_SUM_W1S(a) "PEMX_INT_SUM_W1S"
1689*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_INT_SUM_W1S(a) 0x0 /* PF_BAR0 */
1690*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_INT_SUM_W1S(a) (a)
1691*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_INT_SUM_W1S(a) (a), -1, -1, -1
1692*4b8b8d74SJaiprakash Singh
1693*4b8b8d74SJaiprakash Singh /**
1694*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_merge_timer_ctl
1695*4b8b8d74SJaiprakash Singh *
1696*4b8b8d74SJaiprakash Singh * PEM Merge Timer Control Register
1697*4b8b8d74SJaiprakash Singh * This register controls merging timers and overrides for maximum merging size
1698*4b8b8d74SJaiprakash Singh * for outbound reads, writes, and completions. The TIMER fields in this
1699*4b8b8d74SJaiprakash Singh * register reset to values that will allow merging and therefore improved
1700*4b8b8d74SJaiprakash Singh * bandwidth across all PEM configurations. If a system is more sensitive to
1701*4b8b8d74SJaiprakash Singh * reducing latency, then these fields can be written to smaller values to
1702*4b8b8d74SJaiprakash Singh * ensure transactions do not wait too long to merge before being sent to PCIe.
1703*4b8b8d74SJaiprakash Singh *
1704*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
1705*4b8b8d74SJaiprakash Singh *
1706*4b8b8d74SJaiprakash Singh * This register is reset on core domain reset.
1707*4b8b8d74SJaiprakash Singh */
1708*4b8b8d74SJaiprakash Singh union ody_pemx_merge_timer_ctl {
1709*4b8b8d74SJaiprakash Singh uint64_t u;
1710*4b8b8d74SJaiprakash Singh struct ody_pemx_merge_timer_ctl_s {
1711*4b8b8d74SJaiprakash Singh uint64_t rmerge_segment_timer : 10;
1712*4b8b8d74SJaiprakash Singh uint64_t rmerge_total_timer : 10;
1713*4b8b8d74SJaiprakash Singh uint64_t rmerge_mrrs_limit : 3;
1714*4b8b8d74SJaiprakash Singh uint64_t wmerge_segment_timer : 10;
1715*4b8b8d74SJaiprakash Singh uint64_t wmerge_total_timer : 10;
1716*4b8b8d74SJaiprakash Singh uint64_t wmerge_mps_limit : 3;
1717*4b8b8d74SJaiprakash Singh uint64_t cmerge_segment_timer : 7;
1718*4b8b8d74SJaiprakash Singh uint64_t cmerge_total_timer : 7;
1719*4b8b8d74SJaiprakash Singh uint64_t cmerge_mps_limit : 3;
1720*4b8b8d74SJaiprakash Singh uint64_t cmerge_dis : 1;
1721*4b8b8d74SJaiprakash Singh } s;
1722*4b8b8d74SJaiprakash Singh /* struct ody_pemx_merge_timer_ctl_s cn; */
1723*4b8b8d74SJaiprakash Singh };
1724*4b8b8d74SJaiprakash Singh typedef union ody_pemx_merge_timer_ctl ody_pemx_merge_timer_ctl_t;
1725*4b8b8d74SJaiprakash Singh
1726*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_MERGE_TIMER_CTL(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_MERGE_TIMER_CTL(uint64_t a)1727*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_MERGE_TIMER_CTL(uint64_t a)
1728*4b8b8d74SJaiprakash Singh {
1729*4b8b8d74SJaiprakash Singh if (a <= 15)
1730*4b8b8d74SJaiprakash Singh return 0x8e0000000180ll + 0x1000000000ll * ((a) & 0xf);
1731*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_MERGE_TIMER_CTL", 1, a, 0, 0, 0, 0, 0);
1732*4b8b8d74SJaiprakash Singh }
1733*4b8b8d74SJaiprakash Singh
1734*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_MERGE_TIMER_CTL(a) ody_pemx_merge_timer_ctl_t
1735*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_MERGE_TIMER_CTL(a) CSR_TYPE_NCB
1736*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_MERGE_TIMER_CTL(a) "PEMX_MERGE_TIMER_CTL"
1737*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_MERGE_TIMER_CTL(a) 0x0 /* PF_BAR0 */
1738*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_MERGE_TIMER_CTL(a) (a)
1739*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_MERGE_TIMER_CTL(a) (a), -1, -1, -1
1740*4b8b8d74SJaiprakash Singh
1741*4b8b8d74SJaiprakash Singh /**
1742*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_mpam_assoc_pc#
1743*4b8b8d74SJaiprakash Singh *
1744*4b8b8d74SJaiprakash Singh * PEM NCB Outbound Merge Count Register
1745*4b8b8d74SJaiprakash Singh * This register is used to create a mapping of MPAM ID to one of eight sets of
1746*4b8b8d74SJaiprakash Singh * hardware performance counters.
1747*4b8b8d74SJaiprakash Singh *
1748*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
1749*4b8b8d74SJaiprakash Singh */
1750*4b8b8d74SJaiprakash Singh union ody_pemx_mpam_assoc_pcx {
1751*4b8b8d74SJaiprakash Singh uint64_t u;
1752*4b8b8d74SJaiprakash Singh struct ody_pemx_mpam_assoc_pcx_s {
1753*4b8b8d74SJaiprakash Singh uint64_t id : 3;
1754*4b8b8d74SJaiprakash Singh uint64_t reserved_3_63 : 61;
1755*4b8b8d74SJaiprakash Singh } s;
1756*4b8b8d74SJaiprakash Singh /* struct ody_pemx_mpam_assoc_pcx_s cn; */
1757*4b8b8d74SJaiprakash Singh };
1758*4b8b8d74SJaiprakash Singh typedef union ody_pemx_mpam_assoc_pcx ody_pemx_mpam_assoc_pcx_t;
1759*4b8b8d74SJaiprakash Singh
1760*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_MPAM_ASSOC_PCX(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_PEMX_MPAM_ASSOC_PCX(uint64_t a,uint64_t b)1761*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_MPAM_ASSOC_PCX(uint64_t a, uint64_t b)
1762*4b8b8d74SJaiprakash Singh {
1763*4b8b8d74SJaiprakash Singh if ((a <= 15) && (b <= 255))
1764*4b8b8d74SJaiprakash Singh return 0x8e0000006000ll + 0x1000000000ll * ((a) & 0xf) + 8ll * ((b) & 0xff);
1765*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_MPAM_ASSOC_PCX", 2, a, b, 0, 0, 0, 0);
1766*4b8b8d74SJaiprakash Singh }
1767*4b8b8d74SJaiprakash Singh
1768*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_MPAM_ASSOC_PCX(a, b) ody_pemx_mpam_assoc_pcx_t
1769*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_MPAM_ASSOC_PCX(a, b) CSR_TYPE_NCB
1770*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_MPAM_ASSOC_PCX(a, b) "PEMX_MPAM_ASSOC_PCX"
1771*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_MPAM_ASSOC_PCX(a, b) 0x0 /* PF_BAR0 */
1772*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_MPAM_ASSOC_PCX(a, b) (a)
1773*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_MPAM_ASSOC_PCX(a, b) (a), (b), -1, -1
1774*4b8b8d74SJaiprakash Singh
1775*4b8b8d74SJaiprakash Singh /**
1776*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_msix_pba#
1777*4b8b8d74SJaiprakash Singh *
1778*4b8b8d74SJaiprakash Singh * PEM MSI-X Pending Bit Array Registers
1779*4b8b8d74SJaiprakash Singh * This register is the MSI-X PBA table, the bit number is indexed by the PEM_INT_VEC_E enumeration.
1780*4b8b8d74SJaiprakash Singh *
1781*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
1782*4b8b8d74SJaiprakash Singh *
1783*4b8b8d74SJaiprakash Singh * This register is reset on core domain reset.
1784*4b8b8d74SJaiprakash Singh */
1785*4b8b8d74SJaiprakash Singh union ody_pemx_msix_pbax {
1786*4b8b8d74SJaiprakash Singh uint64_t u;
1787*4b8b8d74SJaiprakash Singh struct ody_pemx_msix_pbax_s {
1788*4b8b8d74SJaiprakash Singh uint64_t pend : 64;
1789*4b8b8d74SJaiprakash Singh } s;
1790*4b8b8d74SJaiprakash Singh /* struct ody_pemx_msix_pbax_s cn; */
1791*4b8b8d74SJaiprakash Singh };
1792*4b8b8d74SJaiprakash Singh typedef union ody_pemx_msix_pbax ody_pemx_msix_pbax_t;
1793*4b8b8d74SJaiprakash Singh
1794*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_MSIX_PBAX(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_PEMX_MSIX_PBAX(uint64_t a,uint64_t b)1795*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_MSIX_PBAX(uint64_t a, uint64_t b)
1796*4b8b8d74SJaiprakash Singh {
1797*4b8b8d74SJaiprakash Singh if ((a <= 15) && (b == 0))
1798*4b8b8d74SJaiprakash Singh return 0x8e0f000f0000ll + 0x1000000000ll * ((a) & 0xf);
1799*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_MSIX_PBAX", 2, a, b, 0, 0, 0, 0);
1800*4b8b8d74SJaiprakash Singh }
1801*4b8b8d74SJaiprakash Singh
1802*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_MSIX_PBAX(a, b) ody_pemx_msix_pbax_t
1803*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_MSIX_PBAX(a, b) CSR_TYPE_NCB
1804*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_MSIX_PBAX(a, b) "PEMX_MSIX_PBAX"
1805*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_MSIX_PBAX(a, b) 0x4 /* PF_BAR4 */
1806*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_MSIX_PBAX(a, b) (a)
1807*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_MSIX_PBAX(a, b) (a), (b), -1, -1
1808*4b8b8d74SJaiprakash Singh
1809*4b8b8d74SJaiprakash Singh /**
1810*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_msix_vec#_addr
1811*4b8b8d74SJaiprakash Singh *
1812*4b8b8d74SJaiprakash Singh * PEM MSI-X Vector Table Address Registers
1813*4b8b8d74SJaiprakash Singh * This register is the MSI-X vector table, indexed by the PEM_INT_VEC_E enumeration.
1814*4b8b8d74SJaiprakash Singh *
1815*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
1816*4b8b8d74SJaiprakash Singh *
1817*4b8b8d74SJaiprakash Singh * This register is reset on core domain reset.
1818*4b8b8d74SJaiprakash Singh */
1819*4b8b8d74SJaiprakash Singh union ody_pemx_msix_vecx_addr {
1820*4b8b8d74SJaiprakash Singh uint64_t u;
1821*4b8b8d74SJaiprakash Singh struct ody_pemx_msix_vecx_addr_s {
1822*4b8b8d74SJaiprakash Singh uint64_t secvec : 1;
1823*4b8b8d74SJaiprakash Singh uint64_t reserved_1 : 1;
1824*4b8b8d74SJaiprakash Singh uint64_t addr : 51;
1825*4b8b8d74SJaiprakash Singh uint64_t reserved_53_63 : 11;
1826*4b8b8d74SJaiprakash Singh } s;
1827*4b8b8d74SJaiprakash Singh /* struct ody_pemx_msix_vecx_addr_s cn; */
1828*4b8b8d74SJaiprakash Singh };
1829*4b8b8d74SJaiprakash Singh typedef union ody_pemx_msix_vecx_addr ody_pemx_msix_vecx_addr_t;
1830*4b8b8d74SJaiprakash Singh
1831*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_MSIX_VECX_ADDR(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_PEMX_MSIX_VECX_ADDR(uint64_t a,uint64_t b)1832*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_MSIX_VECX_ADDR(uint64_t a, uint64_t b)
1833*4b8b8d74SJaiprakash Singh {
1834*4b8b8d74SJaiprakash Singh if ((a <= 15) && (b <= 11))
1835*4b8b8d74SJaiprakash Singh return 0x8e0f00000000ll + 0x1000000000ll * ((a) & 0xf) + 0x10ll * ((b) & 0xf);
1836*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_MSIX_VECX_ADDR", 2, a, b, 0, 0, 0, 0);
1837*4b8b8d74SJaiprakash Singh }
1838*4b8b8d74SJaiprakash Singh
1839*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_MSIX_VECX_ADDR(a, b) ody_pemx_msix_vecx_addr_t
1840*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_MSIX_VECX_ADDR(a, b) CSR_TYPE_NCB
1841*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_MSIX_VECX_ADDR(a, b) "PEMX_MSIX_VECX_ADDR"
1842*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_MSIX_VECX_ADDR(a, b) 0x4 /* PF_BAR4 */
1843*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_MSIX_VECX_ADDR(a, b) (a)
1844*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_MSIX_VECX_ADDR(a, b) (a), (b), -1, -1
1845*4b8b8d74SJaiprakash Singh
1846*4b8b8d74SJaiprakash Singh /**
1847*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_msix_vec#_ctl
1848*4b8b8d74SJaiprakash Singh *
1849*4b8b8d74SJaiprakash Singh * PEM MSI-X Vector Table Control and Data Registers
1850*4b8b8d74SJaiprakash Singh * This register is the MSI-X vector table, indexed by the PEM_INT_VEC_E enumeration.
1851*4b8b8d74SJaiprakash Singh *
1852*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
1853*4b8b8d74SJaiprakash Singh *
1854*4b8b8d74SJaiprakash Singh * This register is reset on core domain reset.
1855*4b8b8d74SJaiprakash Singh */
1856*4b8b8d74SJaiprakash Singh union ody_pemx_msix_vecx_ctl {
1857*4b8b8d74SJaiprakash Singh uint64_t u;
1858*4b8b8d74SJaiprakash Singh struct ody_pemx_msix_vecx_ctl_s {
1859*4b8b8d74SJaiprakash Singh uint64_t data : 32;
1860*4b8b8d74SJaiprakash Singh uint64_t mask : 1;
1861*4b8b8d74SJaiprakash Singh uint64_t reserved_33_63 : 31;
1862*4b8b8d74SJaiprakash Singh } s;
1863*4b8b8d74SJaiprakash Singh /* struct ody_pemx_msix_vecx_ctl_s cn; */
1864*4b8b8d74SJaiprakash Singh };
1865*4b8b8d74SJaiprakash Singh typedef union ody_pemx_msix_vecx_ctl ody_pemx_msix_vecx_ctl_t;
1866*4b8b8d74SJaiprakash Singh
1867*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_MSIX_VECX_CTL(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_PEMX_MSIX_VECX_CTL(uint64_t a,uint64_t b)1868*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_MSIX_VECX_CTL(uint64_t a, uint64_t b)
1869*4b8b8d74SJaiprakash Singh {
1870*4b8b8d74SJaiprakash Singh if ((a <= 15) && (b <= 11))
1871*4b8b8d74SJaiprakash Singh return 0x8e0f00000008ll + 0x1000000000ll * ((a) & 0xf) + 0x10ll * ((b) & 0xf);
1872*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_MSIX_VECX_CTL", 2, a, b, 0, 0, 0, 0);
1873*4b8b8d74SJaiprakash Singh }
1874*4b8b8d74SJaiprakash Singh
1875*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_MSIX_VECX_CTL(a, b) ody_pemx_msix_vecx_ctl_t
1876*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_MSIX_VECX_CTL(a, b) CSR_TYPE_NCB
1877*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_MSIX_VECX_CTL(a, b) "PEMX_MSIX_VECX_CTL"
1878*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_MSIX_VECX_CTL(a, b) 0x4 /* PF_BAR4 */
1879*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_MSIX_VECX_CTL(a, b) (a)
1880*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_MSIX_VECX_CTL(a, b) (a), (b), -1, -1
1881*4b8b8d74SJaiprakash Singh
1882*4b8b8d74SJaiprakash Singh /**
1883*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_ncbi_ctl
1884*4b8b8d74SJaiprakash Singh *
1885*4b8b8d74SJaiprakash Singh * PEM Inbound NCBI Control Register
1886*4b8b8d74SJaiprakash Singh * This register contains control bits for memory accesses targeting the NCBI bus.
1887*4b8b8d74SJaiprakash Singh *
1888*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
1889*4b8b8d74SJaiprakash Singh *
1890*4b8b8d74SJaiprakash Singh * This register is reset on core domain reset.
1891*4b8b8d74SJaiprakash Singh */
1892*4b8b8d74SJaiprakash Singh union ody_pemx_ncbi_ctl {
1893*4b8b8d74SJaiprakash Singh uint64_t u;
1894*4b8b8d74SJaiprakash Singh struct ody_pemx_ncbi_ctl_s {
1895*4b8b8d74SJaiprakash Singh uint64_t reserved_0 : 1;
1896*4b8b8d74SJaiprakash Singh uint64_t ld_cmd : 2;
1897*4b8b8d74SJaiprakash Singh uint64_t reserved_3_6 : 4;
1898*4b8b8d74SJaiprakash Singh uint64_t ptlp_ro_dis : 1;
1899*4b8b8d74SJaiprakash Singh uint64_t ctlp_ro_dis : 1;
1900*4b8b8d74SJaiprakash Singh uint64_t ntlp_ro_dis : 1;
1901*4b8b8d74SJaiprakash Singh uint64_t clken_force : 1;
1902*4b8b8d74SJaiprakash Singh uint64_t reserved_11_19 : 9;
1903*4b8b8d74SJaiprakash Singh uint64_t bige : 1;
1904*4b8b8d74SJaiprakash Singh uint64_t reserved_21_63 : 43;
1905*4b8b8d74SJaiprakash Singh } s;
1906*4b8b8d74SJaiprakash Singh struct ody_pemx_ncbi_ctl_cn {
1907*4b8b8d74SJaiprakash Singh uint64_t reserved_0 : 1;
1908*4b8b8d74SJaiprakash Singh uint64_t ld_cmd : 2;
1909*4b8b8d74SJaiprakash Singh uint64_t reserved_3 : 1;
1910*4b8b8d74SJaiprakash Singh uint64_t reserved_4 : 1;
1911*4b8b8d74SJaiprakash Singh uint64_t reserved_5_6 : 2;
1912*4b8b8d74SJaiprakash Singh uint64_t ptlp_ro_dis : 1;
1913*4b8b8d74SJaiprakash Singh uint64_t ctlp_ro_dis : 1;
1914*4b8b8d74SJaiprakash Singh uint64_t ntlp_ro_dis : 1;
1915*4b8b8d74SJaiprakash Singh uint64_t clken_force : 1;
1916*4b8b8d74SJaiprakash Singh uint64_t reserved_11_19 : 9;
1917*4b8b8d74SJaiprakash Singh uint64_t bige : 1;
1918*4b8b8d74SJaiprakash Singh uint64_t reserved_21_63 : 43;
1919*4b8b8d74SJaiprakash Singh } cn;
1920*4b8b8d74SJaiprakash Singh };
1921*4b8b8d74SJaiprakash Singh typedef union ody_pemx_ncbi_ctl ody_pemx_ncbi_ctl_t;
1922*4b8b8d74SJaiprakash Singh
1923*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_NCBI_CTL(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_NCBI_CTL(uint64_t a)1924*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_NCBI_CTL(uint64_t a)
1925*4b8b8d74SJaiprakash Singh {
1926*4b8b8d74SJaiprakash Singh if (a <= 15)
1927*4b8b8d74SJaiprakash Singh return 0x8e0000000178ll + 0x1000000000ll * ((a) & 0xf);
1928*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_NCBI_CTL", 1, a, 0, 0, 0, 0, 0);
1929*4b8b8d74SJaiprakash Singh }
1930*4b8b8d74SJaiprakash Singh
1931*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_NCBI_CTL(a) ody_pemx_ncbi_ctl_t
1932*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_NCBI_CTL(a) CSR_TYPE_NCB
1933*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_NCBI_CTL(a) "PEMX_NCBI_CTL"
1934*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_NCBI_CTL(a) 0x0 /* PF_BAR0 */
1935*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_NCBI_CTL(a) (a)
1936*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_NCBI_CTL(a) (a), -1, -1, -1
1937*4b8b8d74SJaiprakash Singh
1938*4b8b8d74SJaiprakash Singh /**
1939*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_ncbi_tlp_credits
1940*4b8b8d74SJaiprakash Singh *
1941*4b8b8d74SJaiprakash Singh * PEM NCB Inbound TLP Credits Register
1942*4b8b8d74SJaiprakash Singh * This register specifies the number of credits for use in moving TLPs. When this register is
1943*4b8b8d74SJaiprakash Singh * written, the credit values are reset to the register value. This register is for diagnostic
1944*4b8b8d74SJaiprakash Singh * use only, and should only be written when PEM()_CTL_STATUS[LNK_ENB] is clear.
1945*4b8b8d74SJaiprakash Singh *
1946*4b8b8d74SJaiprakash Singh * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
1947*4b8b8d74SJaiprakash Singh *
1948*4b8b8d74SJaiprakash Singh * This register is reset on MAC reset.
1949*4b8b8d74SJaiprakash Singh */
1950*4b8b8d74SJaiprakash Singh union ody_pemx_ncbi_tlp_credits {
1951*4b8b8d74SJaiprakash Singh uint64_t u;
1952*4b8b8d74SJaiprakash Singh struct ody_pemx_ncbi_tlp_credits_s {
1953*4b8b8d74SJaiprakash Singh uint64_t ncbi_p : 11;
1954*4b8b8d74SJaiprakash Singh uint64_t ncbi_np : 10;
1955*4b8b8d74SJaiprakash Singh uint64_t ncbi_cpl : 11;
1956*4b8b8d74SJaiprakash Singh uint64_t reserved_32_63 : 32;
1957*4b8b8d74SJaiprakash Singh } s;
1958*4b8b8d74SJaiprakash Singh /* struct ody_pemx_ncbi_tlp_credits_s cn; */
1959*4b8b8d74SJaiprakash Singh };
1960*4b8b8d74SJaiprakash Singh typedef union ody_pemx_ncbi_tlp_credits ody_pemx_ncbi_tlp_credits_t;
1961*4b8b8d74SJaiprakash Singh
1962*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_NCBI_TLP_CREDITS(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_NCBI_TLP_CREDITS(uint64_t a)1963*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_NCBI_TLP_CREDITS(uint64_t a)
1964*4b8b8d74SJaiprakash Singh {
1965*4b8b8d74SJaiprakash Singh if (a <= 15)
1966*4b8b8d74SJaiprakash Singh return 0x8e0000000030ll + 0x1000000000ll * ((a) & 0xf);
1967*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_NCBI_TLP_CREDITS", 1, a, 0, 0, 0, 0, 0);
1968*4b8b8d74SJaiprakash Singh }
1969*4b8b8d74SJaiprakash Singh
1970*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_NCBI_TLP_CREDITS(a) ody_pemx_ncbi_tlp_credits_t
1971*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_NCBI_TLP_CREDITS(a) CSR_TYPE_NCB
1972*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_NCBI_TLP_CREDITS(a) "PEMX_NCBI_TLP_CREDITS"
1973*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_NCBI_TLP_CREDITS(a) 0x0 /* PF_BAR0 */
1974*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_NCBI_TLP_CREDITS(a) (a)
1975*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_NCBI_TLP_CREDITS(a) (a), -1, -1, -1
1976*4b8b8d74SJaiprakash Singh
1977*4b8b8d74SJaiprakash Singh /**
1978*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_ncbo_fifo_status
1979*4b8b8d74SJaiprakash Singh *
1980*4b8b8d74SJaiprakash Singh * PEM NCBO Offloading FIFO Status Register
1981*4b8b8d74SJaiprakash Singh * This register contains status about the PEM NCBO offloading FIFOs.
1982*4b8b8d74SJaiprakash Singh *
1983*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
1984*4b8b8d74SJaiprakash Singh *
1985*4b8b8d74SJaiprakash Singh * This register is reset on core domain reset.
1986*4b8b8d74SJaiprakash Singh */
1987*4b8b8d74SJaiprakash Singh union ody_pemx_ncbo_fifo_status {
1988*4b8b8d74SJaiprakash Singh uint64_t u;
1989*4b8b8d74SJaiprakash Singh struct ody_pemx_ncbo_fifo_status_s {
1990*4b8b8d74SJaiprakash Singh uint64_t p_volume : 8;
1991*4b8b8d74SJaiprakash Singh uint64_t n_volume : 8;
1992*4b8b8d74SJaiprakash Singh uint64_t csr_volume : 8;
1993*4b8b8d74SJaiprakash Singh uint64_t reserved_24_63 : 40;
1994*4b8b8d74SJaiprakash Singh } s;
1995*4b8b8d74SJaiprakash Singh /* struct ody_pemx_ncbo_fifo_status_s cn; */
1996*4b8b8d74SJaiprakash Singh };
1997*4b8b8d74SJaiprakash Singh typedef union ody_pemx_ncbo_fifo_status ody_pemx_ncbo_fifo_status_t;
1998*4b8b8d74SJaiprakash Singh
1999*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_NCBO_FIFO_STATUS(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_NCBO_FIFO_STATUS(uint64_t a)2000*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_NCBO_FIFO_STATUS(uint64_t a)
2001*4b8b8d74SJaiprakash Singh {
2002*4b8b8d74SJaiprakash Singh if (a <= 15)
2003*4b8b8d74SJaiprakash Singh return 0x8e0000000138ll + 0x1000000000ll * ((a) & 0xf);
2004*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_NCBO_FIFO_STATUS", 1, a, 0, 0, 0, 0, 0);
2005*4b8b8d74SJaiprakash Singh }
2006*4b8b8d74SJaiprakash Singh
2007*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_NCBO_FIFO_STATUS(a) ody_pemx_ncbo_fifo_status_t
2008*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_NCBO_FIFO_STATUS(a) CSR_TYPE_NCB
2009*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_NCBO_FIFO_STATUS(a) "PEMX_NCBO_FIFO_STATUS"
2010*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_NCBO_FIFO_STATUS(a) 0x0 /* PF_BAR0 */
2011*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_NCBO_FIFO_STATUS(a) (a)
2012*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_NCBO_FIFO_STATUS(a) (a), -1, -1, -1
2013*4b8b8d74SJaiprakash Singh
2014*4b8b8d74SJaiprakash Singh /**
2015*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_ob_cmerge_limit
2016*4b8b8d74SJaiprakash Singh *
2017*4b8b8d74SJaiprakash Singh * PEM Outbound Completion Merge Limit Register
2018*4b8b8d74SJaiprakash Singh * This register provides a mechanism to artificially limit the number of active
2019*4b8b8d74SJaiprakash Singh * outbound completion merging stations to assist in code coverage.
2020*4b8b8d74SJaiprakash Singh *
2021*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
2022*4b8b8d74SJaiprakash Singh *
2023*4b8b8d74SJaiprakash Singh * This register is reset on core domain reset.
2024*4b8b8d74SJaiprakash Singh */
2025*4b8b8d74SJaiprakash Singh union ody_pemx_ob_cmerge_limit {
2026*4b8b8d74SJaiprakash Singh uint64_t u;
2027*4b8b8d74SJaiprakash Singh struct ody_pemx_ob_cmerge_limit_s {
2028*4b8b8d74SJaiprakash Singh uint64_t limit : 4;
2029*4b8b8d74SJaiprakash Singh uint64_t reserved_4_63 : 60;
2030*4b8b8d74SJaiprakash Singh } s;
2031*4b8b8d74SJaiprakash Singh /* struct ody_pemx_ob_cmerge_limit_s cn; */
2032*4b8b8d74SJaiprakash Singh };
2033*4b8b8d74SJaiprakash Singh typedef union ody_pemx_ob_cmerge_limit ody_pemx_ob_cmerge_limit_t;
2034*4b8b8d74SJaiprakash Singh
2035*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_OB_CMERGE_LIMIT(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_OB_CMERGE_LIMIT(uint64_t a)2036*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_OB_CMERGE_LIMIT(uint64_t a)
2037*4b8b8d74SJaiprakash Singh {
2038*4b8b8d74SJaiprakash Singh if (a <= 15)
2039*4b8b8d74SJaiprakash Singh return 0x8e0000000330ll + 0x1000000000ll * ((a) & 0xf);
2040*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_OB_CMERGE_LIMIT", 1, a, 0, 0, 0, 0, 0);
2041*4b8b8d74SJaiprakash Singh }
2042*4b8b8d74SJaiprakash Singh
2043*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_OB_CMERGE_LIMIT(a) ody_pemx_ob_cmerge_limit_t
2044*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_OB_CMERGE_LIMIT(a) CSR_TYPE_NCB
2045*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_OB_CMERGE_LIMIT(a) "PEMX_OB_CMERGE_LIMIT"
2046*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_OB_CMERGE_LIMIT(a) 0x0 /* PF_BAR0 */
2047*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_OB_CMERGE_LIMIT(a) (a)
2048*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_OB_CMERGE_LIMIT(a) (a), -1, -1, -1
2049*4b8b8d74SJaiprakash Singh
2050*4b8b8d74SJaiprakash Singh /**
2051*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_ob_cpl_fifo_status
2052*4b8b8d74SJaiprakash Singh *
2053*4b8b8d74SJaiprakash Singh * PEM Outbound Completion FIFO Status Register
2054*4b8b8d74SJaiprakash Singh * This register contains status about the PEM Outbound Completion FIFOs.
2055*4b8b8d74SJaiprakash Singh *
2056*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
2057*4b8b8d74SJaiprakash Singh *
2058*4b8b8d74SJaiprakash Singh * This register is reset on core domain reset.
2059*4b8b8d74SJaiprakash Singh */
2060*4b8b8d74SJaiprakash Singh union ody_pemx_ob_cpl_fifo_status {
2061*4b8b8d74SJaiprakash Singh uint64_t u;
2062*4b8b8d74SJaiprakash Singh struct ody_pemx_ob_cpl_fifo_status_s {
2063*4b8b8d74SJaiprakash Singh uint64_t pspi_c_volume : 8;
2064*4b8b8d74SJaiprakash Singh uint64_t ebo_c_volume : 8;
2065*4b8b8d74SJaiprakash Singh uint64_t ncbo_c_volume : 10;
2066*4b8b8d74SJaiprakash Singh uint64_t reserved_26_63 : 38;
2067*4b8b8d74SJaiprakash Singh } s;
2068*4b8b8d74SJaiprakash Singh /* struct ody_pemx_ob_cpl_fifo_status_s cn; */
2069*4b8b8d74SJaiprakash Singh };
2070*4b8b8d74SJaiprakash Singh typedef union ody_pemx_ob_cpl_fifo_status ody_pemx_ob_cpl_fifo_status_t;
2071*4b8b8d74SJaiprakash Singh
2072*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_OB_CPL_FIFO_STATUS(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_OB_CPL_FIFO_STATUS(uint64_t a)2073*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_OB_CPL_FIFO_STATUS(uint64_t a)
2074*4b8b8d74SJaiprakash Singh {
2075*4b8b8d74SJaiprakash Singh if (a <= 15)
2076*4b8b8d74SJaiprakash Singh return 0x8e0000000170ll + 0x1000000000ll * ((a) & 0xf);
2077*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_OB_CPL_FIFO_STATUS", 1, a, 0, 0, 0, 0, 0);
2078*4b8b8d74SJaiprakash Singh }
2079*4b8b8d74SJaiprakash Singh
2080*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_OB_CPL_FIFO_STATUS(a) ody_pemx_ob_cpl_fifo_status_t
2081*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_OB_CPL_FIFO_STATUS(a) CSR_TYPE_NCB
2082*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_OB_CPL_FIFO_STATUS(a) "PEMX_OB_CPL_FIFO_STATUS"
2083*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_OB_CPL_FIFO_STATUS(a) 0x0 /* PF_BAR0 */
2084*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_OB_CPL_FIFO_STATUS(a) (a)
2085*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_OB_CPL_FIFO_STATUS(a) (a), -1, -1, -1
2086*4b8b8d74SJaiprakash Singh
2087*4b8b8d74SJaiprakash Singh /**
2088*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_ob_latency#_pc#
2089*4b8b8d74SJaiprakash Singh *
2090*4b8b8d74SJaiprakash Singh * PEM Outbound Latency Time Registers
2091*4b8b8d74SJaiprakash Singh * This register resets on core domain reset. It measures the time portion
2092*4b8b8d74SJaiprakash Singh * of the information set needed by software to calculate average outbound
2093*4b8b8d74SJaiprakash Singh * read latency originating from the target bus.
2094*4b8b8d74SJaiprakash Singh * Index {a} represents the TLP type and is enumerated by PEM_PERF_TLP_TYPE_E.
2095*4b8b8d74SJaiprakash Singh * Index {b} represents a set of registers mapped by using PEM_MPAM_ASSOC_PC.
2096*4b8b8d74SJaiprakash Singh *
2097*4b8b8d74SJaiprakash Singh * When PEM_CTL_STATUS2.PERF_LATENCY_EN is clear, this register is clock gated.
2098*4b8b8d74SJaiprakash Singh *
2099*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
2100*4b8b8d74SJaiprakash Singh */
2101*4b8b8d74SJaiprakash Singh union ody_pemx_ob_latencyx_pcx {
2102*4b8b8d74SJaiprakash Singh uint64_t u;
2103*4b8b8d74SJaiprakash Singh struct ody_pemx_ob_latencyx_pcx_s {
2104*4b8b8d74SJaiprakash Singh uint64_t latency : 64;
2105*4b8b8d74SJaiprakash Singh } s;
2106*4b8b8d74SJaiprakash Singh /* struct ody_pemx_ob_latencyx_pcx_s cn; */
2107*4b8b8d74SJaiprakash Singh };
2108*4b8b8d74SJaiprakash Singh typedef union ody_pemx_ob_latencyx_pcx ody_pemx_ob_latencyx_pcx_t;
2109*4b8b8d74SJaiprakash Singh
2110*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_OB_LATENCYX_PCX(uint64_t a, uint64_t b, uint64_t c) __attribute__ ((pure, always_inline));
ODY_PEMX_OB_LATENCYX_PCX(uint64_t a,uint64_t b,uint64_t c)2111*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_OB_LATENCYX_PCX(uint64_t a, uint64_t b, uint64_t c)
2112*4b8b8d74SJaiprakash Singh {
2113*4b8b8d74SJaiprakash Singh if ((a <= 15) && (b == 0) && (c <= 7))
2114*4b8b8d74SJaiprakash Singh return 0x8e0000005700ll + 0x1000000000ll * ((a) & 0xf) + 0x20ll * ((c) & 0x7);
2115*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_OB_LATENCYX_PCX", 3, a, b, c, 0, 0, 0);
2116*4b8b8d74SJaiprakash Singh }
2117*4b8b8d74SJaiprakash Singh
2118*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_OB_LATENCYX_PCX(a, b, c) ody_pemx_ob_latencyx_pcx_t
2119*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_OB_LATENCYX_PCX(a, b, c) CSR_TYPE_NCB
2120*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_OB_LATENCYX_PCX(a, b, c) "PEMX_OB_LATENCYX_PCX"
2121*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_OB_LATENCYX_PCX(a, b, c) 0x0 /* PF_BAR0 */
2122*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_OB_LATENCYX_PCX(a, b, c) (a)
2123*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_OB_LATENCYX_PCX(a, b, c) (a), (b), (c), -1
2124*4b8b8d74SJaiprakash Singh
2125*4b8b8d74SJaiprakash Singh /**
2126*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_ob_reads#_pc#
2127*4b8b8d74SJaiprakash Singh *
2128*4b8b8d74SJaiprakash Singh * PEM Outbound Read Count Registers
2129*4b8b8d74SJaiprakash Singh * This register resets on core domain reset. It measures the count portion
2130*4b8b8d74SJaiprakash Singh * of the information set needed by software to calculate average outbound
2131*4b8b8d74SJaiprakash Singh * read latency originating from the target bus.
2132*4b8b8d74SJaiprakash Singh * Index {a} represents the TLP type and is enumerated by PEM_PERF_TLP_TYPE_E.
2133*4b8b8d74SJaiprakash Singh * Index {b} represents a set of registers mapped by using PEM_MPAM_ASSOC_PC.
2134*4b8b8d74SJaiprakash Singh *
2135*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
2136*4b8b8d74SJaiprakash Singh */
2137*4b8b8d74SJaiprakash Singh union ody_pemx_ob_readsx_pcx {
2138*4b8b8d74SJaiprakash Singh uint64_t u;
2139*4b8b8d74SJaiprakash Singh struct ody_pemx_ob_readsx_pcx_s {
2140*4b8b8d74SJaiprakash Singh uint64_t reads : 64;
2141*4b8b8d74SJaiprakash Singh } s;
2142*4b8b8d74SJaiprakash Singh /* struct ody_pemx_ob_readsx_pcx_s cn; */
2143*4b8b8d74SJaiprakash Singh };
2144*4b8b8d74SJaiprakash Singh typedef union ody_pemx_ob_readsx_pcx ody_pemx_ob_readsx_pcx_t;
2145*4b8b8d74SJaiprakash Singh
2146*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_OB_READSX_PCX(uint64_t a, uint64_t b, uint64_t c) __attribute__ ((pure, always_inline));
ODY_PEMX_OB_READSX_PCX(uint64_t a,uint64_t b,uint64_t c)2147*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_OB_READSX_PCX(uint64_t a, uint64_t b, uint64_t c)
2148*4b8b8d74SJaiprakash Singh {
2149*4b8b8d74SJaiprakash Singh if ((a <= 15) && (b == 0) && (c <= 7))
2150*4b8b8d74SJaiprakash Singh return 0x8e0000005800ll + 0x1000000000ll * ((a) & 0xf) + 0x20ll * ((c) & 0x7);
2151*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_OB_READSX_PCX", 3, a, b, c, 0, 0, 0);
2152*4b8b8d74SJaiprakash Singh }
2153*4b8b8d74SJaiprakash Singh
2154*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_OB_READSX_PCX(a, b, c) ody_pemx_ob_readsx_pcx_t
2155*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_OB_READSX_PCX(a, b, c) CSR_TYPE_NCB
2156*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_OB_READSX_PCX(a, b, c) "PEMX_OB_READSX_PCX"
2157*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_OB_READSX_PCX(a, b, c) 0x0 /* PF_BAR0 */
2158*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_OB_READSX_PCX(a, b, c) (a)
2159*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_OB_READSX_PCX(a, b, c) (a), (b), (c), -1
2160*4b8b8d74SJaiprakash Singh
2161*4b8b8d74SJaiprakash Singh /**
2162*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_ob_tlp#_dwords_pc#
2163*4b8b8d74SJaiprakash Singh *
2164*4b8b8d74SJaiprakash Singh * PEM Outbound TLP DWORDS Registers
2165*4b8b8d74SJaiprakash Singh * This register resets on core domain reset. Otherwise, it continuously accumulates
2166*4b8b8d74SJaiprakash Singh * the number of DWORDS (including header overhead) in every outbound TLP received
2167*4b8b8d74SJaiprakash Singh * from the target bus and headed to PCIe.
2168*4b8b8d74SJaiprakash Singh * Index {a} represents the TLP type and is enumerated by PEM_PERF_TLP_TYPE_E.
2169*4b8b8d74SJaiprakash Singh * Index {b} represents a set of registers mapped by using PEM_MPAM_ASSOC_PC.
2170*4b8b8d74SJaiprakash Singh *
2171*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
2172*4b8b8d74SJaiprakash Singh */
2173*4b8b8d74SJaiprakash Singh union ody_pemx_ob_tlpx_dwords_pcx {
2174*4b8b8d74SJaiprakash Singh uint64_t u;
2175*4b8b8d74SJaiprakash Singh struct ody_pemx_ob_tlpx_dwords_pcx_s {
2176*4b8b8d74SJaiprakash Singh uint64_t tlp_dwords : 64;
2177*4b8b8d74SJaiprakash Singh } s;
2178*4b8b8d74SJaiprakash Singh /* struct ody_pemx_ob_tlpx_dwords_pcx_s cn; */
2179*4b8b8d74SJaiprakash Singh };
2180*4b8b8d74SJaiprakash Singh typedef union ody_pemx_ob_tlpx_dwords_pcx ody_pemx_ob_tlpx_dwords_pcx_t;
2181*4b8b8d74SJaiprakash Singh
2182*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_OB_TLPX_DWORDS_PCX(uint64_t a, uint64_t b, uint64_t c) __attribute__ ((pure, always_inline));
ODY_PEMX_OB_TLPX_DWORDS_PCX(uint64_t a,uint64_t b,uint64_t c)2183*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_OB_TLPX_DWORDS_PCX(uint64_t a, uint64_t b, uint64_t c)
2184*4b8b8d74SJaiprakash Singh {
2185*4b8b8d74SJaiprakash Singh if ((a <= 15) && (b <= 2) && (c <= 7))
2186*4b8b8d74SJaiprakash Singh return 0x8e0000005600ll + 0x1000000000ll * ((a) & 0xf) + 8ll * ((b) & 0x3) + 0x20ll * ((c) & 0x7);
2187*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_OB_TLPX_DWORDS_PCX", 3, a, b, c, 0, 0, 0);
2188*4b8b8d74SJaiprakash Singh }
2189*4b8b8d74SJaiprakash Singh
2190*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_OB_TLPX_DWORDS_PCX(a, b, c) ody_pemx_ob_tlpx_dwords_pcx_t
2191*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_OB_TLPX_DWORDS_PCX(a, b, c) CSR_TYPE_NCB
2192*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_OB_TLPX_DWORDS_PCX(a, b, c) "PEMX_OB_TLPX_DWORDS_PCX"
2193*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_OB_TLPX_DWORDS_PCX(a, b, c) 0x0 /* PF_BAR0 */
2194*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_OB_TLPX_DWORDS_PCX(a, b, c) (a)
2195*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_OB_TLPX_DWORDS_PCX(a, b, c) (a), (b), (c), -1
2196*4b8b8d74SJaiprakash Singh
2197*4b8b8d74SJaiprakash Singh /**
2198*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_ob_tlp#_merges_pc#
2199*4b8b8d74SJaiprakash Singh *
2200*4b8b8d74SJaiprakash Singh * PEM NCB Outbound Merge Count Register
2201*4b8b8d74SJaiprakash Singh * This register resets on core domain reset. Otherwise, it continuously tracks the
2202*4b8b8d74SJaiprakash Singh * number of outbound transactions from NCBO that are part of a merging sequence.
2203*4b8b8d74SJaiprakash Singh * Currently only NCBO transactions can be merged.
2204*4b8b8d74SJaiprakash Singh * Index {a} represents the TLP type and is enumerated by PEM_PERF_TLP_TYPE_E.
2205*4b8b8d74SJaiprakash Singh * Index {b} represents a set of registers mapped by using PEM_MPAM_ASSOC_PC.
2206*4b8b8d74SJaiprakash Singh *
2207*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
2208*4b8b8d74SJaiprakash Singh */
2209*4b8b8d74SJaiprakash Singh union ody_pemx_ob_tlpx_merges_pcx {
2210*4b8b8d74SJaiprakash Singh uint64_t u;
2211*4b8b8d74SJaiprakash Singh struct ody_pemx_ob_tlpx_merges_pcx_s {
2212*4b8b8d74SJaiprakash Singh uint64_t count : 64;
2213*4b8b8d74SJaiprakash Singh } s;
2214*4b8b8d74SJaiprakash Singh /* struct ody_pemx_ob_tlpx_merges_pcx_s cn; */
2215*4b8b8d74SJaiprakash Singh };
2216*4b8b8d74SJaiprakash Singh typedef union ody_pemx_ob_tlpx_merges_pcx ody_pemx_ob_tlpx_merges_pcx_t;
2217*4b8b8d74SJaiprakash Singh
2218*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_OB_TLPX_MERGES_PCX(uint64_t a, uint64_t b, uint64_t c) __attribute__ ((pure, always_inline));
ODY_PEMX_OB_TLPX_MERGES_PCX(uint64_t a,uint64_t b,uint64_t c)2219*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_OB_TLPX_MERGES_PCX(uint64_t a, uint64_t b, uint64_t c)
2220*4b8b8d74SJaiprakash Singh {
2221*4b8b8d74SJaiprakash Singh if ((a <= 15) && (b <= 2) && (c <= 7))
2222*4b8b8d74SJaiprakash Singh return 0x8e0000005900ll + 0x1000000000ll * ((a) & 0xf) + 8ll * ((b) & 0x3) + 0x20ll * ((c) & 0x7);
2223*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_OB_TLPX_MERGES_PCX", 3, a, b, c, 0, 0, 0);
2224*4b8b8d74SJaiprakash Singh }
2225*4b8b8d74SJaiprakash Singh
2226*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_OB_TLPX_MERGES_PCX(a, b, c) ody_pemx_ob_tlpx_merges_pcx_t
2227*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_OB_TLPX_MERGES_PCX(a, b, c) CSR_TYPE_NCB
2228*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_OB_TLPX_MERGES_PCX(a, b, c) "PEMX_OB_TLPX_MERGES_PCX"
2229*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_OB_TLPX_MERGES_PCX(a, b, c) 0x0 /* PF_BAR0 */
2230*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_OB_TLPX_MERGES_PCX(a, b, c) (a)
2231*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_OB_TLPX_MERGES_PCX(a, b, c) (a), (b), (c), -1
2232*4b8b8d74SJaiprakash Singh
2233*4b8b8d74SJaiprakash Singh /**
2234*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_ob_tlp#_pc#
2235*4b8b8d74SJaiprakash Singh *
2236*4b8b8d74SJaiprakash Singh * PEM Outbound TLP Count Registers
2237*4b8b8d74SJaiprakash Singh * This register resets on core domain reset. Otherwise, it continuously increments
2238*4b8b8d74SJaiprakash Singh * on every outbound TLP received from the target bus and headed to PCIe.
2239*4b8b8d74SJaiprakash Singh * Index {a} represents the TLP type and is enumerated by PEM_PERF_TLP_TYPE_E.
2240*4b8b8d74SJaiprakash Singh * Index {b} represents a set of registers mapped by using PEM_MPAM_ASSOC_PC.
2241*4b8b8d74SJaiprakash Singh *
2242*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
2243*4b8b8d74SJaiprakash Singh */
2244*4b8b8d74SJaiprakash Singh union ody_pemx_ob_tlpx_pcx {
2245*4b8b8d74SJaiprakash Singh uint64_t u;
2246*4b8b8d74SJaiprakash Singh struct ody_pemx_ob_tlpx_pcx_s {
2247*4b8b8d74SJaiprakash Singh uint64_t count : 64;
2248*4b8b8d74SJaiprakash Singh } s;
2249*4b8b8d74SJaiprakash Singh /* struct ody_pemx_ob_tlpx_pcx_s cn; */
2250*4b8b8d74SJaiprakash Singh };
2251*4b8b8d74SJaiprakash Singh typedef union ody_pemx_ob_tlpx_pcx ody_pemx_ob_tlpx_pcx_t;
2252*4b8b8d74SJaiprakash Singh
2253*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_OB_TLPX_PCX(uint64_t a, uint64_t b, uint64_t c) __attribute__ ((pure, always_inline));
ODY_PEMX_OB_TLPX_PCX(uint64_t a,uint64_t b,uint64_t c)2254*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_OB_TLPX_PCX(uint64_t a, uint64_t b, uint64_t c)
2255*4b8b8d74SJaiprakash Singh {
2256*4b8b8d74SJaiprakash Singh if ((a <= 15) && (b <= 2) && (c <= 7))
2257*4b8b8d74SJaiprakash Singh return 0x8e0000005500ll + 0x1000000000ll * ((a) & 0xf) + 8ll * ((b) & 0x3) + 0x20ll * ((c) & 0x7);
2258*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_OB_TLPX_PCX", 3, a, b, c, 0, 0, 0);
2259*4b8b8d74SJaiprakash Singh }
2260*4b8b8d74SJaiprakash Singh
2261*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_OB_TLPX_PCX(a, b, c) ody_pemx_ob_tlpx_pcx_t
2262*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_OB_TLPX_PCX(a, b, c) CSR_TYPE_NCB
2263*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_OB_TLPX_PCX(a, b, c) "PEMX_OB_TLPX_PCX"
2264*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_OB_TLPX_PCX(a, b, c) 0x0 /* PF_BAR0 */
2265*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_OB_TLPX_PCX(a, b, c) (a)
2266*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_OB_TLPX_PCX(a, b, c) (a), (b), (c), -1
2267*4b8b8d74SJaiprakash Singh
2268*4b8b8d74SJaiprakash Singh /**
2269*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_on
2270*4b8b8d74SJaiprakash Singh *
2271*4b8b8d74SJaiprakash Singh * PEM On Status Register
2272*4b8b8d74SJaiprakash Singh * This register indicates that PEM is configured and ready.
2273*4b8b8d74SJaiprakash Singh *
2274*4b8b8d74SJaiprakash Singh * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
2275*4b8b8d74SJaiprakash Singh *
2276*4b8b8d74SJaiprakash Singh * This register is reset on cold reset.
2277*4b8b8d74SJaiprakash Singh */
2278*4b8b8d74SJaiprakash Singh union ody_pemx_on {
2279*4b8b8d74SJaiprakash Singh uint64_t u;
2280*4b8b8d74SJaiprakash Singh struct ody_pemx_on_s {
2281*4b8b8d74SJaiprakash Singh uint64_t pemon : 1;
2282*4b8b8d74SJaiprakash Singh uint64_t pemoor : 1;
2283*4b8b8d74SJaiprakash Singh uint64_t aclr : 1;
2284*4b8b8d74SJaiprakash Singh uint64_t reserved_3_63 : 61;
2285*4b8b8d74SJaiprakash Singh } s;
2286*4b8b8d74SJaiprakash Singh /* struct ody_pemx_on_s cn; */
2287*4b8b8d74SJaiprakash Singh };
2288*4b8b8d74SJaiprakash Singh typedef union ody_pemx_on ody_pemx_on_t;
2289*4b8b8d74SJaiprakash Singh
2290*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_ON(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_ON(uint64_t a)2291*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_ON(uint64_t a)
2292*4b8b8d74SJaiprakash Singh {
2293*4b8b8d74SJaiprakash Singh if (a <= 15)
2294*4b8b8d74SJaiprakash Singh return 0x8e00000000e0ll + 0x1000000000ll * ((a) & 0xf);
2295*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_ON", 1, a, 0, 0, 0, 0, 0);
2296*4b8b8d74SJaiprakash Singh }
2297*4b8b8d74SJaiprakash Singh
2298*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_ON(a) ody_pemx_on_t
2299*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_ON(a) CSR_TYPE_NCB
2300*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_ON(a) "PEMX_ON"
2301*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_ON(a) 0x0 /* PF_BAR0 */
2302*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_ON(a) (a)
2303*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_ON(a) (a), -1, -1, -1
2304*4b8b8d74SJaiprakash Singh
2305*4b8b8d74SJaiprakash Singh /**
2306*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_override_pclk_rate
2307*4b8b8d74SJaiprakash Singh *
2308*4b8b8d74SJaiprakash Singh * PEM Reset Mac Register
2309*4b8b8d74SJaiprakash Singh * This register provides a mechanism to override the divide ratio pemx__div_max_pclk_ratio
2310*4b8b8d74SJaiprakash Singh * to modify the PCLK rate
2311*4b8b8d74SJaiprakash Singh *
2312*4b8b8d74SJaiprakash Singh * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
2313*4b8b8d74SJaiprakash Singh *
2314*4b8b8d74SJaiprakash Singh * This register is reset on cold reset.
2315*4b8b8d74SJaiprakash Singh */
2316*4b8b8d74SJaiprakash Singh union ody_pemx_override_pclk_rate {
2317*4b8b8d74SJaiprakash Singh uint64_t u;
2318*4b8b8d74SJaiprakash Singh struct ody_pemx_override_pclk_rate_s {
2319*4b8b8d74SJaiprakash Singh uint64_t override_div_pclk_val : 7;
2320*4b8b8d74SJaiprakash Singh uint64_t override_div_pclk_en : 1;
2321*4b8b8d74SJaiprakash Singh uint64_t reserved_8_63 : 56;
2322*4b8b8d74SJaiprakash Singh } s;
2323*4b8b8d74SJaiprakash Singh /* struct ody_pemx_override_pclk_rate_s cn; */
2324*4b8b8d74SJaiprakash Singh };
2325*4b8b8d74SJaiprakash Singh typedef union ody_pemx_override_pclk_rate ody_pemx_override_pclk_rate_t;
2326*4b8b8d74SJaiprakash Singh
2327*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_OVERRIDE_PCLK_RATE(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_OVERRIDE_PCLK_RATE(uint64_t a)2328*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_OVERRIDE_PCLK_RATE(uint64_t a)
2329*4b8b8d74SJaiprakash Singh {
2330*4b8b8d74SJaiprakash Singh if (a <= 15)
2331*4b8b8d74SJaiprakash Singh return 0x8e00000002a0ll + 0x1000000000ll * ((a) & 0xf);
2332*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_OVERRIDE_PCLK_RATE", 1, a, 0, 0, 0, 0, 0);
2333*4b8b8d74SJaiprakash Singh }
2334*4b8b8d74SJaiprakash Singh
2335*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_OVERRIDE_PCLK_RATE(a) ody_pemx_override_pclk_rate_t
2336*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_OVERRIDE_PCLK_RATE(a) CSR_TYPE_NCB
2337*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_OVERRIDE_PCLK_RATE(a) "PEMX_OVERRIDE_PCLK_RATE"
2338*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_OVERRIDE_PCLK_RATE(a) 0x0 /* PF_BAR0 */
2339*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_OVERRIDE_PCLK_RATE(a) (a)
2340*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_OVERRIDE_PCLK_RATE(a) (a), -1, -1, -1
2341*4b8b8d74SJaiprakash Singh
2342*4b8b8d74SJaiprakash Singh /**
2343*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_p2n_bar2_start
2344*4b8b8d74SJaiprakash Singh *
2345*4b8b8d74SJaiprakash Singh * PEM PCIe RC BAR2 Start Register
2346*4b8b8d74SJaiprakash Singh * This register specifies the starting address for memory requests that are to be forwarded to
2347*4b8b8d74SJaiprakash Singh * NCB/EBUS in RC mode. In EP mode, the standard PCIe config space BAR registers are used, and
2348*4b8b8d74SJaiprakash Singh * this register is ignored.
2349*4b8b8d74SJaiprakash Singh *
2350*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
2351*4b8b8d74SJaiprakash Singh *
2352*4b8b8d74SJaiprakash Singh * This register is reset on core domain reset.
2353*4b8b8d74SJaiprakash Singh */
2354*4b8b8d74SJaiprakash Singh union ody_pemx_p2n_bar2_start {
2355*4b8b8d74SJaiprakash Singh uint64_t u;
2356*4b8b8d74SJaiprakash Singh struct ody_pemx_p2n_bar2_start_s {
2357*4b8b8d74SJaiprakash Singh uint64_t reserved_0_19 : 20;
2358*4b8b8d74SJaiprakash Singh uint64_t addr : 44;
2359*4b8b8d74SJaiprakash Singh } s;
2360*4b8b8d74SJaiprakash Singh /* struct ody_pemx_p2n_bar2_start_s cn; */
2361*4b8b8d74SJaiprakash Singh };
2362*4b8b8d74SJaiprakash Singh typedef union ody_pemx_p2n_bar2_start ody_pemx_p2n_bar2_start_t;
2363*4b8b8d74SJaiprakash Singh
2364*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_P2N_BAR2_START(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_P2N_BAR2_START(uint64_t a)2365*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_P2N_BAR2_START(uint64_t a)
2366*4b8b8d74SJaiprakash Singh {
2367*4b8b8d74SJaiprakash Singh if (a <= 15)
2368*4b8b8d74SJaiprakash Singh return 0x8e0000000150ll + 0x1000000000ll * ((a) & 0xf);
2369*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_P2N_BAR2_START", 1, a, 0, 0, 0, 0, 0);
2370*4b8b8d74SJaiprakash Singh }
2371*4b8b8d74SJaiprakash Singh
2372*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_P2N_BAR2_START(a) ody_pemx_p2n_bar2_start_t
2373*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_P2N_BAR2_START(a) CSR_TYPE_NCB
2374*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_P2N_BAR2_START(a) "PEMX_P2N_BAR2_START"
2375*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_P2N_BAR2_START(a) 0x0 /* PF_BAR0 */
2376*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_P2N_BAR2_START(a) (a)
2377*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_P2N_BAR2_START(a) (a), -1, -1, -1
2378*4b8b8d74SJaiprakash Singh
2379*4b8b8d74SJaiprakash Singh /**
2380*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_p2n_bar4_start
2381*4b8b8d74SJaiprakash Singh *
2382*4b8b8d74SJaiprakash Singh * PEM PCIe RC BAR4 Start Register
2383*4b8b8d74SJaiprakash Singh * This register specifies the starting address for memory requests that are to be forwarded to
2384*4b8b8d74SJaiprakash Singh * NCB/EBUS in RC mode. In EP mode, the standard PCIe config space BAR registers are used, and
2385*4b8b8d74SJaiprakash Singh * this register is ignored.
2386*4b8b8d74SJaiprakash Singh *
2387*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
2388*4b8b8d74SJaiprakash Singh *
2389*4b8b8d74SJaiprakash Singh * This register is reset on core domain reset.
2390*4b8b8d74SJaiprakash Singh */
2391*4b8b8d74SJaiprakash Singh union ody_pemx_p2n_bar4_start {
2392*4b8b8d74SJaiprakash Singh uint64_t u;
2393*4b8b8d74SJaiprakash Singh struct ody_pemx_p2n_bar4_start_s {
2394*4b8b8d74SJaiprakash Singh uint64_t reserved_0_25 : 26;
2395*4b8b8d74SJaiprakash Singh uint64_t addr : 38;
2396*4b8b8d74SJaiprakash Singh } s;
2397*4b8b8d74SJaiprakash Singh /* struct ody_pemx_p2n_bar4_start_s cn; */
2398*4b8b8d74SJaiprakash Singh };
2399*4b8b8d74SJaiprakash Singh typedef union ody_pemx_p2n_bar4_start ody_pemx_p2n_bar4_start_t;
2400*4b8b8d74SJaiprakash Singh
2401*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_P2N_BAR4_START(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_P2N_BAR4_START(uint64_t a)2402*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_P2N_BAR4_START(uint64_t a)
2403*4b8b8d74SJaiprakash Singh {
2404*4b8b8d74SJaiprakash Singh if (a <= 15)
2405*4b8b8d74SJaiprakash Singh return 0x8e0000000148ll + 0x1000000000ll * ((a) & 0xf);
2406*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_P2N_BAR4_START", 1, a, 0, 0, 0, 0, 0);
2407*4b8b8d74SJaiprakash Singh }
2408*4b8b8d74SJaiprakash Singh
2409*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_P2N_BAR4_START(a) ody_pemx_p2n_bar4_start_t
2410*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_P2N_BAR4_START(a) CSR_TYPE_NCB
2411*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_P2N_BAR4_START(a) "PEMX_P2N_BAR4_START"
2412*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_P2N_BAR4_START(a) 0x0 /* PF_BAR0 */
2413*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_P2N_BAR4_START(a) (a)
2414*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_P2N_BAR4_START(a) (a), -1, -1, -1
2415*4b8b8d74SJaiprakash Singh
2416*4b8b8d74SJaiprakash Singh /**
2417*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_pemoor_int
2418*4b8b8d74SJaiprakash Singh *
2419*4b8b8d74SJaiprakash Singh * PEM PEMOOR Interrupt Register
2420*4b8b8d74SJaiprakash Singh * This register contains the interrupt bits for PEMOOR.
2421*4b8b8d74SJaiprakash Singh *
2422*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
2423*4b8b8d74SJaiprakash Singh *
2424*4b8b8d74SJaiprakash Singh * This register is reset on core domain reset.
2425*4b8b8d74SJaiprakash Singh */
2426*4b8b8d74SJaiprakash Singh union ody_pemx_pemoor_int {
2427*4b8b8d74SJaiprakash Singh uint64_t u;
2428*4b8b8d74SJaiprakash Singh struct ody_pemx_pemoor_int_s {
2429*4b8b8d74SJaiprakash Singh uint64_t pemoor : 1;
2430*4b8b8d74SJaiprakash Singh uint64_t reserved_1_63 : 63;
2431*4b8b8d74SJaiprakash Singh } s;
2432*4b8b8d74SJaiprakash Singh /* struct ody_pemx_pemoor_int_s cn; */
2433*4b8b8d74SJaiprakash Singh };
2434*4b8b8d74SJaiprakash Singh typedef union ody_pemx_pemoor_int ody_pemx_pemoor_int_t;
2435*4b8b8d74SJaiprakash Singh
2436*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_PEMOOR_INT(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_PEMOOR_INT(uint64_t a)2437*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_PEMOOR_INT(uint64_t a)
2438*4b8b8d74SJaiprakash Singh {
2439*4b8b8d74SJaiprakash Singh if (a <= 15)
2440*4b8b8d74SJaiprakash Singh return 0x8e0000000350ll + 0x1000000000ll * ((a) & 0xf);
2441*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_PEMOOR_INT", 1, a, 0, 0, 0, 0, 0);
2442*4b8b8d74SJaiprakash Singh }
2443*4b8b8d74SJaiprakash Singh
2444*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_PEMOOR_INT(a) ody_pemx_pemoor_int_t
2445*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_PEMOOR_INT(a) CSR_TYPE_NCB
2446*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_PEMOOR_INT(a) "PEMX_PEMOOR_INT"
2447*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_PEMOOR_INT(a) 0x0 /* PF_BAR0 */
2448*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_PEMOOR_INT(a) (a)
2449*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_PEMOOR_INT(a) (a), -1, -1, -1
2450*4b8b8d74SJaiprakash Singh
2451*4b8b8d74SJaiprakash Singh /**
2452*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_pemoor_int_ena_w1c
2453*4b8b8d74SJaiprakash Singh *
2454*4b8b8d74SJaiprakash Singh * PEM PEMOOR Interrupt Enable Clear Register
2455*4b8b8d74SJaiprakash Singh * This register clears interrupt enable bits.
2456*4b8b8d74SJaiprakash Singh */
2457*4b8b8d74SJaiprakash Singh union ody_pemx_pemoor_int_ena_w1c {
2458*4b8b8d74SJaiprakash Singh uint64_t u;
2459*4b8b8d74SJaiprakash Singh struct ody_pemx_pemoor_int_ena_w1c_s {
2460*4b8b8d74SJaiprakash Singh uint64_t pemoor : 1;
2461*4b8b8d74SJaiprakash Singh uint64_t reserved_1_63 : 63;
2462*4b8b8d74SJaiprakash Singh } s;
2463*4b8b8d74SJaiprakash Singh /* struct ody_pemx_pemoor_int_ena_w1c_s cn; */
2464*4b8b8d74SJaiprakash Singh };
2465*4b8b8d74SJaiprakash Singh typedef union ody_pemx_pemoor_int_ena_w1c ody_pemx_pemoor_int_ena_w1c_t;
2466*4b8b8d74SJaiprakash Singh
2467*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_PEMOOR_INT_ENA_W1C(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_PEMOOR_INT_ENA_W1C(uint64_t a)2468*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_PEMOOR_INT_ENA_W1C(uint64_t a)
2469*4b8b8d74SJaiprakash Singh {
2470*4b8b8d74SJaiprakash Singh if (a <= 15)
2471*4b8b8d74SJaiprakash Singh return 0x8e0000000360ll + 0x1000000000ll * ((a) & 0xf);
2472*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_PEMOOR_INT_ENA_W1C", 1, a, 0, 0, 0, 0, 0);
2473*4b8b8d74SJaiprakash Singh }
2474*4b8b8d74SJaiprakash Singh
2475*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_PEMOOR_INT_ENA_W1C(a) ody_pemx_pemoor_int_ena_w1c_t
2476*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_PEMOOR_INT_ENA_W1C(a) CSR_TYPE_NCB
2477*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_PEMOOR_INT_ENA_W1C(a) "PEMX_PEMOOR_INT_ENA_W1C"
2478*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_PEMOOR_INT_ENA_W1C(a) 0x0 /* PF_BAR0 */
2479*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_PEMOOR_INT_ENA_W1C(a) (a)
2480*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_PEMOOR_INT_ENA_W1C(a) (a), -1, -1, -1
2481*4b8b8d74SJaiprakash Singh
2482*4b8b8d74SJaiprakash Singh /**
2483*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_pemoor_int_ena_w1s
2484*4b8b8d74SJaiprakash Singh *
2485*4b8b8d74SJaiprakash Singh * PEM PEMOOR Interrupt Enable Set Register
2486*4b8b8d74SJaiprakash Singh * This register sets interrupt enable bits.
2487*4b8b8d74SJaiprakash Singh */
2488*4b8b8d74SJaiprakash Singh union ody_pemx_pemoor_int_ena_w1s {
2489*4b8b8d74SJaiprakash Singh uint64_t u;
2490*4b8b8d74SJaiprakash Singh struct ody_pemx_pemoor_int_ena_w1s_s {
2491*4b8b8d74SJaiprakash Singh uint64_t pemoor : 1;
2492*4b8b8d74SJaiprakash Singh uint64_t reserved_1_63 : 63;
2493*4b8b8d74SJaiprakash Singh } s;
2494*4b8b8d74SJaiprakash Singh /* struct ody_pemx_pemoor_int_ena_w1s_s cn; */
2495*4b8b8d74SJaiprakash Singh };
2496*4b8b8d74SJaiprakash Singh typedef union ody_pemx_pemoor_int_ena_w1s ody_pemx_pemoor_int_ena_w1s_t;
2497*4b8b8d74SJaiprakash Singh
2498*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_PEMOOR_INT_ENA_W1S(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_PEMOOR_INT_ENA_W1S(uint64_t a)2499*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_PEMOOR_INT_ENA_W1S(uint64_t a)
2500*4b8b8d74SJaiprakash Singh {
2501*4b8b8d74SJaiprakash Singh if (a <= 15)
2502*4b8b8d74SJaiprakash Singh return 0x8e0000000368ll + 0x1000000000ll * ((a) & 0xf);
2503*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_PEMOOR_INT_ENA_W1S", 1, a, 0, 0, 0, 0, 0);
2504*4b8b8d74SJaiprakash Singh }
2505*4b8b8d74SJaiprakash Singh
2506*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_PEMOOR_INT_ENA_W1S(a) ody_pemx_pemoor_int_ena_w1s_t
2507*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_PEMOOR_INT_ENA_W1S(a) CSR_TYPE_NCB
2508*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_PEMOOR_INT_ENA_W1S(a) "PEMX_PEMOOR_INT_ENA_W1S"
2509*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_PEMOOR_INT_ENA_W1S(a) 0x0 /* PF_BAR0 */
2510*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_PEMOOR_INT_ENA_W1S(a) (a)
2511*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_PEMOOR_INT_ENA_W1S(a) (a), -1, -1, -1
2512*4b8b8d74SJaiprakash Singh
2513*4b8b8d74SJaiprakash Singh /**
2514*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_pemoor_int_w1s
2515*4b8b8d74SJaiprakash Singh *
2516*4b8b8d74SJaiprakash Singh * PEM PEMOOR Interrupt Set Register
2517*4b8b8d74SJaiprakash Singh * This register sets interrupt bits.
2518*4b8b8d74SJaiprakash Singh */
2519*4b8b8d74SJaiprakash Singh union ody_pemx_pemoor_int_w1s {
2520*4b8b8d74SJaiprakash Singh uint64_t u;
2521*4b8b8d74SJaiprakash Singh struct ody_pemx_pemoor_int_w1s_s {
2522*4b8b8d74SJaiprakash Singh uint64_t pemoor : 1;
2523*4b8b8d74SJaiprakash Singh uint64_t reserved_1_63 : 63;
2524*4b8b8d74SJaiprakash Singh } s;
2525*4b8b8d74SJaiprakash Singh /* struct ody_pemx_pemoor_int_w1s_s cn; */
2526*4b8b8d74SJaiprakash Singh };
2527*4b8b8d74SJaiprakash Singh typedef union ody_pemx_pemoor_int_w1s ody_pemx_pemoor_int_w1s_t;
2528*4b8b8d74SJaiprakash Singh
2529*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_PEMOOR_INT_W1S(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_PEMOOR_INT_W1S(uint64_t a)2530*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_PEMOOR_INT_W1S(uint64_t a)
2531*4b8b8d74SJaiprakash Singh {
2532*4b8b8d74SJaiprakash Singh if (a <= 15)
2533*4b8b8d74SJaiprakash Singh return 0x8e0000000358ll + 0x1000000000ll * ((a) & 0xf);
2534*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_PEMOOR_INT_W1S", 1, a, 0, 0, 0, 0, 0);
2535*4b8b8d74SJaiprakash Singh }
2536*4b8b8d74SJaiprakash Singh
2537*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_PEMOOR_INT_W1S(a) ody_pemx_pemoor_int_w1s_t
2538*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_PEMOOR_INT_W1S(a) CSR_TYPE_NCB
2539*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_PEMOOR_INT_W1S(a) "PEMX_PEMOOR_INT_W1S"
2540*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_PEMOOR_INT_W1S(a) 0x0 /* PF_BAR0 */
2541*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_PEMOOR_INT_W1S(a) (a)
2542*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_PEMOOR_INT_W1S(a) (a), -1, -1, -1
2543*4b8b8d74SJaiprakash Singh
2544*4b8b8d74SJaiprakash Singh /**
2545*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_perr_status
2546*4b8b8d74SJaiprakash Singh *
2547*4b8b8d74SJaiprakash Singh * PEM Parity Error Status Register
2548*4b8b8d74SJaiprakash Singh * This register contains indications of parity errors detected inside PEM.
2549*4b8b8d74SJaiprakash Singh *
2550*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
2551*4b8b8d74SJaiprakash Singh *
2552*4b8b8d74SJaiprakash Singh * This register is reset on core domain reset.
2553*4b8b8d74SJaiprakash Singh */
2554*4b8b8d74SJaiprakash Singh union ody_pemx_perr_status {
2555*4b8b8d74SJaiprakash Singh uint64_t u;
2556*4b8b8d74SJaiprakash Singh struct ody_pemx_perr_status_s {
2557*4b8b8d74SJaiprakash Singh uint64_t tx_perr : 1;
2558*4b8b8d74SJaiprakash Singh uint64_t rx_perr : 1;
2559*4b8b8d74SJaiprakash Singh uint64_t dbe : 1;
2560*4b8b8d74SJaiprakash Singh uint64_t rasdp : 1;
2561*4b8b8d74SJaiprakash Singh uint64_t mac_txfe_perr : 1;
2562*4b8b8d74SJaiprakash Singh uint64_t mac_txbe_perr : 1;
2563*4b8b8d74SJaiprakash Singh uint64_t mac_rx_perr : 1;
2564*4b8b8d74SJaiprakash Singh uint64_t reserved_7_63 : 57;
2565*4b8b8d74SJaiprakash Singh } s;
2566*4b8b8d74SJaiprakash Singh /* struct ody_pemx_perr_status_s cn; */
2567*4b8b8d74SJaiprakash Singh };
2568*4b8b8d74SJaiprakash Singh typedef union ody_pemx_perr_status ody_pemx_perr_status_t;
2569*4b8b8d74SJaiprakash Singh
2570*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_PERR_STATUS(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_PERR_STATUS(uint64_t a)2571*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_PERR_STATUS(uint64_t a)
2572*4b8b8d74SJaiprakash Singh {
2573*4b8b8d74SJaiprakash Singh if (a <= 15)
2574*4b8b8d74SJaiprakash Singh return 0x8e00000001d8ll + 0x1000000000ll * ((a) & 0xf);
2575*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_PERR_STATUS", 1, a, 0, 0, 0, 0, 0);
2576*4b8b8d74SJaiprakash Singh }
2577*4b8b8d74SJaiprakash Singh
2578*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_PERR_STATUS(a) ody_pemx_perr_status_t
2579*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_PERR_STATUS(a) CSR_TYPE_NCB
2580*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_PERR_STATUS(a) "PEMX_PERR_STATUS"
2581*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_PERR_STATUS(a) 0x0 /* PF_BAR0 */
2582*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_PERR_STATUS(a) (a)
2583*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_PERR_STATUS(a) (a), -1, -1, -1
2584*4b8b8d74SJaiprakash Singh
2585*4b8b8d74SJaiprakash Singh /**
2586*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_pf#_cs#_pfcfg#
2587*4b8b8d74SJaiprakash Singh *
2588*4b8b8d74SJaiprakash Singh * PEM PCIe Direct Config PF Registers
2589*4b8b8d74SJaiprakash Singh * This register is used to modify PF configuration space. It can only be accessed
2590*4b8b8d74SJaiprakash Singh * using 32-bit instructions (either [DATA_LO] or [DATA_HI] but not both
2591*4b8b8d74SJaiprakash Singh * simultaneously.) Although an unsupported 64-bit access attempt will have
2592*4b8b8d74SJaiprakash Singh * unpredictable results, it will not cause a hang situation.
2593*4b8b8d74SJaiprakash Singh *
2594*4b8b8d74SJaiprakash Singh * Index {c} is the register number, which is the configuration offset divided by 0x2;
2595*4b8b8d74SJaiprakash Singh * e.g. index 0 is either for PCIERC_CMD/PCIEEP_CMD (DATA_HI) or PCIERC_ID/PCIEEP_ID (DATA_LO).
2596*4b8b8d74SJaiprakash Singh *
2597*4b8b8d74SJaiprakash Singh * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
2598*4b8b8d74SJaiprakash Singh *
2599*4b8b8d74SJaiprakash Singh * This register is reset on MAC reset.
2600*4b8b8d74SJaiprakash Singh */
2601*4b8b8d74SJaiprakash Singh union ody_pemx_pfx_csx_pfcfgx {
2602*4b8b8d74SJaiprakash Singh uint64_t u;
2603*4b8b8d74SJaiprakash Singh struct ody_pemx_pfx_csx_pfcfgx_s {
2604*4b8b8d74SJaiprakash Singh uint64_t data_lo : 32;
2605*4b8b8d74SJaiprakash Singh uint64_t data_hi : 32;
2606*4b8b8d74SJaiprakash Singh } s;
2607*4b8b8d74SJaiprakash Singh /* struct ody_pemx_pfx_csx_pfcfgx_s cn; */
2608*4b8b8d74SJaiprakash Singh };
2609*4b8b8d74SJaiprakash Singh typedef union ody_pemx_pfx_csx_pfcfgx ody_pemx_pfx_csx_pfcfgx_t;
2610*4b8b8d74SJaiprakash Singh
2611*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_PFX_CSX_PFCFGX(uint64_t a, uint64_t b, uint64_t c, uint64_t d) __attribute__ ((pure, always_inline));
ODY_PEMX_PFX_CSX_PFCFGX(uint64_t a,uint64_t b,uint64_t c,uint64_t d)2612*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_PFX_CSX_PFCFGX(uint64_t a, uint64_t b, uint64_t c, uint64_t d)
2613*4b8b8d74SJaiprakash Singh {
2614*4b8b8d74SJaiprakash Singh if ((a <= 15) && (b == 0) && (c <= 1) && (d <= 511))
2615*4b8b8d74SJaiprakash Singh return 0x8e0000008000ll + 0x1000000000ll * ((a) & 0xf) + 0x10000ll * ((c) & 0x1) + 8ll * ((d) & 0x1ff);
2616*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_PFX_CSX_PFCFGX", 4, a, b, c, d, 0, 0);
2617*4b8b8d74SJaiprakash Singh }
2618*4b8b8d74SJaiprakash Singh
2619*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_PFX_CSX_PFCFGX(a, b, c, d) ody_pemx_pfx_csx_pfcfgx_t
2620*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_PFX_CSX_PFCFGX(a, b, c, d) CSR_TYPE_NCB
2621*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_PFX_CSX_PFCFGX(a, b, c, d) "PEMX_PFX_CSX_PFCFGX"
2622*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_PFX_CSX_PFCFGX(a, b, c, d) 0x0 /* PF_BAR0 */
2623*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_PFX_CSX_PFCFGX(a, b, c, d) (a)
2624*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_PFX_CSX_PFCFGX(a, b, c, d) (a), (b), (c), (d)
2625*4b8b8d74SJaiprakash Singh
2626*4b8b8d74SJaiprakash Singh /**
2627*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_pf#_ctl_status
2628*4b8b8d74SJaiprakash Singh *
2629*4b8b8d74SJaiprakash Singh * PEM PF Control Status Register
2630*4b8b8d74SJaiprakash Singh * This is a general PF control and status register of the PEM.
2631*4b8b8d74SJaiprakash Singh * There is a register for each PF.
2632*4b8b8d74SJaiprakash Singh *
2633*4b8b8d74SJaiprakash Singh * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
2634*4b8b8d74SJaiprakash Singh *
2635*4b8b8d74SJaiprakash Singh * This register is reset on MAC reset.
2636*4b8b8d74SJaiprakash Singh */
2637*4b8b8d74SJaiprakash Singh union ody_pemx_pfx_ctl_status {
2638*4b8b8d74SJaiprakash Singh uint64_t u;
2639*4b8b8d74SJaiprakash Singh struct ody_pemx_pfx_ctl_status_s {
2640*4b8b8d74SJaiprakash Singh uint64_t pm_dst : 3;
2641*4b8b8d74SJaiprakash Singh uint64_t pf_flr_en : 1;
2642*4b8b8d74SJaiprakash Singh uint64_t ob_p_cmd : 1;
2643*4b8b8d74SJaiprakash Singh uint64_t reserved_5_63 : 59;
2644*4b8b8d74SJaiprakash Singh } s;
2645*4b8b8d74SJaiprakash Singh /* struct ody_pemx_pfx_ctl_status_s cn; */
2646*4b8b8d74SJaiprakash Singh };
2647*4b8b8d74SJaiprakash Singh typedef union ody_pemx_pfx_ctl_status ody_pemx_pfx_ctl_status_t;
2648*4b8b8d74SJaiprakash Singh
2649*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_PFX_CTL_STATUS(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_PEMX_PFX_CTL_STATUS(uint64_t a,uint64_t b)2650*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_PFX_CTL_STATUS(uint64_t a, uint64_t b)
2651*4b8b8d74SJaiprakash Singh {
2652*4b8b8d74SJaiprakash Singh if ((a <= 15) && (b == 0))
2653*4b8b8d74SJaiprakash Singh return 0x8e0000000800ll + 0x1000000000ll * ((a) & 0xf);
2654*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_PFX_CTL_STATUS", 2, a, b, 0, 0, 0, 0);
2655*4b8b8d74SJaiprakash Singh }
2656*4b8b8d74SJaiprakash Singh
2657*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_PFX_CTL_STATUS(a, b) ody_pemx_pfx_ctl_status_t
2658*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_PFX_CTL_STATUS(a, b) CSR_TYPE_NCB
2659*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_PFX_CTL_STATUS(a, b) "PEMX_PFX_CTL_STATUS"
2660*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_PFX_CTL_STATUS(a, b) 0x0 /* PF_BAR0 */
2661*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_PFX_CTL_STATUS(a, b) (a)
2662*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_PFX_CTL_STATUS(a, b) (a), (b), -1, -1
2663*4b8b8d74SJaiprakash Singh
2664*4b8b8d74SJaiprakash Singh /**
2665*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_pspi_tlp_credits
2666*4b8b8d74SJaiprakash Singh *
2667*4b8b8d74SJaiprakash Singh * PEM NCB Inbound TLP Credits Register
2668*4b8b8d74SJaiprakash Singh * This register specifies the number of credits for use in moving TLPs. When this register is
2669*4b8b8d74SJaiprakash Singh * written, the credit values are reset to the register value. This register is for diagnostic
2670*4b8b8d74SJaiprakash Singh * use only, and should only be written when PEM()_CTL_STATUS[LNK_ENB] is clear.
2671*4b8b8d74SJaiprakash Singh *
2672*4b8b8d74SJaiprakash Singh * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
2673*4b8b8d74SJaiprakash Singh *
2674*4b8b8d74SJaiprakash Singh * This register is reset on MAC reset.
2675*4b8b8d74SJaiprakash Singh */
2676*4b8b8d74SJaiprakash Singh union ody_pemx_pspi_tlp_credits {
2677*4b8b8d74SJaiprakash Singh uint64_t u;
2678*4b8b8d74SJaiprakash Singh struct ody_pemx_pspi_tlp_credits_s {
2679*4b8b8d74SJaiprakash Singh uint64_t reserved_0_10 : 11;
2680*4b8b8d74SJaiprakash Singh uint64_t pspi_np : 10;
2681*4b8b8d74SJaiprakash Singh uint64_t reserved_21_63 : 43;
2682*4b8b8d74SJaiprakash Singh } s;
2683*4b8b8d74SJaiprakash Singh /* struct ody_pemx_pspi_tlp_credits_s cn; */
2684*4b8b8d74SJaiprakash Singh };
2685*4b8b8d74SJaiprakash Singh typedef union ody_pemx_pspi_tlp_credits ody_pemx_pspi_tlp_credits_t;
2686*4b8b8d74SJaiprakash Singh
2687*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_PSPI_TLP_CREDITS(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_PSPI_TLP_CREDITS(uint64_t a)2688*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_PSPI_TLP_CREDITS(uint64_t a)
2689*4b8b8d74SJaiprakash Singh {
2690*4b8b8d74SJaiprakash Singh if (a <= 15)
2691*4b8b8d74SJaiprakash Singh return 0x8e0000000038ll + 0x1000000000ll * ((a) & 0xf);
2692*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_PSPI_TLP_CREDITS", 1, a, 0, 0, 0, 0, 0);
2693*4b8b8d74SJaiprakash Singh }
2694*4b8b8d74SJaiprakash Singh
2695*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_PSPI_TLP_CREDITS(a) ody_pemx_pspi_tlp_credits_t
2696*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_PSPI_TLP_CREDITS(a) CSR_TYPE_NCB
2697*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_PSPI_TLP_CREDITS(a) "PEMX_PSPI_TLP_CREDITS"
2698*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_PSPI_TLP_CREDITS(a) 0x0 /* PF_BAR0 */
2699*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_PSPI_TLP_CREDITS(a) (a)
2700*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_PSPI_TLP_CREDITS(a) (a), -1, -1, -1
2701*4b8b8d74SJaiprakash Singh
2702*4b8b8d74SJaiprakash Singh /**
2703*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_ptm_ctl
2704*4b8b8d74SJaiprakash Singh *
2705*4b8b8d74SJaiprakash Singh * PEM Miscellaneous Control Register
2706*4b8b8d74SJaiprakash Singh * This register contains precision timer control bits.
2707*4b8b8d74SJaiprakash Singh *
2708*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
2709*4b8b8d74SJaiprakash Singh *
2710*4b8b8d74SJaiprakash Singh * This register is reset on cold reset.
2711*4b8b8d74SJaiprakash Singh */
2712*4b8b8d74SJaiprakash Singh union ody_pemx_ptm_ctl {
2713*4b8b8d74SJaiprakash Singh uint64_t u;
2714*4b8b8d74SJaiprakash Singh struct ody_pemx_ptm_ctl_s {
2715*4b8b8d74SJaiprakash Singh uint64_t ptm_mstr_adj : 8;
2716*4b8b8d74SJaiprakash Singh uint64_t ptm_mstr_sel : 1;
2717*4b8b8d74SJaiprakash Singh uint64_t ptm_auto_load : 1;
2718*4b8b8d74SJaiprakash Singh uint64_t ptm_lcl_cap : 1;
2719*4b8b8d74SJaiprakash Singh uint64_t ptm_auto_update : 1;
2720*4b8b8d74SJaiprakash Singh uint64_t reserved_12_63 : 52;
2721*4b8b8d74SJaiprakash Singh } s;
2722*4b8b8d74SJaiprakash Singh /* struct ody_pemx_ptm_ctl_s cn; */
2723*4b8b8d74SJaiprakash Singh };
2724*4b8b8d74SJaiprakash Singh typedef union ody_pemx_ptm_ctl ody_pemx_ptm_ctl_t;
2725*4b8b8d74SJaiprakash Singh
2726*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_PTM_CTL(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_PTM_CTL(uint64_t a)2727*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_PTM_CTL(uint64_t a)
2728*4b8b8d74SJaiprakash Singh {
2729*4b8b8d74SJaiprakash Singh if (a <= 15)
2730*4b8b8d74SJaiprakash Singh return 0x8e0000000098ll + 0x1000000000ll * ((a) & 0xf);
2731*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_PTM_CTL", 1, a, 0, 0, 0, 0, 0);
2732*4b8b8d74SJaiprakash Singh }
2733*4b8b8d74SJaiprakash Singh
2734*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_PTM_CTL(a) ody_pemx_ptm_ctl_t
2735*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_PTM_CTL(a) CSR_TYPE_NCB
2736*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_PTM_CTL(a) "PEMX_PTM_CTL"
2737*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_PTM_CTL(a) 0x0 /* PF_BAR0 */
2738*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_PTM_CTL(a) (a)
2739*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_PTM_CTL(a) (a), -1, -1, -1
2740*4b8b8d74SJaiprakash Singh
2741*4b8b8d74SJaiprakash Singh /**
2742*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_ptm_lcl_time
2743*4b8b8d74SJaiprakash Singh *
2744*4b8b8d74SJaiprakash Singh * PEM PTM Time Register
2745*4b8b8d74SJaiprakash Singh * This register contains the PTM synchronized local time value.
2746*4b8b8d74SJaiprakash Singh *
2747*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
2748*4b8b8d74SJaiprakash Singh *
2749*4b8b8d74SJaiprakash Singh * This register is reset on MAC reset.
2750*4b8b8d74SJaiprakash Singh */
2751*4b8b8d74SJaiprakash Singh union ody_pemx_ptm_lcl_time {
2752*4b8b8d74SJaiprakash Singh uint64_t u;
2753*4b8b8d74SJaiprakash Singh struct ody_pemx_ptm_lcl_time_s {
2754*4b8b8d74SJaiprakash Singh uint64_t val : 64;
2755*4b8b8d74SJaiprakash Singh } s;
2756*4b8b8d74SJaiprakash Singh /* struct ody_pemx_ptm_lcl_time_s cn; */
2757*4b8b8d74SJaiprakash Singh };
2758*4b8b8d74SJaiprakash Singh typedef union ody_pemx_ptm_lcl_time ody_pemx_ptm_lcl_time_t;
2759*4b8b8d74SJaiprakash Singh
2760*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_PTM_LCL_TIME(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_PTM_LCL_TIME(uint64_t a)2761*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_PTM_LCL_TIME(uint64_t a)
2762*4b8b8d74SJaiprakash Singh {
2763*4b8b8d74SJaiprakash Singh if (a <= 15)
2764*4b8b8d74SJaiprakash Singh return 0x8e00000000a0ll + 0x1000000000ll * ((a) & 0xf);
2765*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_PTM_LCL_TIME", 1, a, 0, 0, 0, 0, 0);
2766*4b8b8d74SJaiprakash Singh }
2767*4b8b8d74SJaiprakash Singh
2768*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_PTM_LCL_TIME(a) ody_pemx_ptm_lcl_time_t
2769*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_PTM_LCL_TIME(a) CSR_TYPE_NCB
2770*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_PTM_LCL_TIME(a) "PEMX_PTM_LCL_TIME"
2771*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_PTM_LCL_TIME(a) 0x0 /* PF_BAR0 */
2772*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_PTM_LCL_TIME(a) (a)
2773*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_PTM_LCL_TIME(a) (a), -1, -1, -1
2774*4b8b8d74SJaiprakash Singh
2775*4b8b8d74SJaiprakash Singh /**
2776*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_ptm_mas_time
2777*4b8b8d74SJaiprakash Singh *
2778*4b8b8d74SJaiprakash Singh * PEM PTM Time Register
2779*4b8b8d74SJaiprakash Singh * This register contains the PTM synchronized local time value.
2780*4b8b8d74SJaiprakash Singh *
2781*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
2782*4b8b8d74SJaiprakash Singh *
2783*4b8b8d74SJaiprakash Singh * This register is reset on MAC reset.
2784*4b8b8d74SJaiprakash Singh */
2785*4b8b8d74SJaiprakash Singh union ody_pemx_ptm_mas_time {
2786*4b8b8d74SJaiprakash Singh uint64_t u;
2787*4b8b8d74SJaiprakash Singh struct ody_pemx_ptm_mas_time_s {
2788*4b8b8d74SJaiprakash Singh uint64_t val : 64;
2789*4b8b8d74SJaiprakash Singh } s;
2790*4b8b8d74SJaiprakash Singh /* struct ody_pemx_ptm_mas_time_s cn; */
2791*4b8b8d74SJaiprakash Singh };
2792*4b8b8d74SJaiprakash Singh typedef union ody_pemx_ptm_mas_time ody_pemx_ptm_mas_time_t;
2793*4b8b8d74SJaiprakash Singh
2794*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_PTM_MAS_TIME(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_PTM_MAS_TIME(uint64_t a)2795*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_PTM_MAS_TIME(uint64_t a)
2796*4b8b8d74SJaiprakash Singh {
2797*4b8b8d74SJaiprakash Singh if (a <= 15)
2798*4b8b8d74SJaiprakash Singh return 0x8e00000000a8ll + 0x1000000000ll * ((a) & 0xf);
2799*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_PTM_MAS_TIME", 1, a, 0, 0, 0, 0, 0);
2800*4b8b8d74SJaiprakash Singh }
2801*4b8b8d74SJaiprakash Singh
2802*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_PTM_MAS_TIME(a) ody_pemx_ptm_mas_time_t
2803*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_PTM_MAS_TIME(a) CSR_TYPE_NCB
2804*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_PTM_MAS_TIME(a) "PEMX_PTM_MAS_TIME"
2805*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_PTM_MAS_TIME(a) 0x0 /* PF_BAR0 */
2806*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_PTM_MAS_TIME(a) (a)
2807*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_PTM_MAS_TIME(a) (a), -1, -1, -1
2808*4b8b8d74SJaiprakash Singh
2809*4b8b8d74SJaiprakash Singh /**
2810*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_ras_tba_ctl
2811*4b8b8d74SJaiprakash Singh *
2812*4b8b8d74SJaiprakash Singh * PEM RAS Time Based Analysis Control Register
2813*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
2814*4b8b8d74SJaiprakash Singh *
2815*4b8b8d74SJaiprakash Singh * This register is reset on MAC reset.
2816*4b8b8d74SJaiprakash Singh */
2817*4b8b8d74SJaiprakash Singh union ody_pemx_ras_tba_ctl {
2818*4b8b8d74SJaiprakash Singh uint64_t u;
2819*4b8b8d74SJaiprakash Singh struct ody_pemx_ras_tba_ctl_s {
2820*4b8b8d74SJaiprakash Singh uint64_t tba_ctrl : 2;
2821*4b8b8d74SJaiprakash Singh uint64_t reserved_2_63 : 62;
2822*4b8b8d74SJaiprakash Singh } s;
2823*4b8b8d74SJaiprakash Singh /* struct ody_pemx_ras_tba_ctl_s cn; */
2824*4b8b8d74SJaiprakash Singh };
2825*4b8b8d74SJaiprakash Singh typedef union ody_pemx_ras_tba_ctl ody_pemx_ras_tba_ctl_t;
2826*4b8b8d74SJaiprakash Singh
2827*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_RAS_TBA_CTL(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_RAS_TBA_CTL(uint64_t a)2828*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_RAS_TBA_CTL(uint64_t a)
2829*4b8b8d74SJaiprakash Singh {
2830*4b8b8d74SJaiprakash Singh if (a <= 15)
2831*4b8b8d74SJaiprakash Singh return 0x8e0000000068ll + 0x1000000000ll * ((a) & 0xf);
2832*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_RAS_TBA_CTL", 1, a, 0, 0, 0, 0, 0);
2833*4b8b8d74SJaiprakash Singh }
2834*4b8b8d74SJaiprakash Singh
2835*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_RAS_TBA_CTL(a) ody_pemx_ras_tba_ctl_t
2836*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_RAS_TBA_CTL(a) CSR_TYPE_NCB
2837*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_RAS_TBA_CTL(a) "PEMX_RAS_TBA_CTL"
2838*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_RAS_TBA_CTL(a) 0x0 /* PF_BAR0 */
2839*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_RAS_TBA_CTL(a) (a)
2840*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_RAS_TBA_CTL(a) (a), -1, -1, -1
2841*4b8b8d74SJaiprakash Singh
2842*4b8b8d74SJaiprakash Singh /**
2843*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_reg_ctl
2844*4b8b8d74SJaiprakash Singh *
2845*4b8b8d74SJaiprakash Singh * PEM CSR Control Register
2846*4b8b8d74SJaiprakash Singh * This register contains control for register accesses.
2847*4b8b8d74SJaiprakash Singh *
2848*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
2849*4b8b8d74SJaiprakash Singh *
2850*4b8b8d74SJaiprakash Singh * This register is reset on core domain reset.
2851*4b8b8d74SJaiprakash Singh */
2852*4b8b8d74SJaiprakash Singh union ody_pemx_reg_ctl {
2853*4b8b8d74SJaiprakash Singh uint64_t u;
2854*4b8b8d74SJaiprakash Singh struct ody_pemx_reg_ctl_s {
2855*4b8b8d74SJaiprakash Singh uint64_t gia_timeout : 6;
2856*4b8b8d74SJaiprakash Singh uint64_t reserved_6_63 : 58;
2857*4b8b8d74SJaiprakash Singh } s;
2858*4b8b8d74SJaiprakash Singh /* struct ody_pemx_reg_ctl_s cn; */
2859*4b8b8d74SJaiprakash Singh };
2860*4b8b8d74SJaiprakash Singh typedef union ody_pemx_reg_ctl ody_pemx_reg_ctl_t;
2861*4b8b8d74SJaiprakash Singh
2862*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_REG_CTL(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_REG_CTL(uint64_t a)2863*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_REG_CTL(uint64_t a)
2864*4b8b8d74SJaiprakash Singh {
2865*4b8b8d74SJaiprakash Singh if (a <= 15)
2866*4b8b8d74SJaiprakash Singh return 0x8e0000000060ll + 0x1000000000ll * ((a) & 0xf);
2867*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_REG_CTL", 1, a, 0, 0, 0, 0, 0);
2868*4b8b8d74SJaiprakash Singh }
2869*4b8b8d74SJaiprakash Singh
2870*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_REG_CTL(a) ody_pemx_reg_ctl_t
2871*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_REG_CTL(a) CSR_TYPE_NCB
2872*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_REG_CTL(a) "PEMX_REG_CTL"
2873*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_REG_CTL(a) 0x0 /* PF_BAR0 */
2874*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_REG_CTL(a) (a)
2875*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_REG_CTL(a) (a), -1, -1, -1
2876*4b8b8d74SJaiprakash Singh
2877*4b8b8d74SJaiprakash Singh /**
2878*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_reg_norm#_acc
2879*4b8b8d74SJaiprakash Singh *
2880*4b8b8d74SJaiprakash Singh * PEM Normal Region Access Registers
2881*4b8b8d74SJaiprakash Singh * These registers contains address index and control bits for access to memory from cores.
2882*4b8b8d74SJaiprakash Singh * Indexed using NCBO address\<38:31\>.
2883*4b8b8d74SJaiprakash Singh *
2884*4b8b8d74SJaiprakash Singh * See PEM()_CONST_ACC.
2885*4b8b8d74SJaiprakash Singh *
2886*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
2887*4b8b8d74SJaiprakash Singh */
2888*4b8b8d74SJaiprakash Singh union ody_pemx_reg_normx_acc {
2889*4b8b8d74SJaiprakash Singh uint64_t u;
2890*4b8b8d74SJaiprakash Singh struct ody_pemx_reg_normx_acc_s {
2891*4b8b8d74SJaiprakash Singh uint64_t ba : 33;
2892*4b8b8d74SJaiprakash Singh uint64_t reserved_33_34 : 2;
2893*4b8b8d74SJaiprakash Singh uint64_t rtype : 3;
2894*4b8b8d74SJaiprakash Singh uint64_t wtype : 3;
2895*4b8b8d74SJaiprakash Singh uint64_t rnmerge : 1;
2896*4b8b8d74SJaiprakash Singh uint64_t wnmerge : 1;
2897*4b8b8d74SJaiprakash Singh uint64_t zero : 1;
2898*4b8b8d74SJaiprakash Singh uint64_t ctype : 2;
2899*4b8b8d74SJaiprakash Singh uint64_t pf : 1;
2900*4b8b8d74SJaiprakash Singh uint64_t reserved_47_52 : 6;
2901*4b8b8d74SJaiprakash Singh uint64_t vf_active : 1;
2902*4b8b8d74SJaiprakash Singh uint64_t vf : 6;
2903*4b8b8d74SJaiprakash Singh uint64_t reserved_60_63 : 4;
2904*4b8b8d74SJaiprakash Singh } s;
2905*4b8b8d74SJaiprakash Singh /* struct ody_pemx_reg_normx_acc_s cn; */
2906*4b8b8d74SJaiprakash Singh };
2907*4b8b8d74SJaiprakash Singh typedef union ody_pemx_reg_normx_acc ody_pemx_reg_normx_acc_t;
2908*4b8b8d74SJaiprakash Singh
2909*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_REG_NORMX_ACC(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_PEMX_REG_NORMX_ACC(uint64_t a,uint64_t b)2910*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_REG_NORMX_ACC(uint64_t a, uint64_t b)
2911*4b8b8d74SJaiprakash Singh {
2912*4b8b8d74SJaiprakash Singh if ((a <= 15) && (b <= 255))
2913*4b8b8d74SJaiprakash Singh return 0x8e0000004000ll + 0x1000000000ll * ((a) & 0xf) + 0x10ll * ((b) & 0xff);
2914*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_REG_NORMX_ACC", 2, a, b, 0, 0, 0, 0);
2915*4b8b8d74SJaiprakash Singh }
2916*4b8b8d74SJaiprakash Singh
2917*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_REG_NORMX_ACC(a, b) ody_pemx_reg_normx_acc_t
2918*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_REG_NORMX_ACC(a, b) CSR_TYPE_NCB
2919*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_REG_NORMX_ACC(a, b) "PEMX_REG_NORMX_ACC"
2920*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_REG_NORMX_ACC(a, b) 0x0 /* PF_BAR0 */
2921*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_REG_NORMX_ACC(a, b) (a)
2922*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_REG_NORMX_ACC(a, b) (a), (b), -1, -1
2923*4b8b8d74SJaiprakash Singh
2924*4b8b8d74SJaiprakash Singh /**
2925*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_reg_norm#_acc2
2926*4b8b8d74SJaiprakash Singh *
2927*4b8b8d74SJaiprakash Singh * PEM Normal Region Access 2 Registers
2928*4b8b8d74SJaiprakash Singh * See PEM()_CONST_ACC.
2929*4b8b8d74SJaiprakash Singh *
2930*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
2931*4b8b8d74SJaiprakash Singh */
2932*4b8b8d74SJaiprakash Singh union ody_pemx_reg_normx_acc2 {
2933*4b8b8d74SJaiprakash Singh uint64_t u;
2934*4b8b8d74SJaiprakash Singh struct ody_pemx_reg_normx_acc2_s {
2935*4b8b8d74SJaiprakash Singh uint64_t reserved_0_63 : 64;
2936*4b8b8d74SJaiprakash Singh } s;
2937*4b8b8d74SJaiprakash Singh /* struct ody_pemx_reg_normx_acc2_s cn; */
2938*4b8b8d74SJaiprakash Singh };
2939*4b8b8d74SJaiprakash Singh typedef union ody_pemx_reg_normx_acc2 ody_pemx_reg_normx_acc2_t;
2940*4b8b8d74SJaiprakash Singh
2941*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_REG_NORMX_ACC2(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_PEMX_REG_NORMX_ACC2(uint64_t a,uint64_t b)2942*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_REG_NORMX_ACC2(uint64_t a, uint64_t b)
2943*4b8b8d74SJaiprakash Singh {
2944*4b8b8d74SJaiprakash Singh if ((a <= 15) && (b <= 255))
2945*4b8b8d74SJaiprakash Singh return 0x8e0000004008ll + 0x1000000000ll * ((a) & 0xf) + 0x10ll * ((b) & 0xff);
2946*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_REG_NORMX_ACC2", 2, a, b, 0, 0, 0, 0);
2947*4b8b8d74SJaiprakash Singh }
2948*4b8b8d74SJaiprakash Singh
2949*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_REG_NORMX_ACC2(a, b) ody_pemx_reg_normx_acc2_t
2950*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_REG_NORMX_ACC2(a, b) CSR_TYPE_NCB
2951*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_REG_NORMX_ACC2(a, b) "PEMX_REG_NORMX_ACC2"
2952*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_REG_NORMX_ACC2(a, b) 0x0 /* PF_BAR0 */
2953*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_REG_NORMX_ACC2(a, b) (a)
2954*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_REG_NORMX_ACC2(a, b) (a), (b), -1, -1
2955*4b8b8d74SJaiprakash Singh
2956*4b8b8d74SJaiprakash Singh /**
2957*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_rst_cold_state_w1c
2958*4b8b8d74SJaiprakash Singh *
2959*4b8b8d74SJaiprakash Singh * PEM Interrupt Summary Register
2960*4b8b8d74SJaiprakash Singh * This register contains the state of PEM()_RST_INT through core domain reset.
2961*4b8b8d74SJaiprakash Singh *
2962*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
2963*4b8b8d74SJaiprakash Singh *
2964*4b8b8d74SJaiprakash Singh * This register is reset on cold reset.
2965*4b8b8d74SJaiprakash Singh */
2966*4b8b8d74SJaiprakash Singh union ody_pemx_rst_cold_state_w1c {
2967*4b8b8d74SJaiprakash Singh uint64_t u;
2968*4b8b8d74SJaiprakash Singh struct ody_pemx_rst_cold_state_w1c_s {
2969*4b8b8d74SJaiprakash Singh uint64_t perst : 1;
2970*4b8b8d74SJaiprakash Singh uint64_t linkdown : 1;
2971*4b8b8d74SJaiprakash Singh uint64_t l2 : 1;
2972*4b8b8d74SJaiprakash Singh uint64_t reserved_3_63 : 61;
2973*4b8b8d74SJaiprakash Singh } s;
2974*4b8b8d74SJaiprakash Singh /* struct ody_pemx_rst_cold_state_w1c_s cn; */
2975*4b8b8d74SJaiprakash Singh };
2976*4b8b8d74SJaiprakash Singh typedef union ody_pemx_rst_cold_state_w1c ody_pemx_rst_cold_state_w1c_t;
2977*4b8b8d74SJaiprakash Singh
2978*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_RST_COLD_STATE_W1C(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_RST_COLD_STATE_W1C(uint64_t a)2979*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_RST_COLD_STATE_W1C(uint64_t a)
2980*4b8b8d74SJaiprakash Singh {
2981*4b8b8d74SJaiprakash Singh if (a <= 15)
2982*4b8b8d74SJaiprakash Singh return 0x8e0000000320ll + 0x1000000000ll * ((a) & 0xf);
2983*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_RST_COLD_STATE_W1C", 1, a, 0, 0, 0, 0, 0);
2984*4b8b8d74SJaiprakash Singh }
2985*4b8b8d74SJaiprakash Singh
2986*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_RST_COLD_STATE_W1C(a) ody_pemx_rst_cold_state_w1c_t
2987*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_RST_COLD_STATE_W1C(a) CSR_TYPE_NCB
2988*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_RST_COLD_STATE_W1C(a) "PEMX_RST_COLD_STATE_W1C"
2989*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_RST_COLD_STATE_W1C(a) 0x0 /* PF_BAR0 */
2990*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_RST_COLD_STATE_W1C(a) (a)
2991*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_RST_COLD_STATE_W1C(a) (a), -1, -1, -1
2992*4b8b8d74SJaiprakash Singh
2993*4b8b8d74SJaiprakash Singh /**
2994*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_rst_cold_state_w1s
2995*4b8b8d74SJaiprakash Singh *
2996*4b8b8d74SJaiprakash Singh * PEM Reset Cold State Interrupt Summary Register
2997*4b8b8d74SJaiprakash Singh */
2998*4b8b8d74SJaiprakash Singh union ody_pemx_rst_cold_state_w1s {
2999*4b8b8d74SJaiprakash Singh uint64_t u;
3000*4b8b8d74SJaiprakash Singh struct ody_pemx_rst_cold_state_w1s_s {
3001*4b8b8d74SJaiprakash Singh uint64_t perst : 1;
3002*4b8b8d74SJaiprakash Singh uint64_t linkdown : 1;
3003*4b8b8d74SJaiprakash Singh uint64_t l2 : 1;
3004*4b8b8d74SJaiprakash Singh uint64_t reserved_3_63 : 61;
3005*4b8b8d74SJaiprakash Singh } s;
3006*4b8b8d74SJaiprakash Singh /* struct ody_pemx_rst_cold_state_w1s_s cn; */
3007*4b8b8d74SJaiprakash Singh };
3008*4b8b8d74SJaiprakash Singh typedef union ody_pemx_rst_cold_state_w1s ody_pemx_rst_cold_state_w1s_t;
3009*4b8b8d74SJaiprakash Singh
3010*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_RST_COLD_STATE_W1S(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_RST_COLD_STATE_W1S(uint64_t a)3011*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_RST_COLD_STATE_W1S(uint64_t a)
3012*4b8b8d74SJaiprakash Singh {
3013*4b8b8d74SJaiprakash Singh if (a <= 15)
3014*4b8b8d74SJaiprakash Singh return 0x8e0000000328ll + 0x1000000000ll * ((a) & 0xf);
3015*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_RST_COLD_STATE_W1S", 1, a, 0, 0, 0, 0, 0);
3016*4b8b8d74SJaiprakash Singh }
3017*4b8b8d74SJaiprakash Singh
3018*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_RST_COLD_STATE_W1S(a) ody_pemx_rst_cold_state_w1s_t
3019*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_RST_COLD_STATE_W1S(a) CSR_TYPE_NCB
3020*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_RST_COLD_STATE_W1S(a) "PEMX_RST_COLD_STATE_W1S"
3021*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_RST_COLD_STATE_W1S(a) 0x0 /* PF_BAR0 */
3022*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_RST_COLD_STATE_W1S(a) (a)
3023*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_RST_COLD_STATE_W1S(a) (a), -1, -1, -1
3024*4b8b8d74SJaiprakash Singh
3025*4b8b8d74SJaiprakash Singh /**
3026*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_rst_int
3027*4b8b8d74SJaiprakash Singh *
3028*4b8b8d74SJaiprakash Singh * PEM Interrupt Summary Register
3029*4b8b8d74SJaiprakash Singh * This register contains the different interrupt summary bits of the PEM.
3030*4b8b8d74SJaiprakash Singh *
3031*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
3032*4b8b8d74SJaiprakash Singh *
3033*4b8b8d74SJaiprakash Singh * This register is reset on core domain reset.
3034*4b8b8d74SJaiprakash Singh */
3035*4b8b8d74SJaiprakash Singh union ody_pemx_rst_int {
3036*4b8b8d74SJaiprakash Singh uint64_t u;
3037*4b8b8d74SJaiprakash Singh struct ody_pemx_rst_int_s {
3038*4b8b8d74SJaiprakash Singh uint64_t perst : 1;
3039*4b8b8d74SJaiprakash Singh uint64_t linkdown : 1;
3040*4b8b8d74SJaiprakash Singh uint64_t l2 : 1;
3041*4b8b8d74SJaiprakash Singh uint64_t reserved_3_63 : 61;
3042*4b8b8d74SJaiprakash Singh } s;
3043*4b8b8d74SJaiprakash Singh /* struct ody_pemx_rst_int_s cn; */
3044*4b8b8d74SJaiprakash Singh };
3045*4b8b8d74SJaiprakash Singh typedef union ody_pemx_rst_int ody_pemx_rst_int_t;
3046*4b8b8d74SJaiprakash Singh
3047*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_RST_INT(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_RST_INT(uint64_t a)3048*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_RST_INT(uint64_t a)
3049*4b8b8d74SJaiprakash Singh {
3050*4b8b8d74SJaiprakash Singh if (a <= 15)
3051*4b8b8d74SJaiprakash Singh return 0x8e0000000300ll + 0x1000000000ll * ((a) & 0xf);
3052*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_RST_INT", 1, a, 0, 0, 0, 0, 0);
3053*4b8b8d74SJaiprakash Singh }
3054*4b8b8d74SJaiprakash Singh
3055*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_RST_INT(a) ody_pemx_rst_int_t
3056*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_RST_INT(a) CSR_TYPE_NCB
3057*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_RST_INT(a) "PEMX_RST_INT"
3058*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_RST_INT(a) 0x0 /* PF_BAR0 */
3059*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_RST_INT(a) (a)
3060*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_RST_INT(a) (a), -1, -1, -1
3061*4b8b8d74SJaiprakash Singh
3062*4b8b8d74SJaiprakash Singh /**
3063*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_rst_int_ena_w1c
3064*4b8b8d74SJaiprakash Singh *
3065*4b8b8d74SJaiprakash Singh * PEM Interrupt Enable Clear Register
3066*4b8b8d74SJaiprakash Singh * This register clears interrupt enable bits.
3067*4b8b8d74SJaiprakash Singh */
3068*4b8b8d74SJaiprakash Singh union ody_pemx_rst_int_ena_w1c {
3069*4b8b8d74SJaiprakash Singh uint64_t u;
3070*4b8b8d74SJaiprakash Singh struct ody_pemx_rst_int_ena_w1c_s {
3071*4b8b8d74SJaiprakash Singh uint64_t perst : 1;
3072*4b8b8d74SJaiprakash Singh uint64_t linkdown : 1;
3073*4b8b8d74SJaiprakash Singh uint64_t l2 : 1;
3074*4b8b8d74SJaiprakash Singh uint64_t reserved_3_63 : 61;
3075*4b8b8d74SJaiprakash Singh } s;
3076*4b8b8d74SJaiprakash Singh /* struct ody_pemx_rst_int_ena_w1c_s cn; */
3077*4b8b8d74SJaiprakash Singh };
3078*4b8b8d74SJaiprakash Singh typedef union ody_pemx_rst_int_ena_w1c ody_pemx_rst_int_ena_w1c_t;
3079*4b8b8d74SJaiprakash Singh
3080*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_RST_INT_ENA_W1C(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_RST_INT_ENA_W1C(uint64_t a)3081*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_RST_INT_ENA_W1C(uint64_t a)
3082*4b8b8d74SJaiprakash Singh {
3083*4b8b8d74SJaiprakash Singh if (a <= 15)
3084*4b8b8d74SJaiprakash Singh return 0x8e0000000310ll + 0x1000000000ll * ((a) & 0xf);
3085*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_RST_INT_ENA_W1C", 1, a, 0, 0, 0, 0, 0);
3086*4b8b8d74SJaiprakash Singh }
3087*4b8b8d74SJaiprakash Singh
3088*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_RST_INT_ENA_W1C(a) ody_pemx_rst_int_ena_w1c_t
3089*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_RST_INT_ENA_W1C(a) CSR_TYPE_NCB
3090*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_RST_INT_ENA_W1C(a) "PEMX_RST_INT_ENA_W1C"
3091*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_RST_INT_ENA_W1C(a) 0x0 /* PF_BAR0 */
3092*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_RST_INT_ENA_W1C(a) (a)
3093*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_RST_INT_ENA_W1C(a) (a), -1, -1, -1
3094*4b8b8d74SJaiprakash Singh
3095*4b8b8d74SJaiprakash Singh /**
3096*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_rst_int_ena_w1s
3097*4b8b8d74SJaiprakash Singh *
3098*4b8b8d74SJaiprakash Singh * PEM Interrupt Enable Set Register
3099*4b8b8d74SJaiprakash Singh * This register sets interrupt enable bits.
3100*4b8b8d74SJaiprakash Singh */
3101*4b8b8d74SJaiprakash Singh union ody_pemx_rst_int_ena_w1s {
3102*4b8b8d74SJaiprakash Singh uint64_t u;
3103*4b8b8d74SJaiprakash Singh struct ody_pemx_rst_int_ena_w1s_s {
3104*4b8b8d74SJaiprakash Singh uint64_t perst : 1;
3105*4b8b8d74SJaiprakash Singh uint64_t linkdown : 1;
3106*4b8b8d74SJaiprakash Singh uint64_t l2 : 1;
3107*4b8b8d74SJaiprakash Singh uint64_t reserved_3_63 : 61;
3108*4b8b8d74SJaiprakash Singh } s;
3109*4b8b8d74SJaiprakash Singh /* struct ody_pemx_rst_int_ena_w1s_s cn; */
3110*4b8b8d74SJaiprakash Singh };
3111*4b8b8d74SJaiprakash Singh typedef union ody_pemx_rst_int_ena_w1s ody_pemx_rst_int_ena_w1s_t;
3112*4b8b8d74SJaiprakash Singh
3113*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_RST_INT_ENA_W1S(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_RST_INT_ENA_W1S(uint64_t a)3114*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_RST_INT_ENA_W1S(uint64_t a)
3115*4b8b8d74SJaiprakash Singh {
3116*4b8b8d74SJaiprakash Singh if (a <= 15)
3117*4b8b8d74SJaiprakash Singh return 0x8e0000000318ll + 0x1000000000ll * ((a) & 0xf);
3118*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_RST_INT_ENA_W1S", 1, a, 0, 0, 0, 0, 0);
3119*4b8b8d74SJaiprakash Singh }
3120*4b8b8d74SJaiprakash Singh
3121*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_RST_INT_ENA_W1S(a) ody_pemx_rst_int_ena_w1s_t
3122*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_RST_INT_ENA_W1S(a) CSR_TYPE_NCB
3123*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_RST_INT_ENA_W1S(a) "PEMX_RST_INT_ENA_W1S"
3124*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_RST_INT_ENA_W1S(a) 0x0 /* PF_BAR0 */
3125*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_RST_INT_ENA_W1S(a) (a)
3126*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_RST_INT_ENA_W1S(a) (a), -1, -1, -1
3127*4b8b8d74SJaiprakash Singh
3128*4b8b8d74SJaiprakash Singh /**
3129*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_rst_int_w1s
3130*4b8b8d74SJaiprakash Singh *
3131*4b8b8d74SJaiprakash Singh * PEM Interrupt Summary Register
3132*4b8b8d74SJaiprakash Singh * This register sets interrupt bits.
3133*4b8b8d74SJaiprakash Singh */
3134*4b8b8d74SJaiprakash Singh union ody_pemx_rst_int_w1s {
3135*4b8b8d74SJaiprakash Singh uint64_t u;
3136*4b8b8d74SJaiprakash Singh struct ody_pemx_rst_int_w1s_s {
3137*4b8b8d74SJaiprakash Singh uint64_t perst : 1;
3138*4b8b8d74SJaiprakash Singh uint64_t linkdown : 1;
3139*4b8b8d74SJaiprakash Singh uint64_t l2 : 1;
3140*4b8b8d74SJaiprakash Singh uint64_t reserved_3_63 : 61;
3141*4b8b8d74SJaiprakash Singh } s;
3142*4b8b8d74SJaiprakash Singh /* struct ody_pemx_rst_int_w1s_s cn; */
3143*4b8b8d74SJaiprakash Singh };
3144*4b8b8d74SJaiprakash Singh typedef union ody_pemx_rst_int_w1s ody_pemx_rst_int_w1s_t;
3145*4b8b8d74SJaiprakash Singh
3146*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_RST_INT_W1S(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_RST_INT_W1S(uint64_t a)3147*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_RST_INT_W1S(uint64_t a)
3148*4b8b8d74SJaiprakash Singh {
3149*4b8b8d74SJaiprakash Singh if (a <= 15)
3150*4b8b8d74SJaiprakash Singh return 0x8e0000000308ll + 0x1000000000ll * ((a) & 0xf);
3151*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_RST_INT_W1S", 1, a, 0, 0, 0, 0, 0);
3152*4b8b8d74SJaiprakash Singh }
3153*4b8b8d74SJaiprakash Singh
3154*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_RST_INT_W1S(a) ody_pemx_rst_int_w1s_t
3155*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_RST_INT_W1S(a) CSR_TYPE_NCB
3156*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_RST_INT_W1S(a) "PEMX_RST_INT_W1S"
3157*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_RST_INT_W1S(a) 0x0 /* PF_BAR0 */
3158*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_RST_INT_W1S(a) (a)
3159*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_RST_INT_W1S(a) (a), -1, -1, -1
3160*4b8b8d74SJaiprakash Singh
3161*4b8b8d74SJaiprakash Singh /**
3162*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_rst_lboot
3163*4b8b8d74SJaiprakash Singh *
3164*4b8b8d74SJaiprakash Singh * PEM Reset Last Boot Register
3165*4b8b8d74SJaiprakash Singh * This register contains status last reset cause.
3166*4b8b8d74SJaiprakash Singh *
3167*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
3168*4b8b8d74SJaiprakash Singh *
3169*4b8b8d74SJaiprakash Singh * This register is reset on cold reset.
3170*4b8b8d74SJaiprakash Singh */
3171*4b8b8d74SJaiprakash Singh union ody_pemx_rst_lboot {
3172*4b8b8d74SJaiprakash Singh uint64_t u;
3173*4b8b8d74SJaiprakash Singh struct ody_pemx_rst_lboot_s {
3174*4b8b8d74SJaiprakash Singh uint64_t lboot : 5;
3175*4b8b8d74SJaiprakash Singh uint64_t reserved_5_63 : 59;
3176*4b8b8d74SJaiprakash Singh } s;
3177*4b8b8d74SJaiprakash Singh /* struct ody_pemx_rst_lboot_s cn; */
3178*4b8b8d74SJaiprakash Singh };
3179*4b8b8d74SJaiprakash Singh typedef union ody_pemx_rst_lboot ody_pemx_rst_lboot_t;
3180*4b8b8d74SJaiprakash Singh
3181*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_RST_LBOOT(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_RST_LBOOT(uint64_t a)3182*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_RST_LBOOT(uint64_t a)
3183*4b8b8d74SJaiprakash Singh {
3184*4b8b8d74SJaiprakash Singh if (a <= 15)
3185*4b8b8d74SJaiprakash Singh return 0x8e0000000280ll + 0x1000000000ll * ((a) & 0xf);
3186*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_RST_LBOOT", 1, a, 0, 0, 0, 0, 0);
3187*4b8b8d74SJaiprakash Singh }
3188*4b8b8d74SJaiprakash Singh
3189*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_RST_LBOOT(a) ody_pemx_rst_lboot_t
3190*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_RST_LBOOT(a) CSR_TYPE_NCB
3191*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_RST_LBOOT(a) "PEMX_RST_LBOOT"
3192*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_RST_LBOOT(a) 0x0 /* PF_BAR0 */
3193*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_RST_LBOOT(a) (a)
3194*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_RST_LBOOT(a) (a), -1, -1, -1
3195*4b8b8d74SJaiprakash Singh
3196*4b8b8d74SJaiprakash Singh /**
3197*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_rst_mac
3198*4b8b8d74SJaiprakash Singh *
3199*4b8b8d74SJaiprakash Singh * PEM Reset Mac Register
3200*4b8b8d74SJaiprakash Singh * This register provides controls and modes related to resets to the MAC.
3201*4b8b8d74SJaiprakash Singh *
3202*4b8b8d74SJaiprakash Singh * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
3203*4b8b8d74SJaiprakash Singh *
3204*4b8b8d74SJaiprakash Singh * This register is reset on cold reset.
3205*4b8b8d74SJaiprakash Singh */
3206*4b8b8d74SJaiprakash Singh union ody_pemx_rst_mac {
3207*4b8b8d74SJaiprakash Singh uint64_t u;
3208*4b8b8d74SJaiprakash Singh struct ody_pemx_rst_mac_s {
3209*4b8b8d74SJaiprakash Singh uint64_t mac_rst : 1;
3210*4b8b8d74SJaiprakash Singh uint64_t pipe_rst : 1;
3211*4b8b8d74SJaiprakash Singh uint64_t pipe_rst_ovrd_en : 1;
3212*4b8b8d74SJaiprakash Singh uint64_t diag_clr_phystatus : 1;
3213*4b8b8d74SJaiprakash Singh uint64_t dis_pipe_rst : 1;
3214*4b8b8d74SJaiprakash Singh uint64_t ns_mode : 1;
3215*4b8b8d74SJaiprakash Singh uint64_t ns_rst : 1;
3216*4b8b8d74SJaiprakash Singh uint64_t mac_perst : 1;
3217*4b8b8d74SJaiprakash Singh uint64_t insecure_mode : 1;
3218*4b8b8d74SJaiprakash Singh uint64_t reserved_9_63 : 55;
3219*4b8b8d74SJaiprakash Singh } s;
3220*4b8b8d74SJaiprakash Singh /* struct ody_pemx_rst_mac_s cn; */
3221*4b8b8d74SJaiprakash Singh };
3222*4b8b8d74SJaiprakash Singh typedef union ody_pemx_rst_mac ody_pemx_rst_mac_t;
3223*4b8b8d74SJaiprakash Singh
3224*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_RST_MAC(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_RST_MAC(uint64_t a)3225*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_RST_MAC(uint64_t a)
3226*4b8b8d74SJaiprakash Singh {
3227*4b8b8d74SJaiprakash Singh if (a <= 15)
3228*4b8b8d74SJaiprakash Singh return 0x8e0000000290ll + 0x1000000000ll * ((a) & 0xf);
3229*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_RST_MAC", 1, a, 0, 0, 0, 0, 0);
3230*4b8b8d74SJaiprakash Singh }
3231*4b8b8d74SJaiprakash Singh
3232*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_RST_MAC(a) ody_pemx_rst_mac_t
3233*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_RST_MAC(a) CSR_TYPE_NCB
3234*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_RST_MAC(a) "PEMX_RST_MAC"
3235*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_RST_MAC(a) 0x0 /* PF_BAR0 */
3236*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_RST_MAC(a) (a)
3237*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_RST_MAC(a) (a), -1, -1, -1
3238*4b8b8d74SJaiprakash Singh
3239*4b8b8d74SJaiprakash Singh /**
3240*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_rst_soft_perst
3241*4b8b8d74SJaiprakash Singh *
3242*4b8b8d74SJaiprakash Singh * PEM Reset Software PERST Register
3243*4b8b8d74SJaiprakash Singh * This register provides a mechanism to drive the PCIe PERSTN pin.
3244*4b8b8d74SJaiprakash Singh *
3245*4b8b8d74SJaiprakash Singh * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
3246*4b8b8d74SJaiprakash Singh */
3247*4b8b8d74SJaiprakash Singh union ody_pemx_rst_soft_perst {
3248*4b8b8d74SJaiprakash Singh uint64_t u;
3249*4b8b8d74SJaiprakash Singh struct ody_pemx_rst_soft_perst_s {
3250*4b8b8d74SJaiprakash Singh uint64_t soft_perst : 1;
3251*4b8b8d74SJaiprakash Singh uint64_t reserved_1_63 : 63;
3252*4b8b8d74SJaiprakash Singh } s;
3253*4b8b8d74SJaiprakash Singh /* struct ody_pemx_rst_soft_perst_s cn; */
3254*4b8b8d74SJaiprakash Singh };
3255*4b8b8d74SJaiprakash Singh typedef union ody_pemx_rst_soft_perst ody_pemx_rst_soft_perst_t;
3256*4b8b8d74SJaiprakash Singh
3257*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_RST_SOFT_PERST(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_RST_SOFT_PERST(uint64_t a)3258*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_RST_SOFT_PERST(uint64_t a)
3259*4b8b8d74SJaiprakash Singh {
3260*4b8b8d74SJaiprakash Singh if (a <= 15)
3261*4b8b8d74SJaiprakash Singh return 0x8e0000000298ll + 0x1000000000ll * ((a) & 0xf);
3262*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_RST_SOFT_PERST", 1, a, 0, 0, 0, 0, 0);
3263*4b8b8d74SJaiprakash Singh }
3264*4b8b8d74SJaiprakash Singh
3265*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_RST_SOFT_PERST(a) ody_pemx_rst_soft_perst_t
3266*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_RST_SOFT_PERST(a) CSR_TYPE_NCB
3267*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_RST_SOFT_PERST(a) "PEMX_RST_SOFT_PERST"
3268*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_RST_SOFT_PERST(a) 0x0 /* PF_BAR0 */
3269*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_RST_SOFT_PERST(a) (a)
3270*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_RST_SOFT_PERST(a) (a), -1, -1, -1
3271*4b8b8d74SJaiprakash Singh
3272*4b8b8d74SJaiprakash Singh /**
3273*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_s_rst_ctl
3274*4b8b8d74SJaiprakash Singh *
3275*4b8b8d74SJaiprakash Singh * PEM Secure Reset Controllers Register
3276*4b8b8d74SJaiprakash Singh * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
3277*4b8b8d74SJaiprakash Singh */
3278*4b8b8d74SJaiprakash Singh union ody_pemx_s_rst_ctl {
3279*4b8b8d74SJaiprakash Singh uint64_t u;
3280*4b8b8d74SJaiprakash Singh struct ody_pemx_s_rst_ctl_s {
3281*4b8b8d74SJaiprakash Singh uint64_t perst_pin : 1;
3282*4b8b8d74SJaiprakash Singh uint64_t en_perst_rcv : 1;
3283*4b8b8d74SJaiprakash Singh uint64_t en_perst_drv : 1;
3284*4b8b8d74SJaiprakash Singh uint64_t reserved_3_6 : 4;
3285*4b8b8d74SJaiprakash Singh uint64_t rst_perst : 1;
3286*4b8b8d74SJaiprakash Singh uint64_t prst_lnkdwn : 1;
3287*4b8b8d74SJaiprakash Singh uint64_t rst_lnkdwn : 1;
3288*4b8b8d74SJaiprakash Singh uint64_t rst_pfflr : 1;
3289*4b8b8d74SJaiprakash Singh uint64_t prst_l2 : 1;
3290*4b8b8d74SJaiprakash Singh uint64_t rst_l2 : 1;
3291*4b8b8d74SJaiprakash Singh uint64_t reset_type : 1;
3292*4b8b8d74SJaiprakash Singh uint64_t reserved_14_63 : 50;
3293*4b8b8d74SJaiprakash Singh } s;
3294*4b8b8d74SJaiprakash Singh /* struct ody_pemx_s_rst_ctl_s cn; */
3295*4b8b8d74SJaiprakash Singh };
3296*4b8b8d74SJaiprakash Singh typedef union ody_pemx_s_rst_ctl ody_pemx_s_rst_ctl_t;
3297*4b8b8d74SJaiprakash Singh
3298*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_S_RST_CTL(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_S_RST_CTL(uint64_t a)3299*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_S_RST_CTL(uint64_t a)
3300*4b8b8d74SJaiprakash Singh {
3301*4b8b8d74SJaiprakash Singh if (a <= 15)
3302*4b8b8d74SJaiprakash Singh return 0x8e0000000288ll + 0x1000000000ll * ((a) & 0xf);
3303*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_S_RST_CTL", 1, a, 0, 0, 0, 0, 0);
3304*4b8b8d74SJaiprakash Singh }
3305*4b8b8d74SJaiprakash Singh
3306*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_S_RST_CTL(a) ody_pemx_s_rst_ctl_t
3307*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_S_RST_CTL(a) CSR_TYPE_NCB
3308*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_S_RST_CTL(a) "PEMX_S_RST_CTL"
3309*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_S_RST_CTL(a) 0x0 /* PF_BAR0 */
3310*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_S_RST_CTL(a) (a)
3311*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_S_RST_CTL(a) (a), -1, -1, -1
3312*4b8b8d74SJaiprakash Singh
3313*4b8b8d74SJaiprakash Singh /**
3314*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_strap
3315*4b8b8d74SJaiprakash Singh *
3316*4b8b8d74SJaiprakash Singh * PEM Pin Strapping Register
3317*4b8b8d74SJaiprakash Singh * This register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
3318*4b8b8d74SJaiprakash Singh *
3319*4b8b8d74SJaiprakash Singh * This register is reset on cold reset.
3320*4b8b8d74SJaiprakash Singh */
3321*4b8b8d74SJaiprakash Singh union ody_pemx_strap {
3322*4b8b8d74SJaiprakash Singh uint64_t u;
3323*4b8b8d74SJaiprakash Singh struct ody_pemx_strap_s {
3324*4b8b8d74SJaiprakash Singh uint64_t pirc : 1;
3325*4b8b8d74SJaiprakash Singh uint64_t reserved_1_63 : 63;
3326*4b8b8d74SJaiprakash Singh } s;
3327*4b8b8d74SJaiprakash Singh /* struct ody_pemx_strap_s cn; */
3328*4b8b8d74SJaiprakash Singh };
3329*4b8b8d74SJaiprakash Singh typedef union ody_pemx_strap ody_pemx_strap_t;
3330*4b8b8d74SJaiprakash Singh
3331*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_STRAP(uint64_t a) __attribute__ ((pure, always_inline));
ODY_PEMX_STRAP(uint64_t a)3332*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_STRAP(uint64_t a)
3333*4b8b8d74SJaiprakash Singh {
3334*4b8b8d74SJaiprakash Singh if (a <= 15)
3335*4b8b8d74SJaiprakash Singh return 0x8e00000000d0ll + 0x1000000000ll * ((a) & 0xf);
3336*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_STRAP", 1, a, 0, 0, 0, 0, 0);
3337*4b8b8d74SJaiprakash Singh }
3338*4b8b8d74SJaiprakash Singh
3339*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_STRAP(a) ody_pemx_strap_t
3340*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_STRAP(a) CSR_TYPE_NCB
3341*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_STRAP(a) "PEMX_STRAP"
3342*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_STRAP(a) 0x0 /* PF_BAR0 */
3343*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_STRAP(a) (a)
3344*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_STRAP(a) (a), -1, -1, -1
3345*4b8b8d74SJaiprakash Singh
3346*4b8b8d74SJaiprakash Singh /**
3347*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_vdm#_ctl
3348*4b8b8d74SJaiprakash Singh *
3349*4b8b8d74SJaiprakash Singh * PEM VDM Control Register
3350*4b8b8d74SJaiprakash Singh * This register provides control of the Vendor Defined Message (VDM) inbound
3351*4b8b8d74SJaiprakash Singh * and outbound message mailboxes. Type 1 PCIe VDM messages are received and sent
3352*4b8b8d74SJaiprakash Singh * via the VDM message mailbox interface.
3353*4b8b8d74SJaiprakash Singh *
3354*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
3355*4b8b8d74SJaiprakash Singh *
3356*4b8b8d74SJaiprakash Singh * This register is reset on core domain reset.
3357*4b8b8d74SJaiprakash Singh *
3358*4b8b8d74SJaiprakash Singh * This register is restricted to 64-bit access. Unsupported 32-bit access will
3359*4b8b8d74SJaiprakash Singh * have unpredictable results, however will not cause an access hang or timeout.
3360*4b8b8d74SJaiprakash Singh *
3361*4b8b8d74SJaiprakash Singh * The operation of this register is restricted if PEMSEC()_VDM()_CFG[VDM_SEC_MODE]
3362*4b8b8d74SJaiprakash Singh * is set to 1. Refer to the PEMSEC()_VDM()_CFG register description.
3363*4b8b8d74SJaiprakash Singh */
3364*4b8b8d74SJaiprakash Singh union ody_pemx_vdmx_ctl {
3365*4b8b8d74SJaiprakash Singh uint64_t u;
3366*4b8b8d74SJaiprakash Singh struct ody_pemx_vdmx_ctl_s {
3367*4b8b8d74SJaiprakash Singh uint64_t ib_mbx_rst : 1;
3368*4b8b8d74SJaiprakash Singh uint64_t ob_mbx_rst : 1;
3369*4b8b8d74SJaiprakash Singh uint64_t reserved_2 : 1;
3370*4b8b8d74SJaiprakash Singh uint64_t mbx_cfg : 1;
3371*4b8b8d74SJaiprakash Singh uint64_t reserved_4_30 : 27;
3372*4b8b8d74SJaiprakash Singh uint64_t ob_mbx_snd : 1;
3373*4b8b8d74SJaiprakash Singh uint64_t reserved_32_63 : 32;
3374*4b8b8d74SJaiprakash Singh } s;
3375*4b8b8d74SJaiprakash Singh /* struct ody_pemx_vdmx_ctl_s cn; */
3376*4b8b8d74SJaiprakash Singh };
3377*4b8b8d74SJaiprakash Singh typedef union ody_pemx_vdmx_ctl ody_pemx_vdmx_ctl_t;
3378*4b8b8d74SJaiprakash Singh
3379*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_VDMX_CTL(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_PEMX_VDMX_CTL(uint64_t a,uint64_t b)3380*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_VDMX_CTL(uint64_t a, uint64_t b)
3381*4b8b8d74SJaiprakash Singh {
3382*4b8b8d74SJaiprakash Singh if ((a <= 15) && (b == 0))
3383*4b8b8d74SJaiprakash Singh return 0x8e0000007f00ll + 0x1000000000ll * ((a) & 0xf);
3384*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_VDMX_CTL", 2, a, b, 0, 0, 0, 0);
3385*4b8b8d74SJaiprakash Singh }
3386*4b8b8d74SJaiprakash Singh
3387*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_VDMX_CTL(a, b) ody_pemx_vdmx_ctl_t
3388*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_VDMX_CTL(a, b) CSR_TYPE_NCB
3389*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_VDMX_CTL(a, b) "PEMX_VDMX_CTL"
3390*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_VDMX_CTL(a, b) 0x0 /* PF_BAR0 */
3391*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_VDMX_CTL(a, b) (a)
3392*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_VDMX_CTL(a, b) (a), (b), -1, -1
3393*4b8b8d74SJaiprakash Singh
3394*4b8b8d74SJaiprakash Singh /**
3395*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_vdm#_ib_hdr
3396*4b8b8d74SJaiprakash Singh *
3397*4b8b8d74SJaiprakash Singh * PEM VDM Inbound Message Header Register
3398*4b8b8d74SJaiprakash Singh * Vendor Defined Message Inbound Message Header Register.
3399*4b8b8d74SJaiprakash Singh *
3400*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
3401*4b8b8d74SJaiprakash Singh *
3402*4b8b8d74SJaiprakash Singh * This register is reset on core domain reset.
3403*4b8b8d74SJaiprakash Singh *
3404*4b8b8d74SJaiprakash Singh * This register is restricted to 64-bit access. Unsupported 32-bit access will
3405*4b8b8d74SJaiprakash Singh * have unpredictable results, however will not cause an access hang or timeout.
3406*4b8b8d74SJaiprakash Singh *
3407*4b8b8d74SJaiprakash Singh * The operation of this register is restricted if PEMSEC()_VDM()_CFG[VDM_SEC_MODE]
3408*4b8b8d74SJaiprakash Singh * is set to 1. Refer to the PEMSEC()_VDM()_CFG register description.
3409*4b8b8d74SJaiprakash Singh */
3410*4b8b8d74SJaiprakash Singh union ody_pemx_vdmx_ib_hdr {
3411*4b8b8d74SJaiprakash Singh uint64_t u;
3412*4b8b8d74SJaiprakash Singh struct ody_pemx_vdmx_ib_hdr_s {
3413*4b8b8d74SJaiprakash Singh uint64_t ib_msg_hdr : 64;
3414*4b8b8d74SJaiprakash Singh } s;
3415*4b8b8d74SJaiprakash Singh /* struct ody_pemx_vdmx_ib_hdr_s cn; */
3416*4b8b8d74SJaiprakash Singh };
3417*4b8b8d74SJaiprakash Singh typedef union ody_pemx_vdmx_ib_hdr ody_pemx_vdmx_ib_hdr_t;
3418*4b8b8d74SJaiprakash Singh
3419*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_VDMX_IB_HDR(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_PEMX_VDMX_IB_HDR(uint64_t a,uint64_t b)3420*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_VDMX_IB_HDR(uint64_t a, uint64_t b)
3421*4b8b8d74SJaiprakash Singh {
3422*4b8b8d74SJaiprakash Singh if ((a <= 15) && (b == 0))
3423*4b8b8d74SJaiprakash Singh return 0x8e0000007f50ll + 0x1000000000ll * ((a) & 0xf);
3424*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_VDMX_IB_HDR", 2, a, b, 0, 0, 0, 0);
3425*4b8b8d74SJaiprakash Singh }
3426*4b8b8d74SJaiprakash Singh
3427*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_VDMX_IB_HDR(a, b) ody_pemx_vdmx_ib_hdr_t
3428*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_VDMX_IB_HDR(a, b) CSR_TYPE_NCB
3429*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_VDMX_IB_HDR(a, b) "PEMX_VDMX_IB_HDR"
3430*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_VDMX_IB_HDR(a, b) 0x0 /* PF_BAR0 */
3431*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_VDMX_IB_HDR(a, b) (a)
3432*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_VDMX_IB_HDR(a, b) (a), (b), -1, -1
3433*4b8b8d74SJaiprakash Singh
3434*4b8b8d74SJaiprakash Singh /**
3435*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_vdm#_ib_pld
3436*4b8b8d74SJaiprakash Singh *
3437*4b8b8d74SJaiprakash Singh * PEM VDM Inbound Message Payload Register
3438*4b8b8d74SJaiprakash Singh * Vendor Defined Message Inbound Message Payload Register.
3439*4b8b8d74SJaiprakash Singh *
3440*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
3441*4b8b8d74SJaiprakash Singh *
3442*4b8b8d74SJaiprakash Singh * This register is reset on core domain reset.
3443*4b8b8d74SJaiprakash Singh *
3444*4b8b8d74SJaiprakash Singh * This register is restricted to 64-bit access. Unsupported 32-bit access will
3445*4b8b8d74SJaiprakash Singh * have unpredictable results, however will not cause an access hang or timeout.
3446*4b8b8d74SJaiprakash Singh *
3447*4b8b8d74SJaiprakash Singh * The operation of this register is restricted if PEMSEC()_VDM()_CFG[VDM_SEC_MODE]
3448*4b8b8d74SJaiprakash Singh * is set to 1. Refer to the PEMSEC()_VDM()_CFG register description.
3449*4b8b8d74SJaiprakash Singh */
3450*4b8b8d74SJaiprakash Singh union ody_pemx_vdmx_ib_pld {
3451*4b8b8d74SJaiprakash Singh uint64_t u;
3452*4b8b8d74SJaiprakash Singh struct ody_pemx_vdmx_ib_pld_s {
3453*4b8b8d74SJaiprakash Singh uint64_t ib_msg_pld : 64;
3454*4b8b8d74SJaiprakash Singh } s;
3455*4b8b8d74SJaiprakash Singh /* struct ody_pemx_vdmx_ib_pld_s cn; */
3456*4b8b8d74SJaiprakash Singh };
3457*4b8b8d74SJaiprakash Singh typedef union ody_pemx_vdmx_ib_pld ody_pemx_vdmx_ib_pld_t;
3458*4b8b8d74SJaiprakash Singh
3459*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_VDMX_IB_PLD(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_PEMX_VDMX_IB_PLD(uint64_t a,uint64_t b)3460*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_VDMX_IB_PLD(uint64_t a, uint64_t b)
3461*4b8b8d74SJaiprakash Singh {
3462*4b8b8d74SJaiprakash Singh if ((a <= 15) && (b == 0))
3463*4b8b8d74SJaiprakash Singh return 0x8e0000007f60ll + 0x1000000000ll * ((a) & 0xf);
3464*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_VDMX_IB_PLD", 2, a, b, 0, 0, 0, 0);
3465*4b8b8d74SJaiprakash Singh }
3466*4b8b8d74SJaiprakash Singh
3467*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_VDMX_IB_PLD(a, b) ody_pemx_vdmx_ib_pld_t
3468*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_VDMX_IB_PLD(a, b) CSR_TYPE_NCB
3469*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_VDMX_IB_PLD(a, b) "PEMX_VDMX_IB_PLD"
3470*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_VDMX_IB_PLD(a, b) 0x0 /* PF_BAR0 */
3471*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_VDMX_IB_PLD(a, b) (a)
3472*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_VDMX_IB_PLD(a, b) (a), (b), -1, -1
3473*4b8b8d74SJaiprakash Singh
3474*4b8b8d74SJaiprakash Singh /**
3475*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_vdm#_ib_vid#
3476*4b8b8d74SJaiprakash Singh *
3477*4b8b8d74SJaiprakash Singh * PEM VDM Inbound Message VID Match Register
3478*4b8b8d74SJaiprakash Singh * Vendor Defined Message Inbound Message VID Match Register.
3479*4b8b8d74SJaiprakash Singh *
3480*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
3481*4b8b8d74SJaiprakash Singh *
3482*4b8b8d74SJaiprakash Singh * This register is reset on core domain reset.
3483*4b8b8d74SJaiprakash Singh *
3484*4b8b8d74SJaiprakash Singh * This register is restricted to 64-bit access. Unsupported 32-bit access will
3485*4b8b8d74SJaiprakash Singh * have unpredictable results, however will not cause an access hang or timeout.
3486*4b8b8d74SJaiprakash Singh *
3487*4b8b8d74SJaiprakash Singh * The operation of this register is restricted if PEMSEC()_VDM()_CFG[VDM_SEC_MODE]
3488*4b8b8d74SJaiprakash Singh * is set to 1. Refer to the PEMSEC()_VDM()_CFG register description.
3489*4b8b8d74SJaiprakash Singh */
3490*4b8b8d74SJaiprakash Singh union ody_pemx_vdmx_ib_vidx {
3491*4b8b8d74SJaiprakash Singh uint64_t u;
3492*4b8b8d74SJaiprakash Singh struct ody_pemx_vdmx_ib_vidx_s {
3493*4b8b8d74SJaiprakash Singh uint64_t vid : 16;
3494*4b8b8d74SJaiprakash Singh uint64_t reserved_16_30 : 15;
3495*4b8b8d74SJaiprakash Singh uint64_t valid : 1;
3496*4b8b8d74SJaiprakash Singh uint64_t reserved_32_63 : 32;
3497*4b8b8d74SJaiprakash Singh } s;
3498*4b8b8d74SJaiprakash Singh /* struct ody_pemx_vdmx_ib_vidx_s cn; */
3499*4b8b8d74SJaiprakash Singh };
3500*4b8b8d74SJaiprakash Singh typedef union ody_pemx_vdmx_ib_vidx ody_pemx_vdmx_ib_vidx_t;
3501*4b8b8d74SJaiprakash Singh
3502*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_VDMX_IB_VIDX(uint64_t a, uint64_t b, uint64_t c) __attribute__ ((pure, always_inline));
ODY_PEMX_VDMX_IB_VIDX(uint64_t a,uint64_t b,uint64_t c)3503*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_VDMX_IB_VIDX(uint64_t a, uint64_t b, uint64_t c)
3504*4b8b8d74SJaiprakash Singh {
3505*4b8b8d74SJaiprakash Singh if ((a <= 15) && (b == 0) && (c <= 7))
3506*4b8b8d74SJaiprakash Singh return 0x8e0000007f80ll + 0x1000000000ll * ((a) & 0xf) + 8ll * ((c) & 0x7);
3507*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_VDMX_IB_VIDX", 3, a, b, c, 0, 0, 0);
3508*4b8b8d74SJaiprakash Singh }
3509*4b8b8d74SJaiprakash Singh
3510*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_VDMX_IB_VIDX(a, b, c) ody_pemx_vdmx_ib_vidx_t
3511*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_VDMX_IB_VIDX(a, b, c) CSR_TYPE_NCB
3512*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_VDMX_IB_VIDX(a, b, c) "PEMX_VDMX_IB_VIDX"
3513*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_VDMX_IB_VIDX(a, b, c) 0x0 /* PF_BAR0 */
3514*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_VDMX_IB_VIDX(a, b, c) (a)
3515*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_VDMX_IB_VIDX(a, b, c) (a), (b), (c), -1
3516*4b8b8d74SJaiprakash Singh
3517*4b8b8d74SJaiprakash Singh /**
3518*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_vdm#_int
3519*4b8b8d74SJaiprakash Singh *
3520*4b8b8d74SJaiprakash Singh * PEM VDM Interrupt Register
3521*4b8b8d74SJaiprakash Singh * This register contains the interrupt bits for VDM.
3522*4b8b8d74SJaiprakash Singh *
3523*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
3524*4b8b8d74SJaiprakash Singh *
3525*4b8b8d74SJaiprakash Singh * This register is reset on core domain reset.
3526*4b8b8d74SJaiprakash Singh *
3527*4b8b8d74SJaiprakash Singh * The operation of this register is restricted if PEMSEC()_VDM()_CFG[VDM_SEC_MODE]
3528*4b8b8d74SJaiprakash Singh * is set to 1. Refer to the PEMSEC()_VDM()_CFG register description.
3529*4b8b8d74SJaiprakash Singh */
3530*4b8b8d74SJaiprakash Singh union ody_pemx_vdmx_int {
3531*4b8b8d74SJaiprakash Singh uint64_t u;
3532*4b8b8d74SJaiprakash Singh struct ody_pemx_vdmx_int_s {
3533*4b8b8d74SJaiprakash Singh uint64_t rx_rcv : 1;
3534*4b8b8d74SJaiprakash Singh uint64_t reserved_1_63 : 63;
3535*4b8b8d74SJaiprakash Singh } s;
3536*4b8b8d74SJaiprakash Singh /* struct ody_pemx_vdmx_int_s cn; */
3537*4b8b8d74SJaiprakash Singh };
3538*4b8b8d74SJaiprakash Singh typedef union ody_pemx_vdmx_int ody_pemx_vdmx_int_t;
3539*4b8b8d74SJaiprakash Singh
3540*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_VDMX_INT(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_PEMX_VDMX_INT(uint64_t a,uint64_t b)3541*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_VDMX_INT(uint64_t a, uint64_t b)
3542*4b8b8d74SJaiprakash Singh {
3543*4b8b8d74SJaiprakash Singh if ((a <= 15) && (b == 0))
3544*4b8b8d74SJaiprakash Singh return 0x8e0000007e00ll + 0x1000000000ll * ((a) & 0xf);
3545*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_VDMX_INT", 2, a, b, 0, 0, 0, 0);
3546*4b8b8d74SJaiprakash Singh }
3547*4b8b8d74SJaiprakash Singh
3548*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_VDMX_INT(a, b) ody_pemx_vdmx_int_t
3549*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_VDMX_INT(a, b) CSR_TYPE_NCB
3550*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_VDMX_INT(a, b) "PEMX_VDMX_INT"
3551*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_VDMX_INT(a, b) 0x0 /* PF_BAR0 */
3552*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_VDMX_INT(a, b) (a)
3553*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_VDMX_INT(a, b) (a), (b), -1, -1
3554*4b8b8d74SJaiprakash Singh
3555*4b8b8d74SJaiprakash Singh /**
3556*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_vdm#_int_ena_w1c
3557*4b8b8d74SJaiprakash Singh *
3558*4b8b8d74SJaiprakash Singh * PEM VDM Interrupt Enable Clear Register
3559*4b8b8d74SJaiprakash Singh * This register clears interrupt enable bits.
3560*4b8b8d74SJaiprakash Singh */
3561*4b8b8d74SJaiprakash Singh union ody_pemx_vdmx_int_ena_w1c {
3562*4b8b8d74SJaiprakash Singh uint64_t u;
3563*4b8b8d74SJaiprakash Singh struct ody_pemx_vdmx_int_ena_w1c_s {
3564*4b8b8d74SJaiprakash Singh uint64_t rx_rcv : 1;
3565*4b8b8d74SJaiprakash Singh uint64_t reserved_1_63 : 63;
3566*4b8b8d74SJaiprakash Singh } s;
3567*4b8b8d74SJaiprakash Singh /* struct ody_pemx_vdmx_int_ena_w1c_s cn; */
3568*4b8b8d74SJaiprakash Singh };
3569*4b8b8d74SJaiprakash Singh typedef union ody_pemx_vdmx_int_ena_w1c ody_pemx_vdmx_int_ena_w1c_t;
3570*4b8b8d74SJaiprakash Singh
3571*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_VDMX_INT_ENA_W1C(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_PEMX_VDMX_INT_ENA_W1C(uint64_t a,uint64_t b)3572*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_VDMX_INT_ENA_W1C(uint64_t a, uint64_t b)
3573*4b8b8d74SJaiprakash Singh {
3574*4b8b8d74SJaiprakash Singh if ((a <= 15) && (b == 0))
3575*4b8b8d74SJaiprakash Singh return 0x8e0000007e20ll + 0x1000000000ll * ((a) & 0xf);
3576*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_VDMX_INT_ENA_W1C", 2, a, b, 0, 0, 0, 0);
3577*4b8b8d74SJaiprakash Singh }
3578*4b8b8d74SJaiprakash Singh
3579*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_VDMX_INT_ENA_W1C(a, b) ody_pemx_vdmx_int_ena_w1c_t
3580*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_VDMX_INT_ENA_W1C(a, b) CSR_TYPE_NCB
3581*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_VDMX_INT_ENA_W1C(a, b) "PEMX_VDMX_INT_ENA_W1C"
3582*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_VDMX_INT_ENA_W1C(a, b) 0x0 /* PF_BAR0 */
3583*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_VDMX_INT_ENA_W1C(a, b) (a)
3584*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_VDMX_INT_ENA_W1C(a, b) (a), (b), -1, -1
3585*4b8b8d74SJaiprakash Singh
3586*4b8b8d74SJaiprakash Singh /**
3587*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_vdm#_int_ena_w1s
3588*4b8b8d74SJaiprakash Singh *
3589*4b8b8d74SJaiprakash Singh * PEM VDM Interrupt Enable Set Register
3590*4b8b8d74SJaiprakash Singh * This register sets interrupt enable bits.
3591*4b8b8d74SJaiprakash Singh */
3592*4b8b8d74SJaiprakash Singh union ody_pemx_vdmx_int_ena_w1s {
3593*4b8b8d74SJaiprakash Singh uint64_t u;
3594*4b8b8d74SJaiprakash Singh struct ody_pemx_vdmx_int_ena_w1s_s {
3595*4b8b8d74SJaiprakash Singh uint64_t rx_rcv : 1;
3596*4b8b8d74SJaiprakash Singh uint64_t reserved_1_63 : 63;
3597*4b8b8d74SJaiprakash Singh } s;
3598*4b8b8d74SJaiprakash Singh /* struct ody_pemx_vdmx_int_ena_w1s_s cn; */
3599*4b8b8d74SJaiprakash Singh };
3600*4b8b8d74SJaiprakash Singh typedef union ody_pemx_vdmx_int_ena_w1s ody_pemx_vdmx_int_ena_w1s_t;
3601*4b8b8d74SJaiprakash Singh
3602*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_VDMX_INT_ENA_W1S(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_PEMX_VDMX_INT_ENA_W1S(uint64_t a,uint64_t b)3603*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_VDMX_INT_ENA_W1S(uint64_t a, uint64_t b)
3604*4b8b8d74SJaiprakash Singh {
3605*4b8b8d74SJaiprakash Singh if ((a <= 15) && (b == 0))
3606*4b8b8d74SJaiprakash Singh return 0x8e0000007e30ll + 0x1000000000ll * ((a) & 0xf);
3607*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_VDMX_INT_ENA_W1S", 2, a, b, 0, 0, 0, 0);
3608*4b8b8d74SJaiprakash Singh }
3609*4b8b8d74SJaiprakash Singh
3610*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_VDMX_INT_ENA_W1S(a, b) ody_pemx_vdmx_int_ena_w1s_t
3611*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_VDMX_INT_ENA_W1S(a, b) CSR_TYPE_NCB
3612*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_VDMX_INT_ENA_W1S(a, b) "PEMX_VDMX_INT_ENA_W1S"
3613*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_VDMX_INT_ENA_W1S(a, b) 0x0 /* PF_BAR0 */
3614*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_VDMX_INT_ENA_W1S(a, b) (a)
3615*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_VDMX_INT_ENA_W1S(a, b) (a), (b), -1, -1
3616*4b8b8d74SJaiprakash Singh
3617*4b8b8d74SJaiprakash Singh /**
3618*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_vdm#_int_w1s
3619*4b8b8d74SJaiprakash Singh *
3620*4b8b8d74SJaiprakash Singh * PEM VDM Interrupt Set Register
3621*4b8b8d74SJaiprakash Singh * This register sets interrupt bits.
3622*4b8b8d74SJaiprakash Singh */
3623*4b8b8d74SJaiprakash Singh union ody_pemx_vdmx_int_w1s {
3624*4b8b8d74SJaiprakash Singh uint64_t u;
3625*4b8b8d74SJaiprakash Singh struct ody_pemx_vdmx_int_w1s_s {
3626*4b8b8d74SJaiprakash Singh uint64_t rx_rcv : 1;
3627*4b8b8d74SJaiprakash Singh uint64_t reserved_1_63 : 63;
3628*4b8b8d74SJaiprakash Singh } s;
3629*4b8b8d74SJaiprakash Singh /* struct ody_pemx_vdmx_int_w1s_s cn; */
3630*4b8b8d74SJaiprakash Singh };
3631*4b8b8d74SJaiprakash Singh typedef union ody_pemx_vdmx_int_w1s ody_pemx_vdmx_int_w1s_t;
3632*4b8b8d74SJaiprakash Singh
3633*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_VDMX_INT_W1S(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_PEMX_VDMX_INT_W1S(uint64_t a,uint64_t b)3634*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_VDMX_INT_W1S(uint64_t a, uint64_t b)
3635*4b8b8d74SJaiprakash Singh {
3636*4b8b8d74SJaiprakash Singh if ((a <= 15) && (b == 0))
3637*4b8b8d74SJaiprakash Singh return 0x8e0000007e10ll + 0x1000000000ll * ((a) & 0xf);
3638*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_VDMX_INT_W1S", 2, a, b, 0, 0, 0, 0);
3639*4b8b8d74SJaiprakash Singh }
3640*4b8b8d74SJaiprakash Singh
3641*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_VDMX_INT_W1S(a, b) ody_pemx_vdmx_int_w1s_t
3642*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_VDMX_INT_W1S(a, b) CSR_TYPE_NCB
3643*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_VDMX_INT_W1S(a, b) "PEMX_VDMX_INT_W1S"
3644*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_VDMX_INT_W1S(a, b) 0x0 /* PF_BAR0 */
3645*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_VDMX_INT_W1S(a, b) (a)
3646*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_VDMX_INT_W1S(a, b) (a), (b), -1, -1
3647*4b8b8d74SJaiprakash Singh
3648*4b8b8d74SJaiprakash Singh /**
3649*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_vdm#_ob_hdrh
3650*4b8b8d74SJaiprakash Singh *
3651*4b8b8d74SJaiprakash Singh * PEM VDM Outbound Message Header Hi Register
3652*4b8b8d74SJaiprakash Singh * Vendor Defined Message Outbound Message Header Hi Register.
3653*4b8b8d74SJaiprakash Singh *
3654*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
3655*4b8b8d74SJaiprakash Singh *
3656*4b8b8d74SJaiprakash Singh * This register is reset on core domain reset.
3657*4b8b8d74SJaiprakash Singh *
3658*4b8b8d74SJaiprakash Singh * This register is restricted to 64-bit access. Unsupported 32-bit access will
3659*4b8b8d74SJaiprakash Singh * have unpredictable results, however will not cause an access hang or timeout.
3660*4b8b8d74SJaiprakash Singh *
3661*4b8b8d74SJaiprakash Singh * The operation of this register is restricted if PEMSEC()_VDM()_CFG[VDM_SEC_MODE]
3662*4b8b8d74SJaiprakash Singh * is set to 1. Refer to the PEMSEC()_VDM()_CFG register description.
3663*4b8b8d74SJaiprakash Singh */
3664*4b8b8d74SJaiprakash Singh union ody_pemx_vdmx_ob_hdrh {
3665*4b8b8d74SJaiprakash Singh uint64_t u;
3666*4b8b8d74SJaiprakash Singh struct ody_pemx_vdmx_ob_hdrh_s {
3667*4b8b8d74SJaiprakash Singh uint64_t msg_tlp_hdr12 : 8;
3668*4b8b8d74SJaiprakash Singh uint64_t msg_tlp_hdr13 : 8;
3669*4b8b8d74SJaiprakash Singh uint64_t msg_tlp_hdr14 : 8;
3670*4b8b8d74SJaiprakash Singh uint64_t msg_tlp_hdr15 : 8;
3671*4b8b8d74SJaiprakash Singh uint64_t msg_vid : 16;
3672*4b8b8d74SJaiprakash Singh uint64_t reserved_48_63 : 16;
3673*4b8b8d74SJaiprakash Singh } s;
3674*4b8b8d74SJaiprakash Singh /* struct ody_pemx_vdmx_ob_hdrh_s cn; */
3675*4b8b8d74SJaiprakash Singh };
3676*4b8b8d74SJaiprakash Singh typedef union ody_pemx_vdmx_ob_hdrh ody_pemx_vdmx_ob_hdrh_t;
3677*4b8b8d74SJaiprakash Singh
3678*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_VDMX_OB_HDRH(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_PEMX_VDMX_OB_HDRH(uint64_t a,uint64_t b)3679*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_VDMX_OB_HDRH(uint64_t a, uint64_t b)
3680*4b8b8d74SJaiprakash Singh {
3681*4b8b8d74SJaiprakash Singh if ((a <= 15) && (b == 0))
3682*4b8b8d74SJaiprakash Singh return 0x8e0000007f30ll + 0x1000000000ll * ((a) & 0xf);
3683*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_VDMX_OB_HDRH", 2, a, b, 0, 0, 0, 0);
3684*4b8b8d74SJaiprakash Singh }
3685*4b8b8d74SJaiprakash Singh
3686*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_VDMX_OB_HDRH(a, b) ody_pemx_vdmx_ob_hdrh_t
3687*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_VDMX_OB_HDRH(a, b) CSR_TYPE_NCB
3688*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_VDMX_OB_HDRH(a, b) "PEMX_VDMX_OB_HDRH"
3689*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_VDMX_OB_HDRH(a, b) 0x0 /* PF_BAR0 */
3690*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_VDMX_OB_HDRH(a, b) (a)
3691*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_VDMX_OB_HDRH(a, b) (a), (b), -1, -1
3692*4b8b8d74SJaiprakash Singh
3693*4b8b8d74SJaiprakash Singh /**
3694*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_vdm#_ob_hdrl
3695*4b8b8d74SJaiprakash Singh *
3696*4b8b8d74SJaiprakash Singh * PEM VDM Outbound Message Header Low Register
3697*4b8b8d74SJaiprakash Singh * Vendor Defined Message Outbound Message Header Low Register.
3698*4b8b8d74SJaiprakash Singh *
3699*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
3700*4b8b8d74SJaiprakash Singh *
3701*4b8b8d74SJaiprakash Singh * This register is reset on core domain reset.
3702*4b8b8d74SJaiprakash Singh *
3703*4b8b8d74SJaiprakash Singh * This register is restricted to 64-bit access. Unsupported 32-bit access will
3704*4b8b8d74SJaiprakash Singh * have unpredictable results, however will not cause an access hang or timeout.
3705*4b8b8d74SJaiprakash Singh *
3706*4b8b8d74SJaiprakash Singh * The operation of this register is restricted if PEMSEC()_VDM()_CFG[VDM_SEC_MODE]
3707*4b8b8d74SJaiprakash Singh * is set to 1. Refer to the PEMSEC()_VDM()_CFG register description.
3708*4b8b8d74SJaiprakash Singh */
3709*4b8b8d74SJaiprakash Singh union ody_pemx_vdmx_ob_hdrl {
3710*4b8b8d74SJaiprakash Singh uint64_t u;
3711*4b8b8d74SJaiprakash Singh struct ody_pemx_vdmx_ob_hdrl_s {
3712*4b8b8d74SJaiprakash Singh uint64_t msg_len : 6;
3713*4b8b8d74SJaiprakash Singh uint64_t reserved_6_7 : 2;
3714*4b8b8d74SJaiprakash Singh uint64_t msg_tag : 8;
3715*4b8b8d74SJaiprakash Singh uint64_t trgt_id : 16;
3716*4b8b8d74SJaiprakash Singh uint64_t msg_err : 1;
3717*4b8b8d74SJaiprakash Singh uint64_t reserved_33_47 : 15;
3718*4b8b8d74SJaiprakash Singh uint64_t msg_rt : 3;
3719*4b8b8d74SJaiprakash Singh uint64_t reserved_51_63 : 13;
3720*4b8b8d74SJaiprakash Singh } s;
3721*4b8b8d74SJaiprakash Singh /* struct ody_pemx_vdmx_ob_hdrl_s cn; */
3722*4b8b8d74SJaiprakash Singh };
3723*4b8b8d74SJaiprakash Singh typedef union ody_pemx_vdmx_ob_hdrl ody_pemx_vdmx_ob_hdrl_t;
3724*4b8b8d74SJaiprakash Singh
3725*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_VDMX_OB_HDRL(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_PEMX_VDMX_OB_HDRL(uint64_t a,uint64_t b)3726*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_VDMX_OB_HDRL(uint64_t a, uint64_t b)
3727*4b8b8d74SJaiprakash Singh {
3728*4b8b8d74SJaiprakash Singh if ((a <= 15) && (b == 0))
3729*4b8b8d74SJaiprakash Singh return 0x8e0000007f20ll + 0x1000000000ll * ((a) & 0xf);
3730*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_VDMX_OB_HDRL", 2, a, b, 0, 0, 0, 0);
3731*4b8b8d74SJaiprakash Singh }
3732*4b8b8d74SJaiprakash Singh
3733*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_VDMX_OB_HDRL(a, b) ody_pemx_vdmx_ob_hdrl_t
3734*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_VDMX_OB_HDRL(a, b) CSR_TYPE_NCB
3735*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_VDMX_OB_HDRL(a, b) "PEMX_VDMX_OB_HDRL"
3736*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_VDMX_OB_HDRL(a, b) 0x0 /* PF_BAR0 */
3737*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_VDMX_OB_HDRL(a, b) (a)
3738*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_VDMX_OB_HDRL(a, b) (a), (b), -1, -1
3739*4b8b8d74SJaiprakash Singh
3740*4b8b8d74SJaiprakash Singh /**
3741*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_vdm#_ob_pld
3742*4b8b8d74SJaiprakash Singh *
3743*4b8b8d74SJaiprakash Singh * PEM VDM Outbound Message Payload Register
3744*4b8b8d74SJaiprakash Singh * Vendor Defined Message Outbound Message Payload Register.
3745*4b8b8d74SJaiprakash Singh *
3746*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
3747*4b8b8d74SJaiprakash Singh *
3748*4b8b8d74SJaiprakash Singh * This register is reset on core domain reset.
3749*4b8b8d74SJaiprakash Singh *
3750*4b8b8d74SJaiprakash Singh * This register is restricted to 64-bit access. Unsupported 32-bit access will
3751*4b8b8d74SJaiprakash Singh * have unpredictable results, however will not cause an access hang or timeout.
3752*4b8b8d74SJaiprakash Singh *
3753*4b8b8d74SJaiprakash Singh * The operation of this register is restricted if PEMSEC()_VDM()_CFG[VDM_SEC_MODE]
3754*4b8b8d74SJaiprakash Singh * is set to 1. Refer to the PEMSEC()_VDM()_CFG register description.
3755*4b8b8d74SJaiprakash Singh */
3756*4b8b8d74SJaiprakash Singh union ody_pemx_vdmx_ob_pld {
3757*4b8b8d74SJaiprakash Singh uint64_t u;
3758*4b8b8d74SJaiprakash Singh struct ody_pemx_vdmx_ob_pld_s {
3759*4b8b8d74SJaiprakash Singh uint64_t ob_msg_pld : 64;
3760*4b8b8d74SJaiprakash Singh } s;
3761*4b8b8d74SJaiprakash Singh /* struct ody_pemx_vdmx_ob_pld_s cn; */
3762*4b8b8d74SJaiprakash Singh };
3763*4b8b8d74SJaiprakash Singh typedef union ody_pemx_vdmx_ob_pld ody_pemx_vdmx_ob_pld_t;
3764*4b8b8d74SJaiprakash Singh
3765*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_VDMX_OB_PLD(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_PEMX_VDMX_OB_PLD(uint64_t a,uint64_t b)3766*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_VDMX_OB_PLD(uint64_t a, uint64_t b)
3767*4b8b8d74SJaiprakash Singh {
3768*4b8b8d74SJaiprakash Singh if ((a <= 15) && (b == 0))
3769*4b8b8d74SJaiprakash Singh return 0x8e0000007f40ll + 0x1000000000ll * ((a) & 0xf);
3770*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_VDMX_OB_PLD", 2, a, b, 0, 0, 0, 0);
3771*4b8b8d74SJaiprakash Singh }
3772*4b8b8d74SJaiprakash Singh
3773*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_VDMX_OB_PLD(a, b) ody_pemx_vdmx_ob_pld_t
3774*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_VDMX_OB_PLD(a, b) CSR_TYPE_NCB
3775*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_VDMX_OB_PLD(a, b) "PEMX_VDMX_OB_PLD"
3776*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_VDMX_OB_PLD(a, b) 0x0 /* PF_BAR0 */
3777*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_VDMX_OB_PLD(a, b) (a)
3778*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_VDMX_OB_PLD(a, b) (a), (b), -1, -1
3779*4b8b8d74SJaiprakash Singh
3780*4b8b8d74SJaiprakash Singh /**
3781*4b8b8d74SJaiprakash Singh * Register (NCB) pem#_vdm#_status
3782*4b8b8d74SJaiprakash Singh *
3783*4b8b8d74SJaiprakash Singh * PEM VDM Status Register
3784*4b8b8d74SJaiprakash Singh * This register provides status of the Vendor Defined Message (VDM) inbound
3785*4b8b8d74SJaiprakash Singh * and outbound message mailboxes.
3786*4b8b8d74SJaiprakash Singh *
3787*4b8b8d74SJaiprakash Singh * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
3788*4b8b8d74SJaiprakash Singh *
3789*4b8b8d74SJaiprakash Singh * This register is reset on core domain reset.
3790*4b8b8d74SJaiprakash Singh *
3791*4b8b8d74SJaiprakash Singh * This register is restricted to 64-bit access. Unsupported 32-bit access will
3792*4b8b8d74SJaiprakash Singh * have unpredictable results, however will not cause an access hang or timeout.
3793*4b8b8d74SJaiprakash Singh *
3794*4b8b8d74SJaiprakash Singh * The operation of this register is restricted if PEMSEC()_VDM()_CFG[VDM_SEC_MODE]
3795*4b8b8d74SJaiprakash Singh * is set to 1. Refer to the PEMSEC()_VDM()_CFG register description.
3796*4b8b8d74SJaiprakash Singh */
3797*4b8b8d74SJaiprakash Singh union ody_pemx_vdmx_status {
3798*4b8b8d74SJaiprakash Singh uint64_t u;
3799*4b8b8d74SJaiprakash Singh struct ody_pemx_vdmx_status_s {
3800*4b8b8d74SJaiprakash Singh uint64_t ob_mbx_busy : 1;
3801*4b8b8d74SJaiprakash Singh uint64_t reserved_1 : 1;
3802*4b8b8d74SJaiprakash Singh uint64_t ib_mbx_err : 1;
3803*4b8b8d74SJaiprakash Singh uint64_t ob_mbx_err : 1;
3804*4b8b8d74SJaiprakash Singh uint64_t ob_mbx_sts : 14;
3805*4b8b8d74SJaiprakash Singh uint64_t ib_mbx_sts : 13;
3806*4b8b8d74SJaiprakash Singh uint64_t ib_mbx_rdy : 1;
3807*4b8b8d74SJaiprakash Singh uint64_t reserved_32_63 : 32;
3808*4b8b8d74SJaiprakash Singh } s;
3809*4b8b8d74SJaiprakash Singh /* struct ody_pemx_vdmx_status_s cn; */
3810*4b8b8d74SJaiprakash Singh };
3811*4b8b8d74SJaiprakash Singh typedef union ody_pemx_vdmx_status ody_pemx_vdmx_status_t;
3812*4b8b8d74SJaiprakash Singh
3813*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_VDMX_STATUS(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_PEMX_VDMX_STATUS(uint64_t a,uint64_t b)3814*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMX_VDMX_STATUS(uint64_t a, uint64_t b)
3815*4b8b8d74SJaiprakash Singh {
3816*4b8b8d74SJaiprakash Singh if ((a <= 15) && (b == 0))
3817*4b8b8d74SJaiprakash Singh return 0x8e0000007f10ll + 0x1000000000ll * ((a) & 0xf);
3818*4b8b8d74SJaiprakash Singh __ody_csr_fatal("PEMX_VDMX_STATUS", 2, a, b, 0, 0, 0, 0);
3819*4b8b8d74SJaiprakash Singh }
3820*4b8b8d74SJaiprakash Singh
3821*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMX_VDMX_STATUS(a, b) ody_pemx_vdmx_status_t
3822*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMX_VDMX_STATUS(a, b) CSR_TYPE_NCB
3823*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMX_VDMX_STATUS(a, b) "PEMX_VDMX_STATUS"
3824*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMX_VDMX_STATUS(a, b) 0x0 /* PF_BAR0 */
3825*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMX_VDMX_STATUS(a, b) (a)
3826*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMX_VDMX_STATUS(a, b) (a), (b), -1, -1
3827*4b8b8d74SJaiprakash Singh
3828*4b8b8d74SJaiprakash Singh #endif /* __ODY_CSRS_PEM_H__ */
3829