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