xref: /rk3399_ARM-atf/include/plat/marvell/odyssey/csr/ody-csrs-pemrc.h (revision 12d80bbbf6031228bdd910eccb03bb185e8df527)
1*4b8b8d74SJaiprakash Singh #ifndef __ODY_CSRS_PEMRC_H__
2*4b8b8d74SJaiprakash Singh #define __ODY_CSRS_PEMRC_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  * PEMRC.
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 pemrc_bar_e
24*4b8b8d74SJaiprakash Singh  *
25*4b8b8d74SJaiprakash Singh  * PEM Base Address Register Enumeration
26*4b8b8d74SJaiprakash Singh  * Enumerates the base address registers.
27*4b8b8d74SJaiprakash Singh  */
28*4b8b8d74SJaiprakash Singh #define ODY_PEMRC_BAR_E_PEMRCX_PF_BAR0(a) (0x8e0e00000000ll + 0x1000000000ll * (a))
29*4b8b8d74SJaiprakash Singh #define ODY_PEMRC_BAR_E_PEMRCX_PF_BAR0_SIZE 0x100000ull
30*4b8b8d74SJaiprakash Singh 
31*4b8b8d74SJaiprakash Singh /**
32*4b8b8d74SJaiprakash Singh  * Enumeration pemrc_int_vec_e
33*4b8b8d74SJaiprakash Singh  *
34*4b8b8d74SJaiprakash Singh  * PEM RC MSI-X Vector Enumeration
35*4b8b8d74SJaiprakash Singh  * Enumerates the MSI-X interrupt vectors.
36*4b8b8d74SJaiprakash Singh  */
37*4b8b8d74SJaiprakash Singh #define ODY_PEMRC_INT_VEC_E_ERROR_AERI (0)
38*4b8b8d74SJaiprakash Singh #define ODY_PEMRC_INT_VEC_E_HP_PMEI (1)
39*4b8b8d74SJaiprakash Singh 
40*4b8b8d74SJaiprakash Singh /**
41*4b8b8d74SJaiprakash Singh  * Register (NCB) pemrc#_msix_pba#
42*4b8b8d74SJaiprakash Singh  *
43*4b8b8d74SJaiprakash Singh  * PEM RC MSI-X Pending Bit Array Registers
44*4b8b8d74SJaiprakash Singh  * This register is the MSI-X PBA table, the bit number is indexed by the PEMRC_INT_VEC_E enumeration.
45*4b8b8d74SJaiprakash Singh  */
46*4b8b8d74SJaiprakash Singh union ody_pemrcx_msix_pbax {
47*4b8b8d74SJaiprakash Singh 	uint64_t u;
48*4b8b8d74SJaiprakash Singh 	struct ody_pemrcx_msix_pbax_s {
49*4b8b8d74SJaiprakash Singh 		uint64_t pend                        : 64;
50*4b8b8d74SJaiprakash Singh 	} s;
51*4b8b8d74SJaiprakash Singh 	/* struct ody_pemrcx_msix_pbax_s cn; */
52*4b8b8d74SJaiprakash Singh };
53*4b8b8d74SJaiprakash Singh typedef union ody_pemrcx_msix_pbax ody_pemrcx_msix_pbax_t;
54*4b8b8d74SJaiprakash Singh 
55*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMRCX_MSIX_PBAX(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_PEMRCX_MSIX_PBAX(uint64_t a,uint64_t b)56*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMRCX_MSIX_PBAX(uint64_t a, uint64_t b)
57*4b8b8d74SJaiprakash Singh {
58*4b8b8d74SJaiprakash Singh 	if ((a <= 15) && (b == 0))
59*4b8b8d74SJaiprakash Singh 		return 0x8e0e000f0000ll + 0x1000000000ll * ((a) & 0xf);
60*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("PEMRCX_MSIX_PBAX", 2, a, b, 0, 0, 0, 0);
61*4b8b8d74SJaiprakash Singh }
62*4b8b8d74SJaiprakash Singh 
63*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMRCX_MSIX_PBAX(a, b) ody_pemrcx_msix_pbax_t
64*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMRCX_MSIX_PBAX(a, b) CSR_TYPE_NCB
65*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMRCX_MSIX_PBAX(a, b) "PEMRCX_MSIX_PBAX"
66*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMRCX_MSIX_PBAX(a, b) 0x0 /* PF_BAR0 */
67*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMRCX_MSIX_PBAX(a, b) (a)
68*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMRCX_MSIX_PBAX(a, b) (a), (b), -1, -1
69*4b8b8d74SJaiprakash Singh 
70*4b8b8d74SJaiprakash Singh /**
71*4b8b8d74SJaiprakash Singh  * Register (NCB) pemrc#_msix_vec#_addr
72*4b8b8d74SJaiprakash Singh  *
73*4b8b8d74SJaiprakash Singh  * PEM RC MSI-X Vector Table Address Registers
74*4b8b8d74SJaiprakash Singh  * This register is the MSI-X vector table, indexed by the PEMRC_INT_VEC_E enumeration.
75*4b8b8d74SJaiprakash Singh  */
76*4b8b8d74SJaiprakash Singh union ody_pemrcx_msix_vecx_addr {
77*4b8b8d74SJaiprakash Singh 	uint64_t u;
78*4b8b8d74SJaiprakash Singh 	struct ody_pemrcx_msix_vecx_addr_s {
79*4b8b8d74SJaiprakash Singh 		uint64_t secvec                      : 1;
80*4b8b8d74SJaiprakash Singh 		uint64_t reserved_1                  : 1;
81*4b8b8d74SJaiprakash Singh 		uint64_t addr                        : 51;
82*4b8b8d74SJaiprakash Singh 		uint64_t reserved_53_63              : 11;
83*4b8b8d74SJaiprakash Singh 	} s;
84*4b8b8d74SJaiprakash Singh 	/* struct ody_pemrcx_msix_vecx_addr_s cn; */
85*4b8b8d74SJaiprakash Singh };
86*4b8b8d74SJaiprakash Singh typedef union ody_pemrcx_msix_vecx_addr ody_pemrcx_msix_vecx_addr_t;
87*4b8b8d74SJaiprakash Singh 
88*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMRCX_MSIX_VECX_ADDR(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_PEMRCX_MSIX_VECX_ADDR(uint64_t a,uint64_t b)89*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMRCX_MSIX_VECX_ADDR(uint64_t a, uint64_t b)
90*4b8b8d74SJaiprakash Singh {
91*4b8b8d74SJaiprakash Singh 	if ((a <= 15) && (b <= 1))
92*4b8b8d74SJaiprakash Singh 		return 0x8e0e00000000ll + 0x1000000000ll * ((a) & 0xf) + 0x10ll * ((b) & 0x1);
93*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("PEMRCX_MSIX_VECX_ADDR", 2, a, b, 0, 0, 0, 0);
94*4b8b8d74SJaiprakash Singh }
95*4b8b8d74SJaiprakash Singh 
96*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMRCX_MSIX_VECX_ADDR(a, b) ody_pemrcx_msix_vecx_addr_t
97*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMRCX_MSIX_VECX_ADDR(a, b) CSR_TYPE_NCB
98*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMRCX_MSIX_VECX_ADDR(a, b) "PEMRCX_MSIX_VECX_ADDR"
99*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMRCX_MSIX_VECX_ADDR(a, b) 0x0 /* PF_BAR0 */
100*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMRCX_MSIX_VECX_ADDR(a, b) (a)
101*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMRCX_MSIX_VECX_ADDR(a, b) (a), (b), -1, -1
102*4b8b8d74SJaiprakash Singh 
103*4b8b8d74SJaiprakash Singh /**
104*4b8b8d74SJaiprakash Singh  * Register (NCB) pemrc#_msix_vec#_ctl
105*4b8b8d74SJaiprakash Singh  *
106*4b8b8d74SJaiprakash Singh  * PEM RC MSI-X Vector Table Control and Data Registers
107*4b8b8d74SJaiprakash Singh  * This register is the MSI-X vector table, indexed by the PEMRC_INT_VEC_E enumeration.
108*4b8b8d74SJaiprakash Singh  */
109*4b8b8d74SJaiprakash Singh union ody_pemrcx_msix_vecx_ctl {
110*4b8b8d74SJaiprakash Singh 	uint64_t u;
111*4b8b8d74SJaiprakash Singh 	struct ody_pemrcx_msix_vecx_ctl_s {
112*4b8b8d74SJaiprakash Singh 		uint64_t data                        : 32;
113*4b8b8d74SJaiprakash Singh 		uint64_t mask                        : 1;
114*4b8b8d74SJaiprakash Singh 		uint64_t reserved_33_63              : 31;
115*4b8b8d74SJaiprakash Singh 	} s;
116*4b8b8d74SJaiprakash Singh 	/* struct ody_pemrcx_msix_vecx_ctl_s cn; */
117*4b8b8d74SJaiprakash Singh };
118*4b8b8d74SJaiprakash Singh typedef union ody_pemrcx_msix_vecx_ctl ody_pemrcx_msix_vecx_ctl_t;
119*4b8b8d74SJaiprakash Singh 
120*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMRCX_MSIX_VECX_CTL(uint64_t a, uint64_t b) __attribute__ ((pure, always_inline));
ODY_PEMRCX_MSIX_VECX_CTL(uint64_t a,uint64_t b)121*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_PEMRCX_MSIX_VECX_CTL(uint64_t a, uint64_t b)
122*4b8b8d74SJaiprakash Singh {
123*4b8b8d74SJaiprakash Singh 	if ((a <= 15) && (b <= 1))
124*4b8b8d74SJaiprakash Singh 		return 0x8e0e00000008ll + 0x1000000000ll * ((a) & 0xf) + 0x10ll * ((b) & 0x1);
125*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("PEMRCX_MSIX_VECX_CTL", 2, a, b, 0, 0, 0, 0);
126*4b8b8d74SJaiprakash Singh }
127*4b8b8d74SJaiprakash Singh 
128*4b8b8d74SJaiprakash Singh #define typedef_ODY_PEMRCX_MSIX_VECX_CTL(a, b) ody_pemrcx_msix_vecx_ctl_t
129*4b8b8d74SJaiprakash Singh #define bustype_ODY_PEMRCX_MSIX_VECX_CTL(a, b) CSR_TYPE_NCB
130*4b8b8d74SJaiprakash Singh #define basename_ODY_PEMRCX_MSIX_VECX_CTL(a, b) "PEMRCX_MSIX_VECX_CTL"
131*4b8b8d74SJaiprakash Singh #define device_bar_ODY_PEMRCX_MSIX_VECX_CTL(a, b) 0x0 /* PF_BAR0 */
132*4b8b8d74SJaiprakash Singh #define busnum_ODY_PEMRCX_MSIX_VECX_CTL(a, b) (a)
133*4b8b8d74SJaiprakash Singh #define arguments_ODY_PEMRCX_MSIX_VECX_CTL(a, b) (a), (b), -1, -1
134*4b8b8d74SJaiprakash Singh 
135*4b8b8d74SJaiprakash Singh #endif /* __ODY_CSRS_PEMRC_H__ */
136