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