xref: /rk3399_ARM-atf/include/plat/marvell/odyssey/csr/ody-csrs-mdc.h (revision 12d80bbbf6031228bdd910eccb03bb185e8df527)
1*4b8b8d74SJaiprakash Singh #ifndef __ODY_CSRS_MDC_H__
2*4b8b8d74SJaiprakash Singh #define __ODY_CSRS_MDC_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  * MDC.
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 mdc_bar_e
24*4b8b8d74SJaiprakash Singh  *
25*4b8b8d74SJaiprakash Singh  * MDC Base Address Register Enumeration
26*4b8b8d74SJaiprakash Singh  * Enumerates the base address registers.
27*4b8b8d74SJaiprakash Singh  */
28*4b8b8d74SJaiprakash Singh #define ODY_MDC_BAR_E_MDC_PF_BAR0 (0x87e010000000ll)
29*4b8b8d74SJaiprakash Singh #define ODY_MDC_BAR_E_MDC_PF_BAR0_SIZE 0x100000ull
30*4b8b8d74SJaiprakash Singh #define ODY_MDC_BAR_E_MDC_PF_BAR2 (0x87e008000000ll)
31*4b8b8d74SJaiprakash Singh #define ODY_MDC_BAR_E_MDC_PF_BAR2_SIZE 0x1000000ull
32*4b8b8d74SJaiprakash Singh #define ODY_MDC_BAR_E_MDC_PF_BAR4 (0x87e010100000ll)
33*4b8b8d74SJaiprakash Singh #define ODY_MDC_BAR_E_MDC_PF_BAR4_SIZE 0x100000ull
34*4b8b8d74SJaiprakash Singh 
35*4b8b8d74SJaiprakash Singh /**
36*4b8b8d74SJaiprakash Singh  * Enumeration mdc_int_vec_e
37*4b8b8d74SJaiprakash Singh  *
38*4b8b8d74SJaiprakash Singh  * MDC Interrupt Source Enumeration
39*4b8b8d74SJaiprakash Singh  * Enumerates the different MDC-generated interrupts.
40*4b8b8d74SJaiprakash Singh  */
41*4b8b8d74SJaiprakash Singh #define ODY_MDC_INT_VEC_E_MDC_ECC_ERR (0)
42*4b8b8d74SJaiprakash Singh 
43*4b8b8d74SJaiprakash Singh /**
44*4b8b8d74SJaiprakash Singh  * Enumeration mdc_ras_uet_e
45*4b8b8d74SJaiprakash Singh  *
46*4b8b8d74SJaiprakash Singh  * MDC RAS Uncorrected Error Type Enumeration
47*4b8b8d74SJaiprakash Singh  * Enumerates the uncorrected error types in MDC_RAS_ROM(). See also RAS_UET_E of which
48*4b8b8d74SJaiprakash Singh  * this enumeration is a superset.
49*4b8b8d74SJaiprakash Singh  */
50*4b8b8d74SJaiprakash Singh #define ODY_MDC_RAS_UET_E_NOUC (4)
51*4b8b8d74SJaiprakash Singh #define ODY_MDC_RAS_UET_E_UC (0)
52*4b8b8d74SJaiprakash Singh #define ODY_MDC_RAS_UET_E_UEO (2)
53*4b8b8d74SJaiprakash Singh #define ODY_MDC_RAS_UET_E_UER (3)
54*4b8b8d74SJaiprakash Singh #define ODY_MDC_RAS_UET_E_UEU (1)
55*4b8b8d74SJaiprakash Singh 
56*4b8b8d74SJaiprakash Singh /**
57*4b8b8d74SJaiprakash Singh  * Structure mdc_ras_entry_s
58*4b8b8d74SJaiprakash Singh  *
59*4b8b8d74SJaiprakash Singh  * MDN RAS Entry Structure
60*4b8b8d74SJaiprakash Singh  * This structure describes the leaf node data returned from MDC_RAS_ROM().
61*4b8b8d74SJaiprakash Singh  */
62*4b8b8d74SJaiprakash Singh union ody_mdc_ras_entry_s {
63*4b8b8d74SJaiprakash Singh 	uint64_t u;
64*4b8b8d74SJaiprakash Singh 	struct ody_mdc_ras_entry_s_s {
65*4b8b8d74SJaiprakash Singh 		uint64_t reserved_0_17               : 18;
66*4b8b8d74SJaiprakash Singh 		uint64_t ras_poison                  : 2;
67*4b8b8d74SJaiprakash Singh 		uint64_t ras_transient               : 1;
68*4b8b8d74SJaiprakash Singh 		uint64_t ras_uet                     : 3;
69*4b8b8d74SJaiprakash Singh 		uint64_t ras_serr                    : 8;
70*4b8b8d74SJaiprakash Singh 		uint64_t ras_id                      : 32;
71*4b8b8d74SJaiprakash Singh 	} s;
72*4b8b8d74SJaiprakash Singh 	/* struct ody_mdc_ras_entry_s_s cn; */
73*4b8b8d74SJaiprakash Singh };
74*4b8b8d74SJaiprakash Singh 
75*4b8b8d74SJaiprakash Singh /**
76*4b8b8d74SJaiprakash Singh  * Register (RSL) mdc_active_pc
77*4b8b8d74SJaiprakash Singh  *
78*4b8b8d74SJaiprakash Singh  * MDC Active Cycles Register
79*4b8b8d74SJaiprakash Singh  */
80*4b8b8d74SJaiprakash Singh union ody_mdc_active_pc {
81*4b8b8d74SJaiprakash Singh 	uint64_t u;
82*4b8b8d74SJaiprakash Singh 	struct ody_mdc_active_pc_s {
83*4b8b8d74SJaiprakash Singh 		uint64_t act_cyc                     : 64;
84*4b8b8d74SJaiprakash Singh 	} s;
85*4b8b8d74SJaiprakash Singh 	/* struct ody_mdc_active_pc_s cn; */
86*4b8b8d74SJaiprakash Singh };
87*4b8b8d74SJaiprakash Singh typedef union ody_mdc_active_pc ody_mdc_active_pc_t;
88*4b8b8d74SJaiprakash Singh 
89*4b8b8d74SJaiprakash Singh #define ODY_MDC_ACTIVE_PC ODY_MDC_ACTIVE_PC_FUNC()
90*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_ACTIVE_PC_FUNC(void) __attribute__ ((pure, always_inline));
ODY_MDC_ACTIVE_PC_FUNC(void)91*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_ACTIVE_PC_FUNC(void)
92*4b8b8d74SJaiprakash Singh {
93*4b8b8d74SJaiprakash Singh 	return 0x87e0100000e8ll;
94*4b8b8d74SJaiprakash Singh }
95*4b8b8d74SJaiprakash Singh 
96*4b8b8d74SJaiprakash Singh #define typedef_ODY_MDC_ACTIVE_PC ody_mdc_active_pc_t
97*4b8b8d74SJaiprakash Singh #define bustype_ODY_MDC_ACTIVE_PC CSR_TYPE_RSL
98*4b8b8d74SJaiprakash Singh #define basename_ODY_MDC_ACTIVE_PC "MDC_ACTIVE_PC"
99*4b8b8d74SJaiprakash Singh #define device_bar_ODY_MDC_ACTIVE_PC 0x0 /* PF_BAR0 */
100*4b8b8d74SJaiprakash Singh #define busnum_ODY_MDC_ACTIVE_PC 0
101*4b8b8d74SJaiprakash Singh #define arguments_ODY_MDC_ACTIVE_PC -1, -1, -1, -1
102*4b8b8d74SJaiprakash Singh 
103*4b8b8d74SJaiprakash Singh /**
104*4b8b8d74SJaiprakash Singh  * Register (RSL) mdc_bist_config
105*4b8b8d74SJaiprakash Singh  *
106*4b8b8d74SJaiprakash Singh  * MDC Configuration Register
107*4b8b8d74SJaiprakash Singh  */
108*4b8b8d74SJaiprakash Singh union ody_mdc_bist_config {
109*4b8b8d74SJaiprakash Singh 	uint64_t u;
110*4b8b8d74SJaiprakash Singh 	struct ody_mdc_bist_config_s {
111*4b8b8d74SJaiprakash Singh 		uint64_t stagger_period              : 16;
112*4b8b8d74SJaiprakash Singh 		uint64_t stagger_disable             : 1;
113*4b8b8d74SJaiprakash Singh 		uint64_t bisr_soft_disable_xor       : 1;
114*4b8b8d74SJaiprakash Singh 		uint64_t mdn_start_ratio             : 4;
115*4b8b8d74SJaiprakash Singh 		uint64_t mdh_start_ratio             : 3;
116*4b8b8d74SJaiprakash Singh 		uint64_t mdc_broadcast               : 1;
117*4b8b8d74SJaiprakash Singh 		uint64_t clock_gating_enable         : 1;
118*4b8b8d74SJaiprakash Singh 		uint64_t reserved_27_63              : 37;
119*4b8b8d74SJaiprakash Singh 	} s;
120*4b8b8d74SJaiprakash Singh 	/* struct ody_mdc_bist_config_s cn; */
121*4b8b8d74SJaiprakash Singh };
122*4b8b8d74SJaiprakash Singh typedef union ody_mdc_bist_config ody_mdc_bist_config_t;
123*4b8b8d74SJaiprakash Singh 
124*4b8b8d74SJaiprakash Singh #define ODY_MDC_BIST_CONFIG ODY_MDC_BIST_CONFIG_FUNC()
125*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_BIST_CONFIG_FUNC(void) __attribute__ ((pure, always_inline));
ODY_MDC_BIST_CONFIG_FUNC(void)126*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_BIST_CONFIG_FUNC(void)
127*4b8b8d74SJaiprakash Singh {
128*4b8b8d74SJaiprakash Singh 	return 0x87e010000008ll;
129*4b8b8d74SJaiprakash Singh }
130*4b8b8d74SJaiprakash Singh 
131*4b8b8d74SJaiprakash Singh #define typedef_ODY_MDC_BIST_CONFIG ody_mdc_bist_config_t
132*4b8b8d74SJaiprakash Singh #define bustype_ODY_MDC_BIST_CONFIG CSR_TYPE_RSL
133*4b8b8d74SJaiprakash Singh #define basename_ODY_MDC_BIST_CONFIG "MDC_BIST_CONFIG"
134*4b8b8d74SJaiprakash Singh #define device_bar_ODY_MDC_BIST_CONFIG 0x0 /* PF_BAR0 */
135*4b8b8d74SJaiprakash Singh #define busnum_ODY_MDC_BIST_CONFIG 0
136*4b8b8d74SJaiprakash Singh #define arguments_ODY_MDC_BIST_CONFIG -1, -1, -1, -1
137*4b8b8d74SJaiprakash Singh 
138*4b8b8d74SJaiprakash Singh /**
139*4b8b8d74SJaiprakash Singh  * Register (RSL) mdc_bist_control
140*4b8b8d74SJaiprakash Singh  *
141*4b8b8d74SJaiprakash Singh  * MDC Global BIST Control Register
142*4b8b8d74SJaiprakash Singh  */
143*4b8b8d74SJaiprakash Singh union ody_mdc_bist_control {
144*4b8b8d74SJaiprakash Singh 	uint64_t u;
145*4b8b8d74SJaiprakash Singh 	struct ody_mdc_bist_control_s {
146*4b8b8d74SJaiprakash Singh 		uint64_t start                       : 1;
147*4b8b8d74SJaiprakash Singh 		uint64_t clear                       : 1;
148*4b8b8d74SJaiprakash Singh 		uint64_t reset                       : 1;
149*4b8b8d74SJaiprakash Singh 		uint64_t reserved_3_63               : 61;
150*4b8b8d74SJaiprakash Singh 	} s;
151*4b8b8d74SJaiprakash Singh 	/* struct ody_mdc_bist_control_s cn; */
152*4b8b8d74SJaiprakash Singh };
153*4b8b8d74SJaiprakash Singh typedef union ody_mdc_bist_control ody_mdc_bist_control_t;
154*4b8b8d74SJaiprakash Singh 
155*4b8b8d74SJaiprakash Singh #define ODY_MDC_BIST_CONTROL ODY_MDC_BIST_CONTROL_FUNC()
156*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_BIST_CONTROL_FUNC(void) __attribute__ ((pure, always_inline));
ODY_MDC_BIST_CONTROL_FUNC(void)157*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_BIST_CONTROL_FUNC(void)
158*4b8b8d74SJaiprakash Singh {
159*4b8b8d74SJaiprakash Singh 	return 0x87e010000028ll;
160*4b8b8d74SJaiprakash Singh }
161*4b8b8d74SJaiprakash Singh 
162*4b8b8d74SJaiprakash Singh #define typedef_ODY_MDC_BIST_CONTROL ody_mdc_bist_control_t
163*4b8b8d74SJaiprakash Singh #define bustype_ODY_MDC_BIST_CONTROL CSR_TYPE_RSL
164*4b8b8d74SJaiprakash Singh #define basename_ODY_MDC_BIST_CONTROL "MDC_BIST_CONTROL"
165*4b8b8d74SJaiprakash Singh #define device_bar_ODY_MDC_BIST_CONTROL 0x0 /* PF_BAR0 */
166*4b8b8d74SJaiprakash Singh #define busnum_ODY_MDC_BIST_CONTROL 0
167*4b8b8d74SJaiprakash Singh #define arguments_ODY_MDC_BIST_CONTROL -1, -1, -1, -1
168*4b8b8d74SJaiprakash Singh 
169*4b8b8d74SJaiprakash Singh /**
170*4b8b8d74SJaiprakash Singh  * Register (RSL) mdc_bist_debug_mode
171*4b8b8d74SJaiprakash Singh  *
172*4b8b8d74SJaiprakash Singh  * MDC Configuration Register
173*4b8b8d74SJaiprakash Singh  */
174*4b8b8d74SJaiprakash Singh union ody_mdc_bist_debug_mode {
175*4b8b8d74SJaiprakash Singh 	uint64_t u;
176*4b8b8d74SJaiprakash Singh 	struct ody_mdc_bist_debug_mode_s {
177*4b8b8d74SJaiprakash Singh 		uint64_t enable                      : 1;
178*4b8b8d74SJaiprakash Singh 		uint64_t reserved_1_63               : 63;
179*4b8b8d74SJaiprakash Singh 	} s;
180*4b8b8d74SJaiprakash Singh 	/* struct ody_mdc_bist_debug_mode_s cn; */
181*4b8b8d74SJaiprakash Singh };
182*4b8b8d74SJaiprakash Singh typedef union ody_mdc_bist_debug_mode ody_mdc_bist_debug_mode_t;
183*4b8b8d74SJaiprakash Singh 
184*4b8b8d74SJaiprakash Singh #define ODY_MDC_BIST_DEBUG_MODE ODY_MDC_BIST_DEBUG_MODE_FUNC()
185*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_BIST_DEBUG_MODE_FUNC(void) __attribute__ ((pure, always_inline));
ODY_MDC_BIST_DEBUG_MODE_FUNC(void)186*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_BIST_DEBUG_MODE_FUNC(void)
187*4b8b8d74SJaiprakash Singh {
188*4b8b8d74SJaiprakash Singh 	return 0x87e010000000ll;
189*4b8b8d74SJaiprakash Singh }
190*4b8b8d74SJaiprakash Singh 
191*4b8b8d74SJaiprakash Singh #define typedef_ODY_MDC_BIST_DEBUG_MODE ody_mdc_bist_debug_mode_t
192*4b8b8d74SJaiprakash Singh #define bustype_ODY_MDC_BIST_DEBUG_MODE CSR_TYPE_RSL
193*4b8b8d74SJaiprakash Singh #define basename_ODY_MDC_BIST_DEBUG_MODE "MDC_BIST_DEBUG_MODE"
194*4b8b8d74SJaiprakash Singh #define device_bar_ODY_MDC_BIST_DEBUG_MODE 0x0 /* PF_BAR0 */
195*4b8b8d74SJaiprakash Singh #define busnum_ODY_MDC_BIST_DEBUG_MODE 0
196*4b8b8d74SJaiprakash Singh #define arguments_ODY_MDC_BIST_DEBUG_MODE -1, -1, -1, -1
197*4b8b8d74SJaiprakash Singh 
198*4b8b8d74SJaiprakash Singh /**
199*4b8b8d74SJaiprakash Singh  * Register (RSL) mdc_bist_fail#
200*4b8b8d74SJaiprakash Singh  *
201*4b8b8d74SJaiprakash Singh  * MDC BIST Failures Register
202*4b8b8d74SJaiprakash Singh  * This register array holds information about the first 32 BIST failures.
203*4b8b8d74SJaiprakash Singh  */
204*4b8b8d74SJaiprakash Singh union ody_mdc_bist_failx {
205*4b8b8d74SJaiprakash Singh 	uint64_t u;
206*4b8b8d74SJaiprakash Singh 	struct ody_mdc_bist_failx_s {
207*4b8b8d74SJaiprakash Singh 		uint64_t info                        : 12;
208*4b8b8d74SJaiprakash Singh 		uint64_t node_id                     : 10;
209*4b8b8d74SJaiprakash Singh 		uint64_t hub_id                      : 7;
210*4b8b8d74SJaiprakash Singh 		uint64_t chain_id                    : 3;
211*4b8b8d74SJaiprakash Singh 		uint64_t reserved_32_63              : 32;
212*4b8b8d74SJaiprakash Singh 	} s;
213*4b8b8d74SJaiprakash Singh 	/* struct ody_mdc_bist_failx_s cn; */
214*4b8b8d74SJaiprakash Singh };
215*4b8b8d74SJaiprakash Singh typedef union ody_mdc_bist_failx ody_mdc_bist_failx_t;
216*4b8b8d74SJaiprakash Singh 
217*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_BIST_FAILX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_MDC_BIST_FAILX(uint64_t a)218*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_BIST_FAILX(uint64_t a)
219*4b8b8d74SJaiprakash Singh {
220*4b8b8d74SJaiprakash Singh 	if (a <= 31)
221*4b8b8d74SJaiprakash Singh 		return 0x87e010000100ll + 8ll * ((a) & 0x1f);
222*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("MDC_BIST_FAILX", 1, a, 0, 0, 0, 0, 0);
223*4b8b8d74SJaiprakash Singh }
224*4b8b8d74SJaiprakash Singh 
225*4b8b8d74SJaiprakash Singh #define typedef_ODY_MDC_BIST_FAILX(a) ody_mdc_bist_failx_t
226*4b8b8d74SJaiprakash Singh #define bustype_ODY_MDC_BIST_FAILX(a) CSR_TYPE_RSL
227*4b8b8d74SJaiprakash Singh #define basename_ODY_MDC_BIST_FAILX(a) "MDC_BIST_FAILX"
228*4b8b8d74SJaiprakash Singh #define device_bar_ODY_MDC_BIST_FAILX(a) 0x0 /* PF_BAR0 */
229*4b8b8d74SJaiprakash Singh #define busnum_ODY_MDC_BIST_FAILX(a) (a)
230*4b8b8d74SJaiprakash Singh #define arguments_ODY_MDC_BIST_FAILX(a) (a), -1, -1, -1
231*4b8b8d74SJaiprakash Singh 
232*4b8b8d74SJaiprakash Singh /**
233*4b8b8d74SJaiprakash Singh  * Register (RSL) mdc_bist_status
234*4b8b8d74SJaiprakash Singh  *
235*4b8b8d74SJaiprakash Singh  * MDC Global BIST Status Register
236*4b8b8d74SJaiprakash Singh  */
237*4b8b8d74SJaiprakash Singh union ody_mdc_bist_status {
238*4b8b8d74SJaiprakash Singh 	uint64_t u;
239*4b8b8d74SJaiprakash Singh 	struct ody_mdc_bist_status_s {
240*4b8b8d74SJaiprakash Singh 		uint64_t status                      : 3;
241*4b8b8d74SJaiprakash Singh 		uint64_t rst_bist_req                : 1;
242*4b8b8d74SJaiprakash Singh 		uint64_t reserved_4_15               : 12;
243*4b8b8d74SJaiprakash Singh 		uint64_t fail_count                  : 16;
244*4b8b8d74SJaiprakash Singh 		uint64_t sm_state                    : 6;
245*4b8b8d74SJaiprakash Singh 		uint64_t reserved_38_63              : 26;
246*4b8b8d74SJaiprakash Singh 	} s;
247*4b8b8d74SJaiprakash Singh 	/* struct ody_mdc_bist_status_s cn; */
248*4b8b8d74SJaiprakash Singh };
249*4b8b8d74SJaiprakash Singh typedef union ody_mdc_bist_status ody_mdc_bist_status_t;
250*4b8b8d74SJaiprakash Singh 
251*4b8b8d74SJaiprakash Singh #define ODY_MDC_BIST_STATUS ODY_MDC_BIST_STATUS_FUNC()
252*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_BIST_STATUS_FUNC(void) __attribute__ ((pure, always_inline));
ODY_MDC_BIST_STATUS_FUNC(void)253*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_BIST_STATUS_FUNC(void)
254*4b8b8d74SJaiprakash Singh {
255*4b8b8d74SJaiprakash Singh 	return 0x87e010000030ll;
256*4b8b8d74SJaiprakash Singh }
257*4b8b8d74SJaiprakash Singh 
258*4b8b8d74SJaiprakash Singh #define typedef_ODY_MDC_BIST_STATUS ody_mdc_bist_status_t
259*4b8b8d74SJaiprakash Singh #define bustype_ODY_MDC_BIST_STATUS CSR_TYPE_RSL
260*4b8b8d74SJaiprakash Singh #define basename_ODY_MDC_BIST_STATUS "MDC_BIST_STATUS"
261*4b8b8d74SJaiprakash Singh #define device_bar_ODY_MDC_BIST_STATUS 0x0 /* PF_BAR0 */
262*4b8b8d74SJaiprakash Singh #define busnum_ODY_MDC_BIST_STATUS 0
263*4b8b8d74SJaiprakash Singh #define arguments_ODY_MDC_BIST_STATUS -1, -1, -1, -1
264*4b8b8d74SJaiprakash Singh 
265*4b8b8d74SJaiprakash Singh /**
266*4b8b8d74SJaiprakash Singh  * Register (RSL) mdc_const
267*4b8b8d74SJaiprakash Singh  *
268*4b8b8d74SJaiprakash Singh  * MDC Constants Register
269*4b8b8d74SJaiprakash Singh  */
270*4b8b8d74SJaiprakash Singh union ody_mdc_const {
271*4b8b8d74SJaiprakash Singh 	uint64_t u;
272*4b8b8d74SJaiprakash Singh 	struct ody_mdc_const_s {
273*4b8b8d74SJaiprakash Singh 		uint64_t reserved_0_15               : 16;
274*4b8b8d74SJaiprakash Singh 		uint64_t max_node_id                 : 10;
275*4b8b8d74SJaiprakash Singh 		uint64_t max_hub_id                  : 8;
276*4b8b8d74SJaiprakash Singh 		uint64_t max_chain_id                : 5;
277*4b8b8d74SJaiprakash Singh 		uint64_t reserved_39_63              : 25;
278*4b8b8d74SJaiprakash Singh 	} s;
279*4b8b8d74SJaiprakash Singh 	/* struct ody_mdc_const_s cn; */
280*4b8b8d74SJaiprakash Singh };
281*4b8b8d74SJaiprakash Singh typedef union ody_mdc_const ody_mdc_const_t;
282*4b8b8d74SJaiprakash Singh 
283*4b8b8d74SJaiprakash Singh #define ODY_MDC_CONST ODY_MDC_CONST_FUNC()
284*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_CONST_FUNC(void) __attribute__ ((pure, always_inline));
ODY_MDC_CONST_FUNC(void)285*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_CONST_FUNC(void)
286*4b8b8d74SJaiprakash Singh {
287*4b8b8d74SJaiprakash Singh 	return 0x87e010000068ll;
288*4b8b8d74SJaiprakash Singh }
289*4b8b8d74SJaiprakash Singh 
290*4b8b8d74SJaiprakash Singh #define typedef_ODY_MDC_CONST ody_mdc_const_t
291*4b8b8d74SJaiprakash Singh #define bustype_ODY_MDC_CONST CSR_TYPE_RSL
292*4b8b8d74SJaiprakash Singh #define basename_ODY_MDC_CONST "MDC_CONST"
293*4b8b8d74SJaiprakash Singh #define device_bar_ODY_MDC_CONST 0x0 /* PF_BAR0 */
294*4b8b8d74SJaiprakash Singh #define busnum_ODY_MDC_CONST 0
295*4b8b8d74SJaiprakash Singh #define arguments_ODY_MDC_CONST -1, -1, -1, -1
296*4b8b8d74SJaiprakash Singh 
297*4b8b8d74SJaiprakash Singh /**
298*4b8b8d74SJaiprakash Singh  * Register (RSL) mdc_ecc_config
299*4b8b8d74SJaiprakash Singh  *
300*4b8b8d74SJaiprakash Singh  * MDC ECC Configuration Register
301*4b8b8d74SJaiprakash Singh  */
302*4b8b8d74SJaiprakash Singh union ody_mdc_ecc_config {
303*4b8b8d74SJaiprakash Singh 	uint64_t u;
304*4b8b8d74SJaiprakash Singh 	struct ody_mdc_ecc_config_s {
305*4b8b8d74SJaiprakash Singh 		uint64_t polling_period              : 32;
306*4b8b8d74SJaiprakash Singh 		uint64_t reserved_32_63              : 32;
307*4b8b8d74SJaiprakash Singh 	} s;
308*4b8b8d74SJaiprakash Singh 	/* struct ody_mdc_ecc_config_s cn; */
309*4b8b8d74SJaiprakash Singh };
310*4b8b8d74SJaiprakash Singh typedef union ody_mdc_ecc_config ody_mdc_ecc_config_t;
311*4b8b8d74SJaiprakash Singh 
312*4b8b8d74SJaiprakash Singh #define ODY_MDC_ECC_CONFIG ODY_MDC_ECC_CONFIG_FUNC()
313*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_ECC_CONFIG_FUNC(void) __attribute__ ((pure, always_inline));
ODY_MDC_ECC_CONFIG_FUNC(void)314*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_ECC_CONFIG_FUNC(void)
315*4b8b8d74SJaiprakash Singh {
316*4b8b8d74SJaiprakash Singh 	return 0x87e010000038ll;
317*4b8b8d74SJaiprakash Singh }
318*4b8b8d74SJaiprakash Singh 
319*4b8b8d74SJaiprakash Singh #define typedef_ODY_MDC_ECC_CONFIG ody_mdc_ecc_config_t
320*4b8b8d74SJaiprakash Singh #define bustype_ODY_MDC_ECC_CONFIG CSR_TYPE_RSL
321*4b8b8d74SJaiprakash Singh #define basename_ODY_MDC_ECC_CONFIG "MDC_ECC_CONFIG"
322*4b8b8d74SJaiprakash Singh #define device_bar_ODY_MDC_ECC_CONFIG 0x0 /* PF_BAR0 */
323*4b8b8d74SJaiprakash Singh #define busnum_ODY_MDC_ECC_CONFIG 0
324*4b8b8d74SJaiprakash Singh #define arguments_ODY_MDC_ECC_CONFIG -1, -1, -1, -1
325*4b8b8d74SJaiprakash Singh 
326*4b8b8d74SJaiprakash Singh /**
327*4b8b8d74SJaiprakash Singh  * Register (RSL) mdc_ecc_status
328*4b8b8d74SJaiprakash Singh  *
329*4b8b8d74SJaiprakash Singh  * MDC Interrupt Status Register
330*4b8b8d74SJaiprakash Singh  */
331*4b8b8d74SJaiprakash Singh union ody_mdc_ecc_status {
332*4b8b8d74SJaiprakash Singh 	uint64_t u;
333*4b8b8d74SJaiprakash Singh 	struct ody_mdc_ecc_status_s {
334*4b8b8d74SJaiprakash Singh 		uint64_t sbe                         : 1;
335*4b8b8d74SJaiprakash Singh 		uint64_t dbe                         : 1;
336*4b8b8d74SJaiprakash Singh 		uint64_t sbe_plus                    : 1;
337*4b8b8d74SJaiprakash Singh 		uint64_t dbe_plus                    : 1;
338*4b8b8d74SJaiprakash Singh 		uint64_t reserved_4_15               : 12;
339*4b8b8d74SJaiprakash Singh 		uint64_t node_id                     : 10;
340*4b8b8d74SJaiprakash Singh 		uint64_t hub_id                      : 7;
341*4b8b8d74SJaiprakash Singh 		uint64_t chain_id                    : 3;
342*4b8b8d74SJaiprakash Singh 		uint64_t reserved_36_47              : 12;
343*4b8b8d74SJaiprakash Singh 		uint64_t row                         : 14;
344*4b8b8d74SJaiprakash Singh 		uint64_t reserved_62_63              : 2;
345*4b8b8d74SJaiprakash Singh 	} s;
346*4b8b8d74SJaiprakash Singh 	/* struct ody_mdc_ecc_status_s cn; */
347*4b8b8d74SJaiprakash Singh };
348*4b8b8d74SJaiprakash Singh typedef union ody_mdc_ecc_status ody_mdc_ecc_status_t;
349*4b8b8d74SJaiprakash Singh 
350*4b8b8d74SJaiprakash Singh #define ODY_MDC_ECC_STATUS ODY_MDC_ECC_STATUS_FUNC()
351*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_ECC_STATUS_FUNC(void) __attribute__ ((pure, always_inline));
ODY_MDC_ECC_STATUS_FUNC(void)352*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_ECC_STATUS_FUNC(void)
353*4b8b8d74SJaiprakash Singh {
354*4b8b8d74SJaiprakash Singh 	return 0x87e010000040ll;
355*4b8b8d74SJaiprakash Singh }
356*4b8b8d74SJaiprakash Singh 
357*4b8b8d74SJaiprakash Singh #define typedef_ODY_MDC_ECC_STATUS ody_mdc_ecc_status_t
358*4b8b8d74SJaiprakash Singh #define bustype_ODY_MDC_ECC_STATUS CSR_TYPE_RSL
359*4b8b8d74SJaiprakash Singh #define basename_ODY_MDC_ECC_STATUS "MDC_ECC_STATUS"
360*4b8b8d74SJaiprakash Singh #define device_bar_ODY_MDC_ECC_STATUS 0x0 /* PF_BAR0 */
361*4b8b8d74SJaiprakash Singh #define busnum_ODY_MDC_ECC_STATUS 0
362*4b8b8d74SJaiprakash Singh #define arguments_ODY_MDC_ECC_STATUS -1, -1, -1, -1
363*4b8b8d74SJaiprakash Singh 
364*4b8b8d74SJaiprakash Singh /**
365*4b8b8d74SJaiprakash Singh  * Register (RSL) mdc_int_ena_w1c
366*4b8b8d74SJaiprakash Singh  *
367*4b8b8d74SJaiprakash Singh  * MDC Interrupt Enable Write-1-Clear Register
368*4b8b8d74SJaiprakash Singh  * This register clears interrupt enable bits.
369*4b8b8d74SJaiprakash Singh  */
370*4b8b8d74SJaiprakash Singh union ody_mdc_int_ena_w1c {
371*4b8b8d74SJaiprakash Singh 	uint64_t u;
372*4b8b8d74SJaiprakash Singh 	struct ody_mdc_int_ena_w1c_s {
373*4b8b8d74SJaiprakash Singh 		uint64_t ecc_error                   : 1;
374*4b8b8d74SJaiprakash Singh 		uint64_t reserved_1_63               : 63;
375*4b8b8d74SJaiprakash Singh 	} s;
376*4b8b8d74SJaiprakash Singh 	/* struct ody_mdc_int_ena_w1c_s cn; */
377*4b8b8d74SJaiprakash Singh };
378*4b8b8d74SJaiprakash Singh typedef union ody_mdc_int_ena_w1c ody_mdc_int_ena_w1c_t;
379*4b8b8d74SJaiprakash Singh 
380*4b8b8d74SJaiprakash Singh #define ODY_MDC_INT_ENA_W1C ODY_MDC_INT_ENA_W1C_FUNC()
381*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_INT_ENA_W1C_FUNC(void) __attribute__ ((pure, always_inline));
ODY_MDC_INT_ENA_W1C_FUNC(void)382*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_INT_ENA_W1C_FUNC(void)
383*4b8b8d74SJaiprakash Singh {
384*4b8b8d74SJaiprakash Singh 	return 0x87e010000058ll;
385*4b8b8d74SJaiprakash Singh }
386*4b8b8d74SJaiprakash Singh 
387*4b8b8d74SJaiprakash Singh #define typedef_ODY_MDC_INT_ENA_W1C ody_mdc_int_ena_w1c_t
388*4b8b8d74SJaiprakash Singh #define bustype_ODY_MDC_INT_ENA_W1C CSR_TYPE_RSL
389*4b8b8d74SJaiprakash Singh #define basename_ODY_MDC_INT_ENA_W1C "MDC_INT_ENA_W1C"
390*4b8b8d74SJaiprakash Singh #define device_bar_ODY_MDC_INT_ENA_W1C 0x0 /* PF_BAR0 */
391*4b8b8d74SJaiprakash Singh #define busnum_ODY_MDC_INT_ENA_W1C 0
392*4b8b8d74SJaiprakash Singh #define arguments_ODY_MDC_INT_ENA_W1C -1, -1, -1, -1
393*4b8b8d74SJaiprakash Singh 
394*4b8b8d74SJaiprakash Singh /**
395*4b8b8d74SJaiprakash Singh  * Register (RSL) mdc_int_ena_w1s
396*4b8b8d74SJaiprakash Singh  *
397*4b8b8d74SJaiprakash Singh  * MDC Interrupt Enable Write-1-Set Register
398*4b8b8d74SJaiprakash Singh  * This register sets interrupt enable bits.
399*4b8b8d74SJaiprakash Singh  */
400*4b8b8d74SJaiprakash Singh union ody_mdc_int_ena_w1s {
401*4b8b8d74SJaiprakash Singh 	uint64_t u;
402*4b8b8d74SJaiprakash Singh 	struct ody_mdc_int_ena_w1s_s {
403*4b8b8d74SJaiprakash Singh 		uint64_t ecc_error                   : 1;
404*4b8b8d74SJaiprakash Singh 		uint64_t reserved_1_63               : 63;
405*4b8b8d74SJaiprakash Singh 	} s;
406*4b8b8d74SJaiprakash Singh 	/* struct ody_mdc_int_ena_w1s_s cn; */
407*4b8b8d74SJaiprakash Singh };
408*4b8b8d74SJaiprakash Singh typedef union ody_mdc_int_ena_w1s ody_mdc_int_ena_w1s_t;
409*4b8b8d74SJaiprakash Singh 
410*4b8b8d74SJaiprakash Singh #define ODY_MDC_INT_ENA_W1S ODY_MDC_INT_ENA_W1S_FUNC()
411*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_INT_ENA_W1S_FUNC(void) __attribute__ ((pure, always_inline));
ODY_MDC_INT_ENA_W1S_FUNC(void)412*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_INT_ENA_W1S_FUNC(void)
413*4b8b8d74SJaiprakash Singh {
414*4b8b8d74SJaiprakash Singh 	return 0x87e010000060ll;
415*4b8b8d74SJaiprakash Singh }
416*4b8b8d74SJaiprakash Singh 
417*4b8b8d74SJaiprakash Singh #define typedef_ODY_MDC_INT_ENA_W1S ody_mdc_int_ena_w1s_t
418*4b8b8d74SJaiprakash Singh #define bustype_ODY_MDC_INT_ENA_W1S CSR_TYPE_RSL
419*4b8b8d74SJaiprakash Singh #define basename_ODY_MDC_INT_ENA_W1S "MDC_INT_ENA_W1S"
420*4b8b8d74SJaiprakash Singh #define device_bar_ODY_MDC_INT_ENA_W1S 0x0 /* PF_BAR0 */
421*4b8b8d74SJaiprakash Singh #define busnum_ODY_MDC_INT_ENA_W1S 0
422*4b8b8d74SJaiprakash Singh #define arguments_ODY_MDC_INT_ENA_W1S -1, -1, -1, -1
423*4b8b8d74SJaiprakash Singh 
424*4b8b8d74SJaiprakash Singh /**
425*4b8b8d74SJaiprakash Singh  * Register (RSL) mdc_int_w1c
426*4b8b8d74SJaiprakash Singh  *
427*4b8b8d74SJaiprakash Singh  * MDC Interrupt Control Register
428*4b8b8d74SJaiprakash Singh  */
429*4b8b8d74SJaiprakash Singh union ody_mdc_int_w1c {
430*4b8b8d74SJaiprakash Singh 	uint64_t u;
431*4b8b8d74SJaiprakash Singh 	struct ody_mdc_int_w1c_s {
432*4b8b8d74SJaiprakash Singh 		uint64_t ecc_error                   : 1;
433*4b8b8d74SJaiprakash Singh 		uint64_t reserved_1_63               : 63;
434*4b8b8d74SJaiprakash Singh 	} s;
435*4b8b8d74SJaiprakash Singh 	/* struct ody_mdc_int_w1c_s cn; */
436*4b8b8d74SJaiprakash Singh };
437*4b8b8d74SJaiprakash Singh typedef union ody_mdc_int_w1c ody_mdc_int_w1c_t;
438*4b8b8d74SJaiprakash Singh 
439*4b8b8d74SJaiprakash Singh #define ODY_MDC_INT_W1C ODY_MDC_INT_W1C_FUNC()
440*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_INT_W1C_FUNC(void) __attribute__ ((pure, always_inline));
ODY_MDC_INT_W1C_FUNC(void)441*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_INT_W1C_FUNC(void)
442*4b8b8d74SJaiprakash Singh {
443*4b8b8d74SJaiprakash Singh 	return 0x87e010000048ll;
444*4b8b8d74SJaiprakash Singh }
445*4b8b8d74SJaiprakash Singh 
446*4b8b8d74SJaiprakash Singh #define typedef_ODY_MDC_INT_W1C ody_mdc_int_w1c_t
447*4b8b8d74SJaiprakash Singh #define bustype_ODY_MDC_INT_W1C CSR_TYPE_RSL
448*4b8b8d74SJaiprakash Singh #define basename_ODY_MDC_INT_W1C "MDC_INT_W1C"
449*4b8b8d74SJaiprakash Singh #define device_bar_ODY_MDC_INT_W1C 0x0 /* PF_BAR0 */
450*4b8b8d74SJaiprakash Singh #define busnum_ODY_MDC_INT_W1C 0
451*4b8b8d74SJaiprakash Singh #define arguments_ODY_MDC_INT_W1C -1, -1, -1, -1
452*4b8b8d74SJaiprakash Singh 
453*4b8b8d74SJaiprakash Singh /**
454*4b8b8d74SJaiprakash Singh  * Register (RSL) mdc_int_w1s
455*4b8b8d74SJaiprakash Singh  *
456*4b8b8d74SJaiprakash Singh  * MDC Interrupt Control Register
457*4b8b8d74SJaiprakash Singh  * This register sets interrupt bits.
458*4b8b8d74SJaiprakash Singh  */
459*4b8b8d74SJaiprakash Singh union ody_mdc_int_w1s {
460*4b8b8d74SJaiprakash Singh 	uint64_t u;
461*4b8b8d74SJaiprakash Singh 	struct ody_mdc_int_w1s_s {
462*4b8b8d74SJaiprakash Singh 		uint64_t ecc_error                   : 1;
463*4b8b8d74SJaiprakash Singh 		uint64_t reserved_1_63               : 63;
464*4b8b8d74SJaiprakash Singh 	} s;
465*4b8b8d74SJaiprakash Singh 	/* struct ody_mdc_int_w1s_s cn; */
466*4b8b8d74SJaiprakash Singh };
467*4b8b8d74SJaiprakash Singh typedef union ody_mdc_int_w1s ody_mdc_int_w1s_t;
468*4b8b8d74SJaiprakash Singh 
469*4b8b8d74SJaiprakash Singh #define ODY_MDC_INT_W1S ODY_MDC_INT_W1S_FUNC()
470*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_INT_W1S_FUNC(void) __attribute__ ((pure, always_inline));
ODY_MDC_INT_W1S_FUNC(void)471*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_INT_W1S_FUNC(void)
472*4b8b8d74SJaiprakash Singh {
473*4b8b8d74SJaiprakash Singh 	return 0x87e010000050ll;
474*4b8b8d74SJaiprakash Singh }
475*4b8b8d74SJaiprakash Singh 
476*4b8b8d74SJaiprakash Singh #define typedef_ODY_MDC_INT_W1S ody_mdc_int_w1s_t
477*4b8b8d74SJaiprakash Singh #define bustype_ODY_MDC_INT_W1S CSR_TYPE_RSL
478*4b8b8d74SJaiprakash Singh #define basename_ODY_MDC_INT_W1S "MDC_INT_W1S"
479*4b8b8d74SJaiprakash Singh #define device_bar_ODY_MDC_INT_W1S 0x0 /* PF_BAR0 */
480*4b8b8d74SJaiprakash Singh #define busnum_ODY_MDC_INT_W1S 0
481*4b8b8d74SJaiprakash Singh #define arguments_ODY_MDC_INT_W1S -1, -1, -1, -1
482*4b8b8d74SJaiprakash Singh 
483*4b8b8d74SJaiprakash Singh /**
484*4b8b8d74SJaiprakash Singh  * Register (RSL) mdc_pf_msix_pba#
485*4b8b8d74SJaiprakash Singh  *
486*4b8b8d74SJaiprakash Singh  * MDC MSI-X Pending Bit Array Registers
487*4b8b8d74SJaiprakash Singh  * This register is the MSI-X PBA table; the bit number is indexed by the MDC_INT_VEC_E
488*4b8b8d74SJaiprakash Singh  * enumeration.
489*4b8b8d74SJaiprakash Singh  */
490*4b8b8d74SJaiprakash Singh union ody_mdc_pf_msix_pbax {
491*4b8b8d74SJaiprakash Singh 	uint64_t u;
492*4b8b8d74SJaiprakash Singh 	struct ody_mdc_pf_msix_pbax_s {
493*4b8b8d74SJaiprakash Singh 		uint64_t pend                        : 64;
494*4b8b8d74SJaiprakash Singh 	} s;
495*4b8b8d74SJaiprakash Singh 	/* struct ody_mdc_pf_msix_pbax_s cn; */
496*4b8b8d74SJaiprakash Singh };
497*4b8b8d74SJaiprakash Singh typedef union ody_mdc_pf_msix_pbax ody_mdc_pf_msix_pbax_t;
498*4b8b8d74SJaiprakash Singh 
499*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_PF_MSIX_PBAX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_MDC_PF_MSIX_PBAX(uint64_t a)500*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_PF_MSIX_PBAX(uint64_t a)
501*4b8b8d74SJaiprakash Singh {
502*4b8b8d74SJaiprakash Singh 	if (a == 0)
503*4b8b8d74SJaiprakash Singh 		return 0x87e0101f0000ll;
504*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("MDC_PF_MSIX_PBAX", 1, a, 0, 0, 0, 0, 0);
505*4b8b8d74SJaiprakash Singh }
506*4b8b8d74SJaiprakash Singh 
507*4b8b8d74SJaiprakash Singh #define typedef_ODY_MDC_PF_MSIX_PBAX(a) ody_mdc_pf_msix_pbax_t
508*4b8b8d74SJaiprakash Singh #define bustype_ODY_MDC_PF_MSIX_PBAX(a) CSR_TYPE_RSL
509*4b8b8d74SJaiprakash Singh #define basename_ODY_MDC_PF_MSIX_PBAX(a) "MDC_PF_MSIX_PBAX"
510*4b8b8d74SJaiprakash Singh #define device_bar_ODY_MDC_PF_MSIX_PBAX(a) 0x4 /* PF_BAR4 */
511*4b8b8d74SJaiprakash Singh #define busnum_ODY_MDC_PF_MSIX_PBAX(a) (a)
512*4b8b8d74SJaiprakash Singh #define arguments_ODY_MDC_PF_MSIX_PBAX(a) (a), -1, -1, -1
513*4b8b8d74SJaiprakash Singh 
514*4b8b8d74SJaiprakash Singh /**
515*4b8b8d74SJaiprakash Singh  * Register (RSL) mdc_pf_msix_vec#_addr
516*4b8b8d74SJaiprakash Singh  *
517*4b8b8d74SJaiprakash Singh  * MDC MSI-X Vector-Table Address Register
518*4b8b8d74SJaiprakash Singh  * This register is the MSI-X vector table, indexed by the MDC_INT_VEC_E enumeration.
519*4b8b8d74SJaiprakash Singh  */
520*4b8b8d74SJaiprakash Singh union ody_mdc_pf_msix_vecx_addr {
521*4b8b8d74SJaiprakash Singh 	uint64_t u;
522*4b8b8d74SJaiprakash Singh 	struct ody_mdc_pf_msix_vecx_addr_s {
523*4b8b8d74SJaiprakash Singh 		uint64_t secvec                      : 1;
524*4b8b8d74SJaiprakash Singh 		uint64_t reserved_1                  : 1;
525*4b8b8d74SJaiprakash Singh 		uint64_t addr                        : 51;
526*4b8b8d74SJaiprakash Singh 		uint64_t reserved_53_63              : 11;
527*4b8b8d74SJaiprakash Singh 	} s;
528*4b8b8d74SJaiprakash Singh 	/* struct ody_mdc_pf_msix_vecx_addr_s cn; */
529*4b8b8d74SJaiprakash Singh };
530*4b8b8d74SJaiprakash Singh typedef union ody_mdc_pf_msix_vecx_addr ody_mdc_pf_msix_vecx_addr_t;
531*4b8b8d74SJaiprakash Singh 
532*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_PF_MSIX_VECX_ADDR(uint64_t a) __attribute__ ((pure, always_inline));
ODY_MDC_PF_MSIX_VECX_ADDR(uint64_t a)533*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_PF_MSIX_VECX_ADDR(uint64_t a)
534*4b8b8d74SJaiprakash Singh {
535*4b8b8d74SJaiprakash Singh 	if (a == 0)
536*4b8b8d74SJaiprakash Singh 		return 0x87e010100000ll;
537*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("MDC_PF_MSIX_VECX_ADDR", 1, a, 0, 0, 0, 0, 0);
538*4b8b8d74SJaiprakash Singh }
539*4b8b8d74SJaiprakash Singh 
540*4b8b8d74SJaiprakash Singh #define typedef_ODY_MDC_PF_MSIX_VECX_ADDR(a) ody_mdc_pf_msix_vecx_addr_t
541*4b8b8d74SJaiprakash Singh #define bustype_ODY_MDC_PF_MSIX_VECX_ADDR(a) CSR_TYPE_RSL
542*4b8b8d74SJaiprakash Singh #define basename_ODY_MDC_PF_MSIX_VECX_ADDR(a) "MDC_PF_MSIX_VECX_ADDR"
543*4b8b8d74SJaiprakash Singh #define device_bar_ODY_MDC_PF_MSIX_VECX_ADDR(a) 0x4 /* PF_BAR4 */
544*4b8b8d74SJaiprakash Singh #define busnum_ODY_MDC_PF_MSIX_VECX_ADDR(a) (a)
545*4b8b8d74SJaiprakash Singh #define arguments_ODY_MDC_PF_MSIX_VECX_ADDR(a) (a), -1, -1, -1
546*4b8b8d74SJaiprakash Singh 
547*4b8b8d74SJaiprakash Singh /**
548*4b8b8d74SJaiprakash Singh  * Register (RSL) mdc_pf_msix_vec#_ctl
549*4b8b8d74SJaiprakash Singh  *
550*4b8b8d74SJaiprakash Singh  * MDC MSI-X Vector-Table Control and Data Register
551*4b8b8d74SJaiprakash Singh  * This register is the MSI-X vector table, indexed by the MDC_INT_VEC_E enumeration.
552*4b8b8d74SJaiprakash Singh  */
553*4b8b8d74SJaiprakash Singh union ody_mdc_pf_msix_vecx_ctl {
554*4b8b8d74SJaiprakash Singh 	uint64_t u;
555*4b8b8d74SJaiprakash Singh 	struct ody_mdc_pf_msix_vecx_ctl_s {
556*4b8b8d74SJaiprakash Singh 		uint64_t data                        : 32;
557*4b8b8d74SJaiprakash Singh 		uint64_t mask                        : 1;
558*4b8b8d74SJaiprakash Singh 		uint64_t reserved_33_63              : 31;
559*4b8b8d74SJaiprakash Singh 	} s;
560*4b8b8d74SJaiprakash Singh 	/* struct ody_mdc_pf_msix_vecx_ctl_s cn; */
561*4b8b8d74SJaiprakash Singh };
562*4b8b8d74SJaiprakash Singh typedef union ody_mdc_pf_msix_vecx_ctl ody_mdc_pf_msix_vecx_ctl_t;
563*4b8b8d74SJaiprakash Singh 
564*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_PF_MSIX_VECX_CTL(uint64_t a) __attribute__ ((pure, always_inline));
ODY_MDC_PF_MSIX_VECX_CTL(uint64_t a)565*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_PF_MSIX_VECX_CTL(uint64_t a)
566*4b8b8d74SJaiprakash Singh {
567*4b8b8d74SJaiprakash Singh 	if (a == 0)
568*4b8b8d74SJaiprakash Singh 		return 0x87e010100008ll;
569*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("MDC_PF_MSIX_VECX_CTL", 1, a, 0, 0, 0, 0, 0);
570*4b8b8d74SJaiprakash Singh }
571*4b8b8d74SJaiprakash Singh 
572*4b8b8d74SJaiprakash Singh #define typedef_ODY_MDC_PF_MSIX_VECX_CTL(a) ody_mdc_pf_msix_vecx_ctl_t
573*4b8b8d74SJaiprakash Singh #define bustype_ODY_MDC_PF_MSIX_VECX_CTL(a) CSR_TYPE_RSL
574*4b8b8d74SJaiprakash Singh #define basename_ODY_MDC_PF_MSIX_VECX_CTL(a) "MDC_PF_MSIX_VECX_CTL"
575*4b8b8d74SJaiprakash Singh #define device_bar_ODY_MDC_PF_MSIX_VECX_CTL(a) 0x4 /* PF_BAR4 */
576*4b8b8d74SJaiprakash Singh #define busnum_ODY_MDC_PF_MSIX_VECX_CTL(a) (a)
577*4b8b8d74SJaiprakash Singh #define arguments_ODY_MDC_PF_MSIX_VECX_CTL(a) (a), -1, -1, -1
578*4b8b8d74SJaiprakash Singh 
579*4b8b8d74SJaiprakash Singh /**
580*4b8b8d74SJaiprakash Singh  * Register (RSL) mdc_ras_rom#
581*4b8b8d74SJaiprakash Singh  *
582*4b8b8d74SJaiprakash Singh  * MDC RAM ROM Access Register
583*4b8b8d74SJaiprakash Singh  */
584*4b8b8d74SJaiprakash Singh union ody_mdc_ras_romx {
585*4b8b8d74SJaiprakash Singh 	uint64_t u;
586*4b8b8d74SJaiprakash Singh 	struct ody_mdc_ras_romx_s {
587*4b8b8d74SJaiprakash Singh 		uint64_t data                        : 64;
588*4b8b8d74SJaiprakash Singh 	} s;
589*4b8b8d74SJaiprakash Singh 	/* struct ody_mdc_ras_romx_s cn; */
590*4b8b8d74SJaiprakash Singh };
591*4b8b8d74SJaiprakash Singh typedef union ody_mdc_ras_romx ody_mdc_ras_romx_t;
592*4b8b8d74SJaiprakash Singh 
593*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_RAS_ROMX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_MDC_RAS_ROMX(uint64_t a)594*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_RAS_ROMX(uint64_t a)
595*4b8b8d74SJaiprakash Singh {
596*4b8b8d74SJaiprakash Singh 	if (a <= 16383)
597*4b8b8d74SJaiprakash Singh 		return 0x87e010010000ll + 8ll * ((a) & 0x3fff);
598*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("MDC_RAS_ROMX", 1, a, 0, 0, 0, 0, 0);
599*4b8b8d74SJaiprakash Singh }
600*4b8b8d74SJaiprakash Singh 
601*4b8b8d74SJaiprakash Singh #define typedef_ODY_MDC_RAS_ROMX(a) ody_mdc_ras_romx_t
602*4b8b8d74SJaiprakash Singh #define bustype_ODY_MDC_RAS_ROMX(a) CSR_TYPE_RSL
603*4b8b8d74SJaiprakash Singh #define basename_ODY_MDC_RAS_ROMX(a) "MDC_RAS_ROMX"
604*4b8b8d74SJaiprakash Singh #define device_bar_ODY_MDC_RAS_ROMX(a) 0x0 /* PF_BAR0 */
605*4b8b8d74SJaiprakash Singh #define busnum_ODY_MDC_RAS_ROMX(a) (a)
606*4b8b8d74SJaiprakash Singh #define arguments_ODY_MDC_RAS_ROMX(a) (a), -1, -1, -1
607*4b8b8d74SJaiprakash Singh 
608*4b8b8d74SJaiprakash Singh /**
609*4b8b8d74SJaiprakash Singh  * Register (RSL) mdc_timeouts
610*4b8b8d74SJaiprakash Singh  *
611*4b8b8d74SJaiprakash Singh  * MDC Protocol Timeout Register
612*4b8b8d74SJaiprakash Singh  */
613*4b8b8d74SJaiprakash Singh union ody_mdc_timeouts {
614*4b8b8d74SJaiprakash Singh 	uint64_t u;
615*4b8b8d74SJaiprakash Singh 	struct ody_mdc_timeouts_s {
616*4b8b8d74SJaiprakash Singh 		uint64_t bist_completion             : 28;
617*4b8b8d74SJaiprakash Singh 		uint64_t reserved_28_31              : 4;
618*4b8b8d74SJaiprakash Singh 		uint64_t bus_response                : 16;
619*4b8b8d74SJaiprakash Singh 		uint64_t reserved_48_63              : 16;
620*4b8b8d74SJaiprakash Singh 	} s;
621*4b8b8d74SJaiprakash Singh 	/* struct ody_mdc_timeouts_s cn; */
622*4b8b8d74SJaiprakash Singh };
623*4b8b8d74SJaiprakash Singh typedef union ody_mdc_timeouts ody_mdc_timeouts_t;
624*4b8b8d74SJaiprakash Singh 
625*4b8b8d74SJaiprakash Singh #define ODY_MDC_TIMEOUTS ODY_MDC_TIMEOUTS_FUNC()
626*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_TIMEOUTS_FUNC(void) __attribute__ ((pure, always_inline));
ODY_MDC_TIMEOUTS_FUNC(void)627*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_TIMEOUTS_FUNC(void)
628*4b8b8d74SJaiprakash Singh {
629*4b8b8d74SJaiprakash Singh 	return 0x87e010000070ll;
630*4b8b8d74SJaiprakash Singh }
631*4b8b8d74SJaiprakash Singh 
632*4b8b8d74SJaiprakash Singh #define typedef_ODY_MDC_TIMEOUTS ody_mdc_timeouts_t
633*4b8b8d74SJaiprakash Singh #define bustype_ODY_MDC_TIMEOUTS CSR_TYPE_RSL
634*4b8b8d74SJaiprakash Singh #define basename_ODY_MDC_TIMEOUTS "MDC_TIMEOUTS"
635*4b8b8d74SJaiprakash Singh #define device_bar_ODY_MDC_TIMEOUTS 0x0 /* PF_BAR0 */
636*4b8b8d74SJaiprakash Singh #define busnum_ODY_MDC_TIMEOUTS 0
637*4b8b8d74SJaiprakash Singh #define arguments_ODY_MDC_TIMEOUTS -1, -1, -1, -1
638*4b8b8d74SJaiprakash Singh 
639*4b8b8d74SJaiprakash Singh /**
640*4b8b8d74SJaiprakash Singh  * Register (RSL) mdc_win_cmd
641*4b8b8d74SJaiprakash Singh  *
642*4b8b8d74SJaiprakash Singh  * MDC Windowed Access Command Register
643*4b8b8d74SJaiprakash Singh  * Writing to this register initiates a MDC serial bus read or write request
644*4b8b8d74SJaiprakash Singh  * according to the [WE] field.  MDC_WIN_DAT handles associated read
645*4b8b8d74SJaiprakash Singh  * or write data and it contains a status field MDC_WIN_DAT[PENDING] that
646*4b8b8d74SJaiprakash Singh  * indicates whether or not a request is in progress.  Writes
647*4b8b8d74SJaiprakash Singh  * to MDC_WIN_CMD are ignored while MDC_WIN_DAT[PENDING] is asserted.
648*4b8b8d74SJaiprakash Singh  */
649*4b8b8d74SJaiprakash Singh union ody_mdc_win_cmd {
650*4b8b8d74SJaiprakash Singh 	uint64_t u;
651*4b8b8d74SJaiprakash Singh 	struct ody_mdc_win_cmd_s {
652*4b8b8d74SJaiprakash Singh 		uint64_t csr_id                      : 8;
653*4b8b8d74SJaiprakash Singh 		uint64_t we                          : 1;
654*4b8b8d74SJaiprakash Singh 		uint64_t bc_nodes                    : 1;
655*4b8b8d74SJaiprakash Singh 		uint64_t bc_chains                   : 1;
656*4b8b8d74SJaiprakash Singh 		uint64_t reserved_11_15              : 5;
657*4b8b8d74SJaiprakash Singh 		uint64_t node_id                     : 10;
658*4b8b8d74SJaiprakash Singh 		uint64_t hub_id                      : 7;
659*4b8b8d74SJaiprakash Singh 		uint64_t chain_id                    : 3;
660*4b8b8d74SJaiprakash Singh 		uint64_t reserved_36_63              : 28;
661*4b8b8d74SJaiprakash Singh 	} s;
662*4b8b8d74SJaiprakash Singh 	/* struct ody_mdc_win_cmd_s cn; */
663*4b8b8d74SJaiprakash Singh };
664*4b8b8d74SJaiprakash Singh typedef union ody_mdc_win_cmd ody_mdc_win_cmd_t;
665*4b8b8d74SJaiprakash Singh 
666*4b8b8d74SJaiprakash Singh #define ODY_MDC_WIN_CMD ODY_MDC_WIN_CMD_FUNC()
667*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_WIN_CMD_FUNC(void) __attribute__ ((pure, always_inline));
ODY_MDC_WIN_CMD_FUNC(void)668*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_WIN_CMD_FUNC(void)
669*4b8b8d74SJaiprakash Singh {
670*4b8b8d74SJaiprakash Singh 	return 0x87e010000010ll;
671*4b8b8d74SJaiprakash Singh }
672*4b8b8d74SJaiprakash Singh 
673*4b8b8d74SJaiprakash Singh #define typedef_ODY_MDC_WIN_CMD ody_mdc_win_cmd_t
674*4b8b8d74SJaiprakash Singh #define bustype_ODY_MDC_WIN_CMD CSR_TYPE_RSL
675*4b8b8d74SJaiprakash Singh #define basename_ODY_MDC_WIN_CMD "MDC_WIN_CMD"
676*4b8b8d74SJaiprakash Singh #define device_bar_ODY_MDC_WIN_CMD 0x0 /* PF_BAR0 */
677*4b8b8d74SJaiprakash Singh #define busnum_ODY_MDC_WIN_CMD 0
678*4b8b8d74SJaiprakash Singh #define arguments_ODY_MDC_WIN_CMD -1, -1, -1, -1
679*4b8b8d74SJaiprakash Singh 
680*4b8b8d74SJaiprakash Singh /**
681*4b8b8d74SJaiprakash Singh  * Register (RSL) mdc_win_dat
682*4b8b8d74SJaiprakash Singh  *
683*4b8b8d74SJaiprakash Singh  * MDC Windowed Access Read Data Register
684*4b8b8d74SJaiprakash Singh  */
685*4b8b8d74SJaiprakash Singh union ody_mdc_win_dat {
686*4b8b8d74SJaiprakash Singh 	uint64_t u;
687*4b8b8d74SJaiprakash Singh 	struct ody_mdc_win_dat_s {
688*4b8b8d74SJaiprakash Singh 		uint64_t data                        : 32;
689*4b8b8d74SJaiprakash Singh 		uint64_t read_valid                  : 1;
690*4b8b8d74SJaiprakash Singh 		uint64_t pending                     : 1;
691*4b8b8d74SJaiprakash Singh 		uint64_t timeout                     : 1;
692*4b8b8d74SJaiprakash Singh 		uint64_t reserved_35_63              : 29;
693*4b8b8d74SJaiprakash Singh 	} s;
694*4b8b8d74SJaiprakash Singh 	/* struct ody_mdc_win_dat_s cn; */
695*4b8b8d74SJaiprakash Singh };
696*4b8b8d74SJaiprakash Singh typedef union ody_mdc_win_dat ody_mdc_win_dat_t;
697*4b8b8d74SJaiprakash Singh 
698*4b8b8d74SJaiprakash Singh #define ODY_MDC_WIN_DAT ODY_MDC_WIN_DAT_FUNC()
699*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_WIN_DAT_FUNC(void) __attribute__ ((pure, always_inline));
ODY_MDC_WIN_DAT_FUNC(void)700*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_WIN_DAT_FUNC(void)
701*4b8b8d74SJaiprakash Singh {
702*4b8b8d74SJaiprakash Singh 	return 0x87e010000018ll;
703*4b8b8d74SJaiprakash Singh }
704*4b8b8d74SJaiprakash Singh 
705*4b8b8d74SJaiprakash Singh #define typedef_ODY_MDC_WIN_DAT ody_mdc_win_dat_t
706*4b8b8d74SJaiprakash Singh #define bustype_ODY_MDC_WIN_DAT CSR_TYPE_RSL
707*4b8b8d74SJaiprakash Singh #define basename_ODY_MDC_WIN_DAT "MDC_WIN_DAT"
708*4b8b8d74SJaiprakash Singh #define device_bar_ODY_MDC_WIN_DAT 0x0 /* PF_BAR0 */
709*4b8b8d74SJaiprakash Singh #define busnum_ODY_MDC_WIN_DAT 0
710*4b8b8d74SJaiprakash Singh #define arguments_ODY_MDC_WIN_DAT -1, -1, -1, -1
711*4b8b8d74SJaiprakash Singh 
712*4b8b8d74SJaiprakash Singh /**
713*4b8b8d74SJaiprakash Singh  * Register (RSL) mdc_win_tdr
714*4b8b8d74SJaiprakash Singh  *
715*4b8b8d74SJaiprakash Singh  * MDC Windowed Access TDR Register
716*4b8b8d74SJaiprakash Singh  * This allows MDN_BIST_CONFIG[BROADCAST_DISABLE] and
717*4b8b8d74SJaiprakash Singh  * MDN_BIST_CONFIG[MARCH_BROADCAST_DISABLE] in 32 nodes to be updated using a single
718*4b8b8d74SJaiprakash Singh  * write.
719*4b8b8d74SJaiprakash Singh  * Writing to this register initiates a MDC serial bus write request to
720*4b8b8d74SJaiprakash Singh  * MDN_ACTIVE_NODES of the nodes.
721*4b8b8d74SJaiprakash Singh  * Writes to MDC_WIN_CMD are ignored while MDC_WIN_DAT[PENDING] is asserted.
722*4b8b8d74SJaiprakash Singh  */
723*4b8b8d74SJaiprakash Singh union ody_mdc_win_tdr {
724*4b8b8d74SJaiprakash Singh 	uint64_t u;
725*4b8b8d74SJaiprakash Singh 	struct ody_mdc_win_tdr_s {
726*4b8b8d74SJaiprakash Singh 		uint64_t node_map                    : 32;
727*4b8b8d74SJaiprakash Singh 		uint64_t node_id_u                   : 5;
728*4b8b8d74SJaiprakash Singh 		uint64_t hub_id                      : 7;
729*4b8b8d74SJaiprakash Singh 		uint64_t chain_id                    : 3;
730*4b8b8d74SJaiprakash Singh 		uint64_t march_broadcast_disable     : 1;
731*4b8b8d74SJaiprakash Singh 		uint64_t broadcast_disable           : 1;
732*4b8b8d74SJaiprakash Singh 		uint64_t reserved_49_63              : 15;
733*4b8b8d74SJaiprakash Singh 	} s;
734*4b8b8d74SJaiprakash Singh 	/* struct ody_mdc_win_tdr_s cn; */
735*4b8b8d74SJaiprakash Singh };
736*4b8b8d74SJaiprakash Singh typedef union ody_mdc_win_tdr ody_mdc_win_tdr_t;
737*4b8b8d74SJaiprakash Singh 
738*4b8b8d74SJaiprakash Singh #define ODY_MDC_WIN_TDR ODY_MDC_WIN_TDR_FUNC()
739*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_WIN_TDR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_MDC_WIN_TDR_FUNC(void)740*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_MDC_WIN_TDR_FUNC(void)
741*4b8b8d74SJaiprakash Singh {
742*4b8b8d74SJaiprakash Singh 	return 0x87e010000020ll;
743*4b8b8d74SJaiprakash Singh }
744*4b8b8d74SJaiprakash Singh 
745*4b8b8d74SJaiprakash Singh #define typedef_ODY_MDC_WIN_TDR ody_mdc_win_tdr_t
746*4b8b8d74SJaiprakash Singh #define bustype_ODY_MDC_WIN_TDR CSR_TYPE_RSL
747*4b8b8d74SJaiprakash Singh #define basename_ODY_MDC_WIN_TDR "MDC_WIN_TDR"
748*4b8b8d74SJaiprakash Singh #define device_bar_ODY_MDC_WIN_TDR 0x0 /* PF_BAR0 */
749*4b8b8d74SJaiprakash Singh #define busnum_ODY_MDC_WIN_TDR 0
750*4b8b8d74SJaiprakash Singh #define arguments_ODY_MDC_WIN_TDR -1, -1, -1, -1
751*4b8b8d74SJaiprakash Singh 
752*4b8b8d74SJaiprakash Singh #endif /* __ODY_CSRS_MDC_H__ */
753