1*4b8b8d74SJaiprakash Singh #ifndef __ODY_CSRS_ECAM_H__
2*4b8b8d74SJaiprakash Singh #define __ODY_CSRS_ECAM_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 * ECAM.
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 ecam_bar_e
24*4b8b8d74SJaiprakash Singh *
25*4b8b8d74SJaiprakash Singh * ECAM Base Address Register Enumeration
26*4b8b8d74SJaiprakash Singh * Enumerates the base address registers.
27*4b8b8d74SJaiprakash Singh */
28*4b8b8d74SJaiprakash Singh #define ODY_ECAM_BAR_E_ECAMX_PF_BAR0(a) (0x87e078000000ll + 0x1000000ll * (a))
29*4b8b8d74SJaiprakash Singh #define ODY_ECAM_BAR_E_ECAMX_PF_BAR0_SIZE 0x100000ull
30*4b8b8d74SJaiprakash Singh #define ODY_ECAM_BAR_E_ECAMX_PF_BAR2(a) (0x878000000000ll + 0x1000000000ll * (a))
31*4b8b8d74SJaiprakash Singh #define ODY_ECAM_BAR_E_ECAMX_PF_BAR2_SIZE 0x1000000000ull
32*4b8b8d74SJaiprakash Singh
33*4b8b8d74SJaiprakash Singh /**
34*4b8b8d74SJaiprakash Singh * Structure ecam_cfg_addr_s
35*4b8b8d74SJaiprakash Singh *
36*4b8b8d74SJaiprakash Singh * ECAM Configuration Address Structure
37*4b8b8d74SJaiprakash Singh * ECAM load and store operations form an address with this structure: 8-bit, 16-bit, 32-bit and
38*4b8b8d74SJaiprakash Singh * 64-bit read and write operations are supported to this region.
39*4b8b8d74SJaiprakash Singh */
40*4b8b8d74SJaiprakash Singh union ody_ecam_cfg_addr_s {
41*4b8b8d74SJaiprakash Singh uint64_t u;
42*4b8b8d74SJaiprakash Singh struct ody_ecam_cfg_addr_s_s {
43*4b8b8d74SJaiprakash Singh uint64_t addr : 12;
44*4b8b8d74SJaiprakash Singh uint64_t func : 8;
45*4b8b8d74SJaiprakash Singh uint64_t bus : 8;
46*4b8b8d74SJaiprakash Singh uint64_t dmn : 6;
47*4b8b8d74SJaiprakash Singh uint64_t bcst : 1;
48*4b8b8d74SJaiprakash Singh uint64_t setup : 1;
49*4b8b8d74SJaiprakash Singh uint64_t did : 8;
50*4b8b8d74SJaiprakash Singh uint64_t node : 2;
51*4b8b8d74SJaiprakash Singh uint64_t reserved_46 : 1;
52*4b8b8d74SJaiprakash Singh uint64_t io : 5;
53*4b8b8d74SJaiprakash Singh uint64_t reserved_52_63 : 12;
54*4b8b8d74SJaiprakash Singh } s;
55*4b8b8d74SJaiprakash Singh /* struct ody_ecam_cfg_addr_s_s cn; */
56*4b8b8d74SJaiprakash Singh };
57*4b8b8d74SJaiprakash Singh
58*4b8b8d74SJaiprakash Singh /**
59*4b8b8d74SJaiprakash Singh * Register (RSL) ecam#_const
60*4b8b8d74SJaiprakash Singh *
61*4b8b8d74SJaiprakash Singh * ECAM Constants Register
62*4b8b8d74SJaiprakash Singh * This register contains constants for software discovery.
63*4b8b8d74SJaiprakash Singh */
64*4b8b8d74SJaiprakash Singh union ody_ecamx_const {
65*4b8b8d74SJaiprakash Singh uint64_t u;
66*4b8b8d74SJaiprakash Singh struct ody_ecamx_const_s {
67*4b8b8d74SJaiprakash Singh uint64_t ecams : 8;
68*4b8b8d74SJaiprakash Singh uint64_t domains : 8;
69*4b8b8d74SJaiprakash Singh uint64_t reserved_16_63 : 48;
70*4b8b8d74SJaiprakash Singh } s;
71*4b8b8d74SJaiprakash Singh /* struct ody_ecamx_const_s cn; */
72*4b8b8d74SJaiprakash Singh };
73*4b8b8d74SJaiprakash Singh typedef union ody_ecamx_const ody_ecamx_const_t;
74*4b8b8d74SJaiprakash Singh
75*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_ECAMX_CONST(uint64_t a) __attribute__ ((pure, always_inline));
ODY_ECAMX_CONST(uint64_t a)76*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_ECAMX_CONST(uint64_t a)
77*4b8b8d74SJaiprakash Singh {
78*4b8b8d74SJaiprakash Singh if (a == 0)
79*4b8b8d74SJaiprakash Singh return 0x87e078000200ll;
80*4b8b8d74SJaiprakash Singh __ody_csr_fatal("ECAMX_CONST", 1, a, 0, 0, 0, 0, 0);
81*4b8b8d74SJaiprakash Singh }
82*4b8b8d74SJaiprakash Singh
83*4b8b8d74SJaiprakash Singh #define typedef_ODY_ECAMX_CONST(a) ody_ecamx_const_t
84*4b8b8d74SJaiprakash Singh #define bustype_ODY_ECAMX_CONST(a) CSR_TYPE_RSL
85*4b8b8d74SJaiprakash Singh #define basename_ODY_ECAMX_CONST(a) "ECAMX_CONST"
86*4b8b8d74SJaiprakash Singh #define device_bar_ODY_ECAMX_CONST(a) 0x0 /* PF_BAR0 */
87*4b8b8d74SJaiprakash Singh #define busnum_ODY_ECAMX_CONST(a) (a)
88*4b8b8d74SJaiprakash Singh #define arguments_ODY_ECAMX_CONST(a) (a), -1, -1, -1
89*4b8b8d74SJaiprakash Singh
90*4b8b8d74SJaiprakash Singh /**
91*4b8b8d74SJaiprakash Singh * Register (RSL) ecam#_dom#_bus#_permit
92*4b8b8d74SJaiprakash Singh *
93*4b8b8d74SJaiprakash Singh * ECAM Domain Bus Permit Registers
94*4b8b8d74SJaiprakash Singh * This register sets the permissions for an ECAM access to a device
95*4b8b8d74SJaiprakash Singh * using a given ECAM bus number.
96*4b8b8d74SJaiprakash Singh *
97*4b8b8d74SJaiprakash Singh * Index {a} corresponds to the ECAM address's domain (address's ECAM_CFG_ADDR_S[DMN]).
98*4b8b8d74SJaiprakash Singh * ECAM()_DOM()_CONST[PERMIT] is used to discover for which domains this register is
99*4b8b8d74SJaiprakash Singh * implemented; nonimplemented indices are RAZ.
100*4b8b8d74SJaiprakash Singh *
101*4b8b8d74SJaiprakash Singh * Index {b} corresponds to the ECAM address's bus number (address's ECAM_CFG_ADDR_S[BUS]).
102*4b8b8d74SJaiprakash Singh */
103*4b8b8d74SJaiprakash Singh union ody_ecamx_domx_busx_permit {
104*4b8b8d74SJaiprakash Singh uint64_t u;
105*4b8b8d74SJaiprakash Singh struct ody_ecamx_domx_busx_permit_s {
106*4b8b8d74SJaiprakash Singh uint64_t sec_dis : 1;
107*4b8b8d74SJaiprakash Singh uint64_t nsec_dis : 1;
108*4b8b8d74SJaiprakash Singh uint64_t xcp0_dis : 1;
109*4b8b8d74SJaiprakash Singh uint64_t xcp1_dis : 1;
110*4b8b8d74SJaiprakash Singh uint64_t xcp2_dis : 1;
111*4b8b8d74SJaiprakash Singh uint64_t reserved_5_6 : 2;
112*4b8b8d74SJaiprakash Singh uint64_t kill : 1;
113*4b8b8d74SJaiprakash Singh uint64_t lock : 1;
114*4b8b8d74SJaiprakash Singh uint64_t reserved_9_63 : 55;
115*4b8b8d74SJaiprakash Singh } s;
116*4b8b8d74SJaiprakash Singh /* struct ody_ecamx_domx_busx_permit_s cn; */
117*4b8b8d74SJaiprakash Singh };
118*4b8b8d74SJaiprakash Singh typedef union ody_ecamx_domx_busx_permit ody_ecamx_domx_busx_permit_t;
119*4b8b8d74SJaiprakash Singh
120*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_ECAMX_DOMX_BUSX_PERMIT(uint64_t a, uint64_t b, uint64_t c) __attribute__ ((pure, always_inline));
ODY_ECAMX_DOMX_BUSX_PERMIT(uint64_t a,uint64_t b,uint64_t c)121*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_ECAMX_DOMX_BUSX_PERMIT(uint64_t a, uint64_t b, uint64_t c)
122*4b8b8d74SJaiprakash Singh {
123*4b8b8d74SJaiprakash Singh if ((a == 0) && ((b == 0) || (b == 1) || (b == 2)) && (c <= 255))
124*4b8b8d74SJaiprakash Singh return 0x87e078020000ll + 0x800ll * ((b) & 0x3) + 8ll * ((c) & 0xff);
125*4b8b8d74SJaiprakash Singh __ody_csr_fatal("ECAMX_DOMX_BUSX_PERMIT", 3, a, b, c, 0, 0, 0);
126*4b8b8d74SJaiprakash Singh }
127*4b8b8d74SJaiprakash Singh
128*4b8b8d74SJaiprakash Singh #define typedef_ODY_ECAMX_DOMX_BUSX_PERMIT(a, b, c) ody_ecamx_domx_busx_permit_t
129*4b8b8d74SJaiprakash Singh #define bustype_ODY_ECAMX_DOMX_BUSX_PERMIT(a, b, c) CSR_TYPE_RSL
130*4b8b8d74SJaiprakash Singh #define basename_ODY_ECAMX_DOMX_BUSX_PERMIT(a, b, c) "ECAMX_DOMX_BUSX_PERMIT"
131*4b8b8d74SJaiprakash Singh #define device_bar_ODY_ECAMX_DOMX_BUSX_PERMIT(a, b, c) 0x0 /* PF_BAR0 */
132*4b8b8d74SJaiprakash Singh #define busnum_ODY_ECAMX_DOMX_BUSX_PERMIT(a, b, c) (a)
133*4b8b8d74SJaiprakash Singh #define arguments_ODY_ECAMX_DOMX_BUSX_PERMIT(a, b, c) (a), (b), (c), -1
134*4b8b8d74SJaiprakash Singh
135*4b8b8d74SJaiprakash Singh /**
136*4b8b8d74SJaiprakash Singh * Register (RSL) ecam#_dom#_const
137*4b8b8d74SJaiprakash Singh *
138*4b8b8d74SJaiprakash Singh * ECAM Constants Register
139*4b8b8d74SJaiprakash Singh * This register contains constants for software discovery.
140*4b8b8d74SJaiprakash Singh *
141*4b8b8d74SJaiprakash Singh * Index {a} indicates the domain for which the attributes are to be returned.
142*4b8b8d74SJaiprakash Singh */
143*4b8b8d74SJaiprakash Singh union ody_ecamx_domx_const {
144*4b8b8d74SJaiprakash Singh uint64_t u;
145*4b8b8d74SJaiprakash Singh struct ody_ecamx_domx_const_s {
146*4b8b8d74SJaiprakash Singh uint64_t smmu : 4;
147*4b8b8d74SJaiprakash Singh uint64_t permit : 1;
148*4b8b8d74SJaiprakash Singh uint64_t pres : 1;
149*4b8b8d74SJaiprakash Singh uint64_t reserved_6_63 : 58;
150*4b8b8d74SJaiprakash Singh } s;
151*4b8b8d74SJaiprakash Singh /* struct ody_ecamx_domx_const_s cn; */
152*4b8b8d74SJaiprakash Singh };
153*4b8b8d74SJaiprakash Singh typedef union ody_ecamx_domx_const ody_ecamx_domx_const_t;
154*4b8b8d74SJaiprakash Singh
155*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_ECAMX_DOMX_CONST(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_ECAMX_DOMX_CONST(uint64_t a,uint64_t b)156*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_ECAMX_DOMX_CONST(uint64_t a, uint64_t b)
157*4b8b8d74SJaiprakash Singh {
158*4b8b8d74SJaiprakash Singh if ((a == 0) && (b <= 63))
159*4b8b8d74SJaiprakash Singh return 0x87e078000400ll + 8ll * ((b) & 0x3f);
160*4b8b8d74SJaiprakash Singh __ody_csr_fatal("ECAMX_DOMX_CONST", 2, a, b, 0, 0, 0, 0);
161*4b8b8d74SJaiprakash Singh }
162*4b8b8d74SJaiprakash Singh
163*4b8b8d74SJaiprakash Singh #define typedef_ODY_ECAMX_DOMX_CONST(a, b) ody_ecamx_domx_const_t
164*4b8b8d74SJaiprakash Singh #define bustype_ODY_ECAMX_DOMX_CONST(a, b) CSR_TYPE_RSL
165*4b8b8d74SJaiprakash Singh #define basename_ODY_ECAMX_DOMX_CONST(a, b) "ECAMX_DOMX_CONST"
166*4b8b8d74SJaiprakash Singh #define device_bar_ODY_ECAMX_DOMX_CONST(a, b) 0x0 /* PF_BAR0 */
167*4b8b8d74SJaiprakash Singh #define busnum_ODY_ECAMX_DOMX_CONST(a, b) (a)
168*4b8b8d74SJaiprakash Singh #define arguments_ODY_ECAMX_DOMX_CONST(a, b) (a), (b), -1, -1
169*4b8b8d74SJaiprakash Singh
170*4b8b8d74SJaiprakash Singh /**
171*4b8b8d74SJaiprakash Singh * Register (RSL) ecam#_dom#_dev#_permit
172*4b8b8d74SJaiprakash Singh *
173*4b8b8d74SJaiprakash Singh * ECAM Domain Device Permit Registers
174*4b8b8d74SJaiprakash Singh * This register sets the permissions for a ECAM access to a bus 0 device.
175*4b8b8d74SJaiprakash Singh * This register is used when the bus number is 0; i.e. address's ECAM_CFG_ADDR_S[BUS] = 0x0.
176*4b8b8d74SJaiprakash Singh *
177*4b8b8d74SJaiprakash Singh * Index {a} corresponds to the ECAM address's domain (address's ECAM_CFG_ADDR_S[DOMAIN]).
178*4b8b8d74SJaiprakash Singh * ECAM()_DOM()_CONST[PERMIT] is used to discover for which domains this register is
179*4b8b8d74SJaiprakash Singh * implemented; nonimplemented indices are RAZ.
180*4b8b8d74SJaiprakash Singh *
181*4b8b8d74SJaiprakash Singh * Index {b} corresponds to the bus 0 non-ARI device number (address's
182*4b8b8d74SJaiprakash Singh * ECAM_CFG_ADDR_S[FUNC]\<7:3\>).
183*4b8b8d74SJaiprakash Singh *
184*4b8b8d74SJaiprakash Singh * Also see and program identically to IOBN()_ECAM_DOM()_DEV()_PERMIT.
185*4b8b8d74SJaiprakash Singh */
186*4b8b8d74SJaiprakash Singh union ody_ecamx_domx_devx_permit {
187*4b8b8d74SJaiprakash Singh uint64_t u;
188*4b8b8d74SJaiprakash Singh struct ody_ecamx_domx_devx_permit_s {
189*4b8b8d74SJaiprakash Singh uint64_t sec_dis : 1;
190*4b8b8d74SJaiprakash Singh uint64_t nsec_dis : 1;
191*4b8b8d74SJaiprakash Singh uint64_t xcp0_dis : 1;
192*4b8b8d74SJaiprakash Singh uint64_t xcp1_dis : 1;
193*4b8b8d74SJaiprakash Singh uint64_t xcp2_dis : 1;
194*4b8b8d74SJaiprakash Singh uint64_t reserved_5_6 : 2;
195*4b8b8d74SJaiprakash Singh uint64_t kill : 1;
196*4b8b8d74SJaiprakash Singh uint64_t lock : 1;
197*4b8b8d74SJaiprakash Singh uint64_t reserved_9_63 : 55;
198*4b8b8d74SJaiprakash Singh } s;
199*4b8b8d74SJaiprakash Singh /* struct ody_ecamx_domx_devx_permit_s cn; */
200*4b8b8d74SJaiprakash Singh };
201*4b8b8d74SJaiprakash Singh typedef union ody_ecamx_domx_devx_permit ody_ecamx_domx_devx_permit_t;
202*4b8b8d74SJaiprakash Singh
203*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_ECAMX_DOMX_DEVX_PERMIT(uint64_t a, uint64_t b, uint64_t c) __attribute__ ((pure, always_inline));
ODY_ECAMX_DOMX_DEVX_PERMIT(uint64_t a,uint64_t b,uint64_t c)204*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_ECAMX_DOMX_DEVX_PERMIT(uint64_t a, uint64_t b, uint64_t c)
205*4b8b8d74SJaiprakash Singh {
206*4b8b8d74SJaiprakash Singh if ((a == 0) && (b <= 18) && (c <= 31))
207*4b8b8d74SJaiprakash Singh return 0x87e078040000ll + 0x800ll * ((b) & 0x1f) + 8ll * ((c) & 0x1f);
208*4b8b8d74SJaiprakash Singh __ody_csr_fatal("ECAMX_DOMX_DEVX_PERMIT", 3, a, b, c, 0, 0, 0);
209*4b8b8d74SJaiprakash Singh }
210*4b8b8d74SJaiprakash Singh
211*4b8b8d74SJaiprakash Singh #define typedef_ODY_ECAMX_DOMX_DEVX_PERMIT(a, b, c) ody_ecamx_domx_devx_permit_t
212*4b8b8d74SJaiprakash Singh #define bustype_ODY_ECAMX_DOMX_DEVX_PERMIT(a, b, c) CSR_TYPE_RSL
213*4b8b8d74SJaiprakash Singh #define basename_ODY_ECAMX_DOMX_DEVX_PERMIT(a, b, c) "ECAMX_DOMX_DEVX_PERMIT"
214*4b8b8d74SJaiprakash Singh #define device_bar_ODY_ECAMX_DOMX_DEVX_PERMIT(a, b, c) 0x0 /* PF_BAR0 */
215*4b8b8d74SJaiprakash Singh #define busnum_ODY_ECAMX_DOMX_DEVX_PERMIT(a, b, c) (a)
216*4b8b8d74SJaiprakash Singh #define arguments_ODY_ECAMX_DOMX_DEVX_PERMIT(a, b, c) (a), (b), (c), -1
217*4b8b8d74SJaiprakash Singh
218*4b8b8d74SJaiprakash Singh /**
219*4b8b8d74SJaiprakash Singh * Register (RSL) ecam#_dom#_rsl#_permit
220*4b8b8d74SJaiprakash Singh *
221*4b8b8d74SJaiprakash Singh * ECAM Domain RSL Permit Registers
222*4b8b8d74SJaiprakash Singh * This register sets the permissions for an ECAM access to an RSL device.
223*4b8b8d74SJaiprakash Singh * This register is used when the domain and bus point to RSL; i.e.
224*4b8b8d74SJaiprakash Singh * address's ECAM_CFG_ADDR_S[DOMAIN]=PCC_DEV_CON_E::MRML\<21:16\>,
225*4b8b8d74SJaiprakash Singh * ECAM_CFG_ADDR_S[BUS] = PCC_DEV_CON_E::MRML\<15:8\>.
226*4b8b8d74SJaiprakash Singh *
227*4b8b8d74SJaiprakash Singh * Index {a} corresponds to the ECAM address's domain (address's ECAM_CFG_ADDR_S[DOMAIN]).
228*4b8b8d74SJaiprakash Singh * ECAM()_DOM()_CONST[PERMIT] is used to discover for which domains this register is
229*4b8b8d74SJaiprakash Singh * implemented; nonimplemented indices are RAZ.
230*4b8b8d74SJaiprakash Singh *
231*4b8b8d74SJaiprakash Singh * Index {b} bits 9:8 are 0x0 when the RSL device's PCC_DEV_CON_E\<9:8\> value is 0x1
232*4b8b8d74SJaiprakash Singh * (MRML0).
233*4b8b8d74SJaiprakash Singh *
234*4b8b8d74SJaiprakash Singh * Index {b} bits 9:8 are 0x1 when the RSL device's PCC_DEV_CON_E\<9:8\> value is 0x2
235*4b8b8d74SJaiprakash Singh * (MRML1).
236*4b8b8d74SJaiprakash Singh *
237*4b8b8d74SJaiprakash Singh * Index {b} bits 9:8 are 0x2 when the RSL device's PCC_DEV_CON_E\<9:8\> value is 0x3
238*4b8b8d74SJaiprakash Singh * (MRML2).
239*4b8b8d74SJaiprakash Singh *
240*4b8b8d74SJaiprakash Singh * Index {b} bits 9:8 are 0x3 when the RSL device's PCC_DEV_CON_E\<9:8\> value is 0x0
241*4b8b8d74SJaiprakash Singh * (MRML3).
242*4b8b8d74SJaiprakash Singh *
243*4b8b8d74SJaiprakash Singh * Index {b} bits 7:0 corresponds to the RSL device's PCC_DEV_CON_E\<7:0\> value.
244*4b8b8d74SJaiprakash Singh */
245*4b8b8d74SJaiprakash Singh union ody_ecamx_domx_rslx_permit {
246*4b8b8d74SJaiprakash Singh uint64_t u;
247*4b8b8d74SJaiprakash Singh struct ody_ecamx_domx_rslx_permit_s {
248*4b8b8d74SJaiprakash Singh uint64_t sec_dis : 1;
249*4b8b8d74SJaiprakash Singh uint64_t nsec_dis : 1;
250*4b8b8d74SJaiprakash Singh uint64_t xcp0_dis : 1;
251*4b8b8d74SJaiprakash Singh uint64_t xcp1_dis : 1;
252*4b8b8d74SJaiprakash Singh uint64_t xcp2_dis : 1;
253*4b8b8d74SJaiprakash Singh uint64_t reserved_5_6 : 2;
254*4b8b8d74SJaiprakash Singh uint64_t kill : 1;
255*4b8b8d74SJaiprakash Singh uint64_t lock : 1;
256*4b8b8d74SJaiprakash Singh uint64_t reserved_9_63 : 55;
257*4b8b8d74SJaiprakash Singh } s;
258*4b8b8d74SJaiprakash Singh /* struct ody_ecamx_domx_rslx_permit_s cn; */
259*4b8b8d74SJaiprakash Singh };
260*4b8b8d74SJaiprakash Singh typedef union ody_ecamx_domx_rslx_permit ody_ecamx_domx_rslx_permit_t;
261*4b8b8d74SJaiprakash Singh
262*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_ECAMX_DOMX_RSLX_PERMIT(uint64_t a, uint64_t b, uint64_t c) __attribute__ ((pure, always_inline));
ODY_ECAMX_DOMX_RSLX_PERMIT(uint64_t a,uint64_t b,uint64_t c)263*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_ECAMX_DOMX_RSLX_PERMIT(uint64_t a, uint64_t b, uint64_t c)
264*4b8b8d74SJaiprakash Singh {
265*4b8b8d74SJaiprakash Singh if ((a == 0) && ((b == 0) || (b == 1) || (b == 2)) && (c <= 1023))
266*4b8b8d74SJaiprakash Singh return 0x87e078060000ll + 0x2000ll * ((b) & 0x3) + 8ll * ((c) & 0x3ff);
267*4b8b8d74SJaiprakash Singh __ody_csr_fatal("ECAMX_DOMX_RSLX_PERMIT", 3, a, b, c, 0, 0, 0);
268*4b8b8d74SJaiprakash Singh }
269*4b8b8d74SJaiprakash Singh
270*4b8b8d74SJaiprakash Singh #define typedef_ODY_ECAMX_DOMX_RSLX_PERMIT(a, b, c) ody_ecamx_domx_rslx_permit_t
271*4b8b8d74SJaiprakash Singh #define bustype_ODY_ECAMX_DOMX_RSLX_PERMIT(a, b, c) CSR_TYPE_RSL
272*4b8b8d74SJaiprakash Singh #define basename_ODY_ECAMX_DOMX_RSLX_PERMIT(a, b, c) "ECAMX_DOMX_RSLX_PERMIT"
273*4b8b8d74SJaiprakash Singh #define device_bar_ODY_ECAMX_DOMX_RSLX_PERMIT(a, b, c) 0x0 /* PF_BAR0 */
274*4b8b8d74SJaiprakash Singh #define busnum_ODY_ECAMX_DOMX_RSLX_PERMIT(a, b, c) (a)
275*4b8b8d74SJaiprakash Singh #define arguments_ODY_ECAMX_DOMX_RSLX_PERMIT(a, b, c) (a), (b), (c), -1
276*4b8b8d74SJaiprakash Singh
277*4b8b8d74SJaiprakash Singh #endif /* __ODY_CSRS_ECAM_H__ */
278