xref: /rk3399_ARM-atf/include/plat/marvell/odyssey/csr/ody-csrs-iobn.h (revision 12d80bbbf6031228bdd910eccb03bb185e8df527)
1*4b8b8d74SJaiprakash Singh #ifndef __ODY_CSRS_IOBN_H__
2*4b8b8d74SJaiprakash Singh #define __ODY_CSRS_IOBN_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  * IOBN.
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 iobn_bar_e
24*4b8b8d74SJaiprakash Singh  *
25*4b8b8d74SJaiprakash Singh  * IOBN Base Address Register Enumeration
26*4b8b8d74SJaiprakash Singh  * Enumerates the base address registers.
27*4b8b8d74SJaiprakash Singh  */
28*4b8b8d74SJaiprakash Singh #define ODY_IOBN_BAR_E_IOBNX_PF_BAR0(a) (0x87e120000000ll + 0x1000000ll * (a))
29*4b8b8d74SJaiprakash Singh #define ODY_IOBN_BAR_E_IOBNX_PF_BAR0_SIZE 0x100000ull
30*4b8b8d74SJaiprakash Singh #define ODY_IOBN_BAR_E_IOBNX_PF_BAR4(a) (0x87e120f00000ll + 0x1000000ll * (a))
31*4b8b8d74SJaiprakash Singh #define ODY_IOBN_BAR_E_IOBNX_PF_BAR4_SIZE 0x100000ull
32*4b8b8d74SJaiprakash Singh 
33*4b8b8d74SJaiprakash Singh /**
34*4b8b8d74SJaiprakash Singh  * Enumeration iobn_inb_err_e
35*4b8b8d74SJaiprakash Singh  *
36*4b8b8d74SJaiprakash Singh  * IOBN In Bound Error Enumeration
37*4b8b8d74SJaiprakash Singh  * Enumerates the types of error detected on IOB inbound path. Errors are logged based on
38*4b8b8d74SJaiprakash Singh  * priority, where ::ABORT_ZERO_ERR has highest
39*4b8b8d74SJaiprakash Singh  * priority and ::ADDR_ERR has the lowest priority. See IOBN_INB_ERR_STATUS.
40*4b8b8d74SJaiprakash Singh  */
41*4b8b8d74SJaiprakash Singh #define ODY_IOBN_INB_ERR_E_ABORT_ZERO_ERR (1)
42*4b8b8d74SJaiprakash Singh #define ODY_IOBN_INB_ERR_E_ADDR_ERR (2)
43*4b8b8d74SJaiprakash Singh #define ODY_IOBN_INB_ERR_E_NONE (0)
44*4b8b8d74SJaiprakash Singh #define ODY_IOBN_INB_ERR_E_RSVD (3)
45*4b8b8d74SJaiprakash Singh 
46*4b8b8d74SJaiprakash Singh /**
47*4b8b8d74SJaiprakash Singh  * Enumeration iobn_int_vec_e
48*4b8b8d74SJaiprakash Singh  *
49*4b8b8d74SJaiprakash Singh  * IOBN MSI-X Vector Enumeration
50*4b8b8d74SJaiprakash Singh  * Enumerates the MSI-X interrupt vectors.
51*4b8b8d74SJaiprakash Singh  */
52*4b8b8d74SJaiprakash Singh #define ODY_IOBN_INT_VEC_E_INTS (0)
53*4b8b8d74SJaiprakash Singh 
54*4b8b8d74SJaiprakash Singh /**
55*4b8b8d74SJaiprakash Singh  * Enumeration iobn_ncbi_ro_mod_e
56*4b8b8d74SJaiprakash Singh  *
57*4b8b8d74SJaiprakash Singh  * IOBN NCBI Relax Order Modification Enumeration
58*4b8b8d74SJaiprakash Singh  * Enumerates the controls for when CR's are allowed to pass PRs, see
59*4b8b8d74SJaiprakash Singh  * IOBN_ARBID()_CTL[CRPPR_ENA].
60*4b8b8d74SJaiprakash Singh  */
61*4b8b8d74SJaiprakash Singh #define ODY_IOBN_NCBI_RO_MOD_E_BUS_CTL (0)
62*4b8b8d74SJaiprakash Singh #define ODY_IOBN_NCBI_RO_MOD_E_OFF (2)
63*4b8b8d74SJaiprakash Singh #define ODY_IOBN_NCBI_RO_MOD_E_ON (3)
64*4b8b8d74SJaiprakash Singh #define ODY_IOBN_NCBI_RO_MOD_E_RSVD (1)
65*4b8b8d74SJaiprakash Singh 
66*4b8b8d74SJaiprakash Singh /**
67*4b8b8d74SJaiprakash Singh  * Enumeration iobn_outb_err_e
68*4b8b8d74SJaiprakash Singh  *
69*4b8b8d74SJaiprakash Singh  * IOBN Outbound Error Enumeration
70*4b8b8d74SJaiprakash Singh  * Enumerates the types of error detected on IOB outbound path. If the bit is set in
71*4b8b8d74SJaiprakash Singh  * IOBN_OUTB_ERR_STATUS corresponding to the enumeration value, that error occurred.
72*4b8b8d74SJaiprakash Singh  */
73*4b8b8d74SJaiprakash Singh #define ODY_IOBN_OUTB_ERR_E_ABORT_ZERO_ERR (1)
74*4b8b8d74SJaiprakash Singh #define ODY_IOBN_OUTB_ERR_E_ADDR_ERR (2)
75*4b8b8d74SJaiprakash Singh #define ODY_IOBN_OUTB_ERR_E_CLASS_A_FAULT (4)
76*4b8b8d74SJaiprakash Singh #define ODY_IOBN_OUTB_ERR_E_NCBO_RDY_FAULT (0x10)
77*4b8b8d74SJaiprakash Singh #define ODY_IOBN_OUTB_ERR_E_NONE (0)
78*4b8b8d74SJaiprakash Singh #define ODY_IOBN_OUTB_ERR_E_PERMIT_FAULT (8)
79*4b8b8d74SJaiprakash Singh 
80*4b8b8d74SJaiprakash Singh /**
81*4b8b8d74SJaiprakash Singh  * Register (RSL) iobn#_cfg0
82*4b8b8d74SJaiprakash Singh  *
83*4b8b8d74SJaiprakash Singh  * IOBN General Configuration 0 Register
84*4b8b8d74SJaiprakash Singh  */
85*4b8b8d74SJaiprakash Singh union ody_iobnx_cfg0 {
86*4b8b8d74SJaiprakash Singh 	uint64_t u;
87*4b8b8d74SJaiprakash Singh 	struct ody_iobnx_cfg0_s {
88*4b8b8d74SJaiprakash Singh 		uint64_t force_sclk_cond_clk_en      : 1;
89*4b8b8d74SJaiprakash Singh 		uint64_t reserved_1_3                : 3;
90*4b8b8d74SJaiprakash Singh 		uint64_t dis_ncbo_cr_pois            : 4;
91*4b8b8d74SJaiprakash Singh 		uint64_t clken                       : 4;
92*4b8b8d74SJaiprakash Singh 		uint64_t reserved_12_63              : 52;
93*4b8b8d74SJaiprakash Singh 	} s;
94*4b8b8d74SJaiprakash Singh 	/* struct ody_iobnx_cfg0_s cn; */
95*4b8b8d74SJaiprakash Singh };
96*4b8b8d74SJaiprakash Singh typedef union ody_iobnx_cfg0 ody_iobnx_cfg0_t;
97*4b8b8d74SJaiprakash Singh 
98*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_CFG0(uint64_t a) __attribute__ ((pure, always_inline));
ODY_IOBNX_CFG0(uint64_t a)99*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_CFG0(uint64_t a)
100*4b8b8d74SJaiprakash Singh {
101*4b8b8d74SJaiprakash Singh 	if (a <= 4)
102*4b8b8d74SJaiprakash Singh 		return 0x87e120002000ll + 0x1000000ll * ((a) & 0x7);
103*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("IOBNX_CFG0", 1, a, 0, 0, 0, 0, 0);
104*4b8b8d74SJaiprakash Singh }
105*4b8b8d74SJaiprakash Singh 
106*4b8b8d74SJaiprakash Singh #define typedef_ODY_IOBNX_CFG0(a) ody_iobnx_cfg0_t
107*4b8b8d74SJaiprakash Singh #define bustype_ODY_IOBNX_CFG0(a) CSR_TYPE_RSL
108*4b8b8d74SJaiprakash Singh #define basename_ODY_IOBNX_CFG0(a) "IOBNX_CFG0"
109*4b8b8d74SJaiprakash Singh #define device_bar_ODY_IOBNX_CFG0(a) 0x0 /* PF_BAR0 */
110*4b8b8d74SJaiprakash Singh #define busnum_ODY_IOBNX_CFG0(a) (a)
111*4b8b8d74SJaiprakash Singh #define arguments_ODY_IOBNX_CFG0(a) (a), -1, -1, -1
112*4b8b8d74SJaiprakash Singh 
113*4b8b8d74SJaiprakash Singh /**
114*4b8b8d74SJaiprakash Singh  * Register (RSL) iobn#_cfg1
115*4b8b8d74SJaiprakash Singh  *
116*4b8b8d74SJaiprakash Singh  * IOBN General Configuration 1 Register
117*4b8b8d74SJaiprakash Singh  */
118*4b8b8d74SJaiprakash Singh union ody_iobnx_cfg1 {
119*4b8b8d74SJaiprakash Singh 	uint64_t u;
120*4b8b8d74SJaiprakash Singh 	struct ody_iobnx_cfg1_s {
121*4b8b8d74SJaiprakash Singh 		uint64_t force_rclk_cond_clk_en      : 1;
122*4b8b8d74SJaiprakash Singh 		uint64_t reserved_1_2                : 2;
123*4b8b8d74SJaiprakash Singh 		uint64_t tlb_sync_dis                : 1;
124*4b8b8d74SJaiprakash Singh 		uint64_t reserved_4_7                : 4;
125*4b8b8d74SJaiprakash Singh 		uint64_t mem_rtry_psize              : 4;
126*4b8b8d74SJaiprakash Singh 		uint64_t reserved_12_15              : 4;
127*4b8b8d74SJaiprakash Singh 		uint64_t smmu_rtry_psize             : 4;
128*4b8b8d74SJaiprakash Singh 		uint64_t eats_cache_dis              : 1;
129*4b8b8d74SJaiprakash Singh 		uint64_t utlb_clone_dis              : 1;
130*4b8b8d74SJaiprakash Singh 		uint64_t utlb_cam_evict_cnt          : 6;
131*4b8b8d74SJaiprakash Singh 		uint64_t reserved_28_63              : 36;
132*4b8b8d74SJaiprakash Singh 	} s;
133*4b8b8d74SJaiprakash Singh 	/* struct ody_iobnx_cfg1_s cn; */
134*4b8b8d74SJaiprakash Singh };
135*4b8b8d74SJaiprakash Singh typedef union ody_iobnx_cfg1 ody_iobnx_cfg1_t;
136*4b8b8d74SJaiprakash Singh 
137*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_CFG1(uint64_t a) __attribute__ ((pure, always_inline));
ODY_IOBNX_CFG1(uint64_t a)138*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_CFG1(uint64_t a)
139*4b8b8d74SJaiprakash Singh {
140*4b8b8d74SJaiprakash Singh 	if (a <= 4)
141*4b8b8d74SJaiprakash Singh 		return 0x87e120082010ll + 0x1000000ll * ((a) & 0x7);
142*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("IOBNX_CFG1", 1, a, 0, 0, 0, 0, 0);
143*4b8b8d74SJaiprakash Singh }
144*4b8b8d74SJaiprakash Singh 
145*4b8b8d74SJaiprakash Singh #define typedef_ODY_IOBNX_CFG1(a) ody_iobnx_cfg1_t
146*4b8b8d74SJaiprakash Singh #define bustype_ODY_IOBNX_CFG1(a) CSR_TYPE_RSL
147*4b8b8d74SJaiprakash Singh #define basename_ODY_IOBNX_CFG1(a) "IOBNX_CFG1"
148*4b8b8d74SJaiprakash Singh #define device_bar_ODY_IOBNX_CFG1(a) 0x0 /* PF_BAR0 */
149*4b8b8d74SJaiprakash Singh #define busnum_ODY_IOBNX_CFG1(a) (a)
150*4b8b8d74SJaiprakash Singh #define arguments_ODY_IOBNX_CFG1(a) (a), -1, -1, -1
151*4b8b8d74SJaiprakash Singh 
152*4b8b8d74SJaiprakash Singh /**
153*4b8b8d74SJaiprakash Singh  * Register (RSL) iobn#_const
154*4b8b8d74SJaiprakash Singh  *
155*4b8b8d74SJaiprakash Singh  * IOBN Constant Registers
156*4b8b8d74SJaiprakash Singh  * This register returns discovery information.
157*4b8b8d74SJaiprakash Singh  */
158*4b8b8d74SJaiprakash Singh union ody_iobnx_const {
159*4b8b8d74SJaiprakash Singh 	uint64_t u;
160*4b8b8d74SJaiprakash Singh 	struct ody_iobnx_const_s {
161*4b8b8d74SJaiprakash Singh 		uint64_t lsw_pres                    : 4;
162*4b8b8d74SJaiprakash Singh 		uint64_t reserved_4_7                : 4;
163*4b8b8d74SJaiprakash Singh 		uint64_t ncbs                        : 3;
164*4b8b8d74SJaiprakash Singh 		uint64_t reserved_11_15              : 5;
165*4b8b8d74SJaiprakash Singh 		uint64_t st_ncb_num                  : 4;
166*4b8b8d74SJaiprakash Singh 		uint64_t reserved_20_63              : 44;
167*4b8b8d74SJaiprakash Singh 	} s;
168*4b8b8d74SJaiprakash Singh 	/* struct ody_iobnx_const_s cn; */
169*4b8b8d74SJaiprakash Singh };
170*4b8b8d74SJaiprakash Singh typedef union ody_iobnx_const ody_iobnx_const_t;
171*4b8b8d74SJaiprakash Singh 
172*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_CONST(uint64_t a) __attribute__ ((pure, always_inline));
ODY_IOBNX_CONST(uint64_t a)173*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_CONST(uint64_t a)
174*4b8b8d74SJaiprakash Singh {
175*4b8b8d74SJaiprakash Singh 	if (a <= 4)
176*4b8b8d74SJaiprakash Singh 		return 0x87e120000000ll + 0x1000000ll * ((a) & 0x7);
177*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("IOBNX_CONST", 1, a, 0, 0, 0, 0, 0);
178*4b8b8d74SJaiprakash Singh }
179*4b8b8d74SJaiprakash Singh 
180*4b8b8d74SJaiprakash Singh #define typedef_ODY_IOBNX_CONST(a) ody_iobnx_const_t
181*4b8b8d74SJaiprakash Singh #define bustype_ODY_IOBNX_CONST(a) CSR_TYPE_RSL
182*4b8b8d74SJaiprakash Singh #define basename_ODY_IOBNX_CONST(a) "IOBNX_CONST"
183*4b8b8d74SJaiprakash Singh #define device_bar_ODY_IOBNX_CONST(a) 0x0 /* PF_BAR0 */
184*4b8b8d74SJaiprakash Singh #define busnum_ODY_IOBNX_CONST(a) (a)
185*4b8b8d74SJaiprakash Singh #define arguments_ODY_IOBNX_CONST(a) (a), -1, -1, -1
186*4b8b8d74SJaiprakash Singh 
187*4b8b8d74SJaiprakash Singh /**
188*4b8b8d74SJaiprakash Singh  * Register (RSL) iobn#_dom#_bus#_streams
189*4b8b8d74SJaiprakash Singh  *
190*4b8b8d74SJaiprakash Singh  * IOBN Domain Bus Permit Registers
191*4b8b8d74SJaiprakash Singh  * This register sets the permissions for a NCBI transaction (which are DMA
192*4b8b8d74SJaiprakash Singh  * transactions or MSI-X writes), for requests for NCB device virtual-functions
193*4b8b8d74SJaiprakash Singh  * and bridges.
194*4b8b8d74SJaiprakash Singh  *
195*4b8b8d74SJaiprakash Singh  * Index {b} corresponds to the stream's domain (stream_id\<21:16\>).
196*4b8b8d74SJaiprakash Singh  *
197*4b8b8d74SJaiprakash Singh  * Index {c} corresponds to the stream's bus number (stream_id\<15:8\>).
198*4b8b8d74SJaiprakash Singh  *
199*4b8b8d74SJaiprakash Singh  * For each combination of index {b} and {c}, each index {a} (the IOB number) must be
200*4b8b8d74SJaiprakash Singh  * programmed to the same value.
201*4b8b8d74SJaiprakash Singh  *
202*4b8b8d74SJaiprakash Singh  * Streams which hit index {c}=0x0 are also affected by IOBN_DOM()_DEV()_STREAMS.
203*4b8b8d74SJaiprakash Singh  * Streams which hit index {b}=PCC_DEV_CON_E::MRML\<21:16\>,
204*4b8b8d74SJaiprakash Singh  * {c}=PCC_DEV_CON_E::MRML\<15:8\> are also affected by IOBN_RSL()_STREAMS.
205*4b8b8d74SJaiprakash Singh  * Both of those alternative registers provide better granularity, so those indices
206*4b8b8d74SJaiprakash Singh  * into this register should be left permissive (value of 0x0).
207*4b8b8d74SJaiprakash Singh  */
208*4b8b8d74SJaiprakash Singh union ody_iobnx_domx_busx_streams {
209*4b8b8d74SJaiprakash Singh 	uint64_t u;
210*4b8b8d74SJaiprakash Singh 	struct ody_iobnx_domx_busx_streams_s {
211*4b8b8d74SJaiprakash Singh 		uint64_t phys_nsec                   : 1;
212*4b8b8d74SJaiprakash Singh 		uint64_t strm_nsec                   : 1;
213*4b8b8d74SJaiprakash Singh 		uint64_t reserved_2_63               : 62;
214*4b8b8d74SJaiprakash Singh 	} s;
215*4b8b8d74SJaiprakash Singh 	/* struct ody_iobnx_domx_busx_streams_s cn; */
216*4b8b8d74SJaiprakash Singh };
217*4b8b8d74SJaiprakash Singh typedef union ody_iobnx_domx_busx_streams ody_iobnx_domx_busx_streams_t;
218*4b8b8d74SJaiprakash Singh 
219*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_DOMX_BUSX_STREAMS(uint64_t a, uint64_t b, uint64_t c) __attribute__ ((pure, always_inline));
ODY_IOBNX_DOMX_BUSX_STREAMS(uint64_t a,uint64_t b,uint64_t c)220*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_DOMX_BUSX_STREAMS(uint64_t a, uint64_t b, uint64_t c)
221*4b8b8d74SJaiprakash Singh {
222*4b8b8d74SJaiprakash Singh 	if ((a <= 4) && (b <= 18) && (c <= 255))
223*4b8b8d74SJaiprakash Singh 		return 0x87e120040000ll + 0x1000000ll * ((a) & 0x7) + 0x800ll * ((b) & 0x1f) + 8ll * ((c) & 0xff);
224*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("IOBNX_DOMX_BUSX_STREAMS", 3, a, b, c, 0, 0, 0);
225*4b8b8d74SJaiprakash Singh }
226*4b8b8d74SJaiprakash Singh 
227*4b8b8d74SJaiprakash Singh #define typedef_ODY_IOBNX_DOMX_BUSX_STREAMS(a, b, c) ody_iobnx_domx_busx_streams_t
228*4b8b8d74SJaiprakash Singh #define bustype_ODY_IOBNX_DOMX_BUSX_STREAMS(a, b, c) CSR_TYPE_RSL
229*4b8b8d74SJaiprakash Singh #define basename_ODY_IOBNX_DOMX_BUSX_STREAMS(a, b, c) "IOBNX_DOMX_BUSX_STREAMS"
230*4b8b8d74SJaiprakash Singh #define device_bar_ODY_IOBNX_DOMX_BUSX_STREAMS(a, b, c) 0x0 /* PF_BAR0 */
231*4b8b8d74SJaiprakash Singh #define busnum_ODY_IOBNX_DOMX_BUSX_STREAMS(a, b, c) (a)
232*4b8b8d74SJaiprakash Singh #define arguments_ODY_IOBNX_DOMX_BUSX_STREAMS(a, b, c) (a), (b), (c), -1
233*4b8b8d74SJaiprakash Singh 
234*4b8b8d74SJaiprakash Singh /**
235*4b8b8d74SJaiprakash Singh  * Register (RSL) iobn#_dom#_dev#_streams
236*4b8b8d74SJaiprakash Singh  *
237*4b8b8d74SJaiprakash Singh  * IOBN Device Bus Permit Registers
238*4b8b8d74SJaiprakash Singh  * This register sets the permissions for a NCBI transaction (which are DMA
239*4b8b8d74SJaiprakash Singh  * transactions or MSI-X writes), for requests for NCB device physical-functions,
240*4b8b8d74SJaiprakash Singh  * i.e. those where:
241*4b8b8d74SJaiprakash Singh  *
242*4b8b8d74SJaiprakash Singh  *   _ stream_id\<15:8\> = 0x0.
243*4b8b8d74SJaiprakash Singh  *
244*4b8b8d74SJaiprakash Singh  * Index {a} corresponds to the stream's domain number (stream_id\<21:16\>).
245*4b8b8d74SJaiprakash Singh  *
246*4b8b8d74SJaiprakash Singh  * Index {b} corresponds to the non-ARI ECAM device number (stream_id\<7:3\>).
247*4b8b8d74SJaiprakash Singh  *
248*4b8b8d74SJaiprakash Singh  * For each combination of index {b} and {c}, each index {a} (the IOB number) must be
249*4b8b8d74SJaiprakash Singh  * programmed to the same value.
250*4b8b8d74SJaiprakash Singh  */
251*4b8b8d74SJaiprakash Singh union ody_iobnx_domx_devx_streams {
252*4b8b8d74SJaiprakash Singh 	uint64_t u;
253*4b8b8d74SJaiprakash Singh 	struct ody_iobnx_domx_devx_streams_s {
254*4b8b8d74SJaiprakash Singh 		uint64_t phys_nsec                   : 1;
255*4b8b8d74SJaiprakash Singh 		uint64_t strm_nsec                   : 1;
256*4b8b8d74SJaiprakash Singh 		uint64_t reserved_2_63               : 62;
257*4b8b8d74SJaiprakash Singh 	} s;
258*4b8b8d74SJaiprakash Singh 	/* struct ody_iobnx_domx_devx_streams_s cn; */
259*4b8b8d74SJaiprakash Singh };
260*4b8b8d74SJaiprakash Singh typedef union ody_iobnx_domx_devx_streams ody_iobnx_domx_devx_streams_t;
261*4b8b8d74SJaiprakash Singh 
262*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_DOMX_DEVX_STREAMS(uint64_t a, uint64_t b, uint64_t c) __attribute__ ((pure, always_inline));
ODY_IOBNX_DOMX_DEVX_STREAMS(uint64_t a,uint64_t b,uint64_t c)263*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_DOMX_DEVX_STREAMS(uint64_t a, uint64_t b, uint64_t c)
264*4b8b8d74SJaiprakash Singh {
265*4b8b8d74SJaiprakash Singh 	if ((a <= 4) && (b <= 18) && (c <= 31))
266*4b8b8d74SJaiprakash Singh 		return 0x87e120010000ll + 0x1000000ll * ((a) & 0x7) + 0x100ll * ((b) & 0x1f) + 8ll * ((c) & 0x1f);
267*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("IOBNX_DOMX_DEVX_STREAMS", 3, a, b, c, 0, 0, 0);
268*4b8b8d74SJaiprakash Singh }
269*4b8b8d74SJaiprakash Singh 
270*4b8b8d74SJaiprakash Singh #define typedef_ODY_IOBNX_DOMX_DEVX_STREAMS(a, b, c) ody_iobnx_domx_devx_streams_t
271*4b8b8d74SJaiprakash Singh #define bustype_ODY_IOBNX_DOMX_DEVX_STREAMS(a, b, c) CSR_TYPE_RSL
272*4b8b8d74SJaiprakash Singh #define basename_ODY_IOBNX_DOMX_DEVX_STREAMS(a, b, c) "IOBNX_DOMX_DEVX_STREAMS"
273*4b8b8d74SJaiprakash Singh #define device_bar_ODY_IOBNX_DOMX_DEVX_STREAMS(a, b, c) 0x0 /* PF_BAR0 */
274*4b8b8d74SJaiprakash Singh #define busnum_ODY_IOBNX_DOMX_DEVX_STREAMS(a, b, c) (a)
275*4b8b8d74SJaiprakash Singh #define arguments_ODY_IOBNX_DOMX_DEVX_STREAMS(a, b, c) (a), (b), (c), -1
276*4b8b8d74SJaiprakash Singh 
277*4b8b8d74SJaiprakash Singh /**
278*4b8b8d74SJaiprakash Singh  * Register (RSL) iobn#_ecam_dom#_dev#_permit
279*4b8b8d74SJaiprakash Singh  *
280*4b8b8d74SJaiprakash Singh  * IOBN ECAM Domain Device Permit Registers
281*4b8b8d74SJaiprakash Singh  * Program identically to ECAM_DOM()_DEV()_PERMIT.
282*4b8b8d74SJaiprakash Singh  *
283*4b8b8d74SJaiprakash Singh  * This register sets the permissions for a ECAM access  (derived from request address) to NCBO
284*4b8b8d74SJaiprakash Singh  * for a request from an IO device.
285*4b8b8d74SJaiprakash Singh  * Index {a} corresponds to the domain, addr[32:28].
286*4b8b8d74SJaiprakash Singh  * Index {b} corresponds to the dev, addr[19:15].
287*4b8b8d74SJaiprakash Singh  * If ECAM access resuts in a failure a response will be returned and where required data
288*4b8b8d74SJaiprakash Singh  * with a value of all 1's and FAULT == 0 (MESH, CHI_RESPERR_OK).
289*4b8b8d74SJaiprakash Singh  *
290*4b8b8d74SJaiprakash Singh  * If IOBN_CONST.UNIMP_REG is set this register is not implemented.
291*4b8b8d74SJaiprakash Singh  * Reads will respond with zero and writes will be ignored.
292*4b8b8d74SJaiprakash Singh  */
293*4b8b8d74SJaiprakash Singh union ody_iobnx_ecam_domx_devx_permit {
294*4b8b8d74SJaiprakash Singh 	uint64_t u;
295*4b8b8d74SJaiprakash Singh 	struct ody_iobnx_ecam_domx_devx_permit_s {
296*4b8b8d74SJaiprakash Singh 		uint64_t sec_dis                     : 1;
297*4b8b8d74SJaiprakash Singh 		uint64_t nsec_dis                    : 1;
298*4b8b8d74SJaiprakash Singh 		uint64_t xcp0_dis                    : 1;
299*4b8b8d74SJaiprakash Singh 		uint64_t xcp1_dis                    : 1;
300*4b8b8d74SJaiprakash Singh 		uint64_t xcp2_dis                    : 1;
301*4b8b8d74SJaiprakash Singh 		uint64_t reserved_5_6                : 2;
302*4b8b8d74SJaiprakash Singh 		uint64_t kill                        : 1;
303*4b8b8d74SJaiprakash Singh 		uint64_t lock                        : 1;
304*4b8b8d74SJaiprakash Singh 		uint64_t reserved_9_63               : 55;
305*4b8b8d74SJaiprakash Singh 	} s;
306*4b8b8d74SJaiprakash Singh 	/* struct ody_iobnx_ecam_domx_devx_permit_s cn; */
307*4b8b8d74SJaiprakash Singh };
308*4b8b8d74SJaiprakash Singh typedef union ody_iobnx_ecam_domx_devx_permit ody_iobnx_ecam_domx_devx_permit_t;
309*4b8b8d74SJaiprakash Singh 
310*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_ECAM_DOMX_DEVX_PERMIT(uint64_t a, uint64_t b, uint64_t c) __attribute__ ((pure, always_inline));
ODY_IOBNX_ECAM_DOMX_DEVX_PERMIT(uint64_t a,uint64_t b,uint64_t c)311*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_ECAM_DOMX_DEVX_PERMIT(uint64_t a, uint64_t b, uint64_t c)
312*4b8b8d74SJaiprakash Singh {
313*4b8b8d74SJaiprakash Singh 	if ((a <= 4) && (b <= 18) && (c <= 31))
314*4b8b8d74SJaiprakash Singh 		return 0x87e1200e0000ll + 0x1000000ll * ((a) & 0x7) + 0x800ll * ((b) & 0x1f) + 8ll * ((c) & 0x1f);
315*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("IOBNX_ECAM_DOMX_DEVX_PERMIT", 3, a, b, c, 0, 0, 0);
316*4b8b8d74SJaiprakash Singh }
317*4b8b8d74SJaiprakash Singh 
318*4b8b8d74SJaiprakash Singh #define typedef_ODY_IOBNX_ECAM_DOMX_DEVX_PERMIT(a, b, c) ody_iobnx_ecam_domx_devx_permit_t
319*4b8b8d74SJaiprakash Singh #define bustype_ODY_IOBNX_ECAM_DOMX_DEVX_PERMIT(a, b, c) CSR_TYPE_RSL
320*4b8b8d74SJaiprakash Singh #define basename_ODY_IOBNX_ECAM_DOMX_DEVX_PERMIT(a, b, c) "IOBNX_ECAM_DOMX_DEVX_PERMIT"
321*4b8b8d74SJaiprakash Singh #define device_bar_ODY_IOBNX_ECAM_DOMX_DEVX_PERMIT(a, b, c) 0x0 /* PF_BAR0 */
322*4b8b8d74SJaiprakash Singh #define busnum_ODY_IOBNX_ECAM_DOMX_DEVX_PERMIT(a, b, c) (a)
323*4b8b8d74SJaiprakash Singh #define arguments_ODY_IOBNX_ECAM_DOMX_DEVX_PERMIT(a, b, c) (a), (b), (c), -1
324*4b8b8d74SJaiprakash Singh 
325*4b8b8d74SJaiprakash Singh /**
326*4b8b8d74SJaiprakash Singh  * Register (RSL) iobn#_err_ena
327*4b8b8d74SJaiprakash Singh  *
328*4b8b8d74SJaiprakash Singh  * IOBN Error Enable Register
329*4b8b8d74SJaiprakash Singh  * Controls what errors are logged into IOBN_INB_ERR_STATUS and IOBN_OUTB_ERR_STATUS registers.
330*4b8b8d74SJaiprakash Singh  */
331*4b8b8d74SJaiprakash Singh union ody_iobnx_err_ena {
332*4b8b8d74SJaiprakash Singh 	uint64_t u;
333*4b8b8d74SJaiprakash Singh 	struct ody_iobnx_err_ena_s {
334*4b8b8d74SJaiprakash Singh 		uint64_t inb_err_enb                 : 2;
335*4b8b8d74SJaiprakash Singh 		uint64_t reserved_2_7                : 6;
336*4b8b8d74SJaiprakash Singh 		uint64_t outb_err_enb                : 5;
337*4b8b8d74SJaiprakash Singh 		uint64_t reserved_13_63              : 51;
338*4b8b8d74SJaiprakash Singh 	} s;
339*4b8b8d74SJaiprakash Singh 	/* struct ody_iobnx_err_ena_s cn; */
340*4b8b8d74SJaiprakash Singh };
341*4b8b8d74SJaiprakash Singh typedef union ody_iobnx_err_ena ody_iobnx_err_ena_t;
342*4b8b8d74SJaiprakash Singh 
343*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_ERR_ENA(uint64_t a) __attribute__ ((pure, always_inline));
ODY_IOBNX_ERR_ENA(uint64_t a)344*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_ERR_ENA(uint64_t a)
345*4b8b8d74SJaiprakash Singh {
346*4b8b8d74SJaiprakash Singh 	if (a <= 4)
347*4b8b8d74SJaiprakash Singh 		return 0x87e120083080ll + 0x1000000ll * ((a) & 0x7);
348*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("IOBNX_ERR_ENA", 1, a, 0, 0, 0, 0, 0);
349*4b8b8d74SJaiprakash Singh }
350*4b8b8d74SJaiprakash Singh 
351*4b8b8d74SJaiprakash Singh #define typedef_ODY_IOBNX_ERR_ENA(a) ody_iobnx_err_ena_t
352*4b8b8d74SJaiprakash Singh #define bustype_ODY_IOBNX_ERR_ENA(a) CSR_TYPE_RSL
353*4b8b8d74SJaiprakash Singh #define basename_ODY_IOBNX_ERR_ENA(a) "IOBNX_ERR_ENA"
354*4b8b8d74SJaiprakash Singh #define device_bar_ODY_IOBNX_ERR_ENA(a) 0x0 /* PF_BAR0 */
355*4b8b8d74SJaiprakash Singh #define busnum_ODY_IOBNX_ERR_ENA(a) (a)
356*4b8b8d74SJaiprakash Singh #define arguments_ODY_IOBNX_ERR_ENA(a) (a), -1, -1, -1
357*4b8b8d74SJaiprakash Singh 
358*4b8b8d74SJaiprakash Singh /**
359*4b8b8d74SJaiprakash Singh  * Register (RSL) iobn#_inb_err_status
360*4b8b8d74SJaiprakash Singh  *
361*4b8b8d74SJaiprakash Singh  * IOBN In Bound Error Status Register
362*4b8b8d74SJaiprakash Singh  * Inbound error status register logs first error detected on inbound control path.
363*4b8b8d74SJaiprakash Singh  */
364*4b8b8d74SJaiprakash Singh union ody_iobnx_inb_err_status {
365*4b8b8d74SJaiprakash Singh 	uint64_t u;
366*4b8b8d74SJaiprakash Singh 	struct ody_iobnx_inb_err_status_s {
367*4b8b8d74SJaiprakash Singh 		uint64_t err_type                    : 2;
368*4b8b8d74SJaiprakash Singh 		uint64_t reserved_2_11               : 10;
369*4b8b8d74SJaiprakash Singh 		uint64_t address                     : 40;
370*4b8b8d74SJaiprakash Singh 		uint64_t reserved_52_55              : 4;
371*4b8b8d74SJaiprakash Singh 		uint64_t arbid                       : 4;
372*4b8b8d74SJaiprakash Singh 		uint64_t reserved_60_63              : 4;
373*4b8b8d74SJaiprakash Singh 	} s;
374*4b8b8d74SJaiprakash Singh 	/* struct ody_iobnx_inb_err_status_s cn; */
375*4b8b8d74SJaiprakash Singh };
376*4b8b8d74SJaiprakash Singh typedef union ody_iobnx_inb_err_status ody_iobnx_inb_err_status_t;
377*4b8b8d74SJaiprakash Singh 
378*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_INB_ERR_STATUS(uint64_t a) __attribute__ ((pure, always_inline));
ODY_IOBNX_INB_ERR_STATUS(uint64_t a)379*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_INB_ERR_STATUS(uint64_t a)
380*4b8b8d74SJaiprakash Singh {
381*4b8b8d74SJaiprakash Singh 	if (a <= 4)
382*4b8b8d74SJaiprakash Singh 		return 0x87e120083088ll + 0x1000000ll * ((a) & 0x7);
383*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("IOBNX_INB_ERR_STATUS", 1, a, 0, 0, 0, 0, 0);
384*4b8b8d74SJaiprakash Singh }
385*4b8b8d74SJaiprakash Singh 
386*4b8b8d74SJaiprakash Singh #define typedef_ODY_IOBNX_INB_ERR_STATUS(a) ody_iobnx_inb_err_status_t
387*4b8b8d74SJaiprakash Singh #define bustype_ODY_IOBNX_INB_ERR_STATUS(a) CSR_TYPE_RSL
388*4b8b8d74SJaiprakash Singh #define basename_ODY_IOBNX_INB_ERR_STATUS(a) "IOBNX_INB_ERR_STATUS"
389*4b8b8d74SJaiprakash Singh #define device_bar_ODY_IOBNX_INB_ERR_STATUS(a) 0x0 /* PF_BAR0 */
390*4b8b8d74SJaiprakash Singh #define busnum_ODY_IOBNX_INB_ERR_STATUS(a) (a)
391*4b8b8d74SJaiprakash Singh #define arguments_ODY_IOBNX_INB_ERR_STATUS(a) (a), -1, -1, -1
392*4b8b8d74SJaiprakash Singh 
393*4b8b8d74SJaiprakash Singh /**
394*4b8b8d74SJaiprakash Singh  * Register (RSL) iobn#_inb_mesh_throttle
395*4b8b8d74SJaiprakash Singh  *
396*4b8b8d74SJaiprakash Singh  * IOBN Inbound Mesh Throttle Register
397*4b8b8d74SJaiprakash Singh  * Controls the rate of TX_REQ sent to the MESH.
398*4b8b8d74SJaiprakash Singh  * Rate is dynamically controlled by ARM CHI CBUSY messages. Absolute min rate is 1
399*4b8b8d74SJaiprakash Singh  * every 16 cycles. Max rate is 16 every 16 cycles.
400*4b8b8d74SJaiprakash Singh  * Decrease TX_REQ rate if more than THRESH of the last WINDOW reponses contain CBUSY==3.
401*4b8b8d74SJaiprakash Singh  * Increase TX_REQ rate if more than THRESH of the last WINDOW reponses contain CBUSY \<2.
402*4b8b8d74SJaiprakash Singh  */
403*4b8b8d74SJaiprakash Singh union ody_iobnx_inb_mesh_throttle {
404*4b8b8d74SJaiprakash Singh 	uint64_t u;
405*4b8b8d74SJaiprakash Singh 	struct ody_iobnx_inb_mesh_throttle_s {
406*4b8b8d74SJaiprakash Singh 		uint64_t ena                         : 1;
407*4b8b8d74SJaiprakash Singh 		uint64_t reserved_1_3                : 3;
408*4b8b8d74SJaiprakash Singh 		uint64_t incr                        : 2;
409*4b8b8d74SJaiprakash Singh 		uint64_t decr                        : 2;
410*4b8b8d74SJaiprakash Singh 		uint64_t thresh                      : 2;
411*4b8b8d74SJaiprakash Singh 		uint64_t window                      : 2;
412*4b8b8d74SJaiprakash Singh 		uint64_t min_rate                    : 4;
413*4b8b8d74SJaiprakash Singh 		uint64_t max_rate                    : 4;
414*4b8b8d74SJaiprakash Singh 		uint64_t timeout                     : 4;
415*4b8b8d74SJaiprakash Singh 		uint64_t reserved_24_63              : 40;
416*4b8b8d74SJaiprakash Singh 	} s;
417*4b8b8d74SJaiprakash Singh 	/* struct ody_iobnx_inb_mesh_throttle_s cn; */
418*4b8b8d74SJaiprakash Singh };
419*4b8b8d74SJaiprakash Singh typedef union ody_iobnx_inb_mesh_throttle ody_iobnx_inb_mesh_throttle_t;
420*4b8b8d74SJaiprakash Singh 
421*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_INB_MESH_THROTTLE(uint64_t a) __attribute__ ((pure, always_inline));
ODY_IOBNX_INB_MESH_THROTTLE(uint64_t a)422*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_INB_MESH_THROTTLE(uint64_t a)
423*4b8b8d74SJaiprakash Singh {
424*4b8b8d74SJaiprakash Singh 	if (a <= 4)
425*4b8b8d74SJaiprakash Singh 		return 0x87e120082200ll + 0x1000000ll * ((a) & 0x7);
426*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("IOBNX_INB_MESH_THROTTLE", 1, a, 0, 0, 0, 0, 0);
427*4b8b8d74SJaiprakash Singh }
428*4b8b8d74SJaiprakash Singh 
429*4b8b8d74SJaiprakash Singh #define typedef_ODY_IOBNX_INB_MESH_THROTTLE(a) ody_iobnx_inb_mesh_throttle_t
430*4b8b8d74SJaiprakash Singh #define bustype_ODY_IOBNX_INB_MESH_THROTTLE(a) CSR_TYPE_RSL
431*4b8b8d74SJaiprakash Singh #define basename_ODY_IOBNX_INB_MESH_THROTTLE(a) "IOBNX_INB_MESH_THROTTLE"
432*4b8b8d74SJaiprakash Singh #define device_bar_ODY_IOBNX_INB_MESH_THROTTLE(a) 0x0 /* PF_BAR0 */
433*4b8b8d74SJaiprakash Singh #define busnum_ODY_IOBNX_INB_MESH_THROTTLE(a) (a)
434*4b8b8d74SJaiprakash Singh #define arguments_ODY_IOBNX_INB_MESH_THROTTLE(a) (a), -1, -1, -1
435*4b8b8d74SJaiprakash Singh 
436*4b8b8d74SJaiprakash Singh /**
437*4b8b8d74SJaiprakash Singh  * Register (RSL) iobn#_int_ena_w1c
438*4b8b8d74SJaiprakash Singh  *
439*4b8b8d74SJaiprakash Singh  * IOBN Interrupt Enable Clear Register
440*4b8b8d74SJaiprakash Singh  * This register clears interrupt enable bits.
441*4b8b8d74SJaiprakash Singh  */
442*4b8b8d74SJaiprakash Singh union ody_iobnx_int_ena_w1c {
443*4b8b8d74SJaiprakash Singh 	uint64_t u;
444*4b8b8d74SJaiprakash Singh 	struct ody_iobnx_int_ena_w1c_s {
445*4b8b8d74SJaiprakash Singh 		uint64_t ncbo_to                     : 4;
446*4b8b8d74SJaiprakash Singh 		uint64_t ncbo_ncb_psn                : 4;
447*4b8b8d74SJaiprakash Singh 		uint64_t ncbi_unexp_cr               : 4;
448*4b8b8d74SJaiprakash Singh 		uint64_t ncbo_pois_cr                : 4;
449*4b8b8d74SJaiprakash Singh 		uint64_t ncbo_flt_cr                 : 4;
450*4b8b8d74SJaiprakash Singh 		uint64_t msh_dat_dbe                 : 1;
451*4b8b8d74SJaiprakash Singh 		uint64_t msh_dat_sbe                 : 1;
452*4b8b8d74SJaiprakash Singh 		uint64_t reserved_22_23              : 2;
453*4b8b8d74SJaiprakash Singh 		uint64_t msh_dat_chk                 : 1;
454*4b8b8d74SJaiprakash Singh 		uint64_t msh_req_chk                 : 1;
455*4b8b8d74SJaiprakash Singh 		uint64_t msh_snp_chk                 : 1;
456*4b8b8d74SJaiprakash Singh 		uint64_t msh_rsp_chk                 : 1;
457*4b8b8d74SJaiprakash Singh 		uint64_t msh_dat1_chk                : 1;
458*4b8b8d74SJaiprakash Singh 		uint64_t msh_rsp1_chk                : 1;
459*4b8b8d74SJaiprakash Singh 		uint64_t msh_smmu_psn                : 1;
460*4b8b8d74SJaiprakash Singh 		uint64_t msh_dato_dbe                : 1;
461*4b8b8d74SJaiprakash Singh 		uint64_t msh_dato_sbe                : 1;
462*4b8b8d74SJaiprakash Singh 		uint64_t reserved_33_63              : 31;
463*4b8b8d74SJaiprakash Singh 	} s;
464*4b8b8d74SJaiprakash Singh 	/* struct ody_iobnx_int_ena_w1c_s cn; */
465*4b8b8d74SJaiprakash Singh };
466*4b8b8d74SJaiprakash Singh typedef union ody_iobnx_int_ena_w1c ody_iobnx_int_ena_w1c_t;
467*4b8b8d74SJaiprakash Singh 
468*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_INT_ENA_W1C(uint64_t a) __attribute__ ((pure, always_inline));
ODY_IOBNX_INT_ENA_W1C(uint64_t a)469*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_INT_ENA_W1C(uint64_t a)
470*4b8b8d74SJaiprakash Singh {
471*4b8b8d74SJaiprakash Singh 	if (a <= 4)
472*4b8b8d74SJaiprakash Singh 		return 0x87e120088000ll + 0x1000000ll * ((a) & 0x7);
473*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("IOBNX_INT_ENA_W1C", 1, a, 0, 0, 0, 0, 0);
474*4b8b8d74SJaiprakash Singh }
475*4b8b8d74SJaiprakash Singh 
476*4b8b8d74SJaiprakash Singh #define typedef_ODY_IOBNX_INT_ENA_W1C(a) ody_iobnx_int_ena_w1c_t
477*4b8b8d74SJaiprakash Singh #define bustype_ODY_IOBNX_INT_ENA_W1C(a) CSR_TYPE_RSL
478*4b8b8d74SJaiprakash Singh #define basename_ODY_IOBNX_INT_ENA_W1C(a) "IOBNX_INT_ENA_W1C"
479*4b8b8d74SJaiprakash Singh #define device_bar_ODY_IOBNX_INT_ENA_W1C(a) 0x0 /* PF_BAR0 */
480*4b8b8d74SJaiprakash Singh #define busnum_ODY_IOBNX_INT_ENA_W1C(a) (a)
481*4b8b8d74SJaiprakash Singh #define arguments_ODY_IOBNX_INT_ENA_W1C(a) (a), -1, -1, -1
482*4b8b8d74SJaiprakash Singh 
483*4b8b8d74SJaiprakash Singh /**
484*4b8b8d74SJaiprakash Singh  * Register (RSL) iobn#_int_ena_w1s
485*4b8b8d74SJaiprakash Singh  *
486*4b8b8d74SJaiprakash Singh  * IOBN Interrupt Enable Set Register
487*4b8b8d74SJaiprakash Singh  * This register sets interrupt enable bits.
488*4b8b8d74SJaiprakash Singh  */
489*4b8b8d74SJaiprakash Singh union ody_iobnx_int_ena_w1s {
490*4b8b8d74SJaiprakash Singh 	uint64_t u;
491*4b8b8d74SJaiprakash Singh 	struct ody_iobnx_int_ena_w1s_s {
492*4b8b8d74SJaiprakash Singh 		uint64_t ncbo_to                     : 4;
493*4b8b8d74SJaiprakash Singh 		uint64_t ncbo_ncb_psn                : 4;
494*4b8b8d74SJaiprakash Singh 		uint64_t ncbi_unexp_cr               : 4;
495*4b8b8d74SJaiprakash Singh 		uint64_t ncbo_pois_cr                : 4;
496*4b8b8d74SJaiprakash Singh 		uint64_t ncbo_flt_cr                 : 4;
497*4b8b8d74SJaiprakash Singh 		uint64_t msh_dat_dbe                 : 1;
498*4b8b8d74SJaiprakash Singh 		uint64_t msh_dat_sbe                 : 1;
499*4b8b8d74SJaiprakash Singh 		uint64_t reserved_22_23              : 2;
500*4b8b8d74SJaiprakash Singh 		uint64_t msh_dat_chk                 : 1;
501*4b8b8d74SJaiprakash Singh 		uint64_t msh_req_chk                 : 1;
502*4b8b8d74SJaiprakash Singh 		uint64_t msh_snp_chk                 : 1;
503*4b8b8d74SJaiprakash Singh 		uint64_t msh_rsp_chk                 : 1;
504*4b8b8d74SJaiprakash Singh 		uint64_t msh_dat1_chk                : 1;
505*4b8b8d74SJaiprakash Singh 		uint64_t msh_rsp1_chk                : 1;
506*4b8b8d74SJaiprakash Singh 		uint64_t msh_smmu_psn                : 1;
507*4b8b8d74SJaiprakash Singh 		uint64_t msh_dato_dbe                : 1;
508*4b8b8d74SJaiprakash Singh 		uint64_t msh_dato_sbe                : 1;
509*4b8b8d74SJaiprakash Singh 		uint64_t reserved_33_63              : 31;
510*4b8b8d74SJaiprakash Singh 	} s;
511*4b8b8d74SJaiprakash Singh 	/* struct ody_iobnx_int_ena_w1s_s cn; */
512*4b8b8d74SJaiprakash Singh };
513*4b8b8d74SJaiprakash Singh typedef union ody_iobnx_int_ena_w1s ody_iobnx_int_ena_w1s_t;
514*4b8b8d74SJaiprakash Singh 
515*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_INT_ENA_W1S(uint64_t a) __attribute__ ((pure, always_inline));
ODY_IOBNX_INT_ENA_W1S(uint64_t a)516*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_INT_ENA_W1S(uint64_t a)
517*4b8b8d74SJaiprakash Singh {
518*4b8b8d74SJaiprakash Singh 	if (a <= 4)
519*4b8b8d74SJaiprakash Singh 		return 0x87e120089000ll + 0x1000000ll * ((a) & 0x7);
520*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("IOBNX_INT_ENA_W1S", 1, a, 0, 0, 0, 0, 0);
521*4b8b8d74SJaiprakash Singh }
522*4b8b8d74SJaiprakash Singh 
523*4b8b8d74SJaiprakash Singh #define typedef_ODY_IOBNX_INT_ENA_W1S(a) ody_iobnx_int_ena_w1s_t
524*4b8b8d74SJaiprakash Singh #define bustype_ODY_IOBNX_INT_ENA_W1S(a) CSR_TYPE_RSL
525*4b8b8d74SJaiprakash Singh #define basename_ODY_IOBNX_INT_ENA_W1S(a) "IOBNX_INT_ENA_W1S"
526*4b8b8d74SJaiprakash Singh #define device_bar_ODY_IOBNX_INT_ENA_W1S(a) 0x0 /* PF_BAR0 */
527*4b8b8d74SJaiprakash Singh #define busnum_ODY_IOBNX_INT_ENA_W1S(a) (a)
528*4b8b8d74SJaiprakash Singh #define arguments_ODY_IOBNX_INT_ENA_W1S(a) (a), -1, -1, -1
529*4b8b8d74SJaiprakash Singh 
530*4b8b8d74SJaiprakash Singh /**
531*4b8b8d74SJaiprakash Singh  * Register (RSL) iobn#_int_sum
532*4b8b8d74SJaiprakash Singh  *
533*4b8b8d74SJaiprakash Singh  * IOBN Interrupt Summary Register
534*4b8b8d74SJaiprakash Singh  * This register contains the different interrupt-summary bits of the IOBN.
535*4b8b8d74SJaiprakash Singh  * Bits in this register are RAS related events, that are expected to be routed to the SCP.
536*4b8b8d74SJaiprakash Singh  */
537*4b8b8d74SJaiprakash Singh union ody_iobnx_int_sum {
538*4b8b8d74SJaiprakash Singh 	uint64_t u;
539*4b8b8d74SJaiprakash Singh 	struct ody_iobnx_int_sum_s {
540*4b8b8d74SJaiprakash Singh 		uint64_t ncbo_to                     : 4;
541*4b8b8d74SJaiprakash Singh 		uint64_t ncbo_ncb_psn                : 4;
542*4b8b8d74SJaiprakash Singh 		uint64_t ncbi_unexp_cr               : 4;
543*4b8b8d74SJaiprakash Singh 		uint64_t ncbo_pois_cr                : 4;
544*4b8b8d74SJaiprakash Singh 		uint64_t ncbo_flt_cr                 : 4;
545*4b8b8d74SJaiprakash Singh 		uint64_t msh_dat_dbe                 : 1;
546*4b8b8d74SJaiprakash Singh 		uint64_t msh_dat_sbe                 : 1;
547*4b8b8d74SJaiprakash Singh 		uint64_t reserved_22_23              : 2;
548*4b8b8d74SJaiprakash Singh 		uint64_t msh_dat_chk                 : 1;
549*4b8b8d74SJaiprakash Singh 		uint64_t msh_req_chk                 : 1;
550*4b8b8d74SJaiprakash Singh 		uint64_t msh_snp_chk                 : 1;
551*4b8b8d74SJaiprakash Singh 		uint64_t msh_rsp_chk                 : 1;
552*4b8b8d74SJaiprakash Singh 		uint64_t msh_dat1_chk                : 1;
553*4b8b8d74SJaiprakash Singh 		uint64_t msh_rsp1_chk                : 1;
554*4b8b8d74SJaiprakash Singh 		uint64_t msh_smmu_psn                : 1;
555*4b8b8d74SJaiprakash Singh 		uint64_t msh_dato_dbe                : 1;
556*4b8b8d74SJaiprakash Singh 		uint64_t msh_dato_sbe                : 1;
557*4b8b8d74SJaiprakash Singh 		uint64_t reserved_33_63              : 31;
558*4b8b8d74SJaiprakash Singh 	} s;
559*4b8b8d74SJaiprakash Singh 	/* struct ody_iobnx_int_sum_s cn; */
560*4b8b8d74SJaiprakash Singh };
561*4b8b8d74SJaiprakash Singh typedef union ody_iobnx_int_sum ody_iobnx_int_sum_t;
562*4b8b8d74SJaiprakash Singh 
563*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_INT_SUM(uint64_t a) __attribute__ ((pure, always_inline));
ODY_IOBNX_INT_SUM(uint64_t a)564*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_INT_SUM(uint64_t a)
565*4b8b8d74SJaiprakash Singh {
566*4b8b8d74SJaiprakash Singh 	if (a <= 4)
567*4b8b8d74SJaiprakash Singh 		return 0x87e120086000ll + 0x1000000ll * ((a) & 0x7);
568*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("IOBNX_INT_SUM", 1, a, 0, 0, 0, 0, 0);
569*4b8b8d74SJaiprakash Singh }
570*4b8b8d74SJaiprakash Singh 
571*4b8b8d74SJaiprakash Singh #define typedef_ODY_IOBNX_INT_SUM(a) ody_iobnx_int_sum_t
572*4b8b8d74SJaiprakash Singh #define bustype_ODY_IOBNX_INT_SUM(a) CSR_TYPE_RSL
573*4b8b8d74SJaiprakash Singh #define basename_ODY_IOBNX_INT_SUM(a) "IOBNX_INT_SUM"
574*4b8b8d74SJaiprakash Singh #define device_bar_ODY_IOBNX_INT_SUM(a) 0x0 /* PF_BAR0 */
575*4b8b8d74SJaiprakash Singh #define busnum_ODY_IOBNX_INT_SUM(a) (a)
576*4b8b8d74SJaiprakash Singh #define arguments_ODY_IOBNX_INT_SUM(a) (a), -1, -1, -1
577*4b8b8d74SJaiprakash Singh 
578*4b8b8d74SJaiprakash Singh /**
579*4b8b8d74SJaiprakash Singh  * Register (RSL) iobn#_int_sum_w1s
580*4b8b8d74SJaiprakash Singh  *
581*4b8b8d74SJaiprakash Singh  * IOBN Interrupt Set Register
582*4b8b8d74SJaiprakash Singh  * This register sets interrupt bits.
583*4b8b8d74SJaiprakash Singh  */
584*4b8b8d74SJaiprakash Singh union ody_iobnx_int_sum_w1s {
585*4b8b8d74SJaiprakash Singh 	uint64_t u;
586*4b8b8d74SJaiprakash Singh 	struct ody_iobnx_int_sum_w1s_s {
587*4b8b8d74SJaiprakash Singh 		uint64_t ncbo_to                     : 4;
588*4b8b8d74SJaiprakash Singh 		uint64_t ncbo_ncb_psn                : 4;
589*4b8b8d74SJaiprakash Singh 		uint64_t ncbi_unexp_cr               : 4;
590*4b8b8d74SJaiprakash Singh 		uint64_t ncbo_pois_cr                : 4;
591*4b8b8d74SJaiprakash Singh 		uint64_t ncbo_flt_cr                 : 4;
592*4b8b8d74SJaiprakash Singh 		uint64_t msh_dat_dbe                 : 1;
593*4b8b8d74SJaiprakash Singh 		uint64_t msh_dat_sbe                 : 1;
594*4b8b8d74SJaiprakash Singh 		uint64_t reserved_22_23              : 2;
595*4b8b8d74SJaiprakash Singh 		uint64_t msh_dat_chk                 : 1;
596*4b8b8d74SJaiprakash Singh 		uint64_t msh_req_chk                 : 1;
597*4b8b8d74SJaiprakash Singh 		uint64_t msh_snp_chk                 : 1;
598*4b8b8d74SJaiprakash Singh 		uint64_t msh_rsp_chk                 : 1;
599*4b8b8d74SJaiprakash Singh 		uint64_t msh_dat1_chk                : 1;
600*4b8b8d74SJaiprakash Singh 		uint64_t msh_rsp1_chk                : 1;
601*4b8b8d74SJaiprakash Singh 		uint64_t msh_smmu_psn                : 1;
602*4b8b8d74SJaiprakash Singh 		uint64_t msh_dato_dbe                : 1;
603*4b8b8d74SJaiprakash Singh 		uint64_t msh_dato_sbe                : 1;
604*4b8b8d74SJaiprakash Singh 		uint64_t reserved_33_63              : 31;
605*4b8b8d74SJaiprakash Singh 	} s;
606*4b8b8d74SJaiprakash Singh 	/* struct ody_iobnx_int_sum_w1s_s cn; */
607*4b8b8d74SJaiprakash Singh };
608*4b8b8d74SJaiprakash Singh typedef union ody_iobnx_int_sum_w1s ody_iobnx_int_sum_w1s_t;
609*4b8b8d74SJaiprakash Singh 
610*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_INT_SUM_W1S(uint64_t a) __attribute__ ((pure, always_inline));
ODY_IOBNX_INT_SUM_W1S(uint64_t a)611*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_INT_SUM_W1S(uint64_t a)
612*4b8b8d74SJaiprakash Singh {
613*4b8b8d74SJaiprakash Singh 	if (a <= 4)
614*4b8b8d74SJaiprakash Singh 		return 0x87e120087000ll + 0x1000000ll * ((a) & 0x7);
615*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("IOBNX_INT_SUM_W1S", 1, a, 0, 0, 0, 0, 0);
616*4b8b8d74SJaiprakash Singh }
617*4b8b8d74SJaiprakash Singh 
618*4b8b8d74SJaiprakash Singh #define typedef_ODY_IOBNX_INT_SUM_W1S(a) ody_iobnx_int_sum_w1s_t
619*4b8b8d74SJaiprakash Singh #define bustype_ODY_IOBNX_INT_SUM_W1S(a) CSR_TYPE_RSL
620*4b8b8d74SJaiprakash Singh #define basename_ODY_IOBNX_INT_SUM_W1S(a) "IOBNX_INT_SUM_W1S"
621*4b8b8d74SJaiprakash Singh #define device_bar_ODY_IOBNX_INT_SUM_W1S(a) 0x0 /* PF_BAR0 */
622*4b8b8d74SJaiprakash Singh #define busnum_ODY_IOBNX_INT_SUM_W1S(a) (a)
623*4b8b8d74SJaiprakash Singh #define arguments_ODY_IOBNX_INT_SUM_W1S(a) (a), -1, -1, -1
624*4b8b8d74SJaiprakash Singh 
625*4b8b8d74SJaiprakash Singh /**
626*4b8b8d74SJaiprakash Singh  * Register (RSL) iobn#_lsw_cfg
627*4b8b8d74SJaiprakash Singh  *
628*4b8b8d74SJaiprakash Singh  * IOBN LSW General Configuration Register
629*4b8b8d74SJaiprakash Singh  */
630*4b8b8d74SJaiprakash Singh union ody_iobnx_lsw_cfg {
631*4b8b8d74SJaiprakash Singh 	uint64_t u;
632*4b8b8d74SJaiprakash Singh 	struct ody_iobnx_lsw_cfg_s {
633*4b8b8d74SJaiprakash Singh 		uint64_t lsw0_force_cond_clk_en      : 1;
634*4b8b8d74SJaiprakash Singh 		uint64_t lsw0_rsvd                   : 7;
635*4b8b8d74SJaiprakash Singh 		uint64_t lsw1_force_cond_clk_en      : 1;
636*4b8b8d74SJaiprakash Singh 		uint64_t lsw1_rsvd                   : 7;
637*4b8b8d74SJaiprakash Singh 		uint64_t reserved_16_63              : 48;
638*4b8b8d74SJaiprakash Singh 	} s;
639*4b8b8d74SJaiprakash Singh 	/* struct ody_iobnx_lsw_cfg_s cn; */
640*4b8b8d74SJaiprakash Singh };
641*4b8b8d74SJaiprakash Singh typedef union ody_iobnx_lsw_cfg ody_iobnx_lsw_cfg_t;
642*4b8b8d74SJaiprakash Singh 
643*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_LSW_CFG(uint64_t a) __attribute__ ((pure, always_inline));
ODY_IOBNX_LSW_CFG(uint64_t a)644*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_LSW_CFG(uint64_t a)
645*4b8b8d74SJaiprakash Singh {
646*4b8b8d74SJaiprakash Singh 	if (a <= 4)
647*4b8b8d74SJaiprakash Singh 		return 0x87e120002100ll + 0x1000000ll * ((a) & 0x7);
648*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("IOBNX_LSW_CFG", 1, a, 0, 0, 0, 0, 0);
649*4b8b8d74SJaiprakash Singh }
650*4b8b8d74SJaiprakash Singh 
651*4b8b8d74SJaiprakash Singh #define typedef_ODY_IOBNX_LSW_CFG(a) ody_iobnx_lsw_cfg_t
652*4b8b8d74SJaiprakash Singh #define bustype_ODY_IOBNX_LSW_CFG(a) CSR_TYPE_RSL
653*4b8b8d74SJaiprakash Singh #define basename_ODY_IOBNX_LSW_CFG(a) "IOBNX_LSW_CFG"
654*4b8b8d74SJaiprakash Singh #define device_bar_ODY_IOBNX_LSW_CFG(a) 0x0 /* PF_BAR0 */
655*4b8b8d74SJaiprakash Singh #define busnum_ODY_IOBNX_LSW_CFG(a) (a)
656*4b8b8d74SJaiprakash Singh #define arguments_ODY_IOBNX_LSW_CFG(a) (a), -1, -1, -1
657*4b8b8d74SJaiprakash Singh 
658*4b8b8d74SJaiprakash Singh /**
659*4b8b8d74SJaiprakash Singh  * Register (RSL) iobn#_msix_pba#
660*4b8b8d74SJaiprakash Singh  *
661*4b8b8d74SJaiprakash Singh  * IOBN MSI-X Pending Bit Array Registers
662*4b8b8d74SJaiprakash Singh  * This register is the MSI-X PBA table; the bit number is indexed by the IOBN_INT_VEC_E enumeration.
663*4b8b8d74SJaiprakash Singh  */
664*4b8b8d74SJaiprakash Singh union ody_iobnx_msix_pbax {
665*4b8b8d74SJaiprakash Singh 	uint64_t u;
666*4b8b8d74SJaiprakash Singh 	struct ody_iobnx_msix_pbax_s {
667*4b8b8d74SJaiprakash Singh 		uint64_t pend                        : 64;
668*4b8b8d74SJaiprakash Singh 	} s;
669*4b8b8d74SJaiprakash Singh 	/* struct ody_iobnx_msix_pbax_s cn; */
670*4b8b8d74SJaiprakash Singh };
671*4b8b8d74SJaiprakash Singh typedef union ody_iobnx_msix_pbax ody_iobnx_msix_pbax_t;
672*4b8b8d74SJaiprakash Singh 
673*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_MSIX_PBAX(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_IOBNX_MSIX_PBAX(uint64_t a,uint64_t b)674*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_MSIX_PBAX(uint64_t a, uint64_t b)
675*4b8b8d74SJaiprakash Singh {
676*4b8b8d74SJaiprakash Singh 	if ((a <= 4) && (b == 0))
677*4b8b8d74SJaiprakash Singh 		return 0x87e120ff0000ll + 0x1000000ll * ((a) & 0x7);
678*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("IOBNX_MSIX_PBAX", 2, a, b, 0, 0, 0, 0);
679*4b8b8d74SJaiprakash Singh }
680*4b8b8d74SJaiprakash Singh 
681*4b8b8d74SJaiprakash Singh #define typedef_ODY_IOBNX_MSIX_PBAX(a, b) ody_iobnx_msix_pbax_t
682*4b8b8d74SJaiprakash Singh #define bustype_ODY_IOBNX_MSIX_PBAX(a, b) CSR_TYPE_RSL
683*4b8b8d74SJaiprakash Singh #define basename_ODY_IOBNX_MSIX_PBAX(a, b) "IOBNX_MSIX_PBAX"
684*4b8b8d74SJaiprakash Singh #define device_bar_ODY_IOBNX_MSIX_PBAX(a, b) 0x4 /* PF_BAR4 */
685*4b8b8d74SJaiprakash Singh #define busnum_ODY_IOBNX_MSIX_PBAX(a, b) (a)
686*4b8b8d74SJaiprakash Singh #define arguments_ODY_IOBNX_MSIX_PBAX(a, b) (a), (b), -1, -1
687*4b8b8d74SJaiprakash Singh 
688*4b8b8d74SJaiprakash Singh /**
689*4b8b8d74SJaiprakash Singh  * Register (RSL) iobn#_msix_vec#_addr
690*4b8b8d74SJaiprakash Singh  *
691*4b8b8d74SJaiprakash Singh  * IOBN MSI-X Vector-Table Address Register
692*4b8b8d74SJaiprakash Singh  * This register is the MSI-X vector table, indexed by the IOBN_INT_VEC_E enumeration.
693*4b8b8d74SJaiprakash Singh  */
694*4b8b8d74SJaiprakash Singh union ody_iobnx_msix_vecx_addr {
695*4b8b8d74SJaiprakash Singh 	uint64_t u;
696*4b8b8d74SJaiprakash Singh 	struct ody_iobnx_msix_vecx_addr_s {
697*4b8b8d74SJaiprakash Singh 		uint64_t secvec                      : 1;
698*4b8b8d74SJaiprakash Singh 		uint64_t reserved_1                  : 1;
699*4b8b8d74SJaiprakash Singh 		uint64_t addr                        : 51;
700*4b8b8d74SJaiprakash Singh 		uint64_t reserved_53_63              : 11;
701*4b8b8d74SJaiprakash Singh 	} s;
702*4b8b8d74SJaiprakash Singh 	/* struct ody_iobnx_msix_vecx_addr_s cn; */
703*4b8b8d74SJaiprakash Singh };
704*4b8b8d74SJaiprakash Singh typedef union ody_iobnx_msix_vecx_addr ody_iobnx_msix_vecx_addr_t;
705*4b8b8d74SJaiprakash Singh 
706*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_MSIX_VECX_ADDR(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_IOBNX_MSIX_VECX_ADDR(uint64_t a,uint64_t b)707*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_MSIX_VECX_ADDR(uint64_t a, uint64_t b)
708*4b8b8d74SJaiprakash Singh {
709*4b8b8d74SJaiprakash Singh 	if ((a <= 4) && (b == 0))
710*4b8b8d74SJaiprakash Singh 		return 0x87e120f00000ll + 0x1000000ll * ((a) & 0x7);
711*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("IOBNX_MSIX_VECX_ADDR", 2, a, b, 0, 0, 0, 0);
712*4b8b8d74SJaiprakash Singh }
713*4b8b8d74SJaiprakash Singh 
714*4b8b8d74SJaiprakash Singh #define typedef_ODY_IOBNX_MSIX_VECX_ADDR(a, b) ody_iobnx_msix_vecx_addr_t
715*4b8b8d74SJaiprakash Singh #define bustype_ODY_IOBNX_MSIX_VECX_ADDR(a, b) CSR_TYPE_RSL
716*4b8b8d74SJaiprakash Singh #define basename_ODY_IOBNX_MSIX_VECX_ADDR(a, b) "IOBNX_MSIX_VECX_ADDR"
717*4b8b8d74SJaiprakash Singh #define device_bar_ODY_IOBNX_MSIX_VECX_ADDR(a, b) 0x4 /* PF_BAR4 */
718*4b8b8d74SJaiprakash Singh #define busnum_ODY_IOBNX_MSIX_VECX_ADDR(a, b) (a)
719*4b8b8d74SJaiprakash Singh #define arguments_ODY_IOBNX_MSIX_VECX_ADDR(a, b) (a), (b), -1, -1
720*4b8b8d74SJaiprakash Singh 
721*4b8b8d74SJaiprakash Singh /**
722*4b8b8d74SJaiprakash Singh  * Register (RSL) iobn#_msix_vec#_ctl
723*4b8b8d74SJaiprakash Singh  *
724*4b8b8d74SJaiprakash Singh  * IOBN MSI-X Vector-Table Control and Data Register
725*4b8b8d74SJaiprakash Singh  * This register is the MSI-X vector table, indexed by the IOBN_INT_VEC_E enumeration.
726*4b8b8d74SJaiprakash Singh  */
727*4b8b8d74SJaiprakash Singh union ody_iobnx_msix_vecx_ctl {
728*4b8b8d74SJaiprakash Singh 	uint64_t u;
729*4b8b8d74SJaiprakash Singh 	struct ody_iobnx_msix_vecx_ctl_s {
730*4b8b8d74SJaiprakash Singh 		uint64_t data                        : 32;
731*4b8b8d74SJaiprakash Singh 		uint64_t mask                        : 1;
732*4b8b8d74SJaiprakash Singh 		uint64_t reserved_33_63              : 31;
733*4b8b8d74SJaiprakash Singh 	} s;
734*4b8b8d74SJaiprakash Singh 	/* struct ody_iobnx_msix_vecx_ctl_s cn; */
735*4b8b8d74SJaiprakash Singh };
736*4b8b8d74SJaiprakash Singh typedef union ody_iobnx_msix_vecx_ctl ody_iobnx_msix_vecx_ctl_t;
737*4b8b8d74SJaiprakash Singh 
738*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_MSIX_VECX_CTL(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_IOBNX_MSIX_VECX_CTL(uint64_t a,uint64_t b)739*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_MSIX_VECX_CTL(uint64_t a, uint64_t b)
740*4b8b8d74SJaiprakash Singh {
741*4b8b8d74SJaiprakash Singh 	if ((a <= 4) && (b == 0))
742*4b8b8d74SJaiprakash Singh 		return 0x87e120f00008ll + 0x1000000ll * ((a) & 0x7);
743*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("IOBNX_MSIX_VECX_CTL", 2, a, b, 0, 0, 0, 0);
744*4b8b8d74SJaiprakash Singh }
745*4b8b8d74SJaiprakash Singh 
746*4b8b8d74SJaiprakash Singh #define typedef_ODY_IOBNX_MSIX_VECX_CTL(a, b) ody_iobnx_msix_vecx_ctl_t
747*4b8b8d74SJaiprakash Singh #define bustype_ODY_IOBNX_MSIX_VECX_CTL(a, b) CSR_TYPE_RSL
748*4b8b8d74SJaiprakash Singh #define basename_ODY_IOBNX_MSIX_VECX_CTL(a, b) "IOBNX_MSIX_VECX_CTL"
749*4b8b8d74SJaiprakash Singh #define device_bar_ODY_IOBNX_MSIX_VECX_CTL(a, b) 0x4 /* PF_BAR4 */
750*4b8b8d74SJaiprakash Singh #define busnum_ODY_IOBNX_MSIX_VECX_CTL(a, b) (a)
751*4b8b8d74SJaiprakash Singh #define arguments_ODY_IOBNX_MSIX_VECX_CTL(a, b) (a), (b), -1, -1
752*4b8b8d74SJaiprakash Singh 
753*4b8b8d74SJaiprakash Singh /**
754*4b8b8d74SJaiprakash Singh  * Register (RSL) iobn#_ncb#_acc
755*4b8b8d74SJaiprakash Singh  *
756*4b8b8d74SJaiprakash Singh  * IOBN NCB Access Registers
757*4b8b8d74SJaiprakash Singh  * This register sets attributes of NCBDIDs address bits \<43:36\>.
758*4b8b8d74SJaiprakash Singh  * If IOBN_CONST.UNIMP_REG is set this register is not implemented.
759*4b8b8d74SJaiprakash Singh  * Reads will respond with zero and writes will be ignored.
760*4b8b8d74SJaiprakash Singh  */
761*4b8b8d74SJaiprakash Singh union ody_iobnx_ncbx_acc {
762*4b8b8d74SJaiprakash Singh 	uint64_t u;
763*4b8b8d74SJaiprakash Singh 	struct ody_iobnx_ncbx_acc_s {
764*4b8b8d74SJaiprakash Singh 		uint64_t all_cmds                    : 1;
765*4b8b8d74SJaiprakash Singh 		uint64_t reserved_1_63               : 63;
766*4b8b8d74SJaiprakash Singh 	} s;
767*4b8b8d74SJaiprakash Singh 	/* struct ody_iobnx_ncbx_acc_s cn; */
768*4b8b8d74SJaiprakash Singh };
769*4b8b8d74SJaiprakash Singh typedef union ody_iobnx_ncbx_acc ody_iobnx_ncbx_acc_t;
770*4b8b8d74SJaiprakash Singh 
771*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_NCBX_ACC(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_IOBNX_NCBX_ACC(uint64_t a,uint64_t b)772*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_NCBX_ACC(uint64_t a, uint64_t b)
773*4b8b8d74SJaiprakash Singh {
774*4b8b8d74SJaiprakash Singh 	if ((a <= 4) && (b <= 255))
775*4b8b8d74SJaiprakash Singh 		return 0x87e1200c0000ll + 0x1000000ll * ((a) & 0x7) + 8ll * ((b) & 0xff);
776*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("IOBNX_NCBX_ACC", 2, a, b, 0, 0, 0, 0);
777*4b8b8d74SJaiprakash Singh }
778*4b8b8d74SJaiprakash Singh 
779*4b8b8d74SJaiprakash Singh #define typedef_ODY_IOBNX_NCBX_ACC(a, b) ody_iobnx_ncbx_acc_t
780*4b8b8d74SJaiprakash Singh #define bustype_ODY_IOBNX_NCBX_ACC(a, b) CSR_TYPE_RSL
781*4b8b8d74SJaiprakash Singh #define basename_ODY_IOBNX_NCBX_ACC(a, b) "IOBNX_NCBX_ACC"
782*4b8b8d74SJaiprakash Singh #define device_bar_ODY_IOBNX_NCBX_ACC(a, b) 0x0 /* PF_BAR0 */
783*4b8b8d74SJaiprakash Singh #define busnum_ODY_IOBNX_NCBX_ACC(a, b) (a)
784*4b8b8d74SJaiprakash Singh #define arguments_ODY_IOBNX_NCBX_ACC(a, b) (a), (b), -1, -1
785*4b8b8d74SJaiprakash Singh 
786*4b8b8d74SJaiprakash Singh /**
787*4b8b8d74SJaiprakash Singh  * Register (RSL) iobn#_ncb#_permit
788*4b8b8d74SJaiprakash Singh  *
789*4b8b8d74SJaiprakash Singh  * IOBN NCB Bus Permit Registers
790*4b8b8d74SJaiprakash Singh  * This register sets the permissions for access to NCBDIDs address bits \<43:36\>.
791*4b8b8d74SJaiprakash Singh  * Program identically to MRML_NCB()_PERMIT.
792*4b8b8d74SJaiprakash Singh  * If IOBN_CONST.UNIMP_REG is set this register is not implemented.
793*4b8b8d74SJaiprakash Singh  * Reads will respond with zero and writes will be ignored.
794*4b8b8d74SJaiprakash Singh  */
795*4b8b8d74SJaiprakash Singh union ody_iobnx_ncbx_permit {
796*4b8b8d74SJaiprakash Singh 	uint64_t u;
797*4b8b8d74SJaiprakash Singh 	struct ody_iobnx_ncbx_permit_s {
798*4b8b8d74SJaiprakash Singh 		uint64_t sec_dis                     : 1;
799*4b8b8d74SJaiprakash Singh 		uint64_t nsec_dis                    : 1;
800*4b8b8d74SJaiprakash Singh 		uint64_t xcp0_dis                    : 1;
801*4b8b8d74SJaiprakash Singh 		uint64_t xcp1_dis                    : 1;
802*4b8b8d74SJaiprakash Singh 		uint64_t xcp2_dis                    : 1;
803*4b8b8d74SJaiprakash Singh 		uint64_t reserved_5_6                : 2;
804*4b8b8d74SJaiprakash Singh 		uint64_t kill                        : 1;
805*4b8b8d74SJaiprakash Singh 		uint64_t lock                        : 1;
806*4b8b8d74SJaiprakash Singh 		uint64_t reserved_9_63               : 55;
807*4b8b8d74SJaiprakash Singh 	} s;
808*4b8b8d74SJaiprakash Singh 	/* struct ody_iobnx_ncbx_permit_s cn; */
809*4b8b8d74SJaiprakash Singh };
810*4b8b8d74SJaiprakash Singh typedef union ody_iobnx_ncbx_permit ody_iobnx_ncbx_permit_t;
811*4b8b8d74SJaiprakash Singh 
812*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_NCBX_PERMIT(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_IOBNX_NCBX_PERMIT(uint64_t a,uint64_t b)813*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_NCBX_PERMIT(uint64_t a, uint64_t b)
814*4b8b8d74SJaiprakash Singh {
815*4b8b8d74SJaiprakash Singh 	if ((a <= 4) && (b <= 255))
816*4b8b8d74SJaiprakash Singh 		return 0x87e1200d0000ll + 0x1000000ll * ((a) & 0x7) + 8ll * ((b) & 0xff);
817*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("IOBNX_NCBX_PERMIT", 2, a, b, 0, 0, 0, 0);
818*4b8b8d74SJaiprakash Singh }
819*4b8b8d74SJaiprakash Singh 
820*4b8b8d74SJaiprakash Singh #define typedef_ODY_IOBNX_NCBX_PERMIT(a, b) ody_iobnx_ncbx_permit_t
821*4b8b8d74SJaiprakash Singh #define bustype_ODY_IOBNX_NCBX_PERMIT(a, b) CSR_TYPE_RSL
822*4b8b8d74SJaiprakash Singh #define basename_ODY_IOBNX_NCBX_PERMIT(a, b) "IOBNX_NCBX_PERMIT"
823*4b8b8d74SJaiprakash Singh #define device_bar_ODY_IOBNX_NCBX_PERMIT(a, b) 0x0 /* PF_BAR0 */
824*4b8b8d74SJaiprakash Singh #define busnum_ODY_IOBNX_NCBX_PERMIT(a, b) (a)
825*4b8b8d74SJaiprakash Singh #define arguments_ODY_IOBNX_NCBX_PERMIT(a, b) (a), (b), -1, -1
826*4b8b8d74SJaiprakash Singh 
827*4b8b8d74SJaiprakash Singh /**
828*4b8b8d74SJaiprakash Singh  * Register (RSL) iobn#_ncbi#_cr_err_status
829*4b8b8d74SJaiprakash Singh  *
830*4b8b8d74SJaiprakash Singh  * IOBN NCBI Unexpected CR Error Status Register
831*4b8b8d74SJaiprakash Singh  * NCBI error status register logs first unexpected NCBI CR.
832*4b8b8d74SJaiprakash Singh  */
833*4b8b8d74SJaiprakash Singh union ody_iobnx_ncbix_cr_err_status {
834*4b8b8d74SJaiprakash Singh 	uint64_t u;
835*4b8b8d74SJaiprakash Singh 	struct ody_iobnx_ncbix_cr_err_status_s {
836*4b8b8d74SJaiprakash Singh 		uint64_t narbid                      : 4;
837*4b8b8d74SJaiprakash Singh 		uint64_t reserved_4_63               : 60;
838*4b8b8d74SJaiprakash Singh 	} s;
839*4b8b8d74SJaiprakash Singh 	/* struct ody_iobnx_ncbix_cr_err_status_s cn; */
840*4b8b8d74SJaiprakash Singh };
841*4b8b8d74SJaiprakash Singh typedef union ody_iobnx_ncbix_cr_err_status ody_iobnx_ncbix_cr_err_status_t;
842*4b8b8d74SJaiprakash Singh 
843*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_NCBIX_CR_ERR_STATUS(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_IOBNX_NCBIX_CR_ERR_STATUS(uint64_t a,uint64_t b)844*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_NCBIX_CR_ERR_STATUS(uint64_t a, uint64_t b)
845*4b8b8d74SJaiprakash Singh {
846*4b8b8d74SJaiprakash Singh 	if ((a <= 4) && (b <= 3))
847*4b8b8d74SJaiprakash Singh 		return 0x87e120000100ll + 0x1000000ll * ((a) & 0x7) + 8ll * ((b) & 0x3);
848*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("IOBNX_NCBIX_CR_ERR_STATUS", 2, a, b, 0, 0, 0, 0);
849*4b8b8d74SJaiprakash Singh }
850*4b8b8d74SJaiprakash Singh 
851*4b8b8d74SJaiprakash Singh #define typedef_ODY_IOBNX_NCBIX_CR_ERR_STATUS(a, b) ody_iobnx_ncbix_cr_err_status_t
852*4b8b8d74SJaiprakash Singh #define bustype_ODY_IOBNX_NCBIX_CR_ERR_STATUS(a, b) CSR_TYPE_RSL
853*4b8b8d74SJaiprakash Singh #define basename_ODY_IOBNX_NCBIX_CR_ERR_STATUS(a, b) "IOBNX_NCBIX_CR_ERR_STATUS"
854*4b8b8d74SJaiprakash Singh #define device_bar_ODY_IOBNX_NCBIX_CR_ERR_STATUS(a, b) 0x0 /* PF_BAR0 */
855*4b8b8d74SJaiprakash Singh #define busnum_ODY_IOBNX_NCBIX_CR_ERR_STATUS(a, b) (a)
856*4b8b8d74SJaiprakash Singh #define arguments_ODY_IOBNX_NCBIX_CR_ERR_STATUS(a, b) (a), (b), -1, -1
857*4b8b8d74SJaiprakash Singh 
858*4b8b8d74SJaiprakash Singh /**
859*4b8b8d74SJaiprakash Singh  * Register (RSL) iobn#_ncbo#_cr_err_status
860*4b8b8d74SJaiprakash Singh  *
861*4b8b8d74SJaiprakash Singh  * IOBN NCBO CR Error Status Register
862*4b8b8d74SJaiprakash Singh  * Outbound error status register logs first data error detected on outbound path.
863*4b8b8d74SJaiprakash Singh  */
864*4b8b8d74SJaiprakash Singh union ody_iobnx_ncbox_cr_err_status {
865*4b8b8d74SJaiprakash Singh 	uint64_t u;
866*4b8b8d74SJaiprakash Singh 	struct ody_iobnx_ncbox_cr_err_status_s {
867*4b8b8d74SJaiprakash Singh 		uint64_t address                     : 53;
868*4b8b8d74SJaiprakash Singh 		uint64_t narbid                      : 4;
869*4b8b8d74SJaiprakash Singh 		uint64_t reserved_57_63              : 7;
870*4b8b8d74SJaiprakash Singh 	} s;
871*4b8b8d74SJaiprakash Singh 	/* struct ody_iobnx_ncbox_cr_err_status_s cn; */
872*4b8b8d74SJaiprakash Singh };
873*4b8b8d74SJaiprakash Singh typedef union ody_iobnx_ncbox_cr_err_status ody_iobnx_ncbox_cr_err_status_t;
874*4b8b8d74SJaiprakash Singh 
875*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_NCBOX_CR_ERR_STATUS(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_IOBNX_NCBOX_CR_ERR_STATUS(uint64_t a,uint64_t b)876*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_NCBOX_CR_ERR_STATUS(uint64_t a, uint64_t b)
877*4b8b8d74SJaiprakash Singh {
878*4b8b8d74SJaiprakash Singh 	if ((a <= 4) && (b <= 3))
879*4b8b8d74SJaiprakash Singh 		return 0x87e120000120ll + 0x1000000ll * ((a) & 0x7) + 8ll * ((b) & 0x3);
880*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("IOBNX_NCBOX_CR_ERR_STATUS", 2, a, b, 0, 0, 0, 0);
881*4b8b8d74SJaiprakash Singh }
882*4b8b8d74SJaiprakash Singh 
883*4b8b8d74SJaiprakash Singh #define typedef_ODY_IOBNX_NCBOX_CR_ERR_STATUS(a, b) ody_iobnx_ncbox_cr_err_status_t
884*4b8b8d74SJaiprakash Singh #define bustype_ODY_IOBNX_NCBOX_CR_ERR_STATUS(a, b) CSR_TYPE_RSL
885*4b8b8d74SJaiprakash Singh #define basename_ODY_IOBNX_NCBOX_CR_ERR_STATUS(a, b) "IOBNX_NCBOX_CR_ERR_STATUS"
886*4b8b8d74SJaiprakash Singh #define device_bar_ODY_IOBNX_NCBOX_CR_ERR_STATUS(a, b) 0x0 /* PF_BAR0 */
887*4b8b8d74SJaiprakash Singh #define busnum_ODY_IOBNX_NCBOX_CR_ERR_STATUS(a, b) (a)
888*4b8b8d74SJaiprakash Singh #define arguments_ODY_IOBNX_NCBOX_CR_ERR_STATUS(a, b) (a), (b), -1, -1
889*4b8b8d74SJaiprakash Singh 
890*4b8b8d74SJaiprakash Singh /**
891*4b8b8d74SJaiprakash Singh  * Register (RSL) iobn#_ncbo#_psn_status
892*4b8b8d74SJaiprakash Singh  *
893*4b8b8d74SJaiprakash Singh  * IOBN NCBO Poison Status Register
894*4b8b8d74SJaiprakash Singh  */
895*4b8b8d74SJaiprakash Singh union ody_iobnx_ncbox_psn_status {
896*4b8b8d74SJaiprakash Singh 	uint64_t u;
897*4b8b8d74SJaiprakash Singh 	struct ody_iobnx_ncbox_psn_status_s {
898*4b8b8d74SJaiprakash Singh 		uint64_t address                     : 52;
899*4b8b8d74SJaiprakash Singh 		uint64_t reserved_52_63              : 12;
900*4b8b8d74SJaiprakash Singh 	} s;
901*4b8b8d74SJaiprakash Singh 	/* struct ody_iobnx_ncbox_psn_status_s cn; */
902*4b8b8d74SJaiprakash Singh };
903*4b8b8d74SJaiprakash Singh typedef union ody_iobnx_ncbox_psn_status ody_iobnx_ncbox_psn_status_t;
904*4b8b8d74SJaiprakash Singh 
905*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_NCBOX_PSN_STATUS(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_IOBNX_NCBOX_PSN_STATUS(uint64_t a,uint64_t b)906*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_NCBOX_PSN_STATUS(uint64_t a, uint64_t b)
907*4b8b8d74SJaiprakash Singh {
908*4b8b8d74SJaiprakash Singh 	if ((a <= 4) && (b <= 3))
909*4b8b8d74SJaiprakash Singh 		return 0x87e120003040ll + 0x1000000ll * ((a) & 0x7) + 8ll * ((b) & 0x3);
910*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("IOBNX_NCBOX_PSN_STATUS", 2, a, b, 0, 0, 0, 0);
911*4b8b8d74SJaiprakash Singh }
912*4b8b8d74SJaiprakash Singh 
913*4b8b8d74SJaiprakash Singh #define typedef_ODY_IOBNX_NCBOX_PSN_STATUS(a, b) ody_iobnx_ncbox_psn_status_t
914*4b8b8d74SJaiprakash Singh #define bustype_ODY_IOBNX_NCBOX_PSN_STATUS(a, b) CSR_TYPE_RSL
915*4b8b8d74SJaiprakash Singh #define basename_ODY_IOBNX_NCBOX_PSN_STATUS(a, b) "IOBNX_NCBOX_PSN_STATUS"
916*4b8b8d74SJaiprakash Singh #define device_bar_ODY_IOBNX_NCBOX_PSN_STATUS(a, b) 0x0 /* PF_BAR0 */
917*4b8b8d74SJaiprakash Singh #define busnum_ODY_IOBNX_NCBOX_PSN_STATUS(a, b) (a)
918*4b8b8d74SJaiprakash Singh #define arguments_ODY_IOBNX_NCBOX_PSN_STATUS(a, b) (a), (b), -1, -1
919*4b8b8d74SJaiprakash Singh 
920*4b8b8d74SJaiprakash Singh /**
921*4b8b8d74SJaiprakash Singh  * Register (RSL) iobn#_ncbo_to
922*4b8b8d74SJaiprakash Singh  *
923*4b8b8d74SJaiprakash Singh  * IOBN NCBO Timeout Counter Registers
924*4b8b8d74SJaiprakash Singh  * This register set the counter value for expected return data on NCBI.
925*4b8b8d74SJaiprakash Singh  */
926*4b8b8d74SJaiprakash Singh union ody_iobnx_ncbo_to {
927*4b8b8d74SJaiprakash Singh 	uint64_t u;
928*4b8b8d74SJaiprakash Singh 	struct ody_iobnx_ncbo_to_s {
929*4b8b8d74SJaiprakash Singh 		uint64_t sub_time                    : 32;
930*4b8b8d74SJaiprakash Singh 		uint64_t reserved_32_63              : 32;
931*4b8b8d74SJaiprakash Singh 	} s;
932*4b8b8d74SJaiprakash Singh 	/* struct ody_iobnx_ncbo_to_s cn; */
933*4b8b8d74SJaiprakash Singh };
934*4b8b8d74SJaiprakash Singh typedef union ody_iobnx_ncbo_to ody_iobnx_ncbo_to_t;
935*4b8b8d74SJaiprakash Singh 
936*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_NCBO_TO(uint64_t a) __attribute__ ((pure, always_inline));
ODY_IOBNX_NCBO_TO(uint64_t a)937*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_NCBO_TO(uint64_t a)
938*4b8b8d74SJaiprakash Singh {
939*4b8b8d74SJaiprakash Singh 	if (a <= 4)
940*4b8b8d74SJaiprakash Singh 		return 0x87e120000008ll + 0x1000000ll * ((a) & 0x7);
941*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("IOBNX_NCBO_TO", 1, a, 0, 0, 0, 0, 0);
942*4b8b8d74SJaiprakash Singh }
943*4b8b8d74SJaiprakash Singh 
944*4b8b8d74SJaiprakash Singh #define typedef_ODY_IOBNX_NCBO_TO(a) ody_iobnx_ncbo_to_t
945*4b8b8d74SJaiprakash Singh #define bustype_ODY_IOBNX_NCBO_TO(a) CSR_TYPE_RSL
946*4b8b8d74SJaiprakash Singh #define basename_ODY_IOBNX_NCBO_TO(a) "IOBNX_NCBO_TO"
947*4b8b8d74SJaiprakash Singh #define device_bar_ODY_IOBNX_NCBO_TO(a) 0x0 /* PF_BAR0 */
948*4b8b8d74SJaiprakash Singh #define busnum_ODY_IOBNX_NCBO_TO(a) (a)
949*4b8b8d74SJaiprakash Singh #define arguments_ODY_IOBNX_NCBO_TO(a) (a), -1, -1, -1
950*4b8b8d74SJaiprakash Singh 
951*4b8b8d74SJaiprakash Singh /**
952*4b8b8d74SJaiprakash Singh  * Register (RSL) iobn#_ncbo_to_err#
953*4b8b8d74SJaiprakash Singh  *
954*4b8b8d74SJaiprakash Singh  * IOBN NCB Timeout Error Register
955*4b8b8d74SJaiprakash Singh  * This register captures error information for a nonposted request that times out on
956*4b8b8d74SJaiprakash Singh  * NCBO (when IOBN_INT_SUM[NCBO_TO] is set).
957*4b8b8d74SJaiprakash Singh  */
958*4b8b8d74SJaiprakash Singh union ody_iobnx_ncbo_to_errx {
959*4b8b8d74SJaiprakash Singh 	uint64_t u;
960*4b8b8d74SJaiprakash Singh 	struct ody_iobnx_ncbo_to_errx_s {
961*4b8b8d74SJaiprakash Singh 		uint64_t arbid                       : 4;
962*4b8b8d74SJaiprakash Singh 		uint64_t reserved_4_7                : 4;
963*4b8b8d74SJaiprakash Singh 		uint64_t cpid                        : 9;
964*4b8b8d74SJaiprakash Singh 		uint64_t reserved_17_63              : 47;
965*4b8b8d74SJaiprakash Singh 	} s;
966*4b8b8d74SJaiprakash Singh 	/* struct ody_iobnx_ncbo_to_errx_s cn; */
967*4b8b8d74SJaiprakash Singh };
968*4b8b8d74SJaiprakash Singh typedef union ody_iobnx_ncbo_to_errx ody_iobnx_ncbo_to_errx_t;
969*4b8b8d74SJaiprakash Singh 
970*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_NCBO_TO_ERRX(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_IOBNX_NCBO_TO_ERRX(uint64_t a,uint64_t b)971*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_NCBO_TO_ERRX(uint64_t a, uint64_t b)
972*4b8b8d74SJaiprakash Singh {
973*4b8b8d74SJaiprakash Singh 	if ((a <= 4) && (b <= 3))
974*4b8b8d74SJaiprakash Singh 		return 0x87e1200a0000ll + 0x1000000ll * ((a) & 0x7) + 8ll * ((b) & 0x3);
975*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("IOBNX_NCBO_TO_ERRX", 2, a, b, 0, 0, 0, 0);
976*4b8b8d74SJaiprakash Singh }
977*4b8b8d74SJaiprakash Singh 
978*4b8b8d74SJaiprakash Singh #define typedef_ODY_IOBNX_NCBO_TO_ERRX(a, b) ody_iobnx_ncbo_to_errx_t
979*4b8b8d74SJaiprakash Singh #define bustype_ODY_IOBNX_NCBO_TO_ERRX(a, b) CSR_TYPE_RSL
980*4b8b8d74SJaiprakash Singh #define basename_ODY_IOBNX_NCBO_TO_ERRX(a, b) "IOBNX_NCBO_TO_ERRX"
981*4b8b8d74SJaiprakash Singh #define device_bar_ODY_IOBNX_NCBO_TO_ERRX(a, b) 0x0 /* PF_BAR0 */
982*4b8b8d74SJaiprakash Singh #define busnum_ODY_IOBNX_NCBO_TO_ERRX(a, b) (a)
983*4b8b8d74SJaiprakash Singh #define arguments_ODY_IOBNX_NCBO_TO_ERRX(a, b) (a), (b), -1, -1
984*4b8b8d74SJaiprakash Singh 
985*4b8b8d74SJaiprakash Singh /**
986*4b8b8d74SJaiprakash Singh  * Register (RSL) iobn#_outb_err_status
987*4b8b8d74SJaiprakash Singh  *
988*4b8b8d74SJaiprakash Singh  * IOBN Outbound Error Status Register
989*4b8b8d74SJaiprakash Singh  * Outbound error status register logs first error detected on outbound control path.
990*4b8b8d74SJaiprakash Singh  */
991*4b8b8d74SJaiprakash Singh union ody_iobnx_outb_err_status {
992*4b8b8d74SJaiprakash Singh 	uint64_t u;
993*4b8b8d74SJaiprakash Singh 	struct ody_iobnx_outb_err_status_s {
994*4b8b8d74SJaiprakash Singh 		uint64_t err_type                    : 5;
995*4b8b8d74SJaiprakash Singh 		uint64_t reserved_5_11               : 7;
996*4b8b8d74SJaiprakash Singh 		uint64_t address                     : 40;
997*4b8b8d74SJaiprakash Singh 		uint64_t reserved_52                 : 1;
998*4b8b8d74SJaiprakash Singh 		uint64_t ms                          : 11;
999*4b8b8d74SJaiprakash Singh 	} s;
1000*4b8b8d74SJaiprakash Singh 	/* struct ody_iobnx_outb_err_status_s cn; */
1001*4b8b8d74SJaiprakash Singh };
1002*4b8b8d74SJaiprakash Singh typedef union ody_iobnx_outb_err_status ody_iobnx_outb_err_status_t;
1003*4b8b8d74SJaiprakash Singh 
1004*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_OUTB_ERR_STATUS(uint64_t a) __attribute__ ((pure, always_inline));
ODY_IOBNX_OUTB_ERR_STATUS(uint64_t a)1005*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_OUTB_ERR_STATUS(uint64_t a)
1006*4b8b8d74SJaiprakash Singh {
1007*4b8b8d74SJaiprakash Singh 	if (a <= 4)
1008*4b8b8d74SJaiprakash Singh 		return 0x87e120083090ll + 0x1000000ll * ((a) & 0x7);
1009*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("IOBNX_OUTB_ERR_STATUS", 1, a, 0, 0, 0, 0, 0);
1010*4b8b8d74SJaiprakash Singh }
1011*4b8b8d74SJaiprakash Singh 
1012*4b8b8d74SJaiprakash Singh #define typedef_ODY_IOBNX_OUTB_ERR_STATUS(a) ody_iobnx_outb_err_status_t
1013*4b8b8d74SJaiprakash Singh #define bustype_ODY_IOBNX_OUTB_ERR_STATUS(a) CSR_TYPE_RSL
1014*4b8b8d74SJaiprakash Singh #define basename_ODY_IOBNX_OUTB_ERR_STATUS(a) "IOBNX_OUTB_ERR_STATUS"
1015*4b8b8d74SJaiprakash Singh #define device_bar_ODY_IOBNX_OUTB_ERR_STATUS(a) 0x0 /* PF_BAR0 */
1016*4b8b8d74SJaiprakash Singh #define busnum_ODY_IOBNX_OUTB_ERR_STATUS(a) (a)
1017*4b8b8d74SJaiprakash Singh #define arguments_ODY_IOBNX_OUTB_ERR_STATUS(a) (a), -1, -1, -1
1018*4b8b8d74SJaiprakash Singh 
1019*4b8b8d74SJaiprakash Singh /**
1020*4b8b8d74SJaiprakash Singh  * Register (RSL) iobn#_psn_ctl
1021*4b8b8d74SJaiprakash Singh  *
1022*4b8b8d74SJaiprakash Singh  * Poison Control Register
1023*4b8b8d74SJaiprakash Singh  */
1024*4b8b8d74SJaiprakash Singh union ody_iobnx_psn_ctl {
1025*4b8b8d74SJaiprakash Singh 	uint64_t u;
1026*4b8b8d74SJaiprakash Singh 	struct ody_iobnx_psn_ctl_s {
1027*4b8b8d74SJaiprakash Singh 		uint64_t dispsn                      : 1;
1028*4b8b8d74SJaiprakash Singh 		uint64_t reserved_1_63               : 63;
1029*4b8b8d74SJaiprakash Singh 	} s;
1030*4b8b8d74SJaiprakash Singh 	/* struct ody_iobnx_psn_ctl_s cn; */
1031*4b8b8d74SJaiprakash Singh };
1032*4b8b8d74SJaiprakash Singh typedef union ody_iobnx_psn_ctl ody_iobnx_psn_ctl_t;
1033*4b8b8d74SJaiprakash Singh 
1034*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_PSN_CTL(uint64_t a) __attribute__ ((pure, always_inline));
ODY_IOBNX_PSN_CTL(uint64_t a)1035*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_PSN_CTL(uint64_t a)
1036*4b8b8d74SJaiprakash Singh {
1037*4b8b8d74SJaiprakash Singh 	if (a <= 4)
1038*4b8b8d74SJaiprakash Singh 		return 0x87e120083050ll + 0x1000000ll * ((a) & 0x7);
1039*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("IOBNX_PSN_CTL", 1, a, 0, 0, 0, 0, 0);
1040*4b8b8d74SJaiprakash Singh }
1041*4b8b8d74SJaiprakash Singh 
1042*4b8b8d74SJaiprakash Singh #define typedef_ODY_IOBNX_PSN_CTL(a) ody_iobnx_psn_ctl_t
1043*4b8b8d74SJaiprakash Singh #define bustype_ODY_IOBNX_PSN_CTL(a) CSR_TYPE_RSL
1044*4b8b8d74SJaiprakash Singh #define basename_ODY_IOBNX_PSN_CTL(a) "IOBNX_PSN_CTL"
1045*4b8b8d74SJaiprakash Singh #define device_bar_ODY_IOBNX_PSN_CTL(a) 0x0 /* PF_BAR0 */
1046*4b8b8d74SJaiprakash Singh #define busnum_ODY_IOBNX_PSN_CTL(a) (a)
1047*4b8b8d74SJaiprakash Singh #define arguments_ODY_IOBNX_PSN_CTL(a) (a), -1, -1, -1
1048*4b8b8d74SJaiprakash Singh 
1049*4b8b8d74SJaiprakash Singh /**
1050*4b8b8d74SJaiprakash Singh  * Register (RSL) iobn#_rsl#_streams
1051*4b8b8d74SJaiprakash Singh  *
1052*4b8b8d74SJaiprakash Singh  * IOBN RSL Stream Permission Registers
1053*4b8b8d74SJaiprakash Singh  * This register sets the permissions for a NCBI transaction (which are DMA
1054*4b8b8d74SJaiprakash Singh  * transactions or MSI-X writes), for requests from a RSL device, i.e.
1055*4b8b8d74SJaiprakash Singh  * those where:
1056*4b8b8d74SJaiprakash Singh  *
1057*4b8b8d74SJaiprakash Singh  * _ stream_id\<21:8\> = PCC_DEV_CON_E::MRML\<21:8\>
1058*4b8b8d74SJaiprakash Singh  *   (stream_id\<7:0\> + 0).
1059*4b8b8d74SJaiprakash Singh  *
1060*4b8b8d74SJaiprakash Singh  * _ stream_id\<21:8\> = PCC_DEV_CON_E::MRMLB1\<21:8\>
1061*4b8b8d74SJaiprakash Singh  *   (stream_id\<7:0\> + 256).
1062*4b8b8d74SJaiprakash Singh  *
1063*4b8b8d74SJaiprakash Singh  * _ stream_id\<21:8\> = PCC_DEV_CON_E::MRMLB2\<21:8\>
1064*4b8b8d74SJaiprakash Singh  *   (stream_id\<7:0\> + 512).
1065*4b8b8d74SJaiprakash Singh  *
1066*4b8b8d74SJaiprakash Singh  * _ stream_id\<21:8\> = PCC_DEV_CON_E::MRMLB3\<21:8\>
1067*4b8b8d74SJaiprakash Singh  *   (stream_id\<7:0\> + 768).
1068*4b8b8d74SJaiprakash Singh  *
1069*4b8b8d74SJaiprakash Singh  * For each given index {a} (the RSL function number), each IOB
1070*4b8b8d74SJaiprakash Singh  * must be programmed to the same value.
1071*4b8b8d74SJaiprakash Singh  */
1072*4b8b8d74SJaiprakash Singh union ody_iobnx_rslx_streams {
1073*4b8b8d74SJaiprakash Singh 	uint64_t u;
1074*4b8b8d74SJaiprakash Singh 	struct ody_iobnx_rslx_streams_s {
1075*4b8b8d74SJaiprakash Singh 		uint64_t phys_nsec                   : 1;
1076*4b8b8d74SJaiprakash Singh 		uint64_t strm_nsec                   : 1;
1077*4b8b8d74SJaiprakash Singh 		uint64_t reserved_2_63               : 62;
1078*4b8b8d74SJaiprakash Singh 	} s;
1079*4b8b8d74SJaiprakash Singh 	/* struct ody_iobnx_rslx_streams_s cn; */
1080*4b8b8d74SJaiprakash Singh };
1081*4b8b8d74SJaiprakash Singh typedef union ody_iobnx_rslx_streams ody_iobnx_rslx_streams_t;
1082*4b8b8d74SJaiprakash Singh 
1083*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_RSLX_STREAMS(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_IOBNX_RSLX_STREAMS(uint64_t a,uint64_t b)1084*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_IOBNX_RSLX_STREAMS(uint64_t a, uint64_t b)
1085*4b8b8d74SJaiprakash Singh {
1086*4b8b8d74SJaiprakash Singh 	if ((a <= 4) && (b <= 1023))
1087*4b8b8d74SJaiprakash Singh 		return 0x87e120004000ll + 0x1000000ll * ((a) & 0x7) + 8ll * ((b) & 0x3ff);
1088*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("IOBNX_RSLX_STREAMS", 2, a, b, 0, 0, 0, 0);
1089*4b8b8d74SJaiprakash Singh }
1090*4b8b8d74SJaiprakash Singh 
1091*4b8b8d74SJaiprakash Singh #define typedef_ODY_IOBNX_RSLX_STREAMS(a, b) ody_iobnx_rslx_streams_t
1092*4b8b8d74SJaiprakash Singh #define bustype_ODY_IOBNX_RSLX_STREAMS(a, b) CSR_TYPE_RSL
1093*4b8b8d74SJaiprakash Singh #define basename_ODY_IOBNX_RSLX_STREAMS(a, b) "IOBNX_RSLX_STREAMS"
1094*4b8b8d74SJaiprakash Singh #define device_bar_ODY_IOBNX_RSLX_STREAMS(a, b) 0x0 /* PF_BAR0 */
1095*4b8b8d74SJaiprakash Singh #define busnum_ODY_IOBNX_RSLX_STREAMS(a, b) (a)
1096*4b8b8d74SJaiprakash Singh #define arguments_ODY_IOBNX_RSLX_STREAMS(a, b) (a), (b), -1, -1
1097*4b8b8d74SJaiprakash Singh 
1098*4b8b8d74SJaiprakash Singh #endif /* __ODY_CSRS_IOBN_H__ */
1099