xref: /rk3399_ARM-atf/include/plat/marvell/odyssey/csr/ody-csrs-cpc.h (revision 12d80bbbf6031228bdd910eccb03bb185e8df527)
1*4b8b8d74SJaiprakash Singh #ifndef __ODY_CSRS_CPC_H__
2*4b8b8d74SJaiprakash Singh #define __ODY_CSRS_CPC_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  * CPC.
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 cpc_bar_e
24*4b8b8d74SJaiprakash Singh  *
25*4b8b8d74SJaiprakash Singh  * CPC Base Address Register Enumeration
26*4b8b8d74SJaiprakash Singh  * Enumerates the base address registers.
27*4b8b8d74SJaiprakash Singh  */
28*4b8b8d74SJaiprakash Singh #define ODY_CPC_BAR_E_CPC_PF_BAR0 (0x86d000000000ll)
29*4b8b8d74SJaiprakash Singh #define ODY_CPC_BAR_E_CPC_PF_BAR0_SIZE 0x800000ull
30*4b8b8d74SJaiprakash Singh 
31*4b8b8d74SJaiprakash Singh /**
32*4b8b8d74SJaiprakash Singh  * Enumeration cpc_permit_e
33*4b8b8d74SJaiprakash Singh  *
34*4b8b8d74SJaiprakash Singh  * CPC Permit Enumeration
35*4b8b8d74SJaiprakash Singh  * Enumerates the permissions for CPC access.
36*4b8b8d74SJaiprakash Singh  */
37*4b8b8d74SJaiprakash Singh #define ODY_CPC_PERMIT_E_CCP_DIS (4)
38*4b8b8d74SJaiprakash Singh #define ODY_CPC_PERMIT_E_EHSM_DIS (5)
39*4b8b8d74SJaiprakash Singh #define ODY_CPC_PERMIT_E_MCP_DIS (1)
40*4b8b8d74SJaiprakash Singh #define ODY_CPC_PERMIT_E_NSEC_DIS (3)
41*4b8b8d74SJaiprakash Singh #define ODY_CPC_PERMIT_E_SCP_DIS (0)
42*4b8b8d74SJaiprakash Singh #define ODY_CPC_PERMIT_E_SEC_DIS (2)
43*4b8b8d74SJaiprakash Singh 
44*4b8b8d74SJaiprakash Singh /**
45*4b8b8d74SJaiprakash Singh  * Enumeration cpc_xcp_map_e
46*4b8b8d74SJaiprakash Singh  *
47*4b8b8d74SJaiprakash Singh  * CPC XCP Number Mapping Enumeration
48*4b8b8d74SJaiprakash Singh  * Enumerates the XCP mapping.
49*4b8b8d74SJaiprakash Singh  */
50*4b8b8d74SJaiprakash Singh #define ODY_CPC_XCP_MAP_E_CCP (2)
51*4b8b8d74SJaiprakash Singh #define ODY_CPC_XCP_MAP_E_MCP (1)
52*4b8b8d74SJaiprakash Singh #define ODY_CPC_XCP_MAP_E_SCP (0)
53*4b8b8d74SJaiprakash Singh 
54*4b8b8d74SJaiprakash Singh /**
55*4b8b8d74SJaiprakash Singh  * Register (NCB32b) cpc_boot_owner#
56*4b8b8d74SJaiprakash Singh  *
57*4b8b8d74SJaiprakash Singh  * CPC Boot Owner Registers
58*4b8b8d74SJaiprakash Singh  * These registers control an external arbiter for the boot device (SPI/eMMC)
59*4b8b8d74SJaiprakash Singh  * across multiple external devices. There is a register for each requester:
60*4b8b8d74SJaiprakash Singh  * _ \<0\> - SCP          - reset on SCP reset.
61*4b8b8d74SJaiprakash Singh  * _ \<1\> - MCP          - reset on MCP reset.
62*4b8b8d74SJaiprakash Singh  * _ \<2\> - AP Secure    - reset on core reset.
63*4b8b8d74SJaiprakash Singh  * _ \<3\> - AP Nonsecure - reset on core reset.
64*4b8b8d74SJaiprakash Singh  * _ \<4\> - CCP          - reset on CCP reset.
65*4b8b8d74SJaiprakash Singh  *
66*4b8b8d74SJaiprakash Singh  * These register is only writable to the corresponding requestor(s) permitted with CPC_PERMIT.
67*4b8b8d74SJaiprakash Singh  */
68*4b8b8d74SJaiprakash Singh union ody_cpc_boot_ownerx {
69*4b8b8d74SJaiprakash Singh 	uint32_t u;
70*4b8b8d74SJaiprakash Singh 	struct ody_cpc_boot_ownerx_s {
71*4b8b8d74SJaiprakash Singh 		uint32_t boot_req                    : 1;
72*4b8b8d74SJaiprakash Singh 		uint32_t reserved_1_7                : 7;
73*4b8b8d74SJaiprakash Singh 		uint32_t boot_wait                   : 1;
74*4b8b8d74SJaiprakash Singh 		uint32_t reserved_9_31               : 23;
75*4b8b8d74SJaiprakash Singh 	} s;
76*4b8b8d74SJaiprakash Singh 	/* struct ody_cpc_boot_ownerx_s cn; */
77*4b8b8d74SJaiprakash Singh };
78*4b8b8d74SJaiprakash Singh typedef union ody_cpc_boot_ownerx ody_cpc_boot_ownerx_t;
79*4b8b8d74SJaiprakash Singh 
80*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_CPC_BOOT_OWNERX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_CPC_BOOT_OWNERX(uint64_t a)81*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_CPC_BOOT_OWNERX(uint64_t a)
82*4b8b8d74SJaiprakash Singh {
83*4b8b8d74SJaiprakash Singh 	if (a <= 4)
84*4b8b8d74SJaiprakash Singh 		return 0x86d0000001c0ll + 8ll * ((a) & 0x7);
85*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("CPC_BOOT_OWNERX", 1, a, 0, 0, 0, 0, 0);
86*4b8b8d74SJaiprakash Singh }
87*4b8b8d74SJaiprakash Singh 
88*4b8b8d74SJaiprakash Singh #define typedef_ODY_CPC_BOOT_OWNERX(a) ody_cpc_boot_ownerx_t
89*4b8b8d74SJaiprakash Singh #define bustype_ODY_CPC_BOOT_OWNERX(a) CSR_TYPE_NCB32b
90*4b8b8d74SJaiprakash Singh #define basename_ODY_CPC_BOOT_OWNERX(a) "CPC_BOOT_OWNERX"
91*4b8b8d74SJaiprakash Singh #define device_bar_ODY_CPC_BOOT_OWNERX(a) 0x0 /* PF_BAR0 */
92*4b8b8d74SJaiprakash Singh #define busnum_ODY_CPC_BOOT_OWNERX(a) (a)
93*4b8b8d74SJaiprakash Singh #define arguments_ODY_CPC_BOOT_OWNERX(a) (a), -1, -1, -1
94*4b8b8d74SJaiprakash Singh 
95*4b8b8d74SJaiprakash Singh /**
96*4b8b8d74SJaiprakash Singh  * Register (NCB32b) cpc_boot_rom_limit
97*4b8b8d74SJaiprakash Singh  *
98*4b8b8d74SJaiprakash Singh  * CPC Boot ROM Limit Register
99*4b8b8d74SJaiprakash Singh  * This register contains the address limit in the internal boot ROM that non-XCP processors can
100*4b8b8d74SJaiprakash Singh  * access.
101*4b8b8d74SJaiprakash Singh  *
102*4b8b8d74SJaiprakash Singh  * This register is only writable to the requestor(s) permitted with CPC_PERMIT.
103*4b8b8d74SJaiprakash Singh  *
104*4b8b8d74SJaiprakash Singh  * This register is reset on chip reset.
105*4b8b8d74SJaiprakash Singh  */
106*4b8b8d74SJaiprakash Singh union ody_cpc_boot_rom_limit {
107*4b8b8d74SJaiprakash Singh 	uint32_t u;
108*4b8b8d74SJaiprakash Singh 	struct ody_cpc_boot_rom_limit_s {
109*4b8b8d74SJaiprakash Singh 		uint32_t reserved_0_2                : 3;
110*4b8b8d74SJaiprakash Singh 		uint32_t addr                        : 14;
111*4b8b8d74SJaiprakash Singh 		uint32_t reserved_17_31              : 15;
112*4b8b8d74SJaiprakash Singh 	} s;
113*4b8b8d74SJaiprakash Singh 	/* struct ody_cpc_boot_rom_limit_s cn; */
114*4b8b8d74SJaiprakash Singh };
115*4b8b8d74SJaiprakash Singh typedef union ody_cpc_boot_rom_limit ody_cpc_boot_rom_limit_t;
116*4b8b8d74SJaiprakash Singh 
117*4b8b8d74SJaiprakash Singh #define ODY_CPC_BOOT_ROM_LIMIT ODY_CPC_BOOT_ROM_LIMIT_FUNC()
118*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_CPC_BOOT_ROM_LIMIT_FUNC(void) __attribute__ ((pure, always_inline));
ODY_CPC_BOOT_ROM_LIMIT_FUNC(void)119*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_CPC_BOOT_ROM_LIMIT_FUNC(void)
120*4b8b8d74SJaiprakash Singh {
121*4b8b8d74SJaiprakash Singh 	return 0x86d000000158ll;
122*4b8b8d74SJaiprakash Singh }
123*4b8b8d74SJaiprakash Singh 
124*4b8b8d74SJaiprakash Singh #define typedef_ODY_CPC_BOOT_ROM_LIMIT ody_cpc_boot_rom_limit_t
125*4b8b8d74SJaiprakash Singh #define bustype_ODY_CPC_BOOT_ROM_LIMIT CSR_TYPE_NCB32b
126*4b8b8d74SJaiprakash Singh #define basename_ODY_CPC_BOOT_ROM_LIMIT "CPC_BOOT_ROM_LIMIT"
127*4b8b8d74SJaiprakash Singh #define device_bar_ODY_CPC_BOOT_ROM_LIMIT 0x0 /* PF_BAR0 */
128*4b8b8d74SJaiprakash Singh #define busnum_ODY_CPC_BOOT_ROM_LIMIT 0
129*4b8b8d74SJaiprakash Singh #define arguments_ODY_CPC_BOOT_ROM_LIMIT -1, -1, -1, -1
130*4b8b8d74SJaiprakash Singh 
131*4b8b8d74SJaiprakash Singh /**
132*4b8b8d74SJaiprakash Singh  * Register (NCB32b) cpc_ccp_boot_rom_limit
133*4b8b8d74SJaiprakash Singh  *
134*4b8b8d74SJaiprakash Singh  * CPC CCP Boot ROM Limit Register
135*4b8b8d74SJaiprakash Singh  * This register contains the address limit in the internal boot ROM that CCP can access.
136*4b8b8d74SJaiprakash Singh  *
137*4b8b8d74SJaiprakash Singh  * This register is only accessible to the requestor(s) permitted with CPC_PERMIT.
138*4b8b8d74SJaiprakash Singh  *
139*4b8b8d74SJaiprakash Singh  * This register is reset on chip reset and ccp_reset.
140*4b8b8d74SJaiprakash Singh  */
141*4b8b8d74SJaiprakash Singh union ody_cpc_ccp_boot_rom_limit {
142*4b8b8d74SJaiprakash Singh 	uint32_t u;
143*4b8b8d74SJaiprakash Singh 	struct ody_cpc_ccp_boot_rom_limit_s {
144*4b8b8d74SJaiprakash Singh 		uint32_t reserved_0_2                : 3;
145*4b8b8d74SJaiprakash Singh 		uint32_t addr                        : 14;
146*4b8b8d74SJaiprakash Singh 		uint32_t reserved_17_31              : 15;
147*4b8b8d74SJaiprakash Singh 	} s;
148*4b8b8d74SJaiprakash Singh 	/* struct ody_cpc_ccp_boot_rom_limit_s cn; */
149*4b8b8d74SJaiprakash Singh };
150*4b8b8d74SJaiprakash Singh typedef union ody_cpc_ccp_boot_rom_limit ody_cpc_ccp_boot_rom_limit_t;
151*4b8b8d74SJaiprakash Singh 
152*4b8b8d74SJaiprakash Singh #define ODY_CPC_CCP_BOOT_ROM_LIMIT ODY_CPC_CCP_BOOT_ROM_LIMIT_FUNC()
153*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_CPC_CCP_BOOT_ROM_LIMIT_FUNC(void) __attribute__ ((pure, always_inline));
ODY_CPC_CCP_BOOT_ROM_LIMIT_FUNC(void)154*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_CPC_CCP_BOOT_ROM_LIMIT_FUNC(void)
155*4b8b8d74SJaiprakash Singh {
156*4b8b8d74SJaiprakash Singh 	return 0x86d000000168ll;
157*4b8b8d74SJaiprakash Singh }
158*4b8b8d74SJaiprakash Singh 
159*4b8b8d74SJaiprakash Singh #define typedef_ODY_CPC_CCP_BOOT_ROM_LIMIT ody_cpc_ccp_boot_rom_limit_t
160*4b8b8d74SJaiprakash Singh #define bustype_ODY_CPC_CCP_BOOT_ROM_LIMIT CSR_TYPE_NCB32b
161*4b8b8d74SJaiprakash Singh #define basename_ODY_CPC_CCP_BOOT_ROM_LIMIT "CPC_CCP_BOOT_ROM_LIMIT"
162*4b8b8d74SJaiprakash Singh #define device_bar_ODY_CPC_CCP_BOOT_ROM_LIMIT 0x0 /* PF_BAR0 */
163*4b8b8d74SJaiprakash Singh #define busnum_ODY_CPC_CCP_BOOT_ROM_LIMIT 0
164*4b8b8d74SJaiprakash Singh #define arguments_ODY_CPC_CCP_BOOT_ROM_LIMIT -1, -1, -1, -1
165*4b8b8d74SJaiprakash Singh 
166*4b8b8d74SJaiprakash Singh /**
167*4b8b8d74SJaiprakash Singh  * Register (NCB32b) cpc_clken
168*4b8b8d74SJaiprakash Singh  *
169*4b8b8d74SJaiprakash Singh  * CPC Clock Enable Register
170*4b8b8d74SJaiprakash Singh  * This register is only accessible to the requestor(s) permitted with CPC_PERMIT.
171*4b8b8d74SJaiprakash Singh  *
172*4b8b8d74SJaiprakash Singh  * This register is reset on chip reset.
173*4b8b8d74SJaiprakash Singh  */
174*4b8b8d74SJaiprakash Singh union ody_cpc_clken {
175*4b8b8d74SJaiprakash Singh 	uint32_t u;
176*4b8b8d74SJaiprakash Singh 	struct ody_cpc_clken_s {
177*4b8b8d74SJaiprakash Singh 		uint32_t clken                       : 1;
178*4b8b8d74SJaiprakash Singh 		uint32_t force_ncbi_clken            : 1;
179*4b8b8d74SJaiprakash Singh 		uint32_t reserved_2_31               : 30;
180*4b8b8d74SJaiprakash Singh 	} s;
181*4b8b8d74SJaiprakash Singh 	/* struct ody_cpc_clken_s cn; */
182*4b8b8d74SJaiprakash Singh };
183*4b8b8d74SJaiprakash Singh typedef union ody_cpc_clken ody_cpc_clken_t;
184*4b8b8d74SJaiprakash Singh 
185*4b8b8d74SJaiprakash Singh #define ODY_CPC_CLKEN ODY_CPC_CLKEN_FUNC()
186*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_CPC_CLKEN_FUNC(void) __attribute__ ((pure, always_inline));
ODY_CPC_CLKEN_FUNC(void)187*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_CPC_CLKEN_FUNC(void)
188*4b8b8d74SJaiprakash Singh {
189*4b8b8d74SJaiprakash Singh 	return 0x86d000000118ll;
190*4b8b8d74SJaiprakash Singh }
191*4b8b8d74SJaiprakash Singh 
192*4b8b8d74SJaiprakash Singh #define typedef_ODY_CPC_CLKEN ody_cpc_clken_t
193*4b8b8d74SJaiprakash Singh #define bustype_ODY_CPC_CLKEN CSR_TYPE_NCB32b
194*4b8b8d74SJaiprakash Singh #define basename_ODY_CPC_CLKEN "CPC_CLKEN"
195*4b8b8d74SJaiprakash Singh #define device_bar_ODY_CPC_CLKEN 0x0 /* PF_BAR0 */
196*4b8b8d74SJaiprakash Singh #define busnum_ODY_CPC_CLKEN 0
197*4b8b8d74SJaiprakash Singh #define arguments_ODY_CPC_CLKEN -1, -1, -1, -1
198*4b8b8d74SJaiprakash Singh 
199*4b8b8d74SJaiprakash Singh /**
200*4b8b8d74SJaiprakash Singh  * Register (NCB32b) cpc_const
201*4b8b8d74SJaiprakash Singh  *
202*4b8b8d74SJaiprakash Singh  * CPC Constants Register
203*4b8b8d74SJaiprakash Singh  * This register is reset on chip reset.
204*4b8b8d74SJaiprakash Singh  */
205*4b8b8d74SJaiprakash Singh union ody_cpc_const {
206*4b8b8d74SJaiprakash Singh 	uint32_t u;
207*4b8b8d74SJaiprakash Singh 	struct ody_cpc_const_s {
208*4b8b8d74SJaiprakash Singh 		uint32_t cores                       : 8;
209*4b8b8d74SJaiprakash Singh 		uint32_t mem_regions                 : 8;
210*4b8b8d74SJaiprakash Singh 		uint32_t reserved_16_31              : 16;
211*4b8b8d74SJaiprakash Singh 	} s;
212*4b8b8d74SJaiprakash Singh 	/* struct ody_cpc_const_s cn; */
213*4b8b8d74SJaiprakash Singh };
214*4b8b8d74SJaiprakash Singh typedef union ody_cpc_const ody_cpc_const_t;
215*4b8b8d74SJaiprakash Singh 
216*4b8b8d74SJaiprakash Singh #define ODY_CPC_CONST ODY_CPC_CONST_FUNC()
217*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_CPC_CONST_FUNC(void) __attribute__ ((pure, always_inline));
ODY_CPC_CONST_FUNC(void)218*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_CPC_CONST_FUNC(void)
219*4b8b8d74SJaiprakash Singh {
220*4b8b8d74SJaiprakash Singh 	return 0x86d000000000ll;
221*4b8b8d74SJaiprakash Singh }
222*4b8b8d74SJaiprakash Singh 
223*4b8b8d74SJaiprakash Singh #define typedef_ODY_CPC_CONST ody_cpc_const_t
224*4b8b8d74SJaiprakash Singh #define bustype_ODY_CPC_CONST CSR_TYPE_NCB32b
225*4b8b8d74SJaiprakash Singh #define basename_ODY_CPC_CONST "CPC_CONST"
226*4b8b8d74SJaiprakash Singh #define device_bar_ODY_CPC_CONST 0x0 /* PF_BAR0 */
227*4b8b8d74SJaiprakash Singh #define busnum_ODY_CPC_CONST 0
228*4b8b8d74SJaiprakash Singh #define arguments_ODY_CPC_CONST -1, -1, -1, -1
229*4b8b8d74SJaiprakash Singh 
230*4b8b8d74SJaiprakash Singh /**
231*4b8b8d74SJaiprakash Singh  * Register (NCB) cpc_csclk_active_pc
232*4b8b8d74SJaiprakash Singh  *
233*4b8b8d74SJaiprakash Singh  * CPC Conditional Coprocessor Clock Counter Register
234*4b8b8d74SJaiprakash Singh  * This register counts conditional clocks for power management.
235*4b8b8d74SJaiprakash Singh  *
236*4b8b8d74SJaiprakash Singh  * This register is writable for diagnostic use only.
237*4b8b8d74SJaiprakash Singh  *
238*4b8b8d74SJaiprakash Singh  * This register is reset on chip reset.
239*4b8b8d74SJaiprakash Singh  */
240*4b8b8d74SJaiprakash Singh union ody_cpc_csclk_active_pc {
241*4b8b8d74SJaiprakash Singh 	uint64_t u;
242*4b8b8d74SJaiprakash Singh 	struct ody_cpc_csclk_active_pc_s {
243*4b8b8d74SJaiprakash Singh 		uint64_t count                       : 64;
244*4b8b8d74SJaiprakash Singh 	} s;
245*4b8b8d74SJaiprakash Singh 	/* struct ody_cpc_csclk_active_pc_s cn; */
246*4b8b8d74SJaiprakash Singh };
247*4b8b8d74SJaiprakash Singh typedef union ody_cpc_csclk_active_pc ody_cpc_csclk_active_pc_t;
248*4b8b8d74SJaiprakash Singh 
249*4b8b8d74SJaiprakash Singh #define ODY_CPC_CSCLK_ACTIVE_PC ODY_CPC_CSCLK_ACTIVE_PC_FUNC()
250*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_CPC_CSCLK_ACTIVE_PC_FUNC(void) __attribute__ ((pure, always_inline));
ODY_CPC_CSCLK_ACTIVE_PC_FUNC(void)251*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_CPC_CSCLK_ACTIVE_PC_FUNC(void)
252*4b8b8d74SJaiprakash Singh {
253*4b8b8d74SJaiprakash Singh 	return 0x86d000000010ll;
254*4b8b8d74SJaiprakash Singh }
255*4b8b8d74SJaiprakash Singh 
256*4b8b8d74SJaiprakash Singh #define typedef_ODY_CPC_CSCLK_ACTIVE_PC ody_cpc_csclk_active_pc_t
257*4b8b8d74SJaiprakash Singh #define bustype_ODY_CPC_CSCLK_ACTIVE_PC CSR_TYPE_NCB
258*4b8b8d74SJaiprakash Singh #define basename_ODY_CPC_CSCLK_ACTIVE_PC "CPC_CSCLK_ACTIVE_PC"
259*4b8b8d74SJaiprakash Singh #define device_bar_ODY_CPC_CSCLK_ACTIVE_PC 0x0 /* PF_BAR0 */
260*4b8b8d74SJaiprakash Singh #define busnum_ODY_CPC_CSCLK_ACTIVE_PC 0
261*4b8b8d74SJaiprakash Singh #define arguments_ODY_CPC_CSCLK_ACTIVE_PC -1, -1, -1, -1
262*4b8b8d74SJaiprakash Singh 
263*4b8b8d74SJaiprakash Singh /**
264*4b8b8d74SJaiprakash Singh  * Register (NCB32b) cpc_mcp_boot_rom_limit
265*4b8b8d74SJaiprakash Singh  *
266*4b8b8d74SJaiprakash Singh  * CPC MCP Boot ROM Limit Register
267*4b8b8d74SJaiprakash Singh  * This register contains the address limit in the internal boot ROM that MCP can access.
268*4b8b8d74SJaiprakash Singh  *
269*4b8b8d74SJaiprakash Singh  * This register is only accessible to the requestor(s) permitted with CPC_PERMIT.
270*4b8b8d74SJaiprakash Singh  *
271*4b8b8d74SJaiprakash Singh  * This register is reset on chip reset and mcp_reset.
272*4b8b8d74SJaiprakash Singh  */
273*4b8b8d74SJaiprakash Singh union ody_cpc_mcp_boot_rom_limit {
274*4b8b8d74SJaiprakash Singh 	uint32_t u;
275*4b8b8d74SJaiprakash Singh 	struct ody_cpc_mcp_boot_rom_limit_s {
276*4b8b8d74SJaiprakash Singh 		uint32_t reserved_0_2                : 3;
277*4b8b8d74SJaiprakash Singh 		uint32_t addr                        : 14;
278*4b8b8d74SJaiprakash Singh 		uint32_t reserved_17_31              : 15;
279*4b8b8d74SJaiprakash Singh 	} s;
280*4b8b8d74SJaiprakash Singh 	/* struct ody_cpc_mcp_boot_rom_limit_s cn; */
281*4b8b8d74SJaiprakash Singh };
282*4b8b8d74SJaiprakash Singh typedef union ody_cpc_mcp_boot_rom_limit ody_cpc_mcp_boot_rom_limit_t;
283*4b8b8d74SJaiprakash Singh 
284*4b8b8d74SJaiprakash Singh #define ODY_CPC_MCP_BOOT_ROM_LIMIT ODY_CPC_MCP_BOOT_ROM_LIMIT_FUNC()
285*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_CPC_MCP_BOOT_ROM_LIMIT_FUNC(void) __attribute__ ((pure, always_inline));
ODY_CPC_MCP_BOOT_ROM_LIMIT_FUNC(void)286*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_CPC_MCP_BOOT_ROM_LIMIT_FUNC(void)
287*4b8b8d74SJaiprakash Singh {
288*4b8b8d74SJaiprakash Singh 	return 0x86d000000160ll;
289*4b8b8d74SJaiprakash Singh }
290*4b8b8d74SJaiprakash Singh 
291*4b8b8d74SJaiprakash Singh #define typedef_ODY_CPC_MCP_BOOT_ROM_LIMIT ody_cpc_mcp_boot_rom_limit_t
292*4b8b8d74SJaiprakash Singh #define bustype_ODY_CPC_MCP_BOOT_ROM_LIMIT CSR_TYPE_NCB32b
293*4b8b8d74SJaiprakash Singh #define basename_ODY_CPC_MCP_BOOT_ROM_LIMIT "CPC_MCP_BOOT_ROM_LIMIT"
294*4b8b8d74SJaiprakash Singh #define device_bar_ODY_CPC_MCP_BOOT_ROM_LIMIT 0x0 /* PF_BAR0 */
295*4b8b8d74SJaiprakash Singh #define busnum_ODY_CPC_MCP_BOOT_ROM_LIMIT 0
296*4b8b8d74SJaiprakash Singh #define arguments_ODY_CPC_MCP_BOOT_ROM_LIMIT -1, -1, -1, -1
297*4b8b8d74SJaiprakash Singh 
298*4b8b8d74SJaiprakash Singh /**
299*4b8b8d74SJaiprakash Singh  * Register (NCB32b) cpc_permit
300*4b8b8d74SJaiprakash Singh  *
301*4b8b8d74SJaiprakash Singh  * CPC Register Permit Registers
302*4b8b8d74SJaiprakash Singh  * This register is used to control CPC register permissions.
303*4b8b8d74SJaiprakash Singh  *
304*4b8b8d74SJaiprakash Singh  * This register is only accessible to the requestor(s) permitted with CPC_PERMIT.
305*4b8b8d74SJaiprakash Singh  *
306*4b8b8d74SJaiprakash Singh  * This register is reset on chip reset.
307*4b8b8d74SJaiprakash Singh  */
308*4b8b8d74SJaiprakash Singh union ody_cpc_permit {
309*4b8b8d74SJaiprakash Singh 	uint32_t u;
310*4b8b8d74SJaiprakash Singh 	struct ody_cpc_permit_s {
311*4b8b8d74SJaiprakash Singh 		uint32_t permitdis                   : 5;
312*4b8b8d74SJaiprakash Singh 		uint32_t reserved_5_30               : 26;
313*4b8b8d74SJaiprakash Singh 		uint32_t lock                        : 1;
314*4b8b8d74SJaiprakash Singh 	} s;
315*4b8b8d74SJaiprakash Singh 	/* struct ody_cpc_permit_s cn; */
316*4b8b8d74SJaiprakash Singh };
317*4b8b8d74SJaiprakash Singh typedef union ody_cpc_permit ody_cpc_permit_t;
318*4b8b8d74SJaiprakash Singh 
319*4b8b8d74SJaiprakash Singh #define ODY_CPC_PERMIT ODY_CPC_PERMIT_FUNC()
320*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_CPC_PERMIT_FUNC(void) __attribute__ ((pure, always_inline));
ODY_CPC_PERMIT_FUNC(void)321*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_CPC_PERMIT_FUNC(void)
322*4b8b8d74SJaiprakash Singh {
323*4b8b8d74SJaiprakash Singh 	return 0x86d000000120ll;
324*4b8b8d74SJaiprakash Singh }
325*4b8b8d74SJaiprakash Singh 
326*4b8b8d74SJaiprakash Singh #define typedef_ODY_CPC_PERMIT ody_cpc_permit_t
327*4b8b8d74SJaiprakash Singh #define bustype_ODY_CPC_PERMIT CSR_TYPE_NCB32b
328*4b8b8d74SJaiprakash Singh #define basename_ODY_CPC_PERMIT "CPC_PERMIT"
329*4b8b8d74SJaiprakash Singh #define device_bar_ODY_CPC_PERMIT 0x0 /* PF_BAR0 */
330*4b8b8d74SJaiprakash Singh #define busnum_ODY_CPC_PERMIT 0
331*4b8b8d74SJaiprakash Singh #define arguments_ODY_CPC_PERMIT -1, -1, -1, -1
332*4b8b8d74SJaiprakash Singh 
333*4b8b8d74SJaiprakash Singh /**
334*4b8b8d74SJaiprakash Singh  * Register (NCB) cpc_ram_mem#
335*4b8b8d74SJaiprakash Singh  *
336*4b8b8d74SJaiprakash Singh  * CPC RAM Memory Registers
337*4b8b8d74SJaiprakash Singh  * These registers access the CPC RAM memory space. The size of the RAM is discoverable
338*4b8b8d74SJaiprakash Singh  * with CPC_CONST[MEM_REGIONS].
339*4b8b8d74SJaiprakash Singh  *
340*4b8b8d74SJaiprakash Singh  * This register is only accessible to the requestor(s) permitted with CPC_RAM_PERMIT().
341*4b8b8d74SJaiprakash Singh  *
342*4b8b8d74SJaiprakash Singh  * This register is reset on chip reset.
343*4b8b8d74SJaiprakash Singh  */
344*4b8b8d74SJaiprakash Singh union ody_cpc_ram_memx {
345*4b8b8d74SJaiprakash Singh 	uint64_t u;
346*4b8b8d74SJaiprakash Singh 	struct ody_cpc_ram_memx_s {
347*4b8b8d74SJaiprakash Singh 		uint64_t dat                         : 64;
348*4b8b8d74SJaiprakash Singh 	} s;
349*4b8b8d74SJaiprakash Singh 	/* struct ody_cpc_ram_memx_s cn; */
350*4b8b8d74SJaiprakash Singh };
351*4b8b8d74SJaiprakash Singh typedef union ody_cpc_ram_memx ody_cpc_ram_memx_t;
352*4b8b8d74SJaiprakash Singh 
353*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_CPC_RAM_MEMX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_CPC_RAM_MEMX(uint64_t a)354*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_CPC_RAM_MEMX(uint64_t a)
355*4b8b8d74SJaiprakash Singh {
356*4b8b8d74SJaiprakash Singh 	if (a <= 524287)
357*4b8b8d74SJaiprakash Singh 		return 0x86d000400000ll + 8ll * ((a) & 0x7ffff);
358*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("CPC_RAM_MEMX", 1, a, 0, 0, 0, 0, 0);
359*4b8b8d74SJaiprakash Singh }
360*4b8b8d74SJaiprakash Singh 
361*4b8b8d74SJaiprakash Singh #define typedef_ODY_CPC_RAM_MEMX(a) ody_cpc_ram_memx_t
362*4b8b8d74SJaiprakash Singh #define bustype_ODY_CPC_RAM_MEMX(a) CSR_TYPE_NCB
363*4b8b8d74SJaiprakash Singh #define basename_ODY_CPC_RAM_MEMX(a) "CPC_RAM_MEMX"
364*4b8b8d74SJaiprakash Singh #define device_bar_ODY_CPC_RAM_MEMX(a) 0x0 /* PF_BAR0 */
365*4b8b8d74SJaiprakash Singh #define busnum_ODY_CPC_RAM_MEMX(a) (a)
366*4b8b8d74SJaiprakash Singh #define arguments_ODY_CPC_RAM_MEMX(a) (a), -1, -1, -1
367*4b8b8d74SJaiprakash Singh 
368*4b8b8d74SJaiprakash Singh /**
369*4b8b8d74SJaiprakash Singh  * Register (NCB32b) cpc_ram_permit#
370*4b8b8d74SJaiprakash Singh  *
371*4b8b8d74SJaiprakash Singh  * CPC RAM Permit Registers
372*4b8b8d74SJaiprakash Singh  * These registers are used to control the RAM space access permissions of
373*4b8b8d74SJaiprakash Singh  * the SCP, MCP, CCP, EHSM and AP processors
374*4b8b8d74SJaiprakash Singh  * The RAM is split into 64 secure regions.
375*4b8b8d74SJaiprakash Singh  *
376*4b8b8d74SJaiprakash Singh  * This register is only accessible to the requestor(s) permitted with CPC_PERMIT.
377*4b8b8d74SJaiprakash Singh  *
378*4b8b8d74SJaiprakash Singh  * This register is reset on chip reset.
379*4b8b8d74SJaiprakash Singh  */
380*4b8b8d74SJaiprakash Singh union ody_cpc_ram_permitx {
381*4b8b8d74SJaiprakash Singh 	uint32_t u;
382*4b8b8d74SJaiprakash Singh 	struct ody_cpc_ram_permitx_s {
383*4b8b8d74SJaiprakash Singh 		uint32_t rddis                       : 6;
384*4b8b8d74SJaiprakash Singh 		uint32_t reserved_6_9                : 4;
385*4b8b8d74SJaiprakash Singh 		uint32_t lock                        : 1;
386*4b8b8d74SJaiprakash Singh 		uint32_t reserved_11_15              : 5;
387*4b8b8d74SJaiprakash Singh 		uint32_t wrdis                       : 6;
388*4b8b8d74SJaiprakash Singh 		uint32_t reserved_22_23              : 2;
389*4b8b8d74SJaiprakash Singh 		uint32_t pci_dis                     : 4;
390*4b8b8d74SJaiprakash Singh 		uint32_t exedis                      : 4;
391*4b8b8d74SJaiprakash Singh 	} s;
392*4b8b8d74SJaiprakash Singh 	/* struct ody_cpc_ram_permitx_s cn; */
393*4b8b8d74SJaiprakash Singh };
394*4b8b8d74SJaiprakash Singh typedef union ody_cpc_ram_permitx ody_cpc_ram_permitx_t;
395*4b8b8d74SJaiprakash Singh 
396*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_CPC_RAM_PERMITX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_CPC_RAM_PERMITX(uint64_t a)397*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_CPC_RAM_PERMITX(uint64_t a)
398*4b8b8d74SJaiprakash Singh {
399*4b8b8d74SJaiprakash Singh 	if (a <= 63)
400*4b8b8d74SJaiprakash Singh 		return 0x86d000008000ll + 8ll * ((a) & 0x3f);
401*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("CPC_RAM_PERMITX", 1, a, 0, 0, 0, 0, 0);
402*4b8b8d74SJaiprakash Singh }
403*4b8b8d74SJaiprakash Singh 
404*4b8b8d74SJaiprakash Singh #define typedef_ODY_CPC_RAM_PERMITX(a) ody_cpc_ram_permitx_t
405*4b8b8d74SJaiprakash Singh #define bustype_ODY_CPC_RAM_PERMITX(a) CSR_TYPE_NCB32b
406*4b8b8d74SJaiprakash Singh #define basename_ODY_CPC_RAM_PERMITX(a) "CPC_RAM_PERMITX"
407*4b8b8d74SJaiprakash Singh #define device_bar_ODY_CPC_RAM_PERMITX(a) 0x0 /* PF_BAR0 */
408*4b8b8d74SJaiprakash Singh #define busnum_ODY_CPC_RAM_PERMITX(a) (a)
409*4b8b8d74SJaiprakash Singh #define arguments_ODY_CPC_RAM_PERMITX(a) (a), -1, -1, -1
410*4b8b8d74SJaiprakash Singh 
411*4b8b8d74SJaiprakash Singh /**
412*4b8b8d74SJaiprakash Singh  * Register (NCB) cpc_rom_mem#
413*4b8b8d74SJaiprakash Singh  *
414*4b8b8d74SJaiprakash Singh  * CPC ROM Memory Registers
415*4b8b8d74SJaiprakash Singh  * These registers access the CPC ROM memory space.
416*4b8b8d74SJaiprakash Singh  *
417*4b8b8d74SJaiprakash Singh  * This register is only accessible to the requestor(s) permitted with CPC_BOOT_ROM_LIMIT.
418*4b8b8d74SJaiprakash Singh  *
419*4b8b8d74SJaiprakash Singh  * This register is reset on chip reset.
420*4b8b8d74SJaiprakash Singh  */
421*4b8b8d74SJaiprakash Singh union ody_cpc_rom_memx {
422*4b8b8d74SJaiprakash Singh 	uint64_t u;
423*4b8b8d74SJaiprakash Singh 	struct ody_cpc_rom_memx_s {
424*4b8b8d74SJaiprakash Singh 		uint64_t dat                         : 64;
425*4b8b8d74SJaiprakash Singh 	} s;
426*4b8b8d74SJaiprakash Singh 	/* struct ody_cpc_rom_memx_s cn; */
427*4b8b8d74SJaiprakash Singh };
428*4b8b8d74SJaiprakash Singh typedef union ody_cpc_rom_memx ody_cpc_rom_memx_t;
429*4b8b8d74SJaiprakash Singh 
430*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_CPC_ROM_MEMX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_CPC_ROM_MEMX(uint64_t a)431*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_CPC_ROM_MEMX(uint64_t a)
432*4b8b8d74SJaiprakash Singh {
433*4b8b8d74SJaiprakash Singh 	if (a <= 8191)
434*4b8b8d74SJaiprakash Singh 		return 0x86d000010000ll + 8ll * ((a) & 0x1fff);
435*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("CPC_ROM_MEMX", 1, a, 0, 0, 0, 0, 0);
436*4b8b8d74SJaiprakash Singh }
437*4b8b8d74SJaiprakash Singh 
438*4b8b8d74SJaiprakash Singh #define typedef_ODY_CPC_ROM_MEMX(a) ody_cpc_rom_memx_t
439*4b8b8d74SJaiprakash Singh #define bustype_ODY_CPC_ROM_MEMX(a) CSR_TYPE_NCB
440*4b8b8d74SJaiprakash Singh #define basename_ODY_CPC_ROM_MEMX(a) "CPC_ROM_MEMX"
441*4b8b8d74SJaiprakash Singh #define device_bar_ODY_CPC_ROM_MEMX(a) 0x0 /* PF_BAR0 */
442*4b8b8d74SJaiprakash Singh #define busnum_ODY_CPC_ROM_MEMX(a) (a)
443*4b8b8d74SJaiprakash Singh #define arguments_ODY_CPC_ROM_MEMX(a) (a), -1, -1, -1
444*4b8b8d74SJaiprakash Singh 
445*4b8b8d74SJaiprakash Singh /**
446*4b8b8d74SJaiprakash Singh  * Register (NCB32b) cpc_scp_boot_rom_limit
447*4b8b8d74SJaiprakash Singh  *
448*4b8b8d74SJaiprakash Singh  * CPC SCP Boot ROM Limit Register
449*4b8b8d74SJaiprakash Singh  * This register contains the address limit in the internal boot ROM that SCP can access.
450*4b8b8d74SJaiprakash Singh  *
451*4b8b8d74SJaiprakash Singh  * This register is only accessible to the requestor(s) permitted with CPC_PERMIT.
452*4b8b8d74SJaiprakash Singh  *
453*4b8b8d74SJaiprakash Singh  * This register is reset on chip reset and scp_reset.
454*4b8b8d74SJaiprakash Singh  */
455*4b8b8d74SJaiprakash Singh union ody_cpc_scp_boot_rom_limit {
456*4b8b8d74SJaiprakash Singh 	uint32_t u;
457*4b8b8d74SJaiprakash Singh 	struct ody_cpc_scp_boot_rom_limit_s {
458*4b8b8d74SJaiprakash Singh 		uint32_t reserved_0_2                : 3;
459*4b8b8d74SJaiprakash Singh 		uint32_t addr                        : 14;
460*4b8b8d74SJaiprakash Singh 		uint32_t reserved_17_31              : 15;
461*4b8b8d74SJaiprakash Singh 	} s;
462*4b8b8d74SJaiprakash Singh 	/* struct ody_cpc_scp_boot_rom_limit_s cn; */
463*4b8b8d74SJaiprakash Singh };
464*4b8b8d74SJaiprakash Singh typedef union ody_cpc_scp_boot_rom_limit ody_cpc_scp_boot_rom_limit_t;
465*4b8b8d74SJaiprakash Singh 
466*4b8b8d74SJaiprakash Singh #define ODY_CPC_SCP_BOOT_ROM_LIMIT ODY_CPC_SCP_BOOT_ROM_LIMIT_FUNC()
467*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_CPC_SCP_BOOT_ROM_LIMIT_FUNC(void) __attribute__ ((pure, always_inline));
ODY_CPC_SCP_BOOT_ROM_LIMIT_FUNC(void)468*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_CPC_SCP_BOOT_ROM_LIMIT_FUNC(void)
469*4b8b8d74SJaiprakash Singh {
470*4b8b8d74SJaiprakash Singh 	return 0x86d000000150ll;
471*4b8b8d74SJaiprakash Singh }
472*4b8b8d74SJaiprakash Singh 
473*4b8b8d74SJaiprakash Singh #define typedef_ODY_CPC_SCP_BOOT_ROM_LIMIT ody_cpc_scp_boot_rom_limit_t
474*4b8b8d74SJaiprakash Singh #define bustype_ODY_CPC_SCP_BOOT_ROM_LIMIT CSR_TYPE_NCB32b
475*4b8b8d74SJaiprakash Singh #define basename_ODY_CPC_SCP_BOOT_ROM_LIMIT "CPC_SCP_BOOT_ROM_LIMIT"
476*4b8b8d74SJaiprakash Singh #define device_bar_ODY_CPC_SCP_BOOT_ROM_LIMIT 0x0 /* PF_BAR0 */
477*4b8b8d74SJaiprakash Singh #define busnum_ODY_CPC_SCP_BOOT_ROM_LIMIT 0
478*4b8b8d74SJaiprakash Singh #define arguments_ODY_CPC_SCP_BOOT_ROM_LIMIT -1, -1, -1, -1
479*4b8b8d74SJaiprakash Singh 
480*4b8b8d74SJaiprakash Singh /**
481*4b8b8d74SJaiprakash Singh  * Register (NCB) cpc_timer100
482*4b8b8d74SJaiprakash Singh  *
483*4b8b8d74SJaiprakash Singh  * CPC Timer 100 MHz Register
484*4b8b8d74SJaiprakash Singh  * This register contains the common 100 MHz timer register for the XCP cores.
485*4b8b8d74SJaiprakash Singh  *
486*4b8b8d74SJaiprakash Singh  * This register is only accessible to the requestor(s) permitted with CPC_PERMIT.
487*4b8b8d74SJaiprakash Singh  * This register is writable for diagnostic use only.
488*4b8b8d74SJaiprakash Singh  *
489*4b8b8d74SJaiprakash Singh  * This register is reset on chip reset.
490*4b8b8d74SJaiprakash Singh  */
491*4b8b8d74SJaiprakash Singh union ody_cpc_timer100 {
492*4b8b8d74SJaiprakash Singh 	uint64_t u;
493*4b8b8d74SJaiprakash Singh 	struct ody_cpc_timer100_s {
494*4b8b8d74SJaiprakash Singh 		uint64_t tmr                         : 64;
495*4b8b8d74SJaiprakash Singh 	} s;
496*4b8b8d74SJaiprakash Singh 	/* struct ody_cpc_timer100_s cn; */
497*4b8b8d74SJaiprakash Singh };
498*4b8b8d74SJaiprakash Singh typedef union ody_cpc_timer100 ody_cpc_timer100_t;
499*4b8b8d74SJaiprakash Singh 
500*4b8b8d74SJaiprakash Singh #define ODY_CPC_TIMER100 ODY_CPC_TIMER100_FUNC()
501*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_CPC_TIMER100_FUNC(void) __attribute__ ((pure, always_inline));
ODY_CPC_TIMER100_FUNC(void)502*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_CPC_TIMER100_FUNC(void)
503*4b8b8d74SJaiprakash Singh {
504*4b8b8d74SJaiprakash Singh 	return 0x86d000000110ll;
505*4b8b8d74SJaiprakash Singh }
506*4b8b8d74SJaiprakash Singh 
507*4b8b8d74SJaiprakash Singh #define typedef_ODY_CPC_TIMER100 ody_cpc_timer100_t
508*4b8b8d74SJaiprakash Singh #define bustype_ODY_CPC_TIMER100 CSR_TYPE_NCB
509*4b8b8d74SJaiprakash Singh #define basename_ODY_CPC_TIMER100 "CPC_TIMER100"
510*4b8b8d74SJaiprakash Singh #define device_bar_ODY_CPC_TIMER100 0x0 /* PF_BAR0 */
511*4b8b8d74SJaiprakash Singh #define busnum_ODY_CPC_TIMER100 0
512*4b8b8d74SJaiprakash Singh #define arguments_ODY_CPC_TIMER100 -1, -1, -1, -1
513*4b8b8d74SJaiprakash Singh 
514*4b8b8d74SJaiprakash Singh /**
515*4b8b8d74SJaiprakash Singh  * Register (NCB32b) cpc_xcp#_gib#_lint_permit
516*4b8b8d74SJaiprakash Singh  *
517*4b8b8d74SJaiprakash Singh  * CPC Register GIB Lint Permit Registers
518*4b8b8d74SJaiprakash Singh  * These registers are used to control the XCP GIB LINT W1S/W1C register permissions.
519*4b8b8d74SJaiprakash Singh  *
520*4b8b8d74SJaiprakash Singh  * This register is only accessible to the requestor(s) permitted with CPC_PERMIT.
521*4b8b8d74SJaiprakash Singh  *
522*4b8b8d74SJaiprakash Singh  * This register is reset on chip reset.
523*4b8b8d74SJaiprakash Singh  */
524*4b8b8d74SJaiprakash Singh union ody_cpc_xcpx_gibx_lint_permit {
525*4b8b8d74SJaiprakash Singh 	uint32_t u;
526*4b8b8d74SJaiprakash Singh 	struct ody_cpc_xcpx_gibx_lint_permit_s {
527*4b8b8d74SJaiprakash Singh 		uint32_t permitdis                   : 5;
528*4b8b8d74SJaiprakash Singh 		uint32_t reserved_5_23               : 19;
529*4b8b8d74SJaiprakash Singh 		uint32_t pci_dis                     : 4;
530*4b8b8d74SJaiprakash Singh 		uint32_t reserved_28_30              : 3;
531*4b8b8d74SJaiprakash Singh 		uint32_t lock                        : 1;
532*4b8b8d74SJaiprakash Singh 	} s;
533*4b8b8d74SJaiprakash Singh 	/* struct ody_cpc_xcpx_gibx_lint_permit_s cn; */
534*4b8b8d74SJaiprakash Singh };
535*4b8b8d74SJaiprakash Singh typedef union ody_cpc_xcpx_gibx_lint_permit ody_cpc_xcpx_gibx_lint_permit_t;
536*4b8b8d74SJaiprakash Singh 
537*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_CPC_XCPX_GIBX_LINT_PERMIT(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_CPC_XCPX_GIBX_LINT_PERMIT(uint64_t a,uint64_t b)538*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_CPC_XCPX_GIBX_LINT_PERMIT(uint64_t a, uint64_t b)
539*4b8b8d74SJaiprakash Singh {
540*4b8b8d74SJaiprakash Singh 	if ((a <= 2) && (b <= 2))
541*4b8b8d74SJaiprakash Singh 		return 0x86d000000200ll + 0x20ll * ((a) & 0x3) + 8ll * ((b) & 0x3);
542*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("CPC_XCPX_GIBX_LINT_PERMIT", 2, a, b, 0, 0, 0, 0);
543*4b8b8d74SJaiprakash Singh }
544*4b8b8d74SJaiprakash Singh 
545*4b8b8d74SJaiprakash Singh #define typedef_ODY_CPC_XCPX_GIBX_LINT_PERMIT(a, b) ody_cpc_xcpx_gibx_lint_permit_t
546*4b8b8d74SJaiprakash Singh #define bustype_ODY_CPC_XCPX_GIBX_LINT_PERMIT(a, b) CSR_TYPE_NCB32b
547*4b8b8d74SJaiprakash Singh #define basename_ODY_CPC_XCPX_GIBX_LINT_PERMIT(a, b) "CPC_XCPX_GIBX_LINT_PERMIT"
548*4b8b8d74SJaiprakash Singh #define device_bar_ODY_CPC_XCPX_GIBX_LINT_PERMIT(a, b) 0x0 /* PF_BAR0 */
549*4b8b8d74SJaiprakash Singh #define busnum_ODY_CPC_XCPX_GIBX_LINT_PERMIT(a, b) (a)
550*4b8b8d74SJaiprakash Singh #define arguments_ODY_CPC_XCPX_GIBX_LINT_PERMIT(a, b) (a), (b), -1, -1
551*4b8b8d74SJaiprakash Singh 
552*4b8b8d74SJaiprakash Singh /**
553*4b8b8d74SJaiprakash Singh  * Register (NCB32b) cpc_xcp#_permit
554*4b8b8d74SJaiprakash Singh  *
555*4b8b8d74SJaiprakash Singh  * CPC Register Permit Registers
556*4b8b8d74SJaiprakash Singh  * These registers are used to control the XCP register permissions.
557*4b8b8d74SJaiprakash Singh  *
558*4b8b8d74SJaiprakash Singh  * This register is only accessible to the requestor(s) permitted with CPC_PERMIT.
559*4b8b8d74SJaiprakash Singh  *
560*4b8b8d74SJaiprakash Singh  * This register is reset on chip reset.
561*4b8b8d74SJaiprakash Singh  */
562*4b8b8d74SJaiprakash Singh union ody_cpc_xcpx_permit {
563*4b8b8d74SJaiprakash Singh 	uint32_t u;
564*4b8b8d74SJaiprakash Singh 	struct ody_cpc_xcpx_permit_s {
565*4b8b8d74SJaiprakash Singh 		uint32_t permitdis                   : 5;
566*4b8b8d74SJaiprakash Singh 		uint32_t reserved_5_30               : 26;
567*4b8b8d74SJaiprakash Singh 		uint32_t lock                        : 1;
568*4b8b8d74SJaiprakash Singh 	} s;
569*4b8b8d74SJaiprakash Singh 	/* struct ody_cpc_xcpx_permit_s cn; */
570*4b8b8d74SJaiprakash Singh };
571*4b8b8d74SJaiprakash Singh typedef union ody_cpc_xcpx_permit ody_cpc_xcpx_permit_t;
572*4b8b8d74SJaiprakash Singh 
573*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_CPC_XCPX_PERMIT(uint64_t a) __attribute__ ((pure, always_inline));
ODY_CPC_XCPX_PERMIT(uint64_t a)574*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_CPC_XCPX_PERMIT(uint64_t a)
575*4b8b8d74SJaiprakash Singh {
576*4b8b8d74SJaiprakash Singh 	if (a <= 2)
577*4b8b8d74SJaiprakash Singh 		return 0x86d0000001a0ll + 8ll * ((a) & 0x3);
578*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("CPC_XCPX_PERMIT", 1, a, 0, 0, 0, 0, 0);
579*4b8b8d74SJaiprakash Singh }
580*4b8b8d74SJaiprakash Singh 
581*4b8b8d74SJaiprakash Singh #define typedef_ODY_CPC_XCPX_PERMIT(a) ody_cpc_xcpx_permit_t
582*4b8b8d74SJaiprakash Singh #define bustype_ODY_CPC_XCPX_PERMIT(a) CSR_TYPE_NCB32b
583*4b8b8d74SJaiprakash Singh #define basename_ODY_CPC_XCPX_PERMIT(a) "CPC_XCPX_PERMIT"
584*4b8b8d74SJaiprakash Singh #define device_bar_ODY_CPC_XCPX_PERMIT(a) 0x0 /* PF_BAR0 */
585*4b8b8d74SJaiprakash Singh #define busnum_ODY_CPC_XCPX_PERMIT(a) (a)
586*4b8b8d74SJaiprakash Singh #define arguments_ODY_CPC_XCPX_PERMIT(a) (a), -1, -1, -1
587*4b8b8d74SJaiprakash Singh 
588*4b8b8d74SJaiprakash Singh #endif /* __ODY_CSRS_CPC_H__ */
589