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