xref: /rk3399_ARM-atf/include/plat/marvell/odyssey/csr/ody-csrs-tad.h (revision 12d80bbbf6031228bdd910eccb03bb185e8df527)
1*4b8b8d74SJaiprakash Singh #ifndef __ODY_CSRS_TAD_H__
2*4b8b8d74SJaiprakash Singh #define __ODY_CSRS_TAD_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  * TAD.
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 tad_bar_e
24*4b8b8d74SJaiprakash Singh  *
25*4b8b8d74SJaiprakash Singh  * TAD Base Address Register Enumeration
26*4b8b8d74SJaiprakash Singh  * Enumerates the base address registers.
27*4b8b8d74SJaiprakash Singh  */
28*4b8b8d74SJaiprakash Singh #define ODY_TAD_BAR_E_TADX_PF_BAR0(a) (0x87e22b000000ll + 0x1000000ll * (a))
29*4b8b8d74SJaiprakash Singh #define ODY_TAD_BAR_E_TADX_PF_BAR0_SIZE 0x800000ull
30*4b8b8d74SJaiprakash Singh #define ODY_TAD_BAR_E_TADX_PF_BAR4(a) (0x87e22b800000ll + 0x1000000ll * (a))
31*4b8b8d74SJaiprakash Singh #define ODY_TAD_BAR_E_TADX_PF_BAR4_SIZE 0x800000ull
32*4b8b8d74SJaiprakash Singh 
33*4b8b8d74SJaiprakash Singh /**
34*4b8b8d74SJaiprakash Singh  * Enumeration tad_pf_int_vec_e
35*4b8b8d74SJaiprakash Singh  *
36*4b8b8d74SJaiprakash Singh  * TAD MSI-X Vector Enumeration
37*4b8b8d74SJaiprakash Singh  * Enumerates the MSI-X interrupt vectors.
38*4b8b8d74SJaiprakash Singh  */
39*4b8b8d74SJaiprakash Singh #define ODY_TAD_PF_INT_VEC_E_TAD_INT (0)
40*4b8b8d74SJaiprakash Singh 
41*4b8b8d74SJaiprakash Singh /**
42*4b8b8d74SJaiprakash Singh  * Enumeration tad_prf_sel_e
43*4b8b8d74SJaiprakash Singh  *
44*4b8b8d74SJaiprakash Singh  * TAD Performance Counter Select Enumeration
45*4b8b8d74SJaiprakash Singh  * Enumerates the different TAD performance counter selects.
46*4b8b8d74SJaiprakash Singh  */
47*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_ALLOC_ANY (0x1c)
48*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_ALLOC_DTG (0x1a)
49*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_ALLOC_LTG (0x1b)
50*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_DAT_MSH_IN_ANY (9)
51*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_DAT_MSH_IN_DSS (0xa)
52*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_DAT_MSH_OUT_ANY (0x17)
53*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_DAT_MSH_OUT_DSS (0x19)
54*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_DAT_MSH_OUT_FILL (0x18)
55*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_DAT_RD (0x21)
56*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_DAT_RD_BYP (0x22)
57*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_HIT_ANY (0x1f)
58*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_HIT_DTG (0x1d)
59*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_HIT_LTG (0x1e)
60*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_IFB_OCC (0x23)
61*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_NONE (0)
62*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_REQ_MSH_IN_ANY (1)
63*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_REQ_MSH_IN_EXLMN (3)
64*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_REQ_MSH_IN_MN (2)
65*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_REQ_MSH_OUT_ANY (0xb)
66*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_REQ_MSH_OUT_DSS_RD (0xc)
67*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_REQ_MSH_OUT_DSS_WR (0xd)
68*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_REQ_MSH_OUT_DTG_EVICT (0x25)
69*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_REQ_MSH_OUT_EVICT (0xe)
70*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_REQ_MSH_OUT_LTG_EVICT (0x26)
71*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_REQ_OCC (0x24)
72*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_RSP_MSH_IN_ANY (4)
73*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_RSP_MSH_IN_DSS (7)
74*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_RSP_MSH_IN_EXLMN (6)
75*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_RSP_MSH_IN_MN (5)
76*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_RSP_MSH_IN_RETRY_DSS (8)
77*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_RSP_MSH_OUT_ANY (0xf)
78*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_RSP_MSH_OUT_EXLMN (0x12)
79*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_RSP_MSH_OUT_MN (0x13)
80*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_RSP_MSH_OUT_RETRY_EXLMN (0x10)
81*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_RSP_MSH_OUT_RETRY_MN (0x11)
82*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_SNP_MSH_OUT_ANY (0x14)
83*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_SNP_MSH_OUT_EXLMN (0x16)
84*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_SNP_MSH_OUT_MN (0x15)
85*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_TAG_RD (0x20)
86*4b8b8d74SJaiprakash Singh #define ODY_TAD_PRF_SEL_E_TOT_CYCLE (0xff)
87*4b8b8d74SJaiprakash Singh 
88*4b8b8d74SJaiprakash Singh /**
89*4b8b8d74SJaiprakash Singh  * Register (RSL) tad#_cache_flush_status
90*4b8b8d74SJaiprakash Singh  *
91*4b8b8d74SJaiprakash Singh  * TAD Cache Flush Status Register
92*4b8b8d74SJaiprakash Singh  * Status for Cache Flush operation.
93*4b8b8d74SJaiprakash Singh  */
94*4b8b8d74SJaiprakash Singh union ody_tadx_cache_flush_status {
95*4b8b8d74SJaiprakash Singh 	uint64_t u;
96*4b8b8d74SJaiprakash Singh 	struct ody_tadx_cache_flush_status_s {
97*4b8b8d74SJaiprakash Singh 		uint64_t done                        : 1;
98*4b8b8d74SJaiprakash Singh 		uint64_t reserved_1_63               : 63;
99*4b8b8d74SJaiprakash Singh 	} s;
100*4b8b8d74SJaiprakash Singh 	/* struct ody_tadx_cache_flush_status_s cn; */
101*4b8b8d74SJaiprakash Singh };
102*4b8b8d74SJaiprakash Singh typedef union ody_tadx_cache_flush_status ody_tadx_cache_flush_status_t;
103*4b8b8d74SJaiprakash Singh 
104*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_CACHE_FLUSH_STATUS(uint64_t a) __attribute__ ((pure, always_inline));
ODY_TADX_CACHE_FLUSH_STATUS(uint64_t a)105*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_CACHE_FLUSH_STATUS(uint64_t a)
106*4b8b8d74SJaiprakash Singh {
107*4b8b8d74SJaiprakash Singh 	if (a <= 89)
108*4b8b8d74SJaiprakash Singh 		return 0x87e22b000038ll + 0x1000000ll * ((a) & 0x7f);
109*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("TADX_CACHE_FLUSH_STATUS", 1, a, 0, 0, 0, 0, 0);
110*4b8b8d74SJaiprakash Singh }
111*4b8b8d74SJaiprakash Singh 
112*4b8b8d74SJaiprakash Singh #define typedef_ODY_TADX_CACHE_FLUSH_STATUS(a) ody_tadx_cache_flush_status_t
113*4b8b8d74SJaiprakash Singh #define bustype_ODY_TADX_CACHE_FLUSH_STATUS(a) CSR_TYPE_RSL
114*4b8b8d74SJaiprakash Singh #define basename_ODY_TADX_CACHE_FLUSH_STATUS(a) "TADX_CACHE_FLUSH_STATUS"
115*4b8b8d74SJaiprakash Singh #define device_bar_ODY_TADX_CACHE_FLUSH_STATUS(a) 0x0 /* PF_BAR0 */
116*4b8b8d74SJaiprakash Singh #define busnum_ODY_TADX_CACHE_FLUSH_STATUS(a) (a)
117*4b8b8d74SJaiprakash Singh #define arguments_ODY_TADX_CACHE_FLUSH_STATUS(a) (a), -1, -1, -1
118*4b8b8d74SJaiprakash Singh 
119*4b8b8d74SJaiprakash Singh /**
120*4b8b8d74SJaiprakash Singh  * Register (RSL) tad#_derr_addr
121*4b8b8d74SJaiprakash Singh  *
122*4b8b8d74SJaiprakash Singh  * TAD DAT Error Address Register
123*4b8b8d74SJaiprakash Singh  * This register records error address for Data Error interrupts occurring in data read
124*4b8b8d74SJaiprakash Singh  * from the LLC, FBF, SBF, or mesh input to the MN. The first [DATMBE, FBFMBE, SBFMBE, MNMBE]
125*4b8b8d74SJaiprakash Singh  * error will lock the register until the logged error type is cleared;
126*4b8b8d74SJaiprakash Singh  * [DATSBE, FBFSBE, SBFSBE, MNSBE] errors lock the register until either the logged
127*4b8b8d74SJaiprakash Singh  * error type is cleared or a [DATMBE, FBFMBE, SBFMBE, MNMBE] error is logged.
128*4b8b8d74SJaiprakash Singh  * Only one of [*MBE, *SBE] should be set at a time. In the event the register is
129*4b8b8d74SJaiprakash Singh  * read with all [*MBE] and [*SBE] equal to 0 during interrupt handling that is an
130*4b8b8d74SJaiprakash Singh  * indication that, due to a register set/clear race, information about one or more
131*4b8b8d74SJaiprakash Singh  * errors was lost while processing an earlier error. Note that fields NONSEC, ADDR, OW
132*4b8b8d74SJaiprakash Singh  * don't apply for MNMBE, MNSBE.
133*4b8b8d74SJaiprakash Singh  * [DISCUSSION OF HOW TO SCRUB ERRORS]
134*4b8b8d74SJaiprakash Singh  */
135*4b8b8d74SJaiprakash Singh union ody_tadx_derr_addr {
136*4b8b8d74SJaiprakash Singh 	uint64_t u;
137*4b8b8d74SJaiprakash Singh 	struct ody_tadx_derr_addr_s {
138*4b8b8d74SJaiprakash Singh 		uint64_t reserved_0_3                : 4;
139*4b8b8d74SJaiprakash Singh 		uint64_t ow                          : 2;
140*4b8b8d74SJaiprakash Singh 		uint64_t addr                        : 42;
141*4b8b8d74SJaiprakash Singh 		uint64_t reserved_48_51              : 4;
142*4b8b8d74SJaiprakash Singh 		uint64_t nonsec                      : 1;
143*4b8b8d74SJaiprakash Singh 		uint64_t reserved_53_55              : 3;
144*4b8b8d74SJaiprakash Singh 		uint64_t mnsbe                       : 1;
145*4b8b8d74SJaiprakash Singh 		uint64_t sbfsbe                      : 1;
146*4b8b8d74SJaiprakash Singh 		uint64_t fbfsbe                      : 1;
147*4b8b8d74SJaiprakash Singh 		uint64_t datsbe                      : 1;
148*4b8b8d74SJaiprakash Singh 		uint64_t mnmbe                       : 1;
149*4b8b8d74SJaiprakash Singh 		uint64_t sbfmbe                      : 1;
150*4b8b8d74SJaiprakash Singh 		uint64_t fbfmbe                      : 1;
151*4b8b8d74SJaiprakash Singh 		uint64_t datmbe                      : 1;
152*4b8b8d74SJaiprakash Singh 	} s;
153*4b8b8d74SJaiprakash Singh 	/* struct ody_tadx_derr_addr_s cn; */
154*4b8b8d74SJaiprakash Singh };
155*4b8b8d74SJaiprakash Singh typedef union ody_tadx_derr_addr ody_tadx_derr_addr_t;
156*4b8b8d74SJaiprakash Singh 
157*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_DERR_ADDR(uint64_t a) __attribute__ ((pure, always_inline));
ODY_TADX_DERR_ADDR(uint64_t a)158*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_DERR_ADDR(uint64_t a)
159*4b8b8d74SJaiprakash Singh {
160*4b8b8d74SJaiprakash Singh 	if (a <= 89)
161*4b8b8d74SJaiprakash Singh 		return 0x87e22b000218ll + 0x1000000ll * ((a) & 0x7f);
162*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("TADX_DERR_ADDR", 1, a, 0, 0, 0, 0, 0);
163*4b8b8d74SJaiprakash Singh }
164*4b8b8d74SJaiprakash Singh 
165*4b8b8d74SJaiprakash Singh #define typedef_ODY_TADX_DERR_ADDR(a) ody_tadx_derr_addr_t
166*4b8b8d74SJaiprakash Singh #define bustype_ODY_TADX_DERR_ADDR(a) CSR_TYPE_RSL
167*4b8b8d74SJaiprakash Singh #define basename_ODY_TADX_DERR_ADDR(a) "TADX_DERR_ADDR"
168*4b8b8d74SJaiprakash Singh #define device_bar_ODY_TADX_DERR_ADDR(a) 0x0 /* PF_BAR0 */
169*4b8b8d74SJaiprakash Singh #define busnum_ODY_TADX_DERR_ADDR(a) (a)
170*4b8b8d74SJaiprakash Singh #define arguments_ODY_TADX_DERR_ADDR(a) (a), -1, -1, -1
171*4b8b8d74SJaiprakash Singh 
172*4b8b8d74SJaiprakash Singh /**
173*4b8b8d74SJaiprakash Singh  * Register (RSL) tad#_int_ena_w1c
174*4b8b8d74SJaiprakash Singh  *
175*4b8b8d74SJaiprakash Singh  * TAD Interrupt Enable Clear Registers
176*4b8b8d74SJaiprakash Singh  * This register clears interrupt enable bits.
177*4b8b8d74SJaiprakash Singh  */
178*4b8b8d74SJaiprakash Singh union ody_tadx_int_ena_w1c {
179*4b8b8d74SJaiprakash Singh 	uint64_t u;
180*4b8b8d74SJaiprakash Singh 	struct ody_tadx_int_ena_w1c_s {
181*4b8b8d74SJaiprakash Singh 		uint64_t rdnxm                       : 1;
182*4b8b8d74SJaiprakash Singh 		uint64_t wrnxm                       : 1;
183*4b8b8d74SJaiprakash Singh 		uint64_t req_perr                    : 1;
184*4b8b8d74SJaiprakash Singh 		uint64_t rsp_perr                    : 1;
185*4b8b8d74SJaiprakash Singh 		uint64_t dat_perr                    : 1;
186*4b8b8d74SJaiprakash Singh 		uint64_t mn_sbe                      : 1;
187*4b8b8d74SJaiprakash Singh 		uint64_t mn_mbe                      : 1;
188*4b8b8d74SJaiprakash Singh 		uint64_t sbf_sbe                     : 1;
189*4b8b8d74SJaiprakash Singh 		uint64_t sbf_mbe                     : 1;
190*4b8b8d74SJaiprakash Singh 		uint64_t fbf_sbe                     : 1;
191*4b8b8d74SJaiprakash Singh 		uint64_t fbf_mbe                     : 1;
192*4b8b8d74SJaiprakash Singh 		uint64_t dat_nderr                   : 1;
193*4b8b8d74SJaiprakash Singh 		uint64_t reserved_12_63              : 52;
194*4b8b8d74SJaiprakash Singh 	} s;
195*4b8b8d74SJaiprakash Singh 	/* struct ody_tadx_int_ena_w1c_s cn; */
196*4b8b8d74SJaiprakash Singh };
197*4b8b8d74SJaiprakash Singh typedef union ody_tadx_int_ena_w1c ody_tadx_int_ena_w1c_t;
198*4b8b8d74SJaiprakash Singh 
199*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_INT_ENA_W1C(uint64_t a) __attribute__ ((pure, always_inline));
ODY_TADX_INT_ENA_W1C(uint64_t a)200*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_INT_ENA_W1C(uint64_t a)
201*4b8b8d74SJaiprakash Singh {
202*4b8b8d74SJaiprakash Singh 	if (a <= 89)
203*4b8b8d74SJaiprakash Singh 		return 0x87e22b008010ll + 0x1000000ll * ((a) & 0x7f);
204*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("TADX_INT_ENA_W1C", 1, a, 0, 0, 0, 0, 0);
205*4b8b8d74SJaiprakash Singh }
206*4b8b8d74SJaiprakash Singh 
207*4b8b8d74SJaiprakash Singh #define typedef_ODY_TADX_INT_ENA_W1C(a) ody_tadx_int_ena_w1c_t
208*4b8b8d74SJaiprakash Singh #define bustype_ODY_TADX_INT_ENA_W1C(a) CSR_TYPE_RSL
209*4b8b8d74SJaiprakash Singh #define basename_ODY_TADX_INT_ENA_W1C(a) "TADX_INT_ENA_W1C"
210*4b8b8d74SJaiprakash Singh #define device_bar_ODY_TADX_INT_ENA_W1C(a) 0x0 /* PF_BAR0 */
211*4b8b8d74SJaiprakash Singh #define busnum_ODY_TADX_INT_ENA_W1C(a) (a)
212*4b8b8d74SJaiprakash Singh #define arguments_ODY_TADX_INT_ENA_W1C(a) (a), -1, -1, -1
213*4b8b8d74SJaiprakash Singh 
214*4b8b8d74SJaiprakash Singh /**
215*4b8b8d74SJaiprakash Singh  * Register (RSL) tad#_int_ena_w1s
216*4b8b8d74SJaiprakash Singh  *
217*4b8b8d74SJaiprakash Singh  * TAD Interrupt Enable Set Registers
218*4b8b8d74SJaiprakash Singh  * This register sets interrupt enable bits.
219*4b8b8d74SJaiprakash Singh  */
220*4b8b8d74SJaiprakash Singh union ody_tadx_int_ena_w1s {
221*4b8b8d74SJaiprakash Singh 	uint64_t u;
222*4b8b8d74SJaiprakash Singh 	struct ody_tadx_int_ena_w1s_s {
223*4b8b8d74SJaiprakash Singh 		uint64_t rdnxm                       : 1;
224*4b8b8d74SJaiprakash Singh 		uint64_t wrnxm                       : 1;
225*4b8b8d74SJaiprakash Singh 		uint64_t req_perr                    : 1;
226*4b8b8d74SJaiprakash Singh 		uint64_t rsp_perr                    : 1;
227*4b8b8d74SJaiprakash Singh 		uint64_t dat_perr                    : 1;
228*4b8b8d74SJaiprakash Singh 		uint64_t mn_sbe                      : 1;
229*4b8b8d74SJaiprakash Singh 		uint64_t mn_mbe                      : 1;
230*4b8b8d74SJaiprakash Singh 		uint64_t sbf_sbe                     : 1;
231*4b8b8d74SJaiprakash Singh 		uint64_t sbf_mbe                     : 1;
232*4b8b8d74SJaiprakash Singh 		uint64_t fbf_sbe                     : 1;
233*4b8b8d74SJaiprakash Singh 		uint64_t fbf_mbe                     : 1;
234*4b8b8d74SJaiprakash Singh 		uint64_t dat_nderr                   : 1;
235*4b8b8d74SJaiprakash Singh 		uint64_t reserved_12_63              : 52;
236*4b8b8d74SJaiprakash Singh 	} s;
237*4b8b8d74SJaiprakash Singh 	/* struct ody_tadx_int_ena_w1s_s cn; */
238*4b8b8d74SJaiprakash Singh };
239*4b8b8d74SJaiprakash Singh typedef union ody_tadx_int_ena_w1s ody_tadx_int_ena_w1s_t;
240*4b8b8d74SJaiprakash Singh 
241*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_INT_ENA_W1S(uint64_t a) __attribute__ ((pure, always_inline));
ODY_TADX_INT_ENA_W1S(uint64_t a)242*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_INT_ENA_W1S(uint64_t a)
243*4b8b8d74SJaiprakash Singh {
244*4b8b8d74SJaiprakash Singh 	if (a <= 89)
245*4b8b8d74SJaiprakash Singh 		return 0x87e22b008018ll + 0x1000000ll * ((a) & 0x7f);
246*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("TADX_INT_ENA_W1S", 1, a, 0, 0, 0, 0, 0);
247*4b8b8d74SJaiprakash Singh }
248*4b8b8d74SJaiprakash Singh 
249*4b8b8d74SJaiprakash Singh #define typedef_ODY_TADX_INT_ENA_W1S(a) ody_tadx_int_ena_w1s_t
250*4b8b8d74SJaiprakash Singh #define bustype_ODY_TADX_INT_ENA_W1S(a) CSR_TYPE_RSL
251*4b8b8d74SJaiprakash Singh #define basename_ODY_TADX_INT_ENA_W1S(a) "TADX_INT_ENA_W1S"
252*4b8b8d74SJaiprakash Singh #define device_bar_ODY_TADX_INT_ENA_W1S(a) 0x0 /* PF_BAR0 */
253*4b8b8d74SJaiprakash Singh #define busnum_ODY_TADX_INT_ENA_W1S(a) (a)
254*4b8b8d74SJaiprakash Singh #define arguments_ODY_TADX_INT_ENA_W1S(a) (a), -1, -1, -1
255*4b8b8d74SJaiprakash Singh 
256*4b8b8d74SJaiprakash Singh /**
257*4b8b8d74SJaiprakash Singh  * Register (RSL) tad#_int_w1c
258*4b8b8d74SJaiprakash Singh  *
259*4b8b8d74SJaiprakash Singh  * TAD Interrupt Register
260*4b8b8d74SJaiprakash Singh  * This register is for TAD-based interrupts.
261*4b8b8d74SJaiprakash Singh  */
262*4b8b8d74SJaiprakash Singh union ody_tadx_int_w1c {
263*4b8b8d74SJaiprakash Singh 	uint64_t u;
264*4b8b8d74SJaiprakash Singh 	struct ody_tadx_int_w1c_s {
265*4b8b8d74SJaiprakash Singh 		uint64_t rdnxm                       : 1;
266*4b8b8d74SJaiprakash Singh 		uint64_t wrnxm                       : 1;
267*4b8b8d74SJaiprakash Singh 		uint64_t req_perr                    : 1;
268*4b8b8d74SJaiprakash Singh 		uint64_t rsp_perr                    : 1;
269*4b8b8d74SJaiprakash Singh 		uint64_t dat_perr                    : 1;
270*4b8b8d74SJaiprakash Singh 		uint64_t mn_sbe                      : 1;
271*4b8b8d74SJaiprakash Singh 		uint64_t mn_mbe                      : 1;
272*4b8b8d74SJaiprakash Singh 		uint64_t sbf_sbe                     : 1;
273*4b8b8d74SJaiprakash Singh 		uint64_t sbf_mbe                     : 1;
274*4b8b8d74SJaiprakash Singh 		uint64_t fbf_sbe                     : 1;
275*4b8b8d74SJaiprakash Singh 		uint64_t fbf_mbe                     : 1;
276*4b8b8d74SJaiprakash Singh 		uint64_t dat_nderr                   : 1;
277*4b8b8d74SJaiprakash Singh 		uint64_t reserved_12_63              : 52;
278*4b8b8d74SJaiprakash Singh 	} s;
279*4b8b8d74SJaiprakash Singh 	/* struct ody_tadx_int_w1c_s cn; */
280*4b8b8d74SJaiprakash Singh };
281*4b8b8d74SJaiprakash Singh typedef union ody_tadx_int_w1c ody_tadx_int_w1c_t;
282*4b8b8d74SJaiprakash Singh 
283*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_INT_W1C(uint64_t a) __attribute__ ((pure, always_inline));
ODY_TADX_INT_W1C(uint64_t a)284*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_INT_W1C(uint64_t a)
285*4b8b8d74SJaiprakash Singh {
286*4b8b8d74SJaiprakash Singh 	if (a <= 89)
287*4b8b8d74SJaiprakash Singh 		return 0x87e22b008000ll + 0x1000000ll * ((a) & 0x7f);
288*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("TADX_INT_W1C", 1, a, 0, 0, 0, 0, 0);
289*4b8b8d74SJaiprakash Singh }
290*4b8b8d74SJaiprakash Singh 
291*4b8b8d74SJaiprakash Singh #define typedef_ODY_TADX_INT_W1C(a) ody_tadx_int_w1c_t
292*4b8b8d74SJaiprakash Singh #define bustype_ODY_TADX_INT_W1C(a) CSR_TYPE_RSL
293*4b8b8d74SJaiprakash Singh #define basename_ODY_TADX_INT_W1C(a) "TADX_INT_W1C"
294*4b8b8d74SJaiprakash Singh #define device_bar_ODY_TADX_INT_W1C(a) 0x0 /* PF_BAR0 */
295*4b8b8d74SJaiprakash Singh #define busnum_ODY_TADX_INT_W1C(a) (a)
296*4b8b8d74SJaiprakash Singh #define arguments_ODY_TADX_INT_W1C(a) (a), -1, -1, -1
297*4b8b8d74SJaiprakash Singh 
298*4b8b8d74SJaiprakash Singh /**
299*4b8b8d74SJaiprakash Singh  * Register (RSL) tad#_int_w1s
300*4b8b8d74SJaiprakash Singh  *
301*4b8b8d74SJaiprakash Singh  * TAD Interrupt Set Registers
302*4b8b8d74SJaiprakash Singh  * This register sets interrupt bits.
303*4b8b8d74SJaiprakash Singh  */
304*4b8b8d74SJaiprakash Singh union ody_tadx_int_w1s {
305*4b8b8d74SJaiprakash Singh 	uint64_t u;
306*4b8b8d74SJaiprakash Singh 	struct ody_tadx_int_w1s_s {
307*4b8b8d74SJaiprakash Singh 		uint64_t rdnxm                       : 1;
308*4b8b8d74SJaiprakash Singh 		uint64_t wrnxm                       : 1;
309*4b8b8d74SJaiprakash Singh 		uint64_t req_perr                    : 1;
310*4b8b8d74SJaiprakash Singh 		uint64_t rsp_perr                    : 1;
311*4b8b8d74SJaiprakash Singh 		uint64_t dat_perr                    : 1;
312*4b8b8d74SJaiprakash Singh 		uint64_t mn_sbe                      : 1;
313*4b8b8d74SJaiprakash Singh 		uint64_t mn_mbe                      : 1;
314*4b8b8d74SJaiprakash Singh 		uint64_t sbf_sbe                     : 1;
315*4b8b8d74SJaiprakash Singh 		uint64_t sbf_mbe                     : 1;
316*4b8b8d74SJaiprakash Singh 		uint64_t fbf_sbe                     : 1;
317*4b8b8d74SJaiprakash Singh 		uint64_t fbf_mbe                     : 1;
318*4b8b8d74SJaiprakash Singh 		uint64_t dat_nderr                   : 1;
319*4b8b8d74SJaiprakash Singh 		uint64_t reserved_12_63              : 52;
320*4b8b8d74SJaiprakash Singh 	} s;
321*4b8b8d74SJaiprakash Singh 	/* struct ody_tadx_int_w1s_s cn; */
322*4b8b8d74SJaiprakash Singh };
323*4b8b8d74SJaiprakash Singh typedef union ody_tadx_int_w1s ody_tadx_int_w1s_t;
324*4b8b8d74SJaiprakash Singh 
325*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_INT_W1S(uint64_t a) __attribute__ ((pure, always_inline));
ODY_TADX_INT_W1S(uint64_t a)326*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_INT_W1S(uint64_t a)
327*4b8b8d74SJaiprakash Singh {
328*4b8b8d74SJaiprakash Singh 	if (a <= 89)
329*4b8b8d74SJaiprakash Singh 		return 0x87e22b008008ll + 0x1000000ll * ((a) & 0x7f);
330*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("TADX_INT_W1S", 1, a, 0, 0, 0, 0, 0);
331*4b8b8d74SJaiprakash Singh }
332*4b8b8d74SJaiprakash Singh 
333*4b8b8d74SJaiprakash Singh #define typedef_ODY_TADX_INT_W1S(a) ody_tadx_int_w1s_t
334*4b8b8d74SJaiprakash Singh #define bustype_ODY_TADX_INT_W1S(a) CSR_TYPE_RSL
335*4b8b8d74SJaiprakash Singh #define basename_ODY_TADX_INT_W1S(a) "TADX_INT_W1S"
336*4b8b8d74SJaiprakash Singh #define device_bar_ODY_TADX_INT_W1S(a) 0x0 /* PF_BAR0 */
337*4b8b8d74SJaiprakash Singh #define busnum_ODY_TADX_INT_W1S(a) (a)
338*4b8b8d74SJaiprakash Singh #define arguments_ODY_TADX_INT_W1S(a) (a), -1, -1, -1
339*4b8b8d74SJaiprakash Singh 
340*4b8b8d74SJaiprakash Singh /**
341*4b8b8d74SJaiprakash Singh  * Register (RSL) tad#_mpam#_rcnt
342*4b8b8d74SJaiprakash Singh  *
343*4b8b8d74SJaiprakash Singh  * TAD Memory Partitioning Resource Count Registers
344*4b8b8d74SJaiprakash Singh  */
345*4b8b8d74SJaiprakash Singh union ody_tadx_mpamx_rcnt {
346*4b8b8d74SJaiprakash Singh 	uint64_t u;
347*4b8b8d74SJaiprakash Singh 	struct ody_tadx_mpamx_rcnt_s {
348*4b8b8d74SJaiprakash Singh 		uint64_t cnt                         : 7;
349*4b8b8d74SJaiprakash Singh 		uint64_t reserved_7_63               : 57;
350*4b8b8d74SJaiprakash Singh 	} s;
351*4b8b8d74SJaiprakash Singh 	/* struct ody_tadx_mpamx_rcnt_s cn; */
352*4b8b8d74SJaiprakash Singh };
353*4b8b8d74SJaiprakash Singh typedef union ody_tadx_mpamx_rcnt ody_tadx_mpamx_rcnt_t;
354*4b8b8d74SJaiprakash Singh 
355*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_MPAMX_RCNT(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_TADX_MPAMX_RCNT(uint64_t a,uint64_t b)356*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_MPAMX_RCNT(uint64_t a, uint64_t b)
357*4b8b8d74SJaiprakash Singh {
358*4b8b8d74SJaiprakash Singh 	if ((a <= 89) && (b <= 271))
359*4b8b8d74SJaiprakash Singh 		return 0x87e22b002000ll + 0x1000000ll * ((a) & 0x7f) + 0x10ll * ((b) & 0x1ff);
360*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("TADX_MPAMX_RCNT", 2, a, b, 0, 0, 0, 0);
361*4b8b8d74SJaiprakash Singh }
362*4b8b8d74SJaiprakash Singh 
363*4b8b8d74SJaiprakash Singh #define typedef_ODY_TADX_MPAMX_RCNT(a, b) ody_tadx_mpamx_rcnt_t
364*4b8b8d74SJaiprakash Singh #define bustype_ODY_TADX_MPAMX_RCNT(a, b) CSR_TYPE_RSL
365*4b8b8d74SJaiprakash Singh #define basename_ODY_TADX_MPAMX_RCNT(a, b) "TADX_MPAMX_RCNT"
366*4b8b8d74SJaiprakash Singh #define device_bar_ODY_TADX_MPAMX_RCNT(a, b) 0x0 /* PF_BAR0 */
367*4b8b8d74SJaiprakash Singh #define busnum_ODY_TADX_MPAMX_RCNT(a, b) (a)
368*4b8b8d74SJaiprakash Singh #define arguments_ODY_TADX_MPAMX_RCNT(a, b) (a), (b), -1, -1
369*4b8b8d74SJaiprakash Singh 
370*4b8b8d74SJaiprakash Singh /**
371*4b8b8d74SJaiprakash Singh  * Register (RSL) tad#_msix_pba#
372*4b8b8d74SJaiprakash Singh  *
373*4b8b8d74SJaiprakash Singh  * TAD MSI-X Pending Bit Array Registers
374*4b8b8d74SJaiprakash Singh  */
375*4b8b8d74SJaiprakash Singh union ody_tadx_msix_pbax {
376*4b8b8d74SJaiprakash Singh 	uint64_t u;
377*4b8b8d74SJaiprakash Singh 	struct ody_tadx_msix_pbax_s {
378*4b8b8d74SJaiprakash Singh 		uint64_t pend                        : 64;
379*4b8b8d74SJaiprakash Singh 	} s;
380*4b8b8d74SJaiprakash Singh 	/* struct ody_tadx_msix_pbax_s cn; */
381*4b8b8d74SJaiprakash Singh };
382*4b8b8d74SJaiprakash Singh typedef union ody_tadx_msix_pbax ody_tadx_msix_pbax_t;
383*4b8b8d74SJaiprakash Singh 
384*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_MSIX_PBAX(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_TADX_MSIX_PBAX(uint64_t a,uint64_t b)385*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_MSIX_PBAX(uint64_t a, uint64_t b)
386*4b8b8d74SJaiprakash Singh {
387*4b8b8d74SJaiprakash Singh 	if ((a <= 89) && (b == 0))
388*4b8b8d74SJaiprakash Singh 		return 0x87e22b8f0000ll + 0x1000000ll * ((a) & 0x7f);
389*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("TADX_MSIX_PBAX", 2, a, b, 0, 0, 0, 0);
390*4b8b8d74SJaiprakash Singh }
391*4b8b8d74SJaiprakash Singh 
392*4b8b8d74SJaiprakash Singh #define typedef_ODY_TADX_MSIX_PBAX(a, b) ody_tadx_msix_pbax_t
393*4b8b8d74SJaiprakash Singh #define bustype_ODY_TADX_MSIX_PBAX(a, b) CSR_TYPE_RSL
394*4b8b8d74SJaiprakash Singh #define basename_ODY_TADX_MSIX_PBAX(a, b) "TADX_MSIX_PBAX"
395*4b8b8d74SJaiprakash Singh #define device_bar_ODY_TADX_MSIX_PBAX(a, b) 0x4 /* PF_BAR4 */
396*4b8b8d74SJaiprakash Singh #define busnum_ODY_TADX_MSIX_PBAX(a, b) (a)
397*4b8b8d74SJaiprakash Singh #define arguments_ODY_TADX_MSIX_PBAX(a, b) (a), (b), -1, -1
398*4b8b8d74SJaiprakash Singh 
399*4b8b8d74SJaiprakash Singh /**
400*4b8b8d74SJaiprakash Singh  * Register (RSL) tad#_msix_vec#_addr
401*4b8b8d74SJaiprakash Singh  *
402*4b8b8d74SJaiprakash Singh  * TAD MSI-X Vector-Table Address Register
403*4b8b8d74SJaiprakash Singh  * This register is the MSI-X vector table, indexed by the TAD_PF_INT_VEC_E enumeration.
404*4b8b8d74SJaiprakash Singh  */
405*4b8b8d74SJaiprakash Singh union ody_tadx_msix_vecx_addr {
406*4b8b8d74SJaiprakash Singh 	uint64_t u;
407*4b8b8d74SJaiprakash Singh 	struct ody_tadx_msix_vecx_addr_s {
408*4b8b8d74SJaiprakash Singh 		uint64_t secvec                      : 1;
409*4b8b8d74SJaiprakash Singh 		uint64_t reserved_1                  : 1;
410*4b8b8d74SJaiprakash Singh 		uint64_t addr                        : 51;
411*4b8b8d74SJaiprakash Singh 		uint64_t reserved_53_63              : 11;
412*4b8b8d74SJaiprakash Singh 	} s;
413*4b8b8d74SJaiprakash Singh 	/* struct ody_tadx_msix_vecx_addr_s cn; */
414*4b8b8d74SJaiprakash Singh };
415*4b8b8d74SJaiprakash Singh typedef union ody_tadx_msix_vecx_addr ody_tadx_msix_vecx_addr_t;
416*4b8b8d74SJaiprakash Singh 
417*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_MSIX_VECX_ADDR(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_TADX_MSIX_VECX_ADDR(uint64_t a,uint64_t b)418*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_MSIX_VECX_ADDR(uint64_t a, uint64_t b)
419*4b8b8d74SJaiprakash Singh {
420*4b8b8d74SJaiprakash Singh 	if ((a <= 89) && (b == 0))
421*4b8b8d74SJaiprakash Singh 		return 0x87e22b800000ll + 0x1000000ll * ((a) & 0x7f);
422*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("TADX_MSIX_VECX_ADDR", 2, a, b, 0, 0, 0, 0);
423*4b8b8d74SJaiprakash Singh }
424*4b8b8d74SJaiprakash Singh 
425*4b8b8d74SJaiprakash Singh #define typedef_ODY_TADX_MSIX_VECX_ADDR(a, b) ody_tadx_msix_vecx_addr_t
426*4b8b8d74SJaiprakash Singh #define bustype_ODY_TADX_MSIX_VECX_ADDR(a, b) CSR_TYPE_RSL
427*4b8b8d74SJaiprakash Singh #define basename_ODY_TADX_MSIX_VECX_ADDR(a, b) "TADX_MSIX_VECX_ADDR"
428*4b8b8d74SJaiprakash Singh #define device_bar_ODY_TADX_MSIX_VECX_ADDR(a, b) 0x4 /* PF_BAR4 */
429*4b8b8d74SJaiprakash Singh #define busnum_ODY_TADX_MSIX_VECX_ADDR(a, b) (a)
430*4b8b8d74SJaiprakash Singh #define arguments_ODY_TADX_MSIX_VECX_ADDR(a, b) (a), (b), -1, -1
431*4b8b8d74SJaiprakash Singh 
432*4b8b8d74SJaiprakash Singh /**
433*4b8b8d74SJaiprakash Singh  * Register (RSL) tad#_msix_vec#_ctl
434*4b8b8d74SJaiprakash Singh  *
435*4b8b8d74SJaiprakash Singh  * TAD MSI-X Vector-Table Control and Data Register
436*4b8b8d74SJaiprakash Singh  * This register is the MSI-X vector table, indexed by the TAD_PF_INT_VEC_E enumeration.
437*4b8b8d74SJaiprakash Singh  */
438*4b8b8d74SJaiprakash Singh union ody_tadx_msix_vecx_ctl {
439*4b8b8d74SJaiprakash Singh 	uint64_t u;
440*4b8b8d74SJaiprakash Singh 	struct ody_tadx_msix_vecx_ctl_s {
441*4b8b8d74SJaiprakash Singh 		uint64_t data                        : 32;
442*4b8b8d74SJaiprakash Singh 		uint64_t mask                        : 1;
443*4b8b8d74SJaiprakash Singh 		uint64_t reserved_33_63              : 31;
444*4b8b8d74SJaiprakash Singh 	} s;
445*4b8b8d74SJaiprakash Singh 	/* struct ody_tadx_msix_vecx_ctl_s cn; */
446*4b8b8d74SJaiprakash Singh };
447*4b8b8d74SJaiprakash Singh typedef union ody_tadx_msix_vecx_ctl ody_tadx_msix_vecx_ctl_t;
448*4b8b8d74SJaiprakash Singh 
449*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_MSIX_VECX_CTL(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_TADX_MSIX_VECX_CTL(uint64_t a,uint64_t b)450*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_MSIX_VECX_CTL(uint64_t a, uint64_t b)
451*4b8b8d74SJaiprakash Singh {
452*4b8b8d74SJaiprakash Singh 	if ((a <= 89) && (b == 0))
453*4b8b8d74SJaiprakash Singh 		return 0x87e22b800008ll + 0x1000000ll * ((a) & 0x7f);
454*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("TADX_MSIX_VECX_CTL", 2, a, b, 0, 0, 0, 0);
455*4b8b8d74SJaiprakash Singh }
456*4b8b8d74SJaiprakash Singh 
457*4b8b8d74SJaiprakash Singh #define typedef_ODY_TADX_MSIX_VECX_CTL(a, b) ody_tadx_msix_vecx_ctl_t
458*4b8b8d74SJaiprakash Singh #define bustype_ODY_TADX_MSIX_VECX_CTL(a, b) CSR_TYPE_RSL
459*4b8b8d74SJaiprakash Singh #define basename_ODY_TADX_MSIX_VECX_CTL(a, b) "TADX_MSIX_VECX_CTL"
460*4b8b8d74SJaiprakash Singh #define device_bar_ODY_TADX_MSIX_VECX_CTL(a, b) 0x4 /* PF_BAR4 */
461*4b8b8d74SJaiprakash Singh #define busnum_ODY_TADX_MSIX_VECX_CTL(a, b) (a)
462*4b8b8d74SJaiprakash Singh #define arguments_ODY_TADX_MSIX_VECX_CTL(a, b) (a), (b), -1, -1
463*4b8b8d74SJaiprakash Singh 
464*4b8b8d74SJaiprakash Singh /**
465*4b8b8d74SJaiprakash Singh  * Register (RSL) tad#_msmon_csu_ns
466*4b8b8d74SJaiprakash Singh  *
467*4b8b8d74SJaiprakash Singh  * MPAM Cache Storage Usage Monitor Register
468*4b8b8d74SJaiprakash Singh  * Accesses the CSU monitor selected by TAD_CMN_MSMON_CFG_MON_SEL_NS.
469*4b8b8d74SJaiprakash Singh  * TAD_MSMON_CSU_NS is the Non-secure cache storage usage monitor instance selected by the
470*4b8b8d74SJaiprakash Singh  * Non-secure instance of TAD_CMN_MSMON_CFG_MON_SEL_NS.
471*4b8b8d74SJaiprakash Singh  */
472*4b8b8d74SJaiprakash Singh union ody_tadx_msmon_csu_ns {
473*4b8b8d74SJaiprakash Singh 	uint64_t u;
474*4b8b8d74SJaiprakash Singh 	struct ody_tadx_msmon_csu_ns_s {
475*4b8b8d74SJaiprakash Singh 		uint64_t value                       : 31;
476*4b8b8d74SJaiprakash Singh 		uint64_t nrdy                        : 1;
477*4b8b8d74SJaiprakash Singh 		uint64_t reserved_32_63              : 32;
478*4b8b8d74SJaiprakash Singh 	} s;
479*4b8b8d74SJaiprakash Singh 	/* struct ody_tadx_msmon_csu_ns_s cn; */
480*4b8b8d74SJaiprakash Singh };
481*4b8b8d74SJaiprakash Singh typedef union ody_tadx_msmon_csu_ns ody_tadx_msmon_csu_ns_t;
482*4b8b8d74SJaiprakash Singh 
483*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_MSMON_CSU_NS(uint64_t a) __attribute__ ((pure, always_inline));
ODY_TADX_MSMON_CSU_NS(uint64_t a)484*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_MSMON_CSU_NS(uint64_t a)
485*4b8b8d74SJaiprakash Singh {
486*4b8b8d74SJaiprakash Singh 	if (a <= 89)
487*4b8b8d74SJaiprakash Singh 		return 0x87e22b010840ll + 0x1000000ll * ((a) & 0x7f);
488*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("TADX_MSMON_CSU_NS", 1, a, 0, 0, 0, 0, 0);
489*4b8b8d74SJaiprakash Singh }
490*4b8b8d74SJaiprakash Singh 
491*4b8b8d74SJaiprakash Singh #define typedef_ODY_TADX_MSMON_CSU_NS(a) ody_tadx_msmon_csu_ns_t
492*4b8b8d74SJaiprakash Singh #define bustype_ODY_TADX_MSMON_CSU_NS(a) CSR_TYPE_RSL
493*4b8b8d74SJaiprakash Singh #define basename_ODY_TADX_MSMON_CSU_NS(a) "TADX_MSMON_CSU_NS"
494*4b8b8d74SJaiprakash Singh #define device_bar_ODY_TADX_MSMON_CSU_NS(a) 0x0 /* PF_BAR0 */
495*4b8b8d74SJaiprakash Singh #define busnum_ODY_TADX_MSMON_CSU_NS(a) (a)
496*4b8b8d74SJaiprakash Singh #define arguments_ODY_TADX_MSMON_CSU_NS(a) (a), -1, -1, -1
497*4b8b8d74SJaiprakash Singh 
498*4b8b8d74SJaiprakash Singh /**
499*4b8b8d74SJaiprakash Singh  * Register (RSL) tad#_msmon_csu_s
500*4b8b8d74SJaiprakash Singh  *
501*4b8b8d74SJaiprakash Singh  * MPAM Cache Storage Usage Monitor Register
502*4b8b8d74SJaiprakash Singh  * Accesses the CSU monitor selected by TAD_CMN_MSMON_CFG_MON_SEL_S.
503*4b8b8d74SJaiprakash Singh  * TAD_MSMON_CSU_S is the secure cache storage usage monitor instance selected by the
504*4b8b8d74SJaiprakash Singh  * Non-secure instance of TAD_CMN_MSMON_CFG_MON_SEL_S.
505*4b8b8d74SJaiprakash Singh  */
506*4b8b8d74SJaiprakash Singh union ody_tadx_msmon_csu_s {
507*4b8b8d74SJaiprakash Singh 	uint64_t u;
508*4b8b8d74SJaiprakash Singh 	struct ody_tadx_msmon_csu_s_s {
509*4b8b8d74SJaiprakash Singh 		uint64_t value                       : 31;
510*4b8b8d74SJaiprakash Singh 		uint64_t nrdy                        : 1;
511*4b8b8d74SJaiprakash Singh 		uint64_t reserved_32_63              : 32;
512*4b8b8d74SJaiprakash Singh 	} s;
513*4b8b8d74SJaiprakash Singh 	/* struct ody_tadx_msmon_csu_s_s cn; */
514*4b8b8d74SJaiprakash Singh };
515*4b8b8d74SJaiprakash Singh typedef union ody_tadx_msmon_csu_s ody_tadx_msmon_csu_s_t;
516*4b8b8d74SJaiprakash Singh 
517*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_MSMON_CSU_S(uint64_t a) __attribute__ ((pure, always_inline));
ODY_TADX_MSMON_CSU_S(uint64_t a)518*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_MSMON_CSU_S(uint64_t a)
519*4b8b8d74SJaiprakash Singh {
520*4b8b8d74SJaiprakash Singh 	if (a <= 89)
521*4b8b8d74SJaiprakash Singh 		return 0x87e22b020840ll + 0x1000000ll * ((a) & 0x7f);
522*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("TADX_MSMON_CSU_S", 1, a, 0, 0, 0, 0, 0);
523*4b8b8d74SJaiprakash Singh }
524*4b8b8d74SJaiprakash Singh 
525*4b8b8d74SJaiprakash Singh #define typedef_ODY_TADX_MSMON_CSU_S(a) ody_tadx_msmon_csu_s_t
526*4b8b8d74SJaiprakash Singh #define bustype_ODY_TADX_MSMON_CSU_S(a) CSR_TYPE_RSL
527*4b8b8d74SJaiprakash Singh #define basename_ODY_TADX_MSMON_CSU_S(a) "TADX_MSMON_CSU_S"
528*4b8b8d74SJaiprakash Singh #define device_bar_ODY_TADX_MSMON_CSU_S(a) 0x0 /* PF_BAR0 */
529*4b8b8d74SJaiprakash Singh #define busnum_ODY_TADX_MSMON_CSU_S(a) (a)
530*4b8b8d74SJaiprakash Singh #define arguments_ODY_TADX_MSMON_CSU_S(a) (a), -1, -1, -1
531*4b8b8d74SJaiprakash Singh 
532*4b8b8d74SJaiprakash Singh /**
533*4b8b8d74SJaiprakash Singh  * Register (RSL) tad#_nderr_addr
534*4b8b8d74SJaiprakash Singh  *
535*4b8b8d74SJaiprakash Singh  * TAD Non-Data Error Address Register
536*4b8b8d74SJaiprakash Singh  * This register records the error address for Non-Data Error interrupts triggered from
537*4b8b8d74SJaiprakash Singh  * the REQ mesh [RDNXM, WRNXM, REQ_PERR]. The first [WRNXM, REQ_PERR] error will lock
538*4b8b8d74SJaiprakash Singh  * the register until the logged error type is cleared; [RDNXM] errors lock the
539*4b8b8d74SJaiprakash Singh  * register until either the logged error type is cleared or a [WRNXM, REQ_PERR] error
540*4b8b8d74SJaiprakash Singh  * is logged. See TAD_NDERR_INFO for error opcode and srcid logging.
541*4b8b8d74SJaiprakash Singh  */
542*4b8b8d74SJaiprakash Singh union ody_tadx_nderr_addr {
543*4b8b8d74SJaiprakash Singh 	uint64_t u;
544*4b8b8d74SJaiprakash Singh 	struct ody_tadx_nderr_addr_s {
545*4b8b8d74SJaiprakash Singh 		uint64_t addr                        : 48;
546*4b8b8d74SJaiprakash Singh 		uint64_t reserved_48_51              : 4;
547*4b8b8d74SJaiprakash Singh 		uint64_t nonsec                      : 1;
548*4b8b8d74SJaiprakash Singh 		uint64_t reserved_53_63              : 11;
549*4b8b8d74SJaiprakash Singh 	} s;
550*4b8b8d74SJaiprakash Singh 	/* struct ody_tadx_nderr_addr_s cn; */
551*4b8b8d74SJaiprakash Singh };
552*4b8b8d74SJaiprakash Singh typedef union ody_tadx_nderr_addr ody_tadx_nderr_addr_t;
553*4b8b8d74SJaiprakash Singh 
554*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_NDERR_ADDR(uint64_t a) __attribute__ ((pure, always_inline));
ODY_TADX_NDERR_ADDR(uint64_t a)555*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_NDERR_ADDR(uint64_t a)
556*4b8b8d74SJaiprakash Singh {
557*4b8b8d74SJaiprakash Singh 	if (a <= 89)
558*4b8b8d74SJaiprakash Singh 		return 0x87e22b000208ll + 0x1000000ll * ((a) & 0x7f);
559*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("TADX_NDERR_ADDR", 1, a, 0, 0, 0, 0, 0);
560*4b8b8d74SJaiprakash Singh }
561*4b8b8d74SJaiprakash Singh 
562*4b8b8d74SJaiprakash Singh #define typedef_ODY_TADX_NDERR_ADDR(a) ody_tadx_nderr_addr_t
563*4b8b8d74SJaiprakash Singh #define bustype_ODY_TADX_NDERR_ADDR(a) CSR_TYPE_RSL
564*4b8b8d74SJaiprakash Singh #define basename_ODY_TADX_NDERR_ADDR(a) "TADX_NDERR_ADDR"
565*4b8b8d74SJaiprakash Singh #define device_bar_ODY_TADX_NDERR_ADDR(a) 0x0 /* PF_BAR0 */
566*4b8b8d74SJaiprakash Singh #define busnum_ODY_TADX_NDERR_ADDR(a) (a)
567*4b8b8d74SJaiprakash Singh #define arguments_ODY_TADX_NDERR_ADDR(a) (a), -1, -1, -1
568*4b8b8d74SJaiprakash Singh 
569*4b8b8d74SJaiprakash Singh /**
570*4b8b8d74SJaiprakash Singh  * Register (RSL) tad#_nderr_info
571*4b8b8d74SJaiprakash Singh  *
572*4b8b8d74SJaiprakash Singh  * TAD Non-Data Error Info Register
573*4b8b8d74SJaiprakash Singh  * This register records error information for Non-Data Error interrupts [RDNXM, WRNXM,
574*4b8b8d74SJaiprakash Singh  * REQ_PERR, RSP_PERR, DAT_PERR, DAT_NDERR]. The first [WRNXM, REQ_PERR, RSP_PERR,
575*4b8b8d74SJaiprakash Singh  * DAT_PERR, DAT_NDERR] error will lock the register until the logged error type is
576*4b8b8d74SJaiprakash Singh  * cleared; [RDNXM] errors lock the register until either the logged error type is
577*4b8b8d74SJaiprakash Singh  * cleared or a [WRNXM, REQ_PERR, RSP_PERR, DAT_PERR, DAT_NDERR] error is logged.
578*4b8b8d74SJaiprakash Singh  * See TAD_NDERR_ADDR for error address logging.
579*4b8b8d74SJaiprakash Singh  */
580*4b8b8d74SJaiprakash Singh union ody_tadx_nderr_info {
581*4b8b8d74SJaiprakash Singh 	uint64_t u;
582*4b8b8d74SJaiprakash Singh 	struct ody_tadx_nderr_info_s {
583*4b8b8d74SJaiprakash Singh 		uint64_t srcid                       : 11;
584*4b8b8d74SJaiprakash Singh 		uint64_t opcode                      : 7;
585*4b8b8d74SJaiprakash Singh 		uint64_t rspnum                      : 1;
586*4b8b8d74SJaiprakash Singh 		uint64_t reserved_19_57              : 39;
587*4b8b8d74SJaiprakash Singh 		uint64_t dat_nderr                   : 1;
588*4b8b8d74SJaiprakash Singh 		uint64_t dat_perr                    : 1;
589*4b8b8d74SJaiprakash Singh 		uint64_t rsp_perr                    : 1;
590*4b8b8d74SJaiprakash Singh 		uint64_t req_perr                    : 1;
591*4b8b8d74SJaiprakash Singh 		uint64_t wrnxm                       : 1;
592*4b8b8d74SJaiprakash Singh 		uint64_t rdnxm                       : 1;
593*4b8b8d74SJaiprakash Singh 	} s;
594*4b8b8d74SJaiprakash Singh 	/* struct ody_tadx_nderr_info_s cn; */
595*4b8b8d74SJaiprakash Singh };
596*4b8b8d74SJaiprakash Singh typedef union ody_tadx_nderr_info ody_tadx_nderr_info_t;
597*4b8b8d74SJaiprakash Singh 
598*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_NDERR_INFO(uint64_t a) __attribute__ ((pure, always_inline));
ODY_TADX_NDERR_INFO(uint64_t a)599*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_NDERR_INFO(uint64_t a)
600*4b8b8d74SJaiprakash Singh {
601*4b8b8d74SJaiprakash Singh 	if (a <= 89)
602*4b8b8d74SJaiprakash Singh 		return 0x87e22b000200ll + 0x1000000ll * ((a) & 0x7f);
603*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("TADX_NDERR_INFO", 1, a, 0, 0, 0, 0, 0);
604*4b8b8d74SJaiprakash Singh }
605*4b8b8d74SJaiprakash Singh 
606*4b8b8d74SJaiprakash Singh #define typedef_ODY_TADX_NDERR_INFO(a) ody_tadx_nderr_info_t
607*4b8b8d74SJaiprakash Singh #define bustype_ODY_TADX_NDERR_INFO(a) CSR_TYPE_RSL
608*4b8b8d74SJaiprakash Singh #define basename_ODY_TADX_NDERR_INFO(a) "TADX_NDERR_INFO"
609*4b8b8d74SJaiprakash Singh #define device_bar_ODY_TADX_NDERR_INFO(a) 0x0 /* PF_BAR0 */
610*4b8b8d74SJaiprakash Singh #define busnum_ODY_TADX_NDERR_INFO(a) (a)
611*4b8b8d74SJaiprakash Singh #define arguments_ODY_TADX_NDERR_INFO(a) (a), -1, -1, -1
612*4b8b8d74SJaiprakash Singh 
613*4b8b8d74SJaiprakash Singh /**
614*4b8b8d74SJaiprakash Singh  * Register (RSL) tad#_pfc_ns#
615*4b8b8d74SJaiprakash Singh  *
616*4b8b8d74SJaiprakash Singh  * TAD Performance Counter Non-Secure Registers
617*4b8b8d74SJaiprakash Singh  */
618*4b8b8d74SJaiprakash Singh union ody_tadx_pfc_nsx {
619*4b8b8d74SJaiprakash Singh 	uint64_t u;
620*4b8b8d74SJaiprakash Singh 	struct ody_tadx_pfc_nsx_s {
621*4b8b8d74SJaiprakash Singh 		uint64_t count                       : 64;
622*4b8b8d74SJaiprakash Singh 	} s;
623*4b8b8d74SJaiprakash Singh 	/* struct ody_tadx_pfc_nsx_s cn; */
624*4b8b8d74SJaiprakash Singh };
625*4b8b8d74SJaiprakash Singh typedef union ody_tadx_pfc_nsx ody_tadx_pfc_nsx_t;
626*4b8b8d74SJaiprakash Singh 
627*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_PFC_NSX(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_TADX_PFC_NSX(uint64_t a,uint64_t b)628*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_PFC_NSX(uint64_t a, uint64_t b)
629*4b8b8d74SJaiprakash Singh {
630*4b8b8d74SJaiprakash Singh 	if ((a <= 89) && (b <= 7))
631*4b8b8d74SJaiprakash Singh 		return 0x87e22b030800ll + 0x1000000ll * ((a) & 0x7f) + 8ll * ((b) & 0x7);
632*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("TADX_PFC_NSX", 2, a, b, 0, 0, 0, 0);
633*4b8b8d74SJaiprakash Singh }
634*4b8b8d74SJaiprakash Singh 
635*4b8b8d74SJaiprakash Singh #define typedef_ODY_TADX_PFC_NSX(a, b) ody_tadx_pfc_nsx_t
636*4b8b8d74SJaiprakash Singh #define bustype_ODY_TADX_PFC_NSX(a, b) CSR_TYPE_RSL
637*4b8b8d74SJaiprakash Singh #define basename_ODY_TADX_PFC_NSX(a, b) "TADX_PFC_NSX"
638*4b8b8d74SJaiprakash Singh #define device_bar_ODY_TADX_PFC_NSX(a, b) 0x0 /* PF_BAR0 */
639*4b8b8d74SJaiprakash Singh #define busnum_ODY_TADX_PFC_NSX(a, b) (a)
640*4b8b8d74SJaiprakash Singh #define arguments_ODY_TADX_PFC_NSX(a, b) (a), (b), -1, -1
641*4b8b8d74SJaiprakash Singh 
642*4b8b8d74SJaiprakash Singh /**
643*4b8b8d74SJaiprakash Singh  * Register (RSL) tad#_pfc_s#
644*4b8b8d74SJaiprakash Singh  *
645*4b8b8d74SJaiprakash Singh  * TAD Performance Counter Secure Registers
646*4b8b8d74SJaiprakash Singh  */
647*4b8b8d74SJaiprakash Singh union ody_tadx_pfc_sx {
648*4b8b8d74SJaiprakash Singh 	uint64_t u;
649*4b8b8d74SJaiprakash Singh 	struct ody_tadx_pfc_sx_s {
650*4b8b8d74SJaiprakash Singh 		uint64_t count                       : 64;
651*4b8b8d74SJaiprakash Singh 	} s;
652*4b8b8d74SJaiprakash Singh 	/* struct ody_tadx_pfc_sx_s cn; */
653*4b8b8d74SJaiprakash Singh };
654*4b8b8d74SJaiprakash Singh typedef union ody_tadx_pfc_sx ody_tadx_pfc_sx_t;
655*4b8b8d74SJaiprakash Singh 
656*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_PFC_SX(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_TADX_PFC_SX(uint64_t a,uint64_t b)657*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_PFC_SX(uint64_t a, uint64_t b)
658*4b8b8d74SJaiprakash Singh {
659*4b8b8d74SJaiprakash Singh 	if ((a <= 89) && (b <= 7))
660*4b8b8d74SJaiprakash Singh 		return 0x87e22b000800ll + 0x1000000ll * ((a) & 0x7f) + 8ll * ((b) & 0x7);
661*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("TADX_PFC_SX", 2, a, b, 0, 0, 0, 0);
662*4b8b8d74SJaiprakash Singh }
663*4b8b8d74SJaiprakash Singh 
664*4b8b8d74SJaiprakash Singh #define typedef_ODY_TADX_PFC_SX(a, b) ody_tadx_pfc_sx_t
665*4b8b8d74SJaiprakash Singh #define bustype_ODY_TADX_PFC_SX(a, b) CSR_TYPE_RSL
666*4b8b8d74SJaiprakash Singh #define basename_ODY_TADX_PFC_SX(a, b) "TADX_PFC_SX"
667*4b8b8d74SJaiprakash Singh #define device_bar_ODY_TADX_PFC_SX(a, b) 0x0 /* PF_BAR0 */
668*4b8b8d74SJaiprakash Singh #define busnum_ODY_TADX_PFC_SX(a, b) (a)
669*4b8b8d74SJaiprakash Singh #define arguments_ODY_TADX_PFC_SX(a, b) (a), (b), -1, -1
670*4b8b8d74SJaiprakash Singh 
671*4b8b8d74SJaiprakash Singh /**
672*4b8b8d74SJaiprakash Singh  * Register (RSL) tad#_prf_ns#
673*4b8b8d74SJaiprakash Singh  *
674*4b8b8d74SJaiprakash Singh  * TAD Performance Counter Control Non-Secure Registers
675*4b8b8d74SJaiprakash Singh  * Selects event to count for each TAD_PFC, and specifies optional
676*4b8b8d74SJaiprakash Singh  * filters for PMG and PARTID.
677*4b8b8d74SJaiprakash Singh  */
678*4b8b8d74SJaiprakash Singh union ody_tadx_prf_nsx {
679*4b8b8d74SJaiprakash Singh 	uint64_t u;
680*4b8b8d74SJaiprakash Singh 	struct ody_tadx_prf_nsx_s {
681*4b8b8d74SJaiprakash Singh 		uint64_t cntsel                      : 8;
682*4b8b8d74SJaiprakash Singh 		uint64_t match_partid                : 1;
683*4b8b8d74SJaiprakash Singh 		uint64_t match_pmg                   : 1;
684*4b8b8d74SJaiprakash Singh 		uint64_t partid_val                  : 9;
685*4b8b8d74SJaiprakash Singh 		uint64_t reserved_19_26              : 8;
686*4b8b8d74SJaiprakash Singh 		uint64_t pmg_val                     : 1;
687*4b8b8d74SJaiprakash Singh 		uint64_t reserved_28_34              : 7;
688*4b8b8d74SJaiprakash Singh 		uint64_t match_stream                : 1;
689*4b8b8d74SJaiprakash Singh 		uint64_t stream_val                  : 1;
690*4b8b8d74SJaiprakash Singh 		uint64_t match_prefetch              : 1;
691*4b8b8d74SJaiprakash Singh 		uint64_t prefetch_val                : 1;
692*4b8b8d74SJaiprakash Singh 		uint64_t match_subsource             : 1;
693*4b8b8d74SJaiprakash Singh 		uint64_t subsource_val               : 2;
694*4b8b8d74SJaiprakash Singh 		uint64_t match_opcode                : 1;
695*4b8b8d74SJaiprakash Singh 		uint64_t opcode_val                  : 7;
696*4b8b8d74SJaiprakash Singh 		uint64_t reserved_50_63              : 14;
697*4b8b8d74SJaiprakash Singh 	} s;
698*4b8b8d74SJaiprakash Singh 	/* struct ody_tadx_prf_nsx_s cn; */
699*4b8b8d74SJaiprakash Singh };
700*4b8b8d74SJaiprakash Singh typedef union ody_tadx_prf_nsx ody_tadx_prf_nsx_t;
701*4b8b8d74SJaiprakash Singh 
702*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_PRF_NSX(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_TADX_PRF_NSX(uint64_t a,uint64_t b)703*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_PRF_NSX(uint64_t a, uint64_t b)
704*4b8b8d74SJaiprakash Singh {
705*4b8b8d74SJaiprakash Singh 	if ((a <= 89) && (b <= 7))
706*4b8b8d74SJaiprakash Singh 		return 0x87e22b030900ll + 0x1000000ll * ((a) & 0x7f) + 8ll * ((b) & 0x7);
707*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("TADX_PRF_NSX", 2, a, b, 0, 0, 0, 0);
708*4b8b8d74SJaiprakash Singh }
709*4b8b8d74SJaiprakash Singh 
710*4b8b8d74SJaiprakash Singh #define typedef_ODY_TADX_PRF_NSX(a, b) ody_tadx_prf_nsx_t
711*4b8b8d74SJaiprakash Singh #define bustype_ODY_TADX_PRF_NSX(a, b) CSR_TYPE_RSL
712*4b8b8d74SJaiprakash Singh #define basename_ODY_TADX_PRF_NSX(a, b) "TADX_PRF_NSX"
713*4b8b8d74SJaiprakash Singh #define device_bar_ODY_TADX_PRF_NSX(a, b) 0x0 /* PF_BAR0 */
714*4b8b8d74SJaiprakash Singh #define busnum_ODY_TADX_PRF_NSX(a, b) (a)
715*4b8b8d74SJaiprakash Singh #define arguments_ODY_TADX_PRF_NSX(a, b) (a), (b), -1, -1
716*4b8b8d74SJaiprakash Singh 
717*4b8b8d74SJaiprakash Singh /**
718*4b8b8d74SJaiprakash Singh  * Register (RSL) tad#_prf_s#
719*4b8b8d74SJaiprakash Singh  *
720*4b8b8d74SJaiprakash Singh  * TAD Performance Counter Control Secure Registers
721*4b8b8d74SJaiprakash Singh  * Selects event to count for each TAD_PFC, and specifies optional
722*4b8b8d74SJaiprakash Singh  * filters for PMG and PARTID.
723*4b8b8d74SJaiprakash Singh  */
724*4b8b8d74SJaiprakash Singh union ody_tadx_prf_sx {
725*4b8b8d74SJaiprakash Singh 	uint64_t u;
726*4b8b8d74SJaiprakash Singh 	struct ody_tadx_prf_sx_s {
727*4b8b8d74SJaiprakash Singh 		uint64_t cntsel                      : 8;
728*4b8b8d74SJaiprakash Singh 		uint64_t match_partid                : 1;
729*4b8b8d74SJaiprakash Singh 		uint64_t match_pmg                   : 1;
730*4b8b8d74SJaiprakash Singh 		uint64_t partid_val                  : 9;
731*4b8b8d74SJaiprakash Singh 		uint64_t reserved_19_26              : 8;
732*4b8b8d74SJaiprakash Singh 		uint64_t pmg_val                     : 1;
733*4b8b8d74SJaiprakash Singh 		uint64_t reserved_28_34              : 7;
734*4b8b8d74SJaiprakash Singh 		uint64_t match_stream                : 1;
735*4b8b8d74SJaiprakash Singh 		uint64_t stream_val                  : 1;
736*4b8b8d74SJaiprakash Singh 		uint64_t match_prefetch              : 1;
737*4b8b8d74SJaiprakash Singh 		uint64_t prefetch_val                : 1;
738*4b8b8d74SJaiprakash Singh 		uint64_t match_subsource             : 1;
739*4b8b8d74SJaiprakash Singh 		uint64_t subsource_val               : 2;
740*4b8b8d74SJaiprakash Singh 		uint64_t match_opcode                : 1;
741*4b8b8d74SJaiprakash Singh 		uint64_t opcode_val                  : 7;
742*4b8b8d74SJaiprakash Singh 		uint64_t reserved_50_63              : 14;
743*4b8b8d74SJaiprakash Singh 	} s;
744*4b8b8d74SJaiprakash Singh 	/* struct ody_tadx_prf_sx_s cn; */
745*4b8b8d74SJaiprakash Singh };
746*4b8b8d74SJaiprakash Singh typedef union ody_tadx_prf_sx ody_tadx_prf_sx_t;
747*4b8b8d74SJaiprakash Singh 
748*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_PRF_SX(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_TADX_PRF_SX(uint64_t a,uint64_t b)749*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_PRF_SX(uint64_t a, uint64_t b)
750*4b8b8d74SJaiprakash Singh {
751*4b8b8d74SJaiprakash Singh 	if ((a <= 89) && (b <= 7))
752*4b8b8d74SJaiprakash Singh 		return 0x87e22b000900ll + 0x1000000ll * ((a) & 0x7f) + 8ll * ((b) & 0x7);
753*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("TADX_PRF_SX", 2, a, b, 0, 0, 0, 0);
754*4b8b8d74SJaiprakash Singh }
755*4b8b8d74SJaiprakash Singh 
756*4b8b8d74SJaiprakash Singh #define typedef_ODY_TADX_PRF_SX(a, b) ody_tadx_prf_sx_t
757*4b8b8d74SJaiprakash Singh #define bustype_ODY_TADX_PRF_SX(a, b) CSR_TYPE_RSL
758*4b8b8d74SJaiprakash Singh #define basename_ODY_TADX_PRF_SX(a, b) "TADX_PRF_SX"
759*4b8b8d74SJaiprakash Singh #define device_bar_ODY_TADX_PRF_SX(a, b) 0x0 /* PF_BAR0 */
760*4b8b8d74SJaiprakash Singh #define busnum_ODY_TADX_PRF_SX(a, b) (a)
761*4b8b8d74SJaiprakash Singh #define arguments_ODY_TADX_PRF_SX(a, b) (a), (b), -1, -1
762*4b8b8d74SJaiprakash Singh 
763*4b8b8d74SJaiprakash Singh /**
764*4b8b8d74SJaiprakash Singh  * Register (RSL) tad#_req_rcnt
765*4b8b8d74SJaiprakash Singh  *
766*4b8b8d74SJaiprakash Singh  * TAD Request Resource Count Registers
767*4b8b8d74SJaiprakash Singh  */
768*4b8b8d74SJaiprakash Singh union ody_tadx_req_rcnt {
769*4b8b8d74SJaiprakash Singh 	uint64_t u;
770*4b8b8d74SJaiprakash Singh 	struct ody_tadx_req_rcnt_s {
771*4b8b8d74SJaiprakash Singh 		uint64_t cnt                         : 7;
772*4b8b8d74SJaiprakash Singh 		uint64_t reserved_7_63               : 57;
773*4b8b8d74SJaiprakash Singh 	} s;
774*4b8b8d74SJaiprakash Singh 	/* struct ody_tadx_req_rcnt_s cn; */
775*4b8b8d74SJaiprakash Singh };
776*4b8b8d74SJaiprakash Singh typedef union ody_tadx_req_rcnt ody_tadx_req_rcnt_t;
777*4b8b8d74SJaiprakash Singh 
778*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_REQ_RCNT(uint64_t a) __attribute__ ((pure, always_inline));
ODY_TADX_REQ_RCNT(uint64_t a)779*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_TADX_REQ_RCNT(uint64_t a)
780*4b8b8d74SJaiprakash Singh {
781*4b8b8d74SJaiprakash Singh 	if (a <= 89)
782*4b8b8d74SJaiprakash Singh 		return 0x87e22b002008ll + 0x1000000ll * ((a) & 0x7f);
783*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("TADX_REQ_RCNT", 1, a, 0, 0, 0, 0, 0);
784*4b8b8d74SJaiprakash Singh }
785*4b8b8d74SJaiprakash Singh 
786*4b8b8d74SJaiprakash Singh #define typedef_ODY_TADX_REQ_RCNT(a) ody_tadx_req_rcnt_t
787*4b8b8d74SJaiprakash Singh #define bustype_ODY_TADX_REQ_RCNT(a) CSR_TYPE_RSL
788*4b8b8d74SJaiprakash Singh #define basename_ODY_TADX_REQ_RCNT(a) "TADX_REQ_RCNT"
789*4b8b8d74SJaiprakash Singh #define device_bar_ODY_TADX_REQ_RCNT(a) 0x0 /* PF_BAR0 */
790*4b8b8d74SJaiprakash Singh #define busnum_ODY_TADX_REQ_RCNT(a) (a)
791*4b8b8d74SJaiprakash Singh #define arguments_ODY_TADX_REQ_RCNT(a) (a), -1, -1, -1
792*4b8b8d74SJaiprakash Singh 
793*4b8b8d74SJaiprakash Singh #endif /* __ODY_CSRS_TAD_H__ */
794